aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGregory CLEMENT <gregory.clement@free-electrons.com>2017-06-12 11:35:00 -0400
committerGregory CLEMENT <gregory.clement@free-electrons.com>2017-06-20 10:34:18 -0400
commit63dac0f4924b97a6b91b86259cdc4520b4d6254e (patch)
treea13d25946987d6ad7b10cd3bcd7fb7ab2fd616ba
parentae701b60028f4e0f6714276fd6790b5126975021 (diff)
arm64: dts: marvell: add gpio support for Armada 7K/8K
Enable gpio support for CP and AP on the Marvell Armada 7K/8K SoCs. The Armada 8K has two CP110 blocks, each having two GPIO controllers. However, in each CP110 block, one of the GPIO controller cannot be used: in the master CP110, only the second GPIO controller can be used, while on the slave CP110, only the first GPIO controller can be used. On the other side, the Armada 7K has only one CP110, but both its GPIO controllers can be used. For this reason, the GPIO controllers are marked as "disabled" in the armada-cp110-master.dtsi and armada-cp110-slave.dtsi files, and only enabled in the per-SoC dtsi files. Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
-rw-r--r--arch/arm64/boot/dts/marvell/armada-70x0.dtsi15
-rw-r--r--arch/arm64/boot/dts/marvell/armada-80x0.dtsi16
-rw-r--r--arch/arm64/boot/dts/marvell/armada-ap806.dtsi10
-rw-r--r--arch/arm64/boot/dts/marvell/armada-cp110-master.dtsi21
-rw-r--r--arch/arm64/boot/dts/marvell/armada-cp110-slave.dtsi22
5 files changed, 84 insertions, 0 deletions
diff --git a/arch/arm64/boot/dts/marvell/armada-70x0.dtsi b/arch/arm64/boot/dts/marvell/armada-70x0.dtsi
index f6c22665d091..860b6ae9dcc5 100644
--- a/arch/arm64/boot/dts/marvell/armada-70x0.dtsi
+++ b/arch/arm64/boot/dts/marvell/armada-70x0.dtsi
@@ -46,6 +46,21 @@
46 46
47#include "armada-cp110-master.dtsi" 47#include "armada-cp110-master.dtsi"
48 48
49/ {
50 aliases {
51 gpio1 = &cpm_gpio1;
52 gpio2 = &cpm_gpio2;
53 };
54};
55
56&cpm_gpio1 {
57 status = "okay";
58};
59
60&cpm_gpio2 {
61 status = "okay";
62};
63
49&cpm_syscon0 { 64&cpm_syscon0 {
50 cpm_pinctrl: pinctrl { 65 cpm_pinctrl: pinctrl {
51 compatible = "marvell,armada-7k-pinctrl"; 66 compatible = "marvell,armada-7k-pinctrl";
diff --git a/arch/arm64/boot/dts/marvell/armada-80x0.dtsi b/arch/arm64/boot/dts/marvell/armada-80x0.dtsi
index 93d1de03b39a..666ebe96ba0d 100644
--- a/arch/arm64/boot/dts/marvell/armada-80x0.dtsi
+++ b/arch/arm64/boot/dts/marvell/armada-80x0.dtsi
@@ -47,6 +47,22 @@
47#include "armada-cp110-master.dtsi" 47#include "armada-cp110-master.dtsi"
48#include "armada-cp110-slave.dtsi" 48#include "armada-cp110-slave.dtsi"
49 49
50/ {
51 aliases {
52 gpio1 = &cps_gpio1;
53 gpio2 = &cpm_gpio2;
54 };
55};
56
57/* The 80x0 has two CP blocks, but uses only one block from each. */
58&cps_gpio1 {
59 status = "okay";
60};
61
62&cpm_gpio2 {
63 status = "okay";
64};
65
50&cpm_syscon0 { 66&cpm_syscon0 {
51 cpm_pinctrl: pinctrl { 67 cpm_pinctrl: pinctrl {
52 compatible = "marvell,armada-8k-cpm-pinctrl"; 68 compatible = "marvell,armada-8k-cpm-pinctrl";
diff --git a/arch/arm64/boot/dts/marvell/armada-ap806.dtsi b/arch/arm64/boot/dts/marvell/armada-ap806.dtsi
index b9b984e3fd55..2557d69fefc8 100644
--- a/arch/arm64/boot/dts/marvell/armada-ap806.dtsi
+++ b/arch/arm64/boot/dts/marvell/armada-ap806.dtsi
@@ -57,6 +57,7 @@
57 aliases { 57 aliases {
58 serial0 = &uart0; 58 serial0 = &uart0;
59 serial1 = &uart1; 59 serial1 = &uart1;
60 gpio0 = &ap_gpio;
60 }; 61 };
61 62
62 psci { 63 psci {
@@ -256,6 +257,15 @@
256 ap_pinctrl: pinctrl { 257 ap_pinctrl: pinctrl {
257 compatible = "marvell,ap806-pinctrl"; 258 compatible = "marvell,ap806-pinctrl";
258 }; 259 };
260
261 ap_gpio: gpio {
262 compatible = "marvell,armada-8k-gpio";
263 offset = <0x1040>;
264 ngpios = <19>;
265 gpio-controller;
266 #gpio-cells = <2>;
267 gpio-ranges = <&ap_pinctrl 0 0 19>;
268 };
259 }; 269 };
260 }; 270 };
261 }; 271 };
diff --git a/arch/arm64/boot/dts/marvell/armada-cp110-master.dtsi b/arch/arm64/boot/dts/marvell/armada-cp110-master.dtsi
index 8076681683fb..7835d4f517dc 100644
--- a/arch/arm64/boot/dts/marvell/armada-cp110-master.dtsi
+++ b/arch/arm64/boot/dts/marvell/armada-cp110-master.dtsi
@@ -114,6 +114,27 @@
114 compatible = "marvell,cp110-clock"; 114 compatible = "marvell,cp110-clock";
115 #clock-cells = <2>; 115 #clock-cells = <2>;
116 }; 116 };
117
118 cpm_gpio1: gpio@100 {
119 compatible = "marvell,armada-8k-gpio";
120 offset = <0x100>;
121 ngpios = <32>;
122 gpio-controller;
123 #gpio-cells = <2>;
124 gpio-ranges = <&cpm_pinctrl 0 0 32>;
125 status = "disabled";
126
127 };
128
129 cpm_gpio2: gpio@140 {
130 compatible = "marvell,armada-8k-gpio";
131 offset = <0x140>;
132 ngpios = <31>;
133 gpio-controller;
134 #gpio-cells = <2>;
135 gpio-ranges = <&cpm_pinctrl 0 32 31>;
136 status = "disabled";
137 };
117 }; 138 };
118 139
119 cpm_rtc: rtc@284000 { 140 cpm_rtc: rtc@284000 {
diff --git a/arch/arm64/boot/dts/marvell/armada-cp110-slave.dtsi b/arch/arm64/boot/dts/marvell/armada-cp110-slave.dtsi
index a88300ae20fa..22e4feb1bace 100644
--- a/arch/arm64/boot/dts/marvell/armada-cp110-slave.dtsi
+++ b/arch/arm64/boot/dts/marvell/armada-cp110-slave.dtsi
@@ -121,6 +121,28 @@
121 compatible = "marvell,cp110-clock"; 121 compatible = "marvell,cp110-clock";
122 #clock-cells = <2>; 122 #clock-cells = <2>;
123 }; 123 };
124
125 cps_gpio1: gpio@100 {
126 compatible = "marvell,armada-8k-gpio";
127 offset = <0x100>;
128 ngpios = <32>;
129 gpio-controller;
130 #gpio-cells = <2>;
131 gpio-ranges = <&cps_pinctrl 0 0 32>;
132 status = "disabled";
133
134 };
135
136 cps_gpio2: gpio@140 {
137 compatible = "marvell,armada-8k-gpio";
138 offset = <0x140>;
139 ngpios = <31>;
140 gpio-controller;
141 #gpio-cells = <2>;
142 gpio-ranges = <&cps_pinctrl 0 32 31>;
143 status = "disabled";
144 };
145
124 }; 146 };
125 147
126 cps_sata0: sata@540000 { 148 cps_sata0: sata@540000 {