[PATCH v2] spi: rockchip: restore bus_num alias lookup via dev->id
Sascha Hauer
s.hauer at pengutronix.de
Mon Aug 24 03:21:13 PDT 2026
Hi Stephano,
On 2026-08-22 08:31, Stephano Cetola wrote:
> ctlr->bus_num = pdev->id was commented out when this driver was
> ported from Linux. pdev doesn't exist in barebox's device model here,
> only dev. The port left this line unresolved instead of translating
> it. With bus_num left at its kzalloc default of 0,
> spi_register_controller() only runs the alias lookup when bus_num < 0,
> so it's skipped and every Rockchip SPI controller ends up on bus 0.
>
> Any board that enables two Rockchip SPI controllers at once hits this
> bug. Both end up on bus 0. Looking one up by bus number can then
> return the wrong controller.
>
> Fixes: 1efba64ba04 ("spi: add rockchip spi controller support")
> Signed-off-by: Stephano Cetola <stephano at cetola.net>
> ---
> We saw this on the MNT Pocket Reform (RK3588S). spi at feb20000 returns
> the PMIC controller instead of the intended gpio-spi RP2040 bus. The
> barebox spi command then does a write+read through the Rockchip SPI
> driver, which programmes the hardware in XFM_RO (RX-only) mode for
> the read phase. In that mode dummy TXDR writes don't generate clock
> pulses, the RX FIFO never fills, and rockchip_spi_pio's while(1) loop
> never exits.
> ---
> Changes in v2:
> - Updated commit message for clarity.
> - Link to v1: https://patch.msgid.link/20260822-send-spi-rockchip-busnum-v1-1-bf9c183786e4@cetola.net
>
> To: Sascha Hauer <s.hauer at pengutronix.de>
> To: "open list:BAREBOX" <barebox at lists.infradead.org>
> ---
> drivers/spi/spi-rockchip.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/spi/spi-rockchip.c b/drivers/spi/spi-rockchip.c
> index 1e81e9393f..b9f43fa4d6 100644
> --- a/drivers/spi/spi-rockchip.c
> +++ b/drivers/spi/spi-rockchip.c
> @@ -514,7 +514,7 @@ static int rockchip_spi_probe(struct device *dev)
> goto err_put_ctlr;
> }
>
> -// ctlr->bus_num = pdev->id;
> + ctlr->bus_num = dev->id;
This should be initialized to -1 explicitly, because that's what we want
to archieve. The = dev->id we have here is only needed for the case when
the device is registered from platform code and we no longer use that
with this device tree only driver.
Sascha
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
More information about the barebox
mailing list