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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



[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




[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux