Commit 5e12a613 authored by Ezequiel Garcia's avatar Ezequiel Garcia Committed by Jason Cooper

ARM: mvebu: Add MBus to Armada 370/XP device tree

The Armada 370/XP SoC family has a completely configurable address
space handled by the MBus controller.

This patch introduces the device tree layout of MBus, making the
'soc' node as mbus-compatible.
Since every peripheral/controller is a child of this 'soc' node,
this makes all of them sit behind the mbus, thus describing the
hardware accurately.

A translation entry has been added for the internal-regs mapping.
This can't be done in the common armada-370-xp.dtsi because A370
and AXP have different addressing width.
Signed-off-by: default avatarEzequiel Garcia <ezequiel.garcia@free-electrons.com>
Tested-by: default avatarAndrew Lunn <andrew@lunn.ch>
Tested-by: default avatarSebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Signed-off-by: default avatarJason Cooper <jason@lakedaemon.net>
parent 38149887
...@@ -30,6 +30,8 @@ memory { ...@@ -30,6 +30,8 @@ memory {
}; };
soc { soc {
ranges = <MBUS_ID(0xf0, 0x01) 0 0xd0000000 0x100000>;
internal-regs { internal-regs {
serial@12000 { serial@12000 {
clock-frequency = <200000000>; clock-frequency = <200000000>;
......
...@@ -25,6 +25,8 @@ memory { ...@@ -25,6 +25,8 @@ memory {
}; };
soc { soc {
ranges = <MBUS_ID(0xf0, 0x01) 0 0xd0000000 0x100000>;
internal-regs { internal-regs {
serial@12000 { serial@12000 {
clock-frequency = <200000000>; clock-frequency = <200000000>;
......
...@@ -28,6 +28,8 @@ memory { ...@@ -28,6 +28,8 @@ memory {
}; };
soc { soc {
ranges = <MBUS_ID(0xf0, 0x01) 0 0xd0000000 0x100000>;
internal-regs { internal-regs {
serial@12000 { serial@12000 {
clock-frequency = <200000000>; clock-frequency = <200000000>;
......
...@@ -18,6 +18,8 @@ ...@@ -18,6 +18,8 @@
/include/ "skeleton64.dtsi" /include/ "skeleton64.dtsi"
#define MBUS_ID(target,attributes) (((target) << 24) | ((attributes) << 16))
/ { / {
model = "Marvell Armada 370 and XP SoC"; model = "Marvell Armada 370 and XP SoC";
compatible = "marvell,armada-370-xp"; compatible = "marvell,armada-370-xp";
...@@ -38,18 +40,21 @@ cpu@0 { ...@@ -38,18 +40,21 @@ cpu@0 {
}; };
soc { soc {
#address-cells = <1>; #address-cells = <2>;
#size-cells = <1>; #size-cells = <1>;
compatible = "simple-bus"; controller = <&mbusc>;
interrupt-parent = <&mpic>; interrupt-parent = <&mpic>;
ranges = <0 0 0xd0000000 0x0100000 /* internal registers */
0xe0000000 0 0xe0000000 0x8100000 /* PCIe */>;
internal-regs { internal-regs {
compatible = "simple-bus"; compatible = "simple-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges; ranges = <0 MBUS_ID(0xf0, 0x01) 0 0x100000>;
mbusc: mbus-controller@20000 {
compatible = "marvell,mbus-controller";
reg = <0x20000 0x100>, <0x20180 0x20>;
};
mpic: interrupt-controller@20000 { mpic: interrupt-controller@20000 {
compatible = "marvell,mpic"; compatible = "marvell,mpic";
......
...@@ -29,8 +29,8 @@ aliases { ...@@ -29,8 +29,8 @@ aliases {
}; };
soc { soc {
ranges = <0 0xd0000000 0x0100000 /* internal registers */ compatible = "marvell,armada370-mbus", "simple-bus";
0xe0000000 0xe0000000 0x8100000 /* PCIe */>;
internal-regs { internal-regs {
system-controller@18200 { system-controller@18200 {
compatible = "marvell,armada-370-xp-system-controller"; compatible = "marvell,armada-370-xp-system-controller";
......
...@@ -30,9 +30,7 @@ memory { ...@@ -30,9 +30,7 @@ memory {
}; };
soc { soc {
ranges = <0 0 0xd0000000 0x100000 /* Internal registers 1MiB */ ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xd0000000 0x100000>;
0xe0000000 0 0xe0000000 0x8100000 /* PCIe */
0xf0000000 0 0xf0000000 0x1000000>; /* Device Bus, NOR 16MiB */
internal-regs { internal-regs {
serial@12000 { serial@12000 {
......
...@@ -39,9 +39,7 @@ memory { ...@@ -39,9 +39,7 @@ memory {
}; };
soc { soc {
ranges = <0 0 0xd0000000 0x100000 /* Internal registers 1MiB */ ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xd0000000 0x100000>;
0xe0000000 0 0xe0000000 0x8100000 /* PCIe */
0xf0000000 0 0xf0000000 0x1000000 /* Device Bus, NOR 16MiB */>;
internal-regs { internal-regs {
serial@12000 { serial@12000 {
......
...@@ -27,9 +27,7 @@ memory { ...@@ -27,9 +27,7 @@ memory {
}; };
soc { soc {
ranges = <0 0 0xd0000000 0x100000 /* Internal registers 1MiB */ ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xd0000000 0x100000>;
0xe0000000 0 0xe0000000 0x8100000 /* PCIe */
0xf0000000 0 0xf0000000 0x8000000 /* Device Bus, NOR 128MiB */>;
internal-regs { internal-regs {
serial@12000 { serial@12000 {
......
...@@ -27,6 +27,8 @@ aliases { ...@@ -27,6 +27,8 @@ aliases {
}; };
soc { soc {
compatible = "marvell,armadaxp-mbus", "simple-bus";
internal-regs { internal-regs {
L2: l2-cache { L2: l2-cache {
compatible = "marvell,aurora-system-cache"; compatible = "marvell,aurora-system-cache";
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment