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

Larson, Bradley Bradley.Larson at amd.com
Fri Nov 18 10:29:46 PST 2022


[AMD Official Use Only - General]

Hi Geert,

From: Geert Uytterhoeven <geert at linux-m68k.org>
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 at 0 {
> >                 compatible = "amd,pensando-elbasr";
> >                 reg = <0>;
> >                 spi-max-frequency = <12000000>;
> >                 #reset-cells = <1>;
> >         };
> >
> >         system-controller at 1 {
> >                 compatible = "amd,pensando-elbasr";
> >                 reg = <1>;
> >                 spi-max-frequency = <12000000>;
> >         };
> >
> >         system-controller at 2 {
> >                 compatible = "amd,pensando-elbasr";
> >                 reg = <2>;
> >                 spi-max-frequency = <12000000>;
> >                 interrupt-parent = <&porta>;
> >                 interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
> >         };
> >
> >         system-controller at 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 at 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 at 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



More information about the linux-arm-kernel mailing list