aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaxime Ripard <maxime.ripard@free-electrons.com>2013-03-13 15:07:37 -0400
committerMaxime Ripard <maxime.ripard@free-electrons.com>2013-04-08 15:54:55 -0400
commit69144e3baf3dec9efae6fb197bbe21ed2b56323f (patch)
treee3a8d97c279e6bbbe524fc1845d206a0a2cb80fb
parent36386d6e54d0ebcd5b2e0869f837800293d94c3c (diff)
ARM: sunxi: dt: Reorganize the dtsi
In the early days, the A10 and A13 shared quite some code. Nowadays it shares less and less code, the A31 diverging even more, so it doesn't make much sense to continue to maintain this structure, just use one DTSI for every SoC, and that's it. Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
-rw-r--r--arch/arm/boot/dts/sun4i-a10-cubieboard.dts2
-rw-r--r--arch/arm/boot/dts/sun4i-a10-hackberry.dts2
-rw-r--r--arch/arm/boot/dts/sun4i-a10.dtsi194
-rw-r--r--arch/arm/boot/dts/sun5i-a13-olinuxino.dts2
-rw-r--r--arch/arm/boot/dts/sun5i-a13.dtsi194
-rw-r--r--arch/arm/boot/dts/sunxi.dtsi208
6 files changed, 387 insertions, 215 deletions
diff --git a/arch/arm/boot/dts/sun4i-a10-cubieboard.dts b/arch/arm/boot/dts/sun4i-a10-cubieboard.dts
index 99558f624554..b70fe0db6bb7 100644
--- a/arch/arm/boot/dts/sun4i-a10-cubieboard.dts
+++ b/arch/arm/boot/dts/sun4i-a10-cubieboard.dts
@@ -26,7 +26,7 @@
26 bootargs = "earlyprintk console=ttyS0,115200"; 26 bootargs = "earlyprintk console=ttyS0,115200";
27 }; 27 };
28 28
29 soc { 29 soc@01c20000 {
30 pinctrl@01c20800 { 30 pinctrl@01c20800 {
31 led_pins_cubieboard: led_pins@0 { 31 led_pins_cubieboard: led_pins@0 {
32 allwinner,pins = "PH20", "PH21"; 32 allwinner,pins = "PH20", "PH21";
diff --git a/arch/arm/boot/dts/sun4i-a10-hackberry.dts b/arch/arm/boot/dts/sun4i-a10-hackberry.dts
index 20460007a89f..b9efac100c85 100644
--- a/arch/arm/boot/dts/sun4i-a10-hackberry.dts
+++ b/arch/arm/boot/dts/sun4i-a10-hackberry.dts
@@ -22,7 +22,7 @@
22 bootargs = "earlyprintk console=ttyS0,115200"; 22 bootargs = "earlyprintk console=ttyS0,115200";
23 }; 23 };
24 24
25 soc { 25 soc@01c20000 {
26 uart0: serial@01c28000 { 26 uart0: serial@01c28000 {
27 pinctrl-names = "default"; 27 pinctrl-names = "default";
28 pinctrl-0 = <&uart0_pins_a>; 28 pinctrl-0 = <&uart0_pins_a>;
diff --git a/arch/arm/boot/dts/sun4i-a10.dtsi b/arch/arm/boot/dts/sun4i-a10.dtsi
index f6405204e7e2..81accf4814a5 100644
--- a/arch/arm/boot/dts/sun4i-a10.dtsi
+++ b/arch/arm/boot/dts/sun4i-a10.dtsi
@@ -10,14 +10,172 @@
10 * http://www.gnu.org/copyleft/gpl.html 10 * http://www.gnu.org/copyleft/gpl.html
11 */ 11 */
12 12
13/include/ "sunxi.dtsi" 13/include/ "skeleton.dtsi"
14 14
15/ { 15/ {
16 interrupt-parent = <&intc>;
17
18 cpus {
19 cpu@0 {
20 compatible = "arm,cortex-a8";
21 };
22 };
23
16 memory { 24 memory {
17 reg = <0x40000000 0x80000000>; 25 reg = <0x40000000 0x80000000>;
18 }; 26 };
19 27
20 soc { 28 clocks {
29 #address-cells = <1>;
30 #size-cells = <1>;
31 ranges;
32
33 /*
34 * This is a dummy clock, to be used as placeholder on
35 * other mux clocks when a specific parent clock is not
36 * yet implemented. It should be dropped when the driver
37 * is complete.
38 */
39 dummy: dummy {
40 #clock-cells = <0>;
41 compatible = "fixed-clock";
42 clock-frequency = <0>;
43 };
44
45 osc24M_fixed: osc24M_fixed {
46 #clock-cells = <0>;
47 compatible = "fixed-clock";
48 clock-frequency = <24000000>;
49 };
50
51 osc24M: osc24M@01c20050 {
52 #clock-cells = <0>;
53 compatible = "allwinner,sun4i-osc-clk";
54 reg = <0x01c20050 0x4>;
55 clocks = <&osc24M_fixed>;
56 };
57
58 osc32k: osc32k {
59 #clock-cells = <0>;
60 compatible = "fixed-clock";
61 clock-frequency = <32768>;
62 };
63
64 pll1: pll1@01c20000 {
65 #clock-cells = <0>;
66 compatible = "allwinner,sun4i-pll1-clk";
67 reg = <0x01c20000 0x4>;
68 clocks = <&osc24M>;
69 };
70
71 /* dummy is 200M */
72 cpu: cpu@01c20054 {
73 #clock-cells = <0>;
74 compatible = "allwinner,sun4i-cpu-clk";
75 reg = <0x01c20054 0x4>;
76 clocks = <&osc32k>, <&osc24M>, <&pll1>, <&dummy>;
77 };
78
79 axi: axi@01c20054 {
80 #clock-cells = <0>;
81 compatible = "allwinner,sun4i-axi-clk";
82 reg = <0x01c20054 0x4>;
83 clocks = <&cpu>;
84 };
85
86 axi_gates: axi_gates@01c2005c {
87 #clock-cells = <1>;
88 compatible = "allwinner,sun4i-axi-gates-clk";
89 reg = <0x01c2005c 0x4>;
90 clocks = <&axi>;
91 clock-output-names = "axi_dram";
92 };
93
94 ahb: ahb@01c20054 {
95 #clock-cells = <0>;
96 compatible = "allwinner,sun4i-ahb-clk";
97 reg = <0x01c20054 0x4>;
98 clocks = <&axi>;
99 };
100
101 ahb_gates: ahb_gates@01c20060 {
102 #clock-cells = <1>;
103 compatible = "allwinner,sun4i-ahb-gates-clk";
104 reg = <0x01c20060 0x8>;
105 clocks = <&ahb>;
106 clock-output-names = "ahb_usb0", "ahb_ehci0",
107 "ahb_ohci0", "ahb_ehci1", "ahb_ohci1", "ahb_ss",
108 "ahb_dma", "ahb_bist", "ahb_mmc0", "ahb_mmc1",
109 "ahb_mmc2", "ahb_mmc3", "ahb_ms", "ahb_nand",
110 "ahb_sdram", "ahb_ace", "ahb_emac", "ahb_ts",
111 "ahb_spi0", "ahb_spi1", "ahb_spi2", "ahb_spi3",
112 "ahb_pata", "ahb_sata", "ahb_gps", "ahb_ve",
113 "ahb_tvd", "ahb_tve0", "ahb_tve1", "ahb_lcd0",
114 "ahb_lcd1", "ahb_csi0", "ahb_csi1", "ahb_hdmi",
115 "ahb_de_be0", "ahb_de_be1", "ahb_de_fe0",
116 "ahb_de_fe1", "ahb_mp", "ahb_mali400";
117 };
118
119 apb0: apb0@01c20054 {
120 #clock-cells = <0>;
121 compatible = "allwinner,sun4i-apb0-clk";
122 reg = <0x01c20054 0x4>;
123 clocks = <&ahb>;
124 };
125
126 apb0_gates: apb0_gates@01c20068 {
127 #clock-cells = <1>;
128 compatible = "allwinner,sun4i-apb0-gates-clk";
129 reg = <0x01c20068 0x4>;
130 clocks = <&apb0>;
131 clock-output-names = "apb0_codec", "apb0_spdif",
132 "apb0_ac97", "apb0_iis", "apb0_pio", "apb0_ir0",
133 "apb0_ir1", "apb0_keypad";
134 };
135
136 /* dummy is pll62 */
137 apb1_mux: apb1_mux@01c20058 {
138 #clock-cells = <0>;
139 compatible = "allwinner,sun4i-apb1-mux-clk";
140 reg = <0x01c20058 0x4>;
141 clocks = <&osc24M>, <&dummy>, <&osc32k>;
142 };
143
144 apb1: apb1@01c20058 {
145 #clock-cells = <0>;
146 compatible = "allwinner,sun4i-apb1-clk";
147 reg = <0x01c20058 0x4>;
148 clocks = <&apb1_mux>;
149 };
150
151 apb1_gates: apb1_gates@01c2006c {
152 #clock-cells = <1>;
153 compatible = "allwinner,sun4i-apb1-gates-clk";
154 reg = <0x01c2006c 0x4>;
155 clocks = <&apb1>;
156 clock-output-names = "apb1_i2c0", "apb1_i2c1",
157 "apb1_i2c2", "apb1_can", "apb1_scr",
158 "apb1_ps20", "apb1_ps21", "apb1_uart0",
159 "apb1_uart1", "apb1_uart2", "apb1_uart3",
160 "apb1_uart4", "apb1_uart5", "apb1_uart6",
161 "apb1_uart7";
162 };
163 };
164
165 soc@01c20000 {
166 compatible = "simple-bus";
167 #address-cells = <1>;
168 #size-cells = <1>;
169 reg = <0x01c20000 0x300000>;
170 ranges;
171
172 intc: interrupt-controller@01c20400 {
173 compatible = "allwinner,sunxi-ic";
174 reg = <0x01c20400 0x400>;
175 interrupt-controller;
176 #interrupt-cells = <1>;
177 };
178
21 pio: pinctrl@01c20800 { 179 pio: pinctrl@01c20800 {
22 compatible = "allwinner,sun4i-a10-pinctrl"; 180 compatible = "allwinner,sun4i-a10-pinctrl";
23 reg = <0x01c20800 0x400>; 181 reg = <0x01c20800 0x400>;
@@ -49,6 +207,18 @@
49 }; 207 };
50 }; 208 };
51 209
210 timer@01c20c00 {
211 compatible = "allwinner,sunxi-timer";
212 reg = <0x01c20c00 0x90>;
213 interrupts = <22>;
214 clocks = <&osc24M>;
215 };
216
217 wdt: watchdog@01c20c90 {
218 compatible = "allwinner,sunxi-wdt";
219 reg = <0x01c20c90 0x10>;
220 };
221
52 uart0: serial@01c28000 { 222 uart0: serial@01c28000 {
53 compatible = "snps,dw-apb-uart"; 223 compatible = "snps,dw-apb-uart";
54 reg = <0x01c28000 0x400>; 224 reg = <0x01c28000 0x400>;
@@ -59,6 +229,16 @@
59 status = "disabled"; 229 status = "disabled";
60 }; 230 };
61 231
232 uart1: serial@01c28400 {
233 compatible = "snps,dw-apb-uart";
234 reg = <0x01c28400 0x400>;
235 interrupts = <2>;
236 reg-shift = <2>;
237 reg-io-width = <4>;
238 clocks = <&apb1_gates 17>;
239 status = "disabled";
240 };
241
62 uart2: serial@01c28800 { 242 uart2: serial@01c28800 {
63 compatible = "snps,dw-apb-uart"; 243 compatible = "snps,dw-apb-uart";
64 reg = <0x01c28800 0x400>; 244 reg = <0x01c28800 0x400>;
@@ -69,6 +249,16 @@
69 status = "disabled"; 249 status = "disabled";
70 }; 250 };
71 251
252 uart3: serial@01c28c00 {
253 compatible = "snps,dw-apb-uart";
254 reg = <0x01c28c00 0x400>;
255 interrupts = <4>;
256 reg-shift = <2>;
257 reg-io-width = <4>;
258 clocks = <&apb1_gates 19>;
259 status = "disabled";
260 };
261
72 uart4: serial@01c29000 { 262 uart4: serial@01c29000 {
73 compatible = "snps,dw-apb-uart"; 263 compatible = "snps,dw-apb-uart";
74 reg = <0x01c29000 0x400>; 264 reg = <0x01c29000 0x400>;
diff --git a/arch/arm/boot/dts/sun5i-a13-olinuxino.dts b/arch/arm/boot/dts/sun5i-a13-olinuxino.dts
index f1579a831f90..3ca55067f868 100644
--- a/arch/arm/boot/dts/sun5i-a13-olinuxino.dts
+++ b/arch/arm/boot/dts/sun5i-a13-olinuxino.dts
@@ -22,7 +22,7 @@
22 bootargs = "earlyprintk console=ttyS0,115200"; 22 bootargs = "earlyprintk console=ttyS0,115200";
23 }; 23 };
24 24
25 soc { 25 soc@01c20000 {
26 pinctrl@01c20800 { 26 pinctrl@01c20800 {
27 led_pins_olinuxino: led_pins@0 { 27 led_pins_olinuxino: led_pins@0 {
28 allwinner,pins = "PG9"; 28 allwinner,pins = "PG9";
diff --git a/arch/arm/boot/dts/sun5i-a13.dtsi b/arch/arm/boot/dts/sun5i-a13.dtsi
index 10ee8eedd36b..990fef70ba85 100644
--- a/arch/arm/boot/dts/sun5i-a13.dtsi
+++ b/arch/arm/boot/dts/sun5i-a13.dtsi
@@ -11,14 +11,172 @@
11 * http://www.gnu.org/copyleft/gpl.html 11 * http://www.gnu.org/copyleft/gpl.html
12 */ 12 */
13 13
14/include/ "sunxi.dtsi" 14/include/ "skeleton.dtsi"
15 15
16/ { 16/ {
17 interrupt-parent = <&intc>;
18
19 cpus {
20 cpu@0 {
21 compatible = "arm,cortex-a8";
22 };
23 };
24
17 memory { 25 memory {
18 reg = <0x40000000 0x20000000>; 26 reg = <0x40000000 0x20000000>;
19 }; 27 };
20 28
21 soc { 29 clocks {
30 #address-cells = <1>;
31 #size-cells = <1>;
32 ranges;
33
34 /*
35 * This is a dummy clock, to be used as placeholder on
36 * other mux clocks when a specific parent clock is not
37 * yet implemented. It should be dropped when the driver
38 * is complete.
39 */
40 dummy: dummy {
41 #clock-cells = <0>;
42 compatible = "fixed-clock";
43 clock-frequency = <0>;
44 };
45
46 osc24M_fixed: osc24M_fixed {
47 #clock-cells = <0>;
48 compatible = "fixed-clock";
49 clock-frequency = <24000000>;
50 };
51
52 osc24M: osc24M@01c20050 {
53 #clock-cells = <0>;
54 compatible = "allwinner,sun4i-osc-clk";
55 reg = <0x01c20050 0x4>;
56 clocks = <&osc24M_fixed>;
57 };
58
59 osc32k: osc32k {
60 #clock-cells = <0>;
61 compatible = "fixed-clock";
62 clock-frequency = <32768>;
63 };
64
65 pll1: pll1@01c20000 {
66 #clock-cells = <0>;
67 compatible = "allwinner,sun4i-pll1-clk";
68 reg = <0x01c20000 0x4>;
69 clocks = <&osc24M>;
70 };
71
72 /* dummy is 200M */
73 cpu: cpu@01c20054 {
74 #clock-cells = <0>;
75 compatible = "allwinner,sun4i-cpu-clk";
76 reg = <0x01c20054 0x4>;
77 clocks = <&osc32k>, <&osc24M>, <&pll1>, <&dummy>;
78 };
79
80 axi: axi@01c20054 {
81 #clock-cells = <0>;
82 compatible = "allwinner,sun4i-axi-clk";
83 reg = <0x01c20054 0x4>;
84 clocks = <&cpu>;
85 };
86
87 axi_gates: axi_gates@01c2005c {
88 #clock-cells = <1>;
89 compatible = "allwinner,sun4i-axi-gates-clk";
90 reg = <0x01c2005c 0x4>;
91 clocks = <&axi>;
92 clock-output-names = "axi_dram";
93 };
94
95 ahb: ahb@01c20054 {
96 #clock-cells = <0>;
97 compatible = "allwinner,sun4i-ahb-clk";
98 reg = <0x01c20054 0x4>;
99 clocks = <&axi>;
100 };
101
102 ahb_gates: ahb_gates@01c20060 {
103 #clock-cells = <1>;
104 compatible = "allwinner,sun4i-ahb-gates-clk";
105 reg = <0x01c20060 0x8>;
106 clocks = <&ahb>;
107 clock-output-names = "ahb_usb0", "ahb_ehci0",
108 "ahb_ohci0", "ahb_ehci1", "ahb_ohci1", "ahb_ss",
109 "ahb_dma", "ahb_bist", "ahb_mmc0", "ahb_mmc1",
110 "ahb_mmc2", "ahb_mmc3", "ahb_ms", "ahb_nand",
111 "ahb_sdram", "ahb_ace", "ahb_emac", "ahb_ts",
112 "ahb_spi0", "ahb_spi1", "ahb_spi2", "ahb_spi3",
113 "ahb_pata", "ahb_sata", "ahb_gps", "ahb_ve",
114 "ahb_tvd", "ahb_tve0", "ahb_tve1", "ahb_lcd0",
115 "ahb_lcd1", "ahb_csi0", "ahb_csi1", "ahb_hdmi",
116 "ahb_de_be0", "ahb_de_be1", "ahb_de_fe0",
117 "ahb_de_fe1", "ahb_mp", "ahb_mali400";
118 };
119
120 apb0: apb0@01c20054 {
121 #clock-cells = <0>;
122 compatible = "allwinner,sun4i-apb0-clk";
123 reg = <0x01c20054 0x4>;
124 clocks = <&ahb>;
125 };
126
127 apb0_gates: apb0_gates@01c20068 {
128 #clock-cells = <1>;
129 compatible = "allwinner,sun4i-apb0-gates-clk";
130 reg = <0x01c20068 0x4>;
131 clocks = <&apb0>;
132 clock-output-names = "apb0_codec", "apb0_spdif",
133 "apb0_ac97", "apb0_iis", "apb0_pio", "apb0_ir0",
134 "apb0_ir1", "apb0_keypad";
135 };
136
137 /* dummy is pll62 */
138 apb1_mux: apb1_mux@01c20058 {
139 #clock-cells = <0>;
140 compatible = "allwinner,sun4i-apb1-mux-clk";
141 reg = <0x01c20058 0x4>;
142 clocks = <&osc24M>, <&dummy>, <&osc32k>;
143 };
144
145 apb1: apb1@01c20058 {
146 #clock-cells = <0>;
147 compatible = "allwinner,sun4i-apb1-clk";
148 reg = <0x01c20058 0x4>;
149 clocks = <&apb1_mux>;
150 };
151
152 apb1_gates: apb1_gates@01c2006c {
153 #clock-cells = <1>;
154 compatible = "allwinner,sun4i-apb1-gates-clk";
155 reg = <0x01c2006c 0x4>;
156 clocks = <&apb1>;
157 clock-output-names = "apb1_i2c0", "apb1_i2c1",
158 "apb1_i2c2", "apb1_can", "apb1_scr",
159 "apb1_ps20", "apb1_ps21", "apb1_uart0",
160 "apb1_uart1", "apb1_uart2", "apb1_uart3",
161 "apb1_uart4", "apb1_uart5", "apb1_uart6",
162 "apb1_uart7";
163 };
164 };
165
166 soc@01c20000 {
167 compatible = "simple-bus";
168 #address-cells = <1>;
169 #size-cells = <1>;
170 reg = <0x01c20000 0x300000>;
171 ranges;
172
173 intc: interrupt-controller@01c20400 {
174 compatible = "allwinner,sunxi-ic";
175 reg = <0x01c20400 0x400>;
176 interrupt-controller;
177 #interrupt-cells = <1>;
178 };
179
22 pio: pinctrl@01c20800 { 180 pio: pinctrl@01c20800 {
23 compatible = "allwinner,sun5i-a13-pinctrl"; 181 compatible = "allwinner,sun5i-a13-pinctrl";
24 reg = <0x01c20800 0x400>; 182 reg = <0x01c20800 0x400>;
@@ -42,5 +200,37 @@
42 allwinner,pull = <0>; 200 allwinner,pull = <0>;
43 }; 201 };
44 }; 202 };
203
204 timer@01c20c00 {
205 compatible = "allwinner,sunxi-timer";
206 reg = <0x01c20c00 0x90>;
207 interrupts = <22>;
208 clocks = <&osc24M>;
209 };
210
211 wdt: watchdog@01c20c90 {
212 compatible = "allwinner,sunxi-wdt";
213 reg = <0x01c20c90 0x10>;
214 };
215
216 uart1: serial@01c28400 {
217 compatible = "snps,dw-apb-uart";
218 reg = <0x01c28400 0x400>;
219 interrupts = <2>;
220 reg-shift = <2>;
221 reg-io-width = <4>;
222 clocks = <&apb1_gates 17>;
223 status = "disabled";
224 };
225
226 uart3: serial@01c28c00 {
227 compatible = "snps,dw-apb-uart";
228 reg = <0x01c28c00 0x400>;
229 interrupts = <4>;
230 reg-shift = <2>;
231 reg-io-width = <4>;
232 clocks = <&apb1_gates 19>;
233 status = "disabled";
234 };
45 }; 235 };
46}; 236};
diff --git a/arch/arm/boot/dts/sunxi.dtsi b/arch/arm/boot/dts/sunxi.dtsi
deleted file mode 100644
index a8d47e200f87..000000000000
--- a/arch/arm/boot/dts/sunxi.dtsi
+++ /dev/null
@@ -1,208 +0,0 @@
1/*
2 * Copyright 2012 Maxime Ripard
3 *
4 * Maxime Ripard <maxime.ripard@free-electrons.com>
5 *
6 * The code contained herein is licensed under the GNU General Public
7 * License. You may obtain a copy of the GNU General Public License
8 * Version 2 or later at the following locations:
9 *
10 * http://www.opensource.org/licenses/gpl-license.html
11 * http://www.gnu.org/copyleft/gpl.html
12 */
13
14/include/ "skeleton.dtsi"
15
16/ {
17 interrupt-parent = <&intc>;
18
19 cpus {
20 cpu@0 {
21 compatible = "arm,cortex-a8";
22 };
23 };
24
25 clocks {
26 #address-cells = <1>;
27 #size-cells = <1>;
28 ranges;
29
30 /*
31 * This is a dummy clock, to be used as placeholder on
32 * other mux clocks when a specific parent clock is not
33 * yet implemented. It should be dropped when the driver
34 * is complete.
35 */
36 dummy: dummy {
37 #clock-cells = <0>;
38 compatible = "fixed-clock";
39 clock-frequency = <0>;
40 };
41
42 osc24M_fixed: osc24M_fixed {
43 #clock-cells = <0>;
44 compatible = "fixed-clock";
45 clock-frequency = <24000000>;
46 };
47
48 osc24M: osc24M@01c20050 {
49 #clock-cells = <0>;
50 compatible = "allwinner,sun4i-osc-clk";
51 reg = <0x01c20050 0x4>;
52 clocks = <&osc24M_fixed>;
53 };
54
55 osc32k: osc32k {
56 #clock-cells = <0>;
57 compatible = "fixed-clock";
58 clock-frequency = <32768>;
59 };
60
61 pll1: pll1@01c20000 {
62 #clock-cells = <0>;
63 compatible = "allwinner,sun4i-pll1-clk";
64 reg = <0x01c20000 0x4>;
65 clocks = <&osc24M>;
66 };
67
68 /* dummy is 200M */
69 cpu: cpu@01c20054 {
70 #clock-cells = <0>;
71 compatible = "allwinner,sun4i-cpu-clk";
72 reg = <0x01c20054 0x4>;
73 clocks = <&osc32k>, <&osc24M>, <&pll1>, <&dummy>;
74 };
75
76 axi: axi@01c20054 {
77 #clock-cells = <0>;
78 compatible = "allwinner,sun4i-axi-clk";
79 reg = <0x01c20054 0x4>;
80 clocks = <&cpu>;
81 };
82
83 axi_gates: axi_gates@01c2005c {
84 #clock-cells = <1>;
85 compatible = "allwinner,sun4i-axi-gates-clk";
86 reg = <0x01c2005c 0x4>;
87 clocks = <&axi>;
88 clock-output-names = "axi_dram";
89 };
90
91 ahb: ahb@01c20054 {
92 #clock-cells = <0>;
93 compatible = "allwinner,sun4i-ahb-clk";
94 reg = <0x01c20054 0x4>;
95 clocks = <&axi>;
96 };
97
98 ahb_gates: ahb_gates@01c20060 {
99 #clock-cells = <1>;
100 compatible = "allwinner,sun4i-ahb-gates-clk";
101 reg = <0x01c20060 0x8>;
102 clocks = <&ahb>;
103 clock-output-names = "ahb_usb0", "ahb_ehci0",
104 "ahb_ohci0", "ahb_ehci1", "ahb_ohci1", "ahb_ss",
105 "ahb_dma", "ahb_bist", "ahb_mmc0", "ahb_mmc1",
106 "ahb_mmc2", "ahb_mmc3", "ahb_ms", "ahb_nand",
107 "ahb_sdram", "ahb_ace", "ahb_emac", "ahb_ts",
108 "ahb_spi0", "ahb_spi1", "ahb_spi2", "ahb_spi3",
109 "ahb_pata", "ahb_sata", "ahb_gps", "ahb_ve",
110 "ahb_tvd", "ahb_tve0", "ahb_tve1", "ahb_lcd0",
111 "ahb_lcd1", "ahb_csi0", "ahb_csi1", "ahb_hdmi",
112 "ahb_de_be0", "ahb_de_be1", "ahb_de_fe0",
113 "ahb_de_fe1", "ahb_mp", "ahb_mali400";
114 };
115
116 apb0: apb0@01c20054 {
117 #clock-cells = <0>;
118 compatible = "allwinner,sun4i-apb0-clk";
119 reg = <0x01c20054 0x4>;
120 clocks = <&ahb>;
121 };
122
123 apb0_gates: apb0_gates@01c20068 {
124 #clock-cells = <1>;
125 compatible = "allwinner,sun4i-apb0-gates-clk";
126 reg = <0x01c20068 0x4>;
127 clocks = <&apb0>;
128 clock-output-names = "apb0_codec", "apb0_spdif",
129 "apb0_ac97", "apb0_iis", "apb0_pio", "apb0_ir0",
130 "apb0_ir1", "apb0_keypad";
131 };
132
133 /* dummy is pll62 */
134 apb1_mux: apb1_mux@01c20058 {
135 #clock-cells = <0>;
136 compatible = "allwinner,sun4i-apb1-mux-clk";
137 reg = <0x01c20058 0x4>;
138 clocks = <&osc24M>, <&dummy>, <&osc32k>;
139 };
140
141 apb1: apb1@01c20058 {
142 #clock-cells = <0>;
143 compatible = "allwinner,sun4i-apb1-clk";
144 reg = <0x01c20058 0x4>;
145 clocks = <&apb1_mux>;
146 };
147
148 apb1_gates: apb1_gates@01c2006c {
149 #clock-cells = <1>;
150 compatible = "allwinner,sun4i-apb1-gates-clk";
151 reg = <0x01c2006c 0x4>;
152 clocks = <&apb1>;
153 clock-output-names = "apb1_i2c0", "apb1_i2c1",
154 "apb1_i2c2", "apb1_can", "apb1_scr",
155 "apb1_ps20", "apb1_ps21", "apb1_uart0",
156 "apb1_uart1", "apb1_uart2", "apb1_uart3",
157 "apb1_uart4", "apb1_uart5", "apb1_uart6",
158 "apb1_uart7";
159 };
160 };
161
162 soc {
163 compatible = "simple-bus";
164 #address-cells = <1>;
165 #size-cells = <1>;
166 reg = <0x01c20000 0x300000>;
167 ranges;
168
169 timer@01c20c00 {
170 compatible = "allwinner,sunxi-timer";
171 reg = <0x01c20c00 0x90>;
172 interrupts = <22>;
173 clocks = <&osc24M>;
174 };
175
176 wdt: watchdog@01c20c90 {
177 compatible = "allwinner,sunxi-wdt";
178 reg = <0x01c20c90 0x10>;
179 };
180
181 intc: interrupt-controller@01c20400 {
182 compatible = "allwinner,sunxi-ic";
183 reg = <0x01c20400 0x400>;
184 interrupt-controller;
185 #interrupt-cells = <1>;
186 };
187
188 uart1: serial@01c28400 {
189 compatible = "snps,dw-apb-uart";
190 reg = <0x01c28400 0x400>;
191 interrupts = <2>;
192 reg-shift = <2>;
193 reg-io-width = <4>;
194 clocks = <&apb1_gates 17>;
195 status = "disabled";
196 };
197
198 uart3: serial@01c28c00 {
199 compatible = "snps,dw-apb-uart";
200 reg = <0x01c28c00 0x400>;
201 interrupts = <4>;
202 reg-shift = <2>;
203 reg-io-width = <4>;
204 clocks = <&apb1_gates 19>;
205 status = "disabled";
206 };
207 };
208};