Freescale MPC5554 device tree (was: cross-compiling Linux for PowerPC e200 core?)
David Gibson
david at gibson.dropbear.id.au
Thu Mar 11 17:23:31 EST 2010
On Thu, Mar 11, 2010 at 07:11:56AM +0100, Németh Márton wrote:
[snip]
> +/dts-v1/;
> +
> +/ {
> + model = "MPC5554";
> + compatible = "fsl,MPC5554EVB"; // Freescale MPC5554 Evaluation Board
> + #address-cells = <1>;
> + #size-cells = <1>;
> +
> + cpus {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + PowerPC,5554 at 0 {
Modern best practice is to have the cpu nodes named just "cpu at XXX",
and put the PowerPC,NNNN into the compatible property.
> + device_type = "cpu";
> + reg = <0>;
> + d-cache-line-size = <32>;
> + i-cache-line-size = <32>;
> + d-cache-size = <0x8000>; // L1, 32KiB
> + i-cache-size = <0x8000>; // L1, 32KiB
> + timebase-frequency = <0>; // from bootloader
> + bus-frequency = <0>; // from bootloader
> + clock-frequency = <0>; // from bootloader
> + };
> + };
> +
> + memory at 40000000 {
> + device_type = "memory";
> + reg = <0x40000000 0x10000>; // 32KiB internal SRAM
> + };
> +
> + xbar at 1ff04000 { // System Bus Crossbar Switch (XBAR)
> + compatible = "fsl,mpc5554-xbar";
> + #address-cells = <1>;
> + #size-cells = <1>;
> + // The full memory range is covered by XBAR
> +// ranges = <0 0x00000000 0x100000000>;
If you want all addresses to be translated by the bus you need an
empty ranges property, not *no* ranges property. No ranges property
indicates that addresses cannot be directly translated across the
bridge, which is not, I think, what you intend.
> + reg = <0xfff04000 0x4000>;
The unit address '@1ff04000' does not match your reg property 0xfff04000.
> +
> + flash at 00000000 { // read-only FLASH
Unit addresses are not 0 padded, so this should be just 'flash at 0'.
> + compatible = "fsl,mpc5554-flash";
> + reg = <0x00000000 0x200000>; // 2MiB internal FLASH
> + };
> +
> + bridge at c0000000 {
> + compatible = "fsl,mpc5554-pbridge-a";
> + #address-cells = <1>;
> + #size-cells = <1>;
> + ranges = <0 0xc0000000 0x20000000>;
> + reg = <0xc3f00000 0x4000>;
The unit address is based on 'reg' (if present) not ranges, so it
should be bridge at c3f00000. Likewise for the other bridge below.
--
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 Linuxppc-dev
mailing list