Re: [PATCH v8 06/17] dt-bindings: mfd: amd,pensando-elbasr: Add AMD Pensando Elba System Resource chip

From: Larson, Bradley
Date: Fri Nov 18 2022 - 13:30:40 EST


[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