Thread (25 messages) 25 messages, 5 authors, 2012-11-27
STALE4940d

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

From: horms@verge.net.au (Simon Horman)
Date: 2012-11-27 00:32:16
Also in: linux-sh

On Mon, Nov 26, 2012 at 01:53:06PM +0100, Laurent Pinchart wrote:
Hi Simon,

On Monday 26 November 2012 13:58:06 Simon Horman wrote:
quoted
On Mon, Nov 26, 2012 at 01:23:12PM +0900, Magnus Damm wrote:
quoted
On Mon, Nov 26, 2012 at 9:16 AM, Simon Horman [off-list ref] wrote:
quoted
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.
quoted
  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.
Thanks, I discovered that after writing my previous email.
I think it is an approach well suited to the needs of kzm9g
and I intend to use it.
quoted
* 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 ?
Oh, I will look into that.

Magnus's suggestion was to register the names that DT will use
in the clock .c file.

In either case I think we can get rid of auxdata.
quoted
  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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help