[AMD Official Use Only - General] Hi Geert, From: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> Sent: Friday, November 18, 2022 12:42 AM > ... > > &spi0 { > > #address-cells = <1>; > > #size-cells = <0>; > > num-cs = <4>; > > cs-gpios = <0>, <0>, <&porta 1 GPIO_ACTIVE_LOW>, > > <&porta 7 GPIO_ACTIVE_LOW>; > > status = "okay"; > > > > rstc: system-controller@0 { > > compatible = "amd,pensando-elbasr"; > > reg = <0>; > > spi-max-frequency = <12000000>; > > #reset-cells = <1>; > > }; > > > > system-controller@1 { > > compatible = "amd,pensando-elbasr"; > > reg = <1>; > > spi-max-frequency = <12000000>; > > }; > > > > system-controller@2 { > > compatible = "amd,pensando-elbasr"; > > reg = <2>; > > spi-max-frequency = <12000000>; > > interrupt-parent = <&porta>; > > interrupts = <0 IRQ_TYPE_LEVEL_LOW>; > > }; > > > > system-controller@3 { > > compatible = "amd,pensando-elbasr"; > > reg = <3>; > > spi-max-frequency = <12000000>; > > }; > > The above describes 4 individual but further identical (they have the > same compatible value) devices, while above you say they are not identical: > > The IP at CS0 is a bunch of miscellaneous mgmt registers. > CS1 is a designware I2C master/slave. > CS2 is a Lattice dual I2C master. > CS3 is internal storage for the CPLD or FPGA depending on the > hardware implementation. > > So either this should be modelled as a single subnode with 4 chip > selects[*]: > > system-controller@0 { > compatible = "amd,pensando-elbasr"; > reg = <0 1 2 3 4>; > spi-max-frequency = <12000000>; > #reset-cells = <1>; > }; > > or as 4 separate subnodes, each using 4 different compatible values. > Giving the wildly different functionalities provided by each, you also need > 4 binding documents. > > [*] I'm not sure the Linux SPI core actually supports this yet. Thanks, I was unfamiliar with reg <0 ...> with differences between the nodes such as reset-cells for one and interrupts on another. Below dts boots ok and will change binding and driver as needed. &spi0 { #address-cells = <1>; #size-cells = <0>; num-cs = <4>; cs-gpios = <0>, <0>, <&porta 1 GPIO_ACTIVE_LOW>, <&porta 7 GPIO_ACTIVE_LOW>; status = "okay"; rstc: system-controller@0 { compatible = "amd,pensando-elbasr"; reg = <0 1 2 3>; spi-max-frequency = <12000000>; interrupt-parent = <&porta>; interrupts = <0 IRQ_TYPE_LEVEL_LOW>; #reset-cells = <1>; }; }; Regards, Brad