Question on flash node on device tree source

David Gibson david at gibson.dropbear.id.au
Wed Sep 9 14:46:19 EST 2009


On Tue, Sep 08, 2009 at 12:18:33PM +0000, Angelo wrote:
> Hi all.
> 
> I need some info about device tree blob.
> I'm testing a powerpc board (very similar to mpc512xev) with the following feature:
>  - 256MB flash (only 1 bank)
> 
> Changes some lines of device tree source about flash
> 
> localbus at 80000020 {
>         compatible = "fsl,mpc5121ads-localbus";
>         #address-cells = <2>;
>         #size-cells = <1>;
>         reg = <0000020 40>;
> 
>         ranges = <0 0 fc000000 04000000
>               2 0 82000000 00008000>;

First thing to note is that you're still using dts-v0 syntax.  You
really want to change over to dts-v1 syntax.  Which probably means
you've based your tree on an old version of the mpc512eev dts.  All
the in-kernel dts files have already been converted and current
versions of dtc don't support the old syntax.

>         flash at 0,0 {
>             device_type = "rom";
>             compatible = "direct-mapped";

Second thing to note is that you're using the old, broken flash
binding.  You should use the new binding described in
Documentation/powerpc/dts-bindings/mtd-physmap.txt.

>             probe-type = "CFI";
>             reg = <0 0 4000000>;
>             #address-cells = <1>;
>             #size-cells = <1>;
>             bank-width = <4>;
>             device-width = <2>;
>             partitions = <00000000 00040000        // first sector is protected
>                       00040000 03c00000        // 60 Mb for filesystem
>                       03c40000 00280000        // 2.5 Mb for kernel
>                       03ec0000 00040000        // one sector for device tree
>                       03f00000 00100000>;    // one Mb for u-boot
>             partition-names = "protected", "filesystem", "kernel", "device-tree", "u-boot";
>         };
> .....
> with these changes:
> .....
>         flash at 0,0 {
>             device_type = "rom";
>             compatible = "direct-mapped";
>             probe-type = "CFI";
>             reg = <0 0 1000000>;

And the third thing to note is that 0x1000000 == 16MB.

>             #address-cells = <1>;
>             #size-cells = <1>;
>             bank-width = <1>;
>             device-width = <1>;
>             partitions = <300000 200000        //uimage
>                         400000 3200000>;    // fs
>             partition-names = "uimage", "fs";
>         };
> .....
> 
> The problem is that on bootstrap stage, kernel truncate the flash
> memory to 16MB, so i cannot access to the whole flash. kernel
> messages:

That would be because you told the kernel your flash was 16MB in the
'reg' property.  Looks like you missed out a zero.

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson


More information about the devicetree-discuss mailing list