[RESEND PATCH v7 19/22] ARM: mvebu: Add MBus to Armada 370/XP device tree

2013-07-15 Thread Ezequiel Garcia
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: Ezequiel Garcia ezequiel.gar...@free-electrons.com
---
 arch/arm/boot/dts/armada-370-db.dts  |  2 ++
 arch/arm/boot/dts/armada-370-mirabox.dts |  2 ++
 arch/arm/boot/dts/armada-370-rd.dts  |  2 ++
 arch/arm/boot/dts/armada-370-xp.dtsi | 15 ++-
 arch/arm/boot/dts/armada-370.dtsi|  4 ++--
 arch/arm/boot/dts/armada-xp-db.dts   |  4 +---
 arch/arm/boot/dts/armada-xp-gp.dts   |  4 +---
 arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts |  4 +---
 arch/arm/boot/dts/armada-xp.dtsi |  2 ++
 9 files changed, 23 insertions(+), 16 deletions(-)

diff --git a/arch/arm/boot/dts/armada-370-db.dts 
b/arch/arm/boot/dts/armada-370-db.dts
index 55b986c..5920b4e 100644
--- a/arch/arm/boot/dts/armada-370-db.dts
+++ b/arch/arm/boot/dts/armada-370-db.dts
@@ -30,6 +30,8 @@
};
 
soc {
+   ranges = MBUS_ID(0xf0, 0x01) 0 0xd000 0x10;
+
internal-regs {
serial@12000 {
clock-frequency = 2;
diff --git a/arch/arm/boot/dts/armada-370-mirabox.dts 
b/arch/arm/boot/dts/armada-370-mirabox.dts
index 37530af..a4202b6 100644
--- a/arch/arm/boot/dts/armada-370-mirabox.dts
+++ b/arch/arm/boot/dts/armada-370-mirabox.dts
@@ -25,6 +25,8 @@
};
 
soc {
+   ranges = MBUS_ID(0xf0, 0x01) 0 0xd000 0x10;
+
internal-regs {
serial@12000 {
clock-frequency = 2;
diff --git a/arch/arm/boot/dts/armada-370-rd.dts 
b/arch/arm/boot/dts/armada-370-rd.dts
index 7aa2171..dd0ba01 100644
--- a/arch/arm/boot/dts/armada-370-rd.dts
+++ b/arch/arm/boot/dts/armada-370-rd.dts
@@ -28,6 +28,8 @@
};
 
soc {
+   ranges = MBUS_ID(0xf0, 0x01) 0 0xd000 0x10;
+
internal-regs {
serial@12000 {
clock-frequency = 2;
diff --git a/arch/arm/boot/dts/armada-370-xp.dtsi 
b/arch/arm/boot/dts/armada-370-xp.dtsi
index 90b1176..62639b4 100644
--- a/arch/arm/boot/dts/armada-370-xp.dtsi
+++ b/arch/arm/boot/dts/armada-370-xp.dtsi
@@ -18,6 +18,8 @@
 
 /include/ skeleton64.dtsi
 
+#define MBUS_ID(target,attributes) (((target)  24) | ((attributes)  16))
+
 / {
model = Marvell Armada 370 and XP SoC;
compatible = marvell,armada-370-xp;
@@ -38,18 +40,21 @@
};
 
soc {
-   #address-cells = 1;
+   #address-cells = 2;
#size-cells = 1;
-   compatible = simple-bus;
+   controller = mbusc;
interrupt-parent = mpic;
-   ranges = 0  0 0xd000 0x010 /* internal 
registers */
- 0xe000 0 0xe000 0x810 /* PCIe */;
 
internal-regs {
compatible = simple-bus;
#address-cells = 1;
#size-cells = 1;
-   ranges;
+   ranges = 0 MBUS_ID(0xf0, 0x01) 0 0x10;
+
+   mbusc: mbus-controller@2 {
+   compatible = marvell,mbus-controller;
+   reg = 0x2 0x100, 0x20180 0x20;
+   };
 
mpic: interrupt-controller@2 {
compatible = marvell,mpic;
diff --git a/arch/arm/boot/dts/armada-370.dtsi 
b/arch/arm/boot/dts/armada-370.dtsi
index 08ec6e3..4b54e51 100644
--- a/arch/arm/boot/dts/armada-370.dtsi
+++ b/arch/arm/boot/dts/armada-370.dtsi
@@ -29,8 +29,8 @@
};
 
soc {
-   ranges = 0  0xd000 0x010 /* internal registers 
*/
- 0xe000 0xe000 0x810 /* PCIe */;
+   compatible = marvell,armada370-mbus, simple-bus;
+
internal-regs {
system-controller@18200 {
compatible = 
marvell,armada-370-xp-system-controller;
diff --git a/arch/arm/boot/dts/armada-xp-db.dts 
b/arch/arm/boot/dts/armada-xp-db.dts
index a9bd766..0d4ce54 100644
--- a/arch/arm/boot/dts/armada-xp-db.dts
+++ b/arch/arm/boot/dts/armada-xp-db.dts
@@ -30,9 +30,7 @@
};
 
soc {
-   ranges = 0  0 0xd000 0x10  /* Internal 
registers 1MiB */
-

[PATCH v7 19/22] ARM: mvebu: Add MBus to Armada 370/XP device tree

2013-07-09 Thread Ezequiel Garcia
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: Ezequiel Garcia ezequiel.gar...@free-electrons.com
---
 arch/arm/boot/dts/armada-370-db.dts  |  2 ++
 arch/arm/boot/dts/armada-370-mirabox.dts |  2 ++
 arch/arm/boot/dts/armada-370-rd.dts  |  2 ++
 arch/arm/boot/dts/armada-370-xp.dtsi | 15 ++-
 arch/arm/boot/dts/armada-370.dtsi|  4 ++--
 arch/arm/boot/dts/armada-xp-db.dts   |  4 +---
 arch/arm/boot/dts/armada-xp-gp.dts   |  4 +---
 arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts |  4 +---
 arch/arm/boot/dts/armada-xp.dtsi |  2 ++
 9 files changed, 23 insertions(+), 16 deletions(-)

diff --git a/arch/arm/boot/dts/armada-370-db.dts 
b/arch/arm/boot/dts/armada-370-db.dts
index 55b986c..5920b4e 100644
--- a/arch/arm/boot/dts/armada-370-db.dts
+++ b/arch/arm/boot/dts/armada-370-db.dts
@@ -30,6 +30,8 @@
};
 
soc {
+   ranges = MBUS_ID(0xf0, 0x01) 0 0xd000 0x10;
+
internal-regs {
serial@12000 {
clock-frequency = 2;
diff --git a/arch/arm/boot/dts/armada-370-mirabox.dts 
b/arch/arm/boot/dts/armada-370-mirabox.dts
index 37530af..a4202b6 100644
--- a/arch/arm/boot/dts/armada-370-mirabox.dts
+++ b/arch/arm/boot/dts/armada-370-mirabox.dts
@@ -25,6 +25,8 @@
};
 
soc {
+   ranges = MBUS_ID(0xf0, 0x01) 0 0xd000 0x10;
+
internal-regs {
serial@12000 {
clock-frequency = 2;
diff --git a/arch/arm/boot/dts/armada-370-rd.dts 
b/arch/arm/boot/dts/armada-370-rd.dts
index 7aa2171..dd0ba01 100644
--- a/arch/arm/boot/dts/armada-370-rd.dts
+++ b/arch/arm/boot/dts/armada-370-rd.dts
@@ -28,6 +28,8 @@
};
 
soc {
+   ranges = MBUS_ID(0xf0, 0x01) 0 0xd000 0x10;
+
internal-regs {
serial@12000 {
clock-frequency = 2;
diff --git a/arch/arm/boot/dts/armada-370-xp.dtsi 
b/arch/arm/boot/dts/armada-370-xp.dtsi
index 90b1176..62639b4 100644
--- a/arch/arm/boot/dts/armada-370-xp.dtsi
+++ b/arch/arm/boot/dts/armada-370-xp.dtsi
@@ -18,6 +18,8 @@
 
 /include/ skeleton64.dtsi
 
+#define MBUS_ID(target,attributes) (((target)  24) | ((attributes)  16))
+
 / {
model = Marvell Armada 370 and XP SoC;
compatible = marvell,armada-370-xp;
@@ -38,18 +40,21 @@
};
 
soc {
-   #address-cells = 1;
+   #address-cells = 2;
#size-cells = 1;
-   compatible = simple-bus;
+   controller = mbusc;
interrupt-parent = mpic;
-   ranges = 0  0 0xd000 0x010 /* internal 
registers */
- 0xe000 0 0xe000 0x810 /* PCIe */;
 
internal-regs {
compatible = simple-bus;
#address-cells = 1;
#size-cells = 1;
-   ranges;
+   ranges = 0 MBUS_ID(0xf0, 0x01) 0 0x10;
+
+   mbusc: mbus-controller@2 {
+   compatible = marvell,mbus-controller;
+   reg = 0x2 0x100, 0x20180 0x20;
+   };
 
mpic: interrupt-controller@2 {
compatible = marvell,mpic;
diff --git a/arch/arm/boot/dts/armada-370.dtsi 
b/arch/arm/boot/dts/armada-370.dtsi
index 08ec6e3..4b54e51 100644
--- a/arch/arm/boot/dts/armada-370.dtsi
+++ b/arch/arm/boot/dts/armada-370.dtsi
@@ -29,8 +29,8 @@
};
 
soc {
-   ranges = 0  0xd000 0x010 /* internal registers 
*/
- 0xe000 0xe000 0x810 /* PCIe */;
+   compatible = marvell,armada370-mbus, simple-bus;
+
internal-regs {
system-controller@18200 {
compatible = 
marvell,armada-370-xp-system-controller;
diff --git a/arch/arm/boot/dts/armada-xp-db.dts 
b/arch/arm/boot/dts/armada-xp-db.dts
index a9bd766..0d4ce54 100644
--- a/arch/arm/boot/dts/armada-xp-db.dts
+++ b/arch/arm/boot/dts/armada-xp-db.dts
@@ -30,9 +30,7 @@
};
 
soc {
-   ranges = 0  0 0xd000 0x10  /* Internal 
registers 1MiB */
-