-
- Downloads
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:Christopher 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
Loading
Please register or sign in to comment