Skip to content
Snippets Groups Projects
Commit 1e2e1755 authored by Christopher Obbard's avatar Christopher Obbard
Browse files

arm64: dts: rockchip: Fix i2s0 pin conflict on ROCK Pi 4 boards


Commit 91419ae0 ("arm64: dts: rockchip: use BCLK to GPIO switch on
rk3399") modified i2s0 to switch the corresponding pins off when idle.
For the ROCK Pi 4 boards, this means that i2s0 has the following pinctrl
setting:

    pinctrl-names = "bclk_on", "bclk_off";
    pinctrl-0 = <&i2s0_2ch_bus>;
    pinctrl-1 = <&i2s0_8ch_bus_bclk_off>;

Due to this change, i2s0 fails to probe on my Radxa ROCK 4SE and ROCK Pi
4B boards:

    rockchip-pinctrl pinctrl: pin gpio3-29 already requested by leds; cannot claim for ff880000.i2s
    rockchip-pinctrl pinctrl: pin-125 (ff880000.i2s) status -22
    rockchip-pinctrl pinctrl: could not request pin 125 (gpio3-29) from group i2s0-8ch-bus-bclk-off  on device rockchip-pinctrl
    rockchip-i2s ff880000.i2s: Error applying setting, reverse things back
    rockchip-i2s ff880000.i2s: bclk disable failed -22

A pin requested for i2s0_8ch_bus_bclk_off has already been requested by
user_led2, so whichever driver probes first will have the pin allocated.

The hardware uses 2-channel i2s so fix this error by setting pinctl-1 to
i2s0_2ch_bus_bclk_off which doesn't contain the pin allocated to user_led2.

I checked the schematics for all Radxa boards based on ROCK Pi 4 and this
change is compatible with all boards.

Fixes: 91419ae0 ("arm64: dts: rockchip: use BCLK to GPIO switch on rk3399")
Signed-off-by: default avatarChristopher Obbard <chris.obbard@collabora.com>
Series-to: linux-rockchip@lists.infradead.org
Series-cc: kernel@collabora.com
Series-version: 1
Cover-letter:
Fix i2s0 pin conflict on ROCK Pi 4 RK3399 boards
i2s0 fails to probe on my Radxa ROCK 4SE and ROCK Pi 4B boards with:

    rockchip-pinctrl pinctrl: pin gpio3-29 already requested by leds; cannot claim for ff880000.i2s
    rockchip-pinctrl pinctrl: pin-125 (ff880000.i2s) status -22
    rockchip-pinctrl pinctrl: could not request pin 125 (gpio3-29) from group i2s0-8ch-bus-bclk-off  on device rockchip-pinctrl
    rockchip-i2s ff880000.i2s: Error applying setting, reverse things back
    rockchip-i2s ff880000.i2s: bclk disable failed -22

This is due to the pinctl attempting to request a GPIO which the boards
use for a different function.

The first patch adds a missing pinctl node i2s0_2ch_bus_bclk_off to the
RK3399 devicetree.

The second patch sets the i2s0 pinctrl to use the new node when idle and
fixes the issue.
END
parent 94d7ee00
No related branches found
Tags v5.12-rc4
No related merge requests found
Pipeline #75813 passed
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment