[PATCH 6/7] ARM: mach-shmobile: sh73a0: Minimal setup using DT

Laurent Pinchart laurent.pinchart at ideasonboard.com
Mon Nov 26 07:53:06 EST 2012


Hi Simon,

On Monday 26 November 2012 13:58:06 Simon Horman wrote:
> On Mon, Nov 26, 2012 at 01:23:12PM +0900, Magnus Damm wrote:
> > On Mon, Nov 26, 2012 at 9:16 AM, Simon Horman <horms at verge.net.au> wrote:
> > > Allow a minimal setup of the sh73a0 SoC using a flattened device tree.
> > > 
> > > * Allow configuration of the i2c controllers using a flattened device
> > >   tree.
> > > 
> > > * SCI serial controller and CMT clock source, whose drivers do not yet
> > >   support configuration using a flattened device tree, are still
> > >   configured
> > >   using C code in order to allow booting of a board with this SoC.
> > > 
> > > An example dts snuppet follows:
> > >         i2c0: i2c at 0xe6820000 {
> > >         
> > >                 #address-cells = <1>;
> > >                 #size-cells = <0>;
> > >                 compatible = "renesas,rmobile-iic";
> > >                 reg = <0xe6820000 0x425>;
> > >                 interrupt-parent = <&gic>;
> > >                 interrupts = <0 167 0x4
> > >                 
> > >                               0 170 0x4>;
> > >         
> > >         };
> > >         
> > >         i2c1: i2c at 0xe6822000 {
> > >         
> > >                 #address-cells = <1>;
> > >                 #size-cells = <0>;
> > >                 compatible = "renesas,rmobile-iic";
> > >                 reg = <0xe6822000 0x425>;
> > >                 interrupt-parent = <&gic>;
> > >                 interrupts = <0 51 0x4
> > >                 
> > >                               0 44 0x4>;
> > >                 
> > >                 touchscreen at 55 {
> > >                 
> > >                         compatible = "sitronix,st1232";
> > >                         reg = <0x55>;
> > >                         interrupt-parent = <&gic>;
> > >                         interrupts = <0 9 0x4>;
> > >                 
> > >                 };
> > >         
> > >         };
> > >         
> > >         i2c2: i2c at 0xe6824000 {
> > >         
> > >                 #address-cells = <1>;
> > >                 #size-cells = <0>;
> > >                 compatible = "renesas,rmobile-iic";
> > >                 reg = <0xe6824000 0x425>;
> > >                 interrupt-parent = <&gic>;
> > >                 interrupts = <0 171 0x4
> > >                 
> > >                               0 174 0x4>;
> > >         
> > >         };
> > >         
> > >         i2c3: i2c at 0xe6826000 {
> > >         
> > >                 #address-cells = <1>;
> > >                 #size-cells = <0>;
> > >                 compatible = "renesas,rmobile-iic";
> > >                 reg = <0xe6826000 0x425>;
> > >                 interrupt-parent = <&gic>;
> > >                 interrupts = <0 183 0x4
> > >                 
> > >                               0 186 0x4>;
> > >         
> > >         };
> > >         
> > >         i2c4: i2c at 0xe6828000 {
> > >         
> > >                 #address-cells = <1>;
> > >                 #size-cells = <0>;
> > >                 compatible = "renesas,rmobile-iic";
> > >                 reg = <0xe6828000 0x425>;
> > >                 interrupt-parent = <&gic>;
> > >                 interrupts = <0 187 0x4
> > >                 
> > >                               0 190 0x4>;
> > >         
> > >         };
> > 
> > Uhm, doesn't the above want to go into sh73a0.dtsi?
> 
> There are two things that I am unsure of:
> 
> * What should go into sh73a0.dtsi and what should go into
>   sh73a0-kzm9g-refere3nce.dts.
> 
>   The i2c seems like it should go into sh73a0.dtsi as it is part of the
>   soc. Likewise the interrupt controllers.
> 
>   But when it comes to mmcif and sdhi I am less sure. Both of these make use
>   of regulators. Are the regulators part of the board or the SoC?

It depends on the regulators. In theory you could have on-SoC regulators that 
would thus be part of the SoC. In practice I'm not sure how often that 
happens.

Most of the regulators are provided by the PMIC, so we can create PMIC-
specific .dtsi files that would be included by boards. See twl4030.dtsi for an 
example. Other board-specific regulators, including fixed regulators, should 
be provided by the board.

>   If the are part of the board then it makes it more difficult to put mmcif
>   and sdhi into sh73a0.dtsi as they need to reference the regulators
>   somehow.

I think you can split a node across several files. You could have

        mmcif: mmcif at 0x10010000 {
                compatible = "renesas,sh-mmcif";
                reg = <0xe6bd0000 0x100>;
                interrupt-parent = <&gic>;
                interrupts = <0 140 0x4
                              0 141 0x4>;
                reg-io-width = <4>;
        };

in the SoC .dtsi, and

        &mmcif {
                vmmc-supply = <&fixedregulator1v8>;
                vqmmc-supply = <&fixedregulator1v8>;
        };

in the board .dts.

> * What to do the of_dev_auxdata.
> 
>   Currently I add this in patch 4 to the board-kzm9g.c. It is used to force
>   the name of the i2c, mmcif and sdhi devices in order to allow their clock
>   lookup to work (though come to think of it it may not be necessary for
>   mmcif and sdhi).

Shouldn't clocks be specified as an attribute in DT nodes that reference the 
clock node ?

>   In any case, the location of the of_dev_auxdata might be come a bit
>   tricky if it covers devices in both the board and SoC dts files.

-- 
Regards,

Laurent Pinchart




More information about the linux-arm-kernel mailing list