[PATCH] arm64: dts: rockchip: set num-cs property for spi on px30

Heiko Stübner heiko at sntech.de
Mon Jan 22 08:26:35 PST 2024


Hi Johan,

Am Montag, 22. Januar 2024, 17:05:11 CET schrieb Johan Jonker:
> Hi,
> 
> On 1/19/24 11:16, Heiko Stuebner wrote:
> > From: Heiko Stuebner <heiko.stuebner at cherry.de>
> >
> > The px30 has two spi controllers with two chip-selects each.
> > The num-cs property is specified as the total number of chip
> > selects a controllers has and is used since 2020 to find uses
> > of chipselects outside that range in the Rockchip spi driver.
> 
> > Without the property set, the default is 1, so spi devices
> > using the second chipselect will not be created.
> 
> 
> num-cs is defined as 32 bit:
> 
>   num-cs:
>     $ref: /schemas/types.yaml#/definitions/uint32
>     description:
> 
>       Total number of chip selects.
> 
> ===
> 
> num-cs is parsed as 16 bit in spi-rockchip.c:
> 
> #define ROCKCHIP_SPI_MAX_CS_NUM <https://elixir.bootlin.com/linux/latest/C/ident/ROCKCHIP_SPI_MAX_CS_NUM>	4+ ctlr->max_native_cs = ROCKCHIP_SPI_MAX_CS_NUM; + /* + * rk spi0 has two native cs, spi1..5 one cs only + * if num-cs is missing in the dts, default to 1 + */ + if (of_property_read_u16(np, "num-cs", &ctlr->num_chipselect)) u32 + ctlr->num_chipselect = 1; + ctlr->use_gpio_descriptors = true; === num-cs: minimum: 1 maximum: 4
> default: 1
> Both the driver as the binding need a little update. Johan

hmm, this confuses me.
Looking at a commit from 2022 [0] that was already fixed in the driver?

So bith the binding and the driver expect u32 values it seems.

[0] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9382df0a98aad5bbcd4d634790305a1d786ad224


Heiko

> > Fixes: eb1262e3cc8b ("spi: spi-rockchip: use num-cs property and ctlr->enable_gpiods")
> > Signed-off-by: Heiko Stuebner <heiko.stuebner at cherry.de>
> > ---
> >  arch/arm64/boot/dts/rockchip/px30.dtsi | 2 ++
> >  1 file changed, 2 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/rockchip/px30.dtsi b/arch/arm64/boot/dts/rockchip/px30.dtsi
> > index 42ce78beb413..20955556b624 100644
> > --- a/arch/arm64/boot/dts/rockchip/px30.dtsi
> > +++ b/arch/arm64/boot/dts/rockchip/px30.dtsi
> > @@ -632,6 +632,7 @@ spi0: spi at ff1d0000 {
> >  		clock-names = "spiclk", "apb_pclk";
> >  		dmas = <&dmac 12>, <&dmac 13>;
> >  		dma-names = "tx", "rx";
> > +		num-cs = <2>;
> >  		pinctrl-names = "default";
> >  		pinctrl-0 = <&spi0_clk &spi0_csn &spi0_miso &spi0_mosi>;
> >  		#address-cells = <1>;
> > @@ -647,6 +648,7 @@ spi1: spi at ff1d8000 {
> >  		clock-names = "spiclk", "apb_pclk";
> >  		dmas = <&dmac 14>, <&dmac 15>;
> >  		dma-names = "tx", "rx";
> > +		num-cs = <2>;
> >  		pinctrl-names = "default";
> >  		pinctrl-0 = <&spi1_clk &spi1_csn0 &spi1_csn1 &spi1_miso &spi1_mosi>;
> >  		#address-cells = <1>;
> 







More information about the linux-arm-kernel mailing list