blob: 25a97f08d94b3044888101d5f82d8e53784b7d93 [file] [log] [blame]
Maxime Ripard8aed3b32013-03-10 16:09:06 +01001/*
2 * Copyright 2013 Maxime Ripard
3 *
4 * Maxime Ripard <maxime.ripard@free-electrons.com>
5 *
Maxime Ripard6c3ba722014-09-02 19:25:26 +02006 * This file is dual-licensed: you can use it either under the terms
7 * of the GPL or the X11 license, at your option. Note that this dual
8 * licensing only applies to this file, and not this project as a
9 * whole.
Maxime Ripard8aed3b32013-03-10 16:09:06 +010010 *
Maxime Ripard5186d832014-10-17 11:38:23 +020011 * a) This file is free software; you can redistribute it and/or
Maxime Ripard6c3ba722014-09-02 19:25:26 +020012 * modify it under the terms of the GNU General Public License as
13 * published by the Free Software Foundation; either version 2 of the
14 * License, or (at your option) any later version.
15 *
Maxime Ripard5186d832014-10-17 11:38:23 +020016 * This file is distributed in the hope that it will be useful,
Maxime Ripard6c3ba722014-09-02 19:25:26 +020017 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public
Maxime Ripard5186d832014-10-17 11:38:23 +020022 * License along with this file; if not, write to the Free
Maxime Ripard6c3ba722014-09-02 19:25:26 +020023 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
24 * MA 02110-1301 USA
25 *
26 * Or, alternatively,
27 *
28 * b) Permission is hereby granted, free of charge, to any person
29 * obtaining a copy of this software and associated documentation
30 * files (the "Software"), to deal in the Software without
31 * restriction, including without limitation the rights to use,
32 * copy, modify, merge, publish, distribute, sublicense, and/or
33 * sell copies of the Software, and to permit persons to whom the
34 * Software is furnished to do so, subject to the following
35 * conditions:
36 *
37 * The above copyright notice and this permission notice shall be
38 * included in all copies or substantial portions of the Software.
39 *
40 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
41 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
42 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
43 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
44 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
45 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
46 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
47 * OTHER DEALINGS IN THE SOFTWARE.
Maxime Ripard8aed3b32013-03-10 16:09:06 +010048 */
49
Maxime Ripard71455702014-12-16 22:59:54 +010050#include "skeleton.dtsi"
Maxime Ripard8aed3b32013-03-10 16:09:06 +010051
Maxime Ripard19882b82014-12-16 22:59:58 +010052#include <dt-bindings/interrupt-controller/arm-gic.h>
Chen-Yu Tsaieb58b402015-03-26 05:04:49 +080053#include <dt-bindings/thermal/thermal.h>
Maxime Ripard19882b82014-12-16 22:59:58 +010054
Maxime Ripard092a0c32014-12-16 22:59:57 +010055#include <dt-bindings/pinctrl/sun4i-a10.h>
Maxime Ripard8aed3b32013-03-10 16:09:06 +010056
57/ {
58 interrupt-parent = <&gic>;
59
Maxime Ripard54428d42014-01-02 22:05:04 +010060 aliases {
Chen-Yu Tsaie5073fd2014-07-16 01:15:46 +080061 ethernet0 = &gmac;
Maxime Ripard54428d42014-01-02 22:05:04 +010062 };
63
Hans de Goedee53a8b22014-11-14 16:34:36 +010064 chosen {
65 #address-cells = <1>;
66 #size-cells = <1>;
67 ranges;
68
Hans de Goedea9f8cda2014-11-18 12:07:13 +010069 framebuffer@0 {
70 compatible = "allwinner,simple-framebuffer", "simple-framebuffer";
71 allwinner,pipeline = "de_be0-lcd0-hdmi";
Hans de Goede678e75d2014-11-16 17:09:32 +010072 clocks = <&pll6 0>;
Hans de Goedee53a8b22014-11-14 16:34:36 +010073 status = "disabled";
74 };
Hans de Goedefd18c7e2015-01-19 14:05:12 +010075
76 framebuffer@1 {
77 compatible = "allwinner,simple-framebuffer",
78 "simple-framebuffer";
79 allwinner,pipeline = "de_be0-lcd0";
80 clocks = <&pll6 0>;
81 status = "disabled";
82 };
Hans de Goedee53a8b22014-11-14 16:34:36 +010083 };
Maxime Ripard54428d42014-01-02 22:05:04 +010084
Maxime Ripard121b96c2015-01-11 20:33:44 +010085 timer {
86 compatible = "arm,armv7-timer";
87 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
88 <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
89 <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
90 <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
91 clock-frequency = <24000000>;
92 arm,cpu-registers-not-fw-configured;
Maxime Ripard8aed3b32013-03-10 16:09:06 +010093 };
94
95 cpus {
96 enable-method = "allwinner,sun6i-a31";
97 #address-cells = <1>;
98 #size-cells = <0>;
99
Chen-Yu Tsai3a2bc642015-03-26 05:04:48 +0800100 cpu0: cpu@0 {
Maxime Ripard8aed3b32013-03-10 16:09:06 +0100101 compatible = "arm,cortex-a7";
102 device_type = "cpu";
103 reg = <0>;
Chen-Yu Tsai3a2bc642015-03-26 05:04:48 +0800104 clocks = <&cpu>;
105 clock-latency = <244144>; /* 8 32k periods */
106 operating-points = <
107 /* kHz uV */
108 1008000 1200000
109 864000 1200000
110 720000 1100000
111 480000 1000000
112 >;
113 #cooling-cells = <2>;
114 cooling-min-level = <0>;
115 cooling-max-level = <3>;
Maxime Ripard8aed3b32013-03-10 16:09:06 +0100116 };
117
118 cpu@1 {
119 compatible = "arm,cortex-a7";
120 device_type = "cpu";
121 reg = <1>;
122 };
123
124 cpu@2 {
125 compatible = "arm,cortex-a7";
126 device_type = "cpu";
127 reg = <2>;
128 };
129
130 cpu@3 {
131 compatible = "arm,cortex-a7";
132 device_type = "cpu";
133 reg = <3>;
134 };
135 };
136
Chen-Yu Tsaieb58b402015-03-26 05:04:49 +0800137 thermal-zones {
138 cpu_thermal {
139 /* milliseconds */
140 polling-delay-passive = <250>;
141 polling-delay = <1000>;
142 thermal-sensors = <&rtp>;
143
144 cooling-maps {
145 map0 {
146 trip = <&cpu_alert0>;
147 cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
148 };
149 };
150
151 trips {
152 cpu_alert0: cpu_alert0 {
153 /* milliCelsius */
154 temperature = <70000>;
155 hysteresis = <2000>;
156 type = "passive";
157 };
158
159 cpu_crit: cpu_crit {
160 /* milliCelsius */
161 temperature = <100000>;
162 hysteresis = <2000>;
163 type = "critical";
164 };
165 };
166 };
167 };
168
Maxime Ripard8aed3b32013-03-10 16:09:06 +0100169 memory {
170 reg = <0x40000000 0x80000000>;
171 };
172
Maxime Ripardb5a10b72014-04-17 21:54:41 +0200173 pmu {
174 compatible = "arm,cortex-a7-pmu", "arm,cortex-a15-pmu";
Maxime Ripard19882b82014-12-16 22:59:58 +0100175 interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>,
176 <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>,
177 <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>,
178 <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
Maxime Ripardb5a10b72014-04-17 21:54:41 +0200179 };
180
Maxime Ripard8aed3b32013-03-10 16:09:06 +0100181 clocks {
182 #address-cells = <1>;
Maxime Ripard98096562013-07-23 23:54:19 +0200183 #size-cells = <1>;
184 ranges;
Maxime Ripard8aed3b32013-03-10 16:09:06 +0100185
Maxime Ripard98096562013-07-23 23:54:19 +0200186 osc24M: osc24M {
Maxime Ripard8aed3b32013-03-10 16:09:06 +0100187 #clock-cells = <0>;
188 compatible = "fixed-clock";
189 clock-frequency = <24000000>;
190 };
Maxime Ripard98096562013-07-23 23:54:19 +0200191
Chen-Yu Tsai7b5b2902014-02-03 09:51:43 +0800192 osc32k: clk@0 {
Maxime Ripard98096562013-07-23 23:54:19 +0200193 #clock-cells = <0>;
194 compatible = "fixed-clock";
195 clock-frequency = <32768>;
Chen-Yu Tsai7b5b2902014-02-03 09:51:43 +0800196 clock-output-names = "osc32k";
Maxime Ripard98096562013-07-23 23:54:19 +0200197 };
198
Chen-Yu Tsai7b5b2902014-02-03 09:51:43 +0800199 pll1: clk@01c20000 {
Maxime Ripard98096562013-07-23 23:54:19 +0200200 #clock-cells = <0>;
201 compatible = "allwinner,sun6i-a31-pll1-clk";
202 reg = <0x01c20000 0x4>;
203 clocks = <&osc24M>;
Chen-Yu Tsai7b5b2902014-02-03 09:51:43 +0800204 clock-output-names = "pll1";
Maxime Ripard98096562013-07-23 23:54:19 +0200205 };
206
Maxime Ripardb0a09c72014-02-05 14:05:04 +0100207 pll6: clk@01c20028 {
Chen-Yu Tsaif6c3b042014-11-13 02:08:32 +0800208 #clock-cells = <1>;
Maxime Ripardb0a09c72014-02-05 14:05:04 +0100209 compatible = "allwinner,sun6i-a31-pll6-clk";
210 reg = <0x01c20028 0x4>;
211 clocks = <&osc24M>;
Chen-Yu Tsaif6c3b042014-11-13 02:08:32 +0800212 clock-output-names = "pll6", "pll6x2";
Maxime Ripard98096562013-07-23 23:54:19 +0200213 };
214
215 cpu: cpu@01c20050 {
216 #clock-cells = <0>;
Maxime Ripardbf6534a2014-02-06 09:55:58 +0100217 compatible = "allwinner,sun4i-a10-cpu-clk";
Maxime Ripard98096562013-07-23 23:54:19 +0200218 reg = <0x01c20050 0x4>;
219
220 /*
221 * PLL1 is listed twice here.
222 * While it looks suspicious, it's actually documented
223 * that way both in the datasheet and in the code from
224 * Allwinner.
225 */
226 clocks = <&osc32k>, <&osc24M>, <&pll1>, <&pll1>;
Chen-Yu Tsai7b5b2902014-02-03 09:51:43 +0800227 clock-output-names = "cpu";
Maxime Ripard98096562013-07-23 23:54:19 +0200228 };
229
230 axi: axi@01c20050 {
231 #clock-cells = <0>;
Maxime Ripardbf6534a2014-02-06 09:55:58 +0100232 compatible = "allwinner,sun4i-a10-axi-clk";
Maxime Ripard98096562013-07-23 23:54:19 +0200233 reg = <0x01c20050 0x4>;
234 clocks = <&cpu>;
Chen-Yu Tsai7b5b2902014-02-03 09:51:43 +0800235 clock-output-names = "axi";
Maxime Ripard98096562013-07-23 23:54:19 +0200236 };
237
Maxime Ripard98096562013-07-23 23:54:19 +0200238 ahb1: ahb1@01c20054 {
239 #clock-cells = <0>;
Chen-Yu Tsai42cc7132014-11-26 15:16:53 +0800240 compatible = "allwinner,sun6i-a31-ahb1-clk";
Maxime Ripard98096562013-07-23 23:54:19 +0200241 reg = <0x01c20054 0x4>;
Chen-Yu Tsai42cc7132014-11-26 15:16:53 +0800242 clocks = <&osc32k>, <&osc24M>, <&axi>, <&pll6 0>;
Chen-Yu Tsai7b5b2902014-02-03 09:51:43 +0800243 clock-output-names = "ahb1";
Maxime Ripard98096562013-07-23 23:54:19 +0200244 };
245
Chen-Yu Tsai7b5b2902014-02-03 09:51:43 +0800246 ahb1_gates: clk@01c20060 {
Maxime Ripard98096562013-07-23 23:54:19 +0200247 #clock-cells = <1>;
248 compatible = "allwinner,sun6i-a31-ahb1-gates-clk";
249 reg = <0x01c20060 0x8>;
250 clocks = <&ahb1>;
251 clock-output-names = "ahb1_mipidsi", "ahb1_ss",
252 "ahb1_dma", "ahb1_mmc0", "ahb1_mmc1",
253 "ahb1_mmc2", "ahb1_mmc3", "ahb1_nand1",
254 "ahb1_nand0", "ahb1_sdram",
255 "ahb1_gmac", "ahb1_ts", "ahb1_hstimer",
256 "ahb1_spi0", "ahb1_spi1", "ahb1_spi2",
257 "ahb1_spi3", "ahb1_otg", "ahb1_ehci0",
258 "ahb1_ehci1", "ahb1_ohci0",
259 "ahb1_ohci1", "ahb1_ohci2", "ahb1_ve",
260 "ahb1_lcd0", "ahb1_lcd1", "ahb1_csi",
261 "ahb1_hdmi", "ahb1_de0", "ahb1_de1",
262 "ahb1_fe0", "ahb1_fe1", "ahb1_mp",
263 "ahb1_gpu", "ahb1_deu0", "ahb1_deu1",
264 "ahb1_drc0", "ahb1_drc1";
265 };
266
267 apb1: apb1@01c20054 {
268 #clock-cells = <0>;
Maxime Ripardbf6534a2014-02-06 09:55:58 +0100269 compatible = "allwinner,sun4i-a10-apb0-clk";
Maxime Ripard98096562013-07-23 23:54:19 +0200270 reg = <0x01c20054 0x4>;
271 clocks = <&ahb1>;
Chen-Yu Tsai7b5b2902014-02-03 09:51:43 +0800272 clock-output-names = "apb1";
Maxime Ripard98096562013-07-23 23:54:19 +0200273 };
274
Chen-Yu Tsai7b5b2902014-02-03 09:51:43 +0800275 apb1_gates: clk@01c20068 {
Maxime Ripard98096562013-07-23 23:54:19 +0200276 #clock-cells = <1>;
277 compatible = "allwinner,sun6i-a31-apb1-gates-clk";
278 reg = <0x01c20068 0x4>;
279 clocks = <&apb1>;
280 clock-output-names = "apb1_codec", "apb1_digital_mic",
281 "apb1_pio", "apb1_daudio0",
282 "apb1_daudio1";
283 };
284
Chen-Yu Tsai74c947a2014-11-06 11:40:31 +0800285 apb2: clk@01c20058 {
Maxime Ripard98096562013-07-23 23:54:19 +0200286 #clock-cells = <0>;
Chen-Yu Tsai74c947a2014-11-06 11:40:31 +0800287 compatible = "allwinner,sun4i-a10-apb1-clk";
Maxime Ripard98096562013-07-23 23:54:19 +0200288 reg = <0x01c20058 0x4>;
Chen-Yu Tsaif6c3b042014-11-13 02:08:32 +0800289 clocks = <&osc32k>, <&osc24M>, <&pll6 0>, <&pll6 0>;
Chen-Yu Tsai7b5b2902014-02-03 09:51:43 +0800290 clock-output-names = "apb2";
Maxime Ripard98096562013-07-23 23:54:19 +0200291 };
292
Chen-Yu Tsai7b5b2902014-02-03 09:51:43 +0800293 apb2_gates: clk@01c2006c {
Maxime Ripard98096562013-07-23 23:54:19 +0200294 #clock-cells = <1>;
295 compatible = "allwinner,sun6i-a31-apb2-gates-clk";
Maxime Ripard439d9f52013-09-24 16:30:05 +0300296 reg = <0x01c2006c 0x4>;
Maxime Ripard98096562013-07-23 23:54:19 +0200297 clocks = <&apb2>;
298 clock-output-names = "apb2_i2c0", "apb2_i2c1",
299 "apb2_i2c2", "apb2_i2c3", "apb2_uart0",
300 "apb2_uart1", "apb2_uart2", "apb2_uart3",
301 "apb2_uart4", "apb2_uart5";
302 };
Maxime Ripardb0a09c72014-02-05 14:05:04 +0100303
Hans de Goedeadc54c82014-05-02 17:57:23 +0200304 mmc0_clk: clk@01c20088 {
Maxime Ripardd8c3a392014-07-11 19:39:06 +0200305 #clock-cells = <1>;
306 compatible = "allwinner,sun4i-a10-mmc-clk";
Hans de Goedeadc54c82014-05-02 17:57:23 +0200307 reg = <0x01c20088 0x4>;
Chen-Yu Tsaif6c3b042014-11-13 02:08:32 +0800308 clocks = <&osc24M>, <&pll6 0>;
Maxime Ripardd8c3a392014-07-11 19:39:06 +0200309 clock-output-names = "mmc0",
310 "mmc0_output",
311 "mmc0_sample";
Hans de Goedeadc54c82014-05-02 17:57:23 +0200312 };
313
314 mmc1_clk: clk@01c2008c {
Maxime Ripardd8c3a392014-07-11 19:39:06 +0200315 #clock-cells = <1>;
316 compatible = "allwinner,sun4i-a10-mmc-clk";
Hans de Goedeadc54c82014-05-02 17:57:23 +0200317 reg = <0x01c2008c 0x4>;
Chen-Yu Tsaif6c3b042014-11-13 02:08:32 +0800318 clocks = <&osc24M>, <&pll6 0>;
Maxime Ripardd8c3a392014-07-11 19:39:06 +0200319 clock-output-names = "mmc1",
320 "mmc1_output",
321 "mmc1_sample";
Hans de Goedeadc54c82014-05-02 17:57:23 +0200322 };
323
324 mmc2_clk: clk@01c20090 {
Maxime Ripardd8c3a392014-07-11 19:39:06 +0200325 #clock-cells = <1>;
326 compatible = "allwinner,sun4i-a10-mmc-clk";
Hans de Goedeadc54c82014-05-02 17:57:23 +0200327 reg = <0x01c20090 0x4>;
Chen-Yu Tsaif6c3b042014-11-13 02:08:32 +0800328 clocks = <&osc24M>, <&pll6 0>;
Maxime Ripardd8c3a392014-07-11 19:39:06 +0200329 clock-output-names = "mmc2",
330 "mmc2_output",
331 "mmc2_sample";
Hans de Goedeadc54c82014-05-02 17:57:23 +0200332 };
333
334 mmc3_clk: clk@01c20094 {
Maxime Ripardd8c3a392014-07-11 19:39:06 +0200335 #clock-cells = <1>;
336 compatible = "allwinner,sun4i-a10-mmc-clk";
Hans de Goedeadc54c82014-05-02 17:57:23 +0200337 reg = <0x01c20094 0x4>;
Chen-Yu Tsaif6c3b042014-11-13 02:08:32 +0800338 clocks = <&osc24M>, <&pll6 0>;
Maxime Ripardd8c3a392014-07-11 19:39:06 +0200339 clock-output-names = "mmc3",
340 "mmc3_output",
341 "mmc3_sample";
Hans de Goedeadc54c82014-05-02 17:57:23 +0200342 };
343
Maxime Ripardb0a09c72014-02-05 14:05:04 +0100344 spi0_clk: clk@01c200a0 {
345 #clock-cells = <0>;
Maxime Ripard225b0212014-02-24 17:29:06 +0100346 compatible = "allwinner,sun4i-a10-mod0-clk";
Maxime Ripardb0a09c72014-02-05 14:05:04 +0100347 reg = <0x01c200a0 0x4>;
Chen-Yu Tsaif6c3b042014-11-13 02:08:32 +0800348 clocks = <&osc24M>, <&pll6 0>;
Maxime Ripardb0a09c72014-02-05 14:05:04 +0100349 clock-output-names = "spi0";
350 };
351
352 spi1_clk: clk@01c200a4 {
353 #clock-cells = <0>;
Maxime Ripard225b0212014-02-24 17:29:06 +0100354 compatible = "allwinner,sun4i-a10-mod0-clk";
Maxime Ripardb0a09c72014-02-05 14:05:04 +0100355 reg = <0x01c200a4 0x4>;
Chen-Yu Tsaif6c3b042014-11-13 02:08:32 +0800356 clocks = <&osc24M>, <&pll6 0>;
Maxime Ripardb0a09c72014-02-05 14:05:04 +0100357 clock-output-names = "spi1";
358 };
359
360 spi2_clk: clk@01c200a8 {
361 #clock-cells = <0>;
Maxime Ripard225b0212014-02-24 17:29:06 +0100362 compatible = "allwinner,sun4i-a10-mod0-clk";
Maxime Ripardb0a09c72014-02-05 14:05:04 +0100363 reg = <0x01c200a8 0x4>;
Chen-Yu Tsaif6c3b042014-11-13 02:08:32 +0800364 clocks = <&osc24M>, <&pll6 0>;
Maxime Ripardb0a09c72014-02-05 14:05:04 +0100365 clock-output-names = "spi2";
366 };
367
368 spi3_clk: clk@01c200ac {
369 #clock-cells = <0>;
Maxime Ripard225b0212014-02-24 17:29:06 +0100370 compatible = "allwinner,sun4i-a10-mod0-clk";
Maxime Ripardb0a09c72014-02-05 14:05:04 +0100371 reg = <0x01c200ac 0x4>;
Chen-Yu Tsaif6c3b042014-11-13 02:08:32 +0800372 clocks = <&osc24M>, <&pll6 0>;
Maxime Ripardb0a09c72014-02-05 14:05:04 +0100373 clock-output-names = "spi3";
374 };
Maxime Ripard94a1cd12014-05-13 17:44:16 +0200375
376 usb_clk: clk@01c200cc {
377 #clock-cells = <1>;
378 #reset-cells = <1>;
379 compatible = "allwinner,sun6i-a31-usb-clk";
380 reg = <0x01c200cc 0x4>;
381 clocks = <&osc24M>;
382 clock-output-names = "usb_phy0", "usb_phy1", "usb_phy2",
383 "usb_ohci0", "usb_ohci1",
384 "usb_ohci2";
385 };
Chen-Yu Tsaied298612014-07-16 01:15:44 +0800386
387 /*
388 * The following two are dummy clocks, placeholders used in the gmac_tx
389 * clock. The gmac driver will choose one parent depending on the PHY
390 * interface mode, using clk_set_rate auto-reparenting.
391 * The actual TX clock rate is not controlled by the gmac_tx clock.
392 */
393 mii_phy_tx_clk: clk@1 {
394 #clock-cells = <0>;
395 compatible = "fixed-clock";
396 clock-frequency = <25000000>;
397 clock-output-names = "mii_phy_tx";
398 };
399
400 gmac_int_tx_clk: clk@2 {
401 #clock-cells = <0>;
402 compatible = "fixed-clock";
403 clock-frequency = <125000000>;
404 clock-output-names = "gmac_int_tx";
405 };
406
407 gmac_tx_clk: clk@01c200d0 {
408 #clock-cells = <0>;
409 compatible = "allwinner,sun7i-a20-gmac-clk";
410 reg = <0x01c200d0 0x4>;
411 clocks = <&mii_phy_tx_clk>, <&gmac_int_tx_clk>;
412 clock-output-names = "gmac_tx";
413 };
Maxime Ripard8aed3b32013-03-10 16:09:06 +0100414 };
415
416 soc@01c00000 {
417 compatible = "simple-bus";
418 #address-cells = <1>;
419 #size-cells = <1>;
420 ranges;
421
Maxime Ripardd2d878c2014-01-30 15:41:23 +0100422 dma: dma-controller@01c02000 {
423 compatible = "allwinner,sun6i-a31-dma";
424 reg = <0x01c02000 0x1000>;
Maxime Ripard19882b82014-12-16 22:59:58 +0100425 interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
Maxime Ripardd2d878c2014-01-30 15:41:23 +0100426 clocks = <&ahb1_gates 6>;
427 resets = <&ahb1_rst 6>;
428 #dma-cells = <1>;
Chen-Yu Tsai532425a2014-11-06 19:56:49 +0800429
430 /* DMA controller requires AHB1 clocked from PLL6 */
Chen-Yu Tsai42cc7132014-11-26 15:16:53 +0800431 assigned-clocks = <&ahb1>;
Chen-Yu Tsaif6c3b042014-11-13 02:08:32 +0800432 assigned-clock-parents = <&pll6 0>;
Maxime Ripardd2d878c2014-01-30 15:41:23 +0100433 };
434
Hans de Goede5b753f02014-05-02 17:57:24 +0200435 mmc0: mmc@01c0f000 {
436 compatible = "allwinner,sun5i-a13-mmc";
437 reg = <0x01c0f000 0x1000>;
Maxime Ripardd8c3a392014-07-11 19:39:06 +0200438 clocks = <&ahb1_gates 8>,
439 <&mmc0_clk 0>,
440 <&mmc0_clk 1>,
441 <&mmc0_clk 2>;
442 clock-names = "ahb",
443 "mmc",
444 "output",
445 "sample";
Hans de Goede5b753f02014-05-02 17:57:24 +0200446 resets = <&ahb1_rst 8>;
447 reset-names = "ahb";
Maxime Ripard19882b82014-12-16 22:59:58 +0100448 interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
Hans de Goede5b753f02014-05-02 17:57:24 +0200449 status = "disabled";
Hans de Goede4c1bb9c2015-03-10 16:27:09 +0100450 #address-cells = <1>;
451 #size-cells = <0>;
Hans de Goede5b753f02014-05-02 17:57:24 +0200452 };
453
454 mmc1: mmc@01c10000 {
455 compatible = "allwinner,sun5i-a13-mmc";
456 reg = <0x01c10000 0x1000>;
Maxime Ripardd8c3a392014-07-11 19:39:06 +0200457 clocks = <&ahb1_gates 9>,
458 <&mmc1_clk 0>,
459 <&mmc1_clk 1>,
460 <&mmc1_clk 2>;
461 clock-names = "ahb",
462 "mmc",
463 "output",
464 "sample";
Hans de Goede5b753f02014-05-02 17:57:24 +0200465 resets = <&ahb1_rst 9>;
466 reset-names = "ahb";
Maxime Ripard19882b82014-12-16 22:59:58 +0100467 interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
Hans de Goede5b753f02014-05-02 17:57:24 +0200468 status = "disabled";
Hans de Goede4c1bb9c2015-03-10 16:27:09 +0100469 #address-cells = <1>;
470 #size-cells = <0>;
Hans de Goede5b753f02014-05-02 17:57:24 +0200471 };
472
473 mmc2: mmc@01c11000 {
474 compatible = "allwinner,sun5i-a13-mmc";
475 reg = <0x01c11000 0x1000>;
Maxime Ripardd8c3a392014-07-11 19:39:06 +0200476 clocks = <&ahb1_gates 10>,
477 <&mmc2_clk 0>,
478 <&mmc2_clk 1>,
479 <&mmc2_clk 2>;
480 clock-names = "ahb",
481 "mmc",
482 "output",
483 "sample";
Hans de Goede5b753f02014-05-02 17:57:24 +0200484 resets = <&ahb1_rst 10>;
485 reset-names = "ahb";
Maxime Ripard19882b82014-12-16 22:59:58 +0100486 interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
Hans de Goede5b753f02014-05-02 17:57:24 +0200487 status = "disabled";
Hans de Goede4c1bb9c2015-03-10 16:27:09 +0100488 #address-cells = <1>;
489 #size-cells = <0>;
Hans de Goede5b753f02014-05-02 17:57:24 +0200490 };
491
492 mmc3: mmc@01c12000 {
493 compatible = "allwinner,sun5i-a13-mmc";
494 reg = <0x01c12000 0x1000>;
Maxime Ripardd8c3a392014-07-11 19:39:06 +0200495 clocks = <&ahb1_gates 11>,
496 <&mmc3_clk 0>,
497 <&mmc3_clk 1>,
498 <&mmc3_clk 2>;
499 clock-names = "ahb",
500 "mmc",
501 "output",
502 "sample";
Hans de Goede5b753f02014-05-02 17:57:24 +0200503 resets = <&ahb1_rst 11>;
504 reset-names = "ahb";
Maxime Ripard19882b82014-12-16 22:59:58 +0100505 interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
Hans de Goede5b753f02014-05-02 17:57:24 +0200506 status = "disabled";
Hans de Goede4c1bb9c2015-03-10 16:27:09 +0100507 #address-cells = <1>;
508 #size-cells = <0>;
Hans de Goede5b753f02014-05-02 17:57:24 +0200509 };
510
Maxime Ripardef964082014-05-13 17:44:21 +0200511 usbphy: phy@01c19400 {
512 compatible = "allwinner,sun6i-a31-usb-phy";
513 reg = <0x01c19400 0x10>,
514 <0x01c1a800 0x4>,
515 <0x01c1b800 0x4>;
516 reg-names = "phy_ctrl",
517 "pmu1",
518 "pmu2";
519 clocks = <&usb_clk 8>,
520 <&usb_clk 9>,
521 <&usb_clk 10>;
522 clock-names = "usb0_phy",
523 "usb1_phy",
524 "usb2_phy";
525 resets = <&usb_clk 0>,
526 <&usb_clk 1>,
527 <&usb_clk 2>;
528 reset-names = "usb0_reset",
529 "usb1_reset",
530 "usb2_reset";
531 status = "disabled";
532 #phy-cells = <1>;
533 };
534
535 ehci0: usb@01c1a000 {
536 compatible = "allwinner,sun6i-a31-ehci", "generic-ehci";
537 reg = <0x01c1a000 0x100>;
Maxime Ripard19882b82014-12-16 22:59:58 +0100538 interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
Maxime Ripardef964082014-05-13 17:44:21 +0200539 clocks = <&ahb1_gates 26>;
540 resets = <&ahb1_rst 26>;
541 phys = <&usbphy 1>;
542 phy-names = "usb";
543 status = "disabled";
544 };
545
546 ohci0: usb@01c1a400 {
547 compatible = "allwinner,sun6i-a31-ohci", "generic-ohci";
548 reg = <0x01c1a400 0x100>;
Maxime Ripard19882b82014-12-16 22:59:58 +0100549 interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
Maxime Ripardef964082014-05-13 17:44:21 +0200550 clocks = <&ahb1_gates 29>, <&usb_clk 16>;
551 resets = <&ahb1_rst 29>;
552 phys = <&usbphy 1>;
553 phy-names = "usb";
554 status = "disabled";
555 };
556
557 ehci1: usb@01c1b000 {
558 compatible = "allwinner,sun6i-a31-ehci", "generic-ehci";
559 reg = <0x01c1b000 0x100>;
Maxime Ripard19882b82014-12-16 22:59:58 +0100560 interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
Maxime Ripardef964082014-05-13 17:44:21 +0200561 clocks = <&ahb1_gates 27>;
562 resets = <&ahb1_rst 27>;
563 phys = <&usbphy 2>;
564 phy-names = "usb";
565 status = "disabled";
566 };
567
568 ohci1: usb@01c1b400 {
569 compatible = "allwinner,sun6i-a31-ohci", "generic-ohci";
570 reg = <0x01c1b400 0x100>;
Maxime Ripard19882b82014-12-16 22:59:58 +0100571 interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
Maxime Ripardef964082014-05-13 17:44:21 +0200572 clocks = <&ahb1_gates 30>, <&usb_clk 17>;
573 resets = <&ahb1_rst 30>;
574 phys = <&usbphy 2>;
575 phy-names = "usb";
576 status = "disabled";
577 };
578
Maxime Ripardb294ebb2014-05-20 13:59:58 +0200579 ohci2: usb@01c1c400 {
Maxime Ripardef964082014-05-13 17:44:21 +0200580 compatible = "allwinner,sun6i-a31-ohci", "generic-ohci";
581 reg = <0x01c1c400 0x100>;
Maxime Ripard19882b82014-12-16 22:59:58 +0100582 interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
Maxime Ripardef964082014-05-13 17:44:21 +0200583 clocks = <&ahb1_gates 31>, <&usb_clk 18>;
584 resets = <&ahb1_rst 31>;
585 status = "disabled";
586 };
587
Maxime Ripard140e1722013-03-12 22:16:05 +0100588 pio: pinctrl@01c20800 {
589 compatible = "allwinner,sun6i-a31-pinctrl";
590 reg = <0x01c20800 0x400>;
Maxime Ripard19882b82014-12-16 22:59:58 +0100591 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
592 <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>,
593 <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
594 <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
Maxime Ripard98096562013-07-23 23:54:19 +0200595 clocks = <&apb1_gates 5>;
Maxime Ripard140e1722013-03-12 22:16:05 +0100596 gpio-controller;
597 interrupt-controller;
Chen-Yu Tsai7d4ff962014-06-30 23:57:51 +0200598 #interrupt-cells = <2>;
Maxime Ripard140e1722013-03-12 22:16:05 +0100599 #size-cells = <0>;
600 #gpio-cells = <3>;
Maxime Ripardab4238c2013-06-22 23:56:40 +0200601
602 uart0_pins_a: uart0@0 {
603 allwinner,pins = "PH20", "PH21";
604 allwinner,function = "uart0";
Maxime Ripard092a0c32014-12-16 22:59:57 +0100605 allwinner,drive = <SUN4I_PINCTRL_10_MA>;
606 allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
Maxime Ripardab4238c2013-06-22 23:56:40 +0200607 };
Maxime Ripard8be188b2014-03-04 17:28:40 +0100608
609 i2c0_pins_a: i2c0@0 {
610 allwinner,pins = "PH14", "PH15";
611 allwinner,function = "i2c0";
Maxime Ripard092a0c32014-12-16 22:59:57 +0100612 allwinner,drive = <SUN4I_PINCTRL_10_MA>;
613 allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
Maxime Ripard8be188b2014-03-04 17:28:40 +0100614 };
615
616 i2c1_pins_a: i2c1@0 {
617 allwinner,pins = "PH16", "PH17";
618 allwinner,function = "i2c1";
Maxime Ripard092a0c32014-12-16 22:59:57 +0100619 allwinner,drive = <SUN4I_PINCTRL_10_MA>;
620 allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
Maxime Ripard8be188b2014-03-04 17:28:40 +0100621 };
622
623 i2c2_pins_a: i2c2@0 {
624 allwinner,pins = "PH18", "PH19";
625 allwinner,function = "i2c2";
Maxime Ripard092a0c32014-12-16 22:59:57 +0100626 allwinner,drive = <SUN4I_PINCTRL_10_MA>;
627 allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
Maxime Ripard8be188b2014-03-04 17:28:40 +0100628 };
Hans de Goede9797eb82014-04-26 12:16:16 +0200629
630 mmc0_pins_a: mmc0@0 {
631 allwinner,pins = "PF0","PF1","PF2","PF3","PF4","PF5";
632 allwinner,function = "mmc0";
Maxime Ripard092a0c32014-12-16 22:59:57 +0100633 allwinner,drive = <SUN4I_PINCTRL_30_MA>;
634 allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
Hans de Goede9797eb82014-04-26 12:16:16 +0200635 };
Chen-Yu Tsaiee39a3e2014-07-16 01:15:43 +0800636
Chen-Yu Tsai878c4de2015-03-10 19:59:22 +0800637 mmc1_pins_a: mmc1@0 {
638 allwinner,pins = "PG0", "PG1", "PG2", "PG3",
639 "PG4", "PG5";
640 allwinner,function = "mmc1";
641 allwinner,drive = <SUN4I_PINCTRL_30_MA>;
642 allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
643 };
644
Chen-Yu Tsaiee39a3e2014-07-16 01:15:43 +0800645 gmac_pins_mii_a: gmac_mii@0 {
646 allwinner,pins = "PA0", "PA1", "PA2", "PA3",
647 "PA8", "PA9", "PA11",
648 "PA12", "PA13", "PA14", "PA19",
649 "PA20", "PA21", "PA22", "PA23",
650 "PA24", "PA26", "PA27";
651 allwinner,function = "gmac";
Maxime Ripard092a0c32014-12-16 22:59:57 +0100652 allwinner,drive = <SUN4I_PINCTRL_10_MA>;
653 allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
Chen-Yu Tsaiee39a3e2014-07-16 01:15:43 +0800654 };
655
656 gmac_pins_gmii_a: gmac_gmii@0 {
657 allwinner,pins = "PA0", "PA1", "PA2", "PA3",
658 "PA4", "PA5", "PA6", "PA7",
659 "PA8", "PA9", "PA10", "PA11",
660 "PA12", "PA13", "PA14", "PA15",
661 "PA16", "PA17", "PA18", "PA19",
662 "PA20", "PA21", "PA22", "PA23",
663 "PA24", "PA25", "PA26", "PA27";
664 allwinner,function = "gmac";
665 /*
666 * data lines in GMII mode run at 125MHz and
667 * might need a higher signal drive strength
668 */
Maxime Ripard092a0c32014-12-16 22:59:57 +0100669 allwinner,drive = <SUN4I_PINCTRL_30_MA>;
670 allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
Chen-Yu Tsaiee39a3e2014-07-16 01:15:43 +0800671 };
672
673 gmac_pins_rgmii_a: gmac_rgmii@0 {
674 allwinner,pins = "PA0", "PA1", "PA2", "PA3",
675 "PA9", "PA10", "PA11",
676 "PA12", "PA13", "PA14", "PA19",
677 "PA20", "PA25", "PA26", "PA27";
678 allwinner,function = "gmac";
679 /*
680 * data lines in RGMII mode use DDR mode
681 * and need a higher signal drive strength
682 */
Maxime Ripard092a0c32014-12-16 22:59:57 +0100683 allwinner,drive = <SUN4I_PINCTRL_40_MA>;
684 allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
Chen-Yu Tsaiee39a3e2014-07-16 01:15:43 +0800685 };
Maxime Ripard140e1722013-03-12 22:16:05 +0100686 };
687
Maxime Ripard24a661e92013-09-24 11:10:41 +0300688 ahb1_rst: reset@01c202c0 {
689 #reset-cells = <1>;
690 compatible = "allwinner,sun6i-a31-ahb1-reset";
691 reg = <0x01c202c0 0xc>;
692 };
693
694 apb1_rst: reset@01c202d0 {
695 #reset-cells = <1>;
696 compatible = "allwinner,sun6i-a31-clock-reset";
697 reg = <0x01c202d0 0x4>;
698 };
699
700 apb2_rst: reset@01c202d8 {
701 #reset-cells = <1>;
702 compatible = "allwinner,sun6i-a31-clock-reset";
703 reg = <0x01c202d8 0x4>;
704 };
705
Maxime Ripard8aed3b32013-03-10 16:09:06 +0100706 timer@01c20c00 {
Maxime Ripardb4f26442014-02-06 10:40:32 +0100707 compatible = "allwinner,sun4i-a10-timer";
Maxime Ripard8aed3b32013-03-10 16:09:06 +0100708 reg = <0x01c20c00 0xa0>;
Maxime Ripard19882b82014-12-16 22:59:58 +0100709 interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
710 <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
711 <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>,
712 <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>,
713 <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
Maxime Ripard98096562013-07-23 23:54:19 +0200714 clocks = <&osc24M>;
Maxime Ripard8aed3b32013-03-10 16:09:06 +0100715 };
716
717 wdt1: watchdog@01c20ca0 {
Maxime Ripardca5d04d2014-02-07 22:29:26 +0100718 compatible = "allwinner,sun6i-a31-wdt";
Maxime Ripard8aed3b32013-03-10 16:09:06 +0100719 reg = <0x01c20ca0 0x20>;
720 };
721
Chen-Yu Tsai4ec45cd2015-01-24 22:33:48 +0800722 rtp: rtp@01c25000 {
723 compatible = "allwinner,sun6i-a31-ts";
724 reg = <0x01c25000 0x100>;
725 interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
726 #thermal-sensor-cells = <0>;
727 };
728
Maxime Ripard8aed3b32013-03-10 16:09:06 +0100729 uart0: serial@01c28000 {
730 compatible = "snps,dw-apb-uart";
731 reg = <0x01c28000 0x400>;
Maxime Ripard19882b82014-12-16 22:59:58 +0100732 interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
Maxime Ripard8aed3b32013-03-10 16:09:06 +0100733 reg-shift = <2>;
734 reg-io-width = <4>;
Maxime Ripard98096562013-07-23 23:54:19 +0200735 clocks = <&apb2_gates 16>;
Maxime Ripard24a661e92013-09-24 11:10:41 +0300736 resets = <&apb2_rst 16>;
Maxime Ripardd2d878c2014-01-30 15:41:23 +0100737 dmas = <&dma 6>, <&dma 6>;
738 dma-names = "rx", "tx";
Maxime Ripard8aed3b32013-03-10 16:09:06 +0100739 status = "disabled";
740 };
741
742 uart1: serial@01c28400 {
743 compatible = "snps,dw-apb-uart";
744 reg = <0x01c28400 0x400>;
Maxime Ripard19882b82014-12-16 22:59:58 +0100745 interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
Maxime Ripard8aed3b32013-03-10 16:09:06 +0100746 reg-shift = <2>;
747 reg-io-width = <4>;
Maxime Ripard98096562013-07-23 23:54:19 +0200748 clocks = <&apb2_gates 17>;
Maxime Ripard24a661e92013-09-24 11:10:41 +0300749 resets = <&apb2_rst 17>;
Maxime Ripardd2d878c2014-01-30 15:41:23 +0100750 dmas = <&dma 7>, <&dma 7>;
751 dma-names = "rx", "tx";
Maxime Ripard8aed3b32013-03-10 16:09:06 +0100752 status = "disabled";
753 };
754
755 uart2: serial@01c28800 {
756 compatible = "snps,dw-apb-uart";
757 reg = <0x01c28800 0x400>;
Maxime Ripard19882b82014-12-16 22:59:58 +0100758 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
Maxime Ripard8aed3b32013-03-10 16:09:06 +0100759 reg-shift = <2>;
760 reg-io-width = <4>;
Maxime Ripard98096562013-07-23 23:54:19 +0200761 clocks = <&apb2_gates 18>;
Maxime Ripard24a661e92013-09-24 11:10:41 +0300762 resets = <&apb2_rst 18>;
Maxime Ripardd2d878c2014-01-30 15:41:23 +0100763 dmas = <&dma 8>, <&dma 8>;
764 dma-names = "rx", "tx";
Maxime Ripard8aed3b32013-03-10 16:09:06 +0100765 status = "disabled";
766 };
767
768 uart3: serial@01c28c00 {
769 compatible = "snps,dw-apb-uart";
770 reg = <0x01c28c00 0x400>;
Maxime Ripard19882b82014-12-16 22:59:58 +0100771 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
Maxime Ripard8aed3b32013-03-10 16:09:06 +0100772 reg-shift = <2>;
773 reg-io-width = <4>;
Maxime Ripard98096562013-07-23 23:54:19 +0200774 clocks = <&apb2_gates 19>;
Maxime Ripard24a661e92013-09-24 11:10:41 +0300775 resets = <&apb2_rst 19>;
Maxime Ripardd2d878c2014-01-30 15:41:23 +0100776 dmas = <&dma 9>, <&dma 9>;
777 dma-names = "rx", "tx";
Maxime Ripard8aed3b32013-03-10 16:09:06 +0100778 status = "disabled";
779 };
780
781 uart4: serial@01c29000 {
782 compatible = "snps,dw-apb-uart";
783 reg = <0x01c29000 0x400>;
Maxime Ripard19882b82014-12-16 22:59:58 +0100784 interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
Maxime Ripard8aed3b32013-03-10 16:09:06 +0100785 reg-shift = <2>;
786 reg-io-width = <4>;
Maxime Ripard98096562013-07-23 23:54:19 +0200787 clocks = <&apb2_gates 20>;
Maxime Ripard24a661e92013-09-24 11:10:41 +0300788 resets = <&apb2_rst 20>;
Maxime Ripardd2d878c2014-01-30 15:41:23 +0100789 dmas = <&dma 10>, <&dma 10>;
790 dma-names = "rx", "tx";
Maxime Ripard8aed3b32013-03-10 16:09:06 +0100791 status = "disabled";
792 };
793
794 uart5: serial@01c29400 {
795 compatible = "snps,dw-apb-uart";
796 reg = <0x01c29400 0x400>;
Maxime Ripard19882b82014-12-16 22:59:58 +0100797 interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
Maxime Ripard8aed3b32013-03-10 16:09:06 +0100798 reg-shift = <2>;
799 reg-io-width = <4>;
Maxime Ripard98096562013-07-23 23:54:19 +0200800 clocks = <&apb2_gates 21>;
Maxime Ripard24a661e92013-09-24 11:10:41 +0300801 resets = <&apb2_rst 21>;
Maxime Ripardd2d878c2014-01-30 15:41:23 +0100802 dmas = <&dma 22>, <&dma 22>;
803 dma-names = "rx", "tx";
Maxime Ripard8aed3b32013-03-10 16:09:06 +0100804 status = "disabled";
805 };
806
Maxime Ripard96c7cc92014-03-04 17:28:39 +0100807 i2c0: i2c@01c2ac00 {
808 compatible = "allwinner,sun6i-a31-i2c";
809 reg = <0x01c2ac00 0x400>;
Maxime Ripard19882b82014-12-16 22:59:58 +0100810 interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
Maxime Ripard96c7cc92014-03-04 17:28:39 +0100811 clocks = <&apb2_gates 0>;
Maxime Ripard96c7cc92014-03-04 17:28:39 +0100812 resets = <&apb2_rst 0>;
813 status = "disabled";
Chen-Yu Tsai495bccf2014-07-21 22:54:27 +0800814 #address-cells = <1>;
815 #size-cells = <0>;
Maxime Ripard96c7cc92014-03-04 17:28:39 +0100816 };
817
818 i2c1: i2c@01c2b000 {
819 compatible = "allwinner,sun6i-a31-i2c";
820 reg = <0x01c2b000 0x400>;
Maxime Ripard19882b82014-12-16 22:59:58 +0100821 interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
Maxime Ripard96c7cc92014-03-04 17:28:39 +0100822 clocks = <&apb2_gates 1>;
Maxime Ripard96c7cc92014-03-04 17:28:39 +0100823 resets = <&apb2_rst 1>;
824 status = "disabled";
Chen-Yu Tsai495bccf2014-07-21 22:54:27 +0800825 #address-cells = <1>;
826 #size-cells = <0>;
Maxime Ripard96c7cc92014-03-04 17:28:39 +0100827 };
828
829 i2c2: i2c@01c2b400 {
830 compatible = "allwinner,sun6i-a31-i2c";
831 reg = <0x01c2b400 0x400>;
Maxime Ripard19882b82014-12-16 22:59:58 +0100832 interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
Maxime Ripard96c7cc92014-03-04 17:28:39 +0100833 clocks = <&apb2_gates 2>;
Maxime Ripard96c7cc92014-03-04 17:28:39 +0100834 resets = <&apb2_rst 2>;
835 status = "disabled";
Chen-Yu Tsai495bccf2014-07-21 22:54:27 +0800836 #address-cells = <1>;
837 #size-cells = <0>;
Maxime Ripard96c7cc92014-03-04 17:28:39 +0100838 };
839
840 i2c3: i2c@01c2b800 {
841 compatible = "allwinner,sun6i-a31-i2c";
842 reg = <0x01c2b800 0x400>;
Maxime Ripard19882b82014-12-16 22:59:58 +0100843 interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
Maxime Ripard96c7cc92014-03-04 17:28:39 +0100844 clocks = <&apb2_gates 3>;
Maxime Ripard96c7cc92014-03-04 17:28:39 +0100845 resets = <&apb2_rst 3>;
846 status = "disabled";
Chen-Yu Tsai495bccf2014-07-21 22:54:27 +0800847 #address-cells = <1>;
848 #size-cells = <0>;
Maxime Ripard96c7cc92014-03-04 17:28:39 +0100849 };
850
Chen-Yu Tsai3dca65f2014-07-16 01:15:45 +0800851 gmac: ethernet@01c30000 {
852 compatible = "allwinner,sun7i-a20-gmac";
853 reg = <0x01c30000 0x1054>;
Maxime Ripard19882b82014-12-16 22:59:58 +0100854 interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
Chen-Yu Tsai3dca65f2014-07-16 01:15:45 +0800855 interrupt-names = "macirq";
856 clocks = <&ahb1_gates 17>, <&gmac_tx_clk>;
857 clock-names = "stmmaceth", "allwinner_gmac_tx";
858 resets = <&ahb1_rst 17>;
859 reset-names = "stmmaceth";
860 snps,pbl = <2>;
861 snps,fixed-burst;
862 snps,force_sf_dma_mode;
863 status = "disabled";
864 #address-cells = <1>;
865 #size-cells = <0>;
866 };
867
Maxime Ripard8cffcb02014-04-17 11:06:46 +0200868 timer@01c60000 {
869 compatible = "allwinner,sun6i-a31-hstimer", "allwinner,sun7i-a20-hstimer";
870 reg = <0x01c60000 0x1000>;
Maxime Ripard19882b82014-12-16 22:59:58 +0100871 interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>,
872 <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>,
873 <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>,
874 <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
Maxime Ripard8cffcb02014-04-17 11:06:46 +0200875 clocks = <&ahb1_gates 19>;
876 resets = <&ahb1_rst 19>;
877 };
878
Maxime Ripard0d6efe32014-02-05 14:05:06 +0100879 spi0: spi@01c68000 {
880 compatible = "allwinner,sun6i-a31-spi";
881 reg = <0x01c68000 0x1000>;
Maxime Ripard19882b82014-12-16 22:59:58 +0100882 interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
Maxime Ripard0d6efe32014-02-05 14:05:06 +0100883 clocks = <&ahb1_gates 20>, <&spi0_clk>;
884 clock-names = "ahb", "mod";
Maxime Ripardd2d878c2014-01-30 15:41:23 +0100885 dmas = <&dma 23>, <&dma 23>;
886 dma-names = "rx", "tx";
Maxime Ripard0d6efe32014-02-05 14:05:06 +0100887 resets = <&ahb1_rst 20>;
888 status = "disabled";
889 };
890
891 spi1: spi@01c69000 {
892 compatible = "allwinner,sun6i-a31-spi";
893 reg = <0x01c69000 0x1000>;
Maxime Ripard19882b82014-12-16 22:59:58 +0100894 interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
Maxime Ripard0d6efe32014-02-05 14:05:06 +0100895 clocks = <&ahb1_gates 21>, <&spi1_clk>;
896 clock-names = "ahb", "mod";
Maxime Ripardd2d878c2014-01-30 15:41:23 +0100897 dmas = <&dma 24>, <&dma 24>;
898 dma-names = "rx", "tx";
Maxime Ripard0d6efe32014-02-05 14:05:06 +0100899 resets = <&ahb1_rst 21>;
900 status = "disabled";
901 };
902
903 spi2: spi@01c6a000 {
904 compatible = "allwinner,sun6i-a31-spi";
905 reg = <0x01c6a000 0x1000>;
Maxime Ripard19882b82014-12-16 22:59:58 +0100906 interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
Maxime Ripard0d6efe32014-02-05 14:05:06 +0100907 clocks = <&ahb1_gates 22>, <&spi2_clk>;
908 clock-names = "ahb", "mod";
Maxime Ripardd2d878c2014-01-30 15:41:23 +0100909 dmas = <&dma 25>, <&dma 25>;
910 dma-names = "rx", "tx";
Maxime Ripard0d6efe32014-02-05 14:05:06 +0100911 resets = <&ahb1_rst 22>;
912 status = "disabled";
913 };
914
915 spi3: spi@01c6b000 {
916 compatible = "allwinner,sun6i-a31-spi";
917 reg = <0x01c6b000 0x1000>;
Maxime Ripard19882b82014-12-16 22:59:58 +0100918 interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
Maxime Ripard0d6efe32014-02-05 14:05:06 +0100919 clocks = <&ahb1_gates 23>, <&spi3_clk>;
920 clock-names = "ahb", "mod";
Maxime Ripardd2d878c2014-01-30 15:41:23 +0100921 dmas = <&dma 26>, <&dma 26>;
922 dma-names = "rx", "tx";
Maxime Ripard0d6efe32014-02-05 14:05:06 +0100923 resets = <&ahb1_rst 23>;
924 status = "disabled";
925 };
926
Maxime Ripard8aed3b32013-03-10 16:09:06 +0100927 gic: interrupt-controller@01c81000 {
928 compatible = "arm,cortex-a7-gic", "arm,cortex-a15-gic";
929 reg = <0x01c81000 0x1000>,
930 <0x01c82000 0x1000>,
931 <0x01c84000 0x2000>,
932 <0x01c86000 0x2000>;
933 interrupt-controller;
934 #interrupt-cells = <3>;
Maxime Ripard19882b82014-12-16 22:59:58 +0100935 interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
Maxime Ripard8aed3b32013-03-10 16:09:06 +0100936 };
Maxime Ripard81ee4292013-11-03 10:30:12 +0100937
Chen-Yu Tsai5e700432014-07-30 20:56:06 +0800938 rtc: rtc@01f00000 {
939 compatible = "allwinner,sun6i-a31-rtc";
940 reg = <0x01f00000 0x54>;
Maxime Ripard19882b82014-12-16 22:59:58 +0100941 interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
942 <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
Chen-Yu Tsai5e700432014-07-30 20:56:06 +0800943 };
944
Maxime Ripard28240d22014-04-17 10:29:35 +0200945 nmi_intc: interrupt-controller@01f00c0c {
946 compatible = "allwinner,sun6i-a31-sc-nmi";
947 interrupt-controller;
948 #interrupt-cells = <2>;
949 reg = <0x01f00c0c 0x38>;
Maxime Ripard19882b82014-12-16 22:59:58 +0100950 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
Maxime Ripard28240d22014-04-17 10:29:35 +0200951 };
952
Hans de Goedea42ea602014-04-13 13:41:02 +0200953 prcm@01f01400 {
954 compatible = "allwinner,sun6i-a31-prcm";
955 reg = <0x01f01400 0x200>;
Boris BREZILLONcc08f5e2014-05-14 14:38:21 +0200956
957 ar100: ar100_clk {
958 compatible = "allwinner,sun6i-a31-ar100-clk";
959 #clock-cells = <0>;
Chen-Yu Tsaif6c3b042014-11-13 02:08:32 +0800960 clocks = <&osc32k>, <&osc24M>, <&pll6 0>, <&pll6 0>;
Boris BREZILLONcc08f5e2014-05-14 14:38:21 +0200961 clock-output-names = "ar100";
962 };
963
964 ahb0: ahb0_clk {
965 compatible = "fixed-factor-clock";
966 #clock-cells = <0>;
967 clock-div = <1>;
968 clock-mult = <1>;
969 clocks = <&ar100>;
970 clock-output-names = "ahb0";
971 };
972
973 apb0: apb0_clk {
974 compatible = "allwinner,sun6i-a31-apb0-clk";
975 #clock-cells = <0>;
976 clocks = <&ahb0>;
977 clock-output-names = "apb0";
978 };
979
980 apb0_gates: apb0_gates_clk {
981 compatible = "allwinner,sun6i-a31-apb0-gates-clk";
982 #clock-cells = <1>;
983 clocks = <&apb0>;
984 clock-output-names = "apb0_pio", "apb0_ir",
985 "apb0_timer", "apb0_p2wi",
986 "apb0_uart", "apb0_1wire",
987 "apb0_i2c";
988 };
989
Hans de Goede9b5c6e02014-12-17 18:18:19 +0100990 ir_clk: ir_clk {
991 #clock-cells = <0>;
992 compatible = "allwinner,sun4i-a10-mod0-clk";
993 clocks = <&osc32k>, <&osc24M>;
994 clock-output-names = "ir";
995 };
996
Boris BREZILLONcc08f5e2014-05-14 14:38:21 +0200997 apb0_rst: apb0_rst {
998 compatible = "allwinner,sun6i-a31-clock-reset";
999 #reset-cells = <1>;
1000 };
Hans de Goedea42ea602014-04-13 13:41:02 +02001001 };
1002
Maxime Ripard81ee4292013-11-03 10:30:12 +01001003 cpucfg@01f01c00 {
1004 compatible = "allwinner,sun6i-a31-cpuconfig";
1005 reg = <0x01f01c00 0x300>;
1006 };
Boris BREZILLON209394a2014-05-13 16:03:03 +02001007
Hans de Goede4ac367b2014-12-29 12:09:24 +01001008 ir: ir@01f02000 {
1009 compatible = "allwinner,sun5i-a13-ir";
1010 clocks = <&apb0_gates 1>, <&ir_clk>;
1011 clock-names = "apb", "ir";
1012 resets = <&apb0_rst 1>;
Maxime Ripard19882b82014-12-16 22:59:58 +01001013 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
Hans de Goede4ac367b2014-12-29 12:09:24 +01001014 reg = <0x01f02000 0x40>;
1015 status = "disabled";
1016 };
1017
Boris BREZILLON209394a2014-05-13 16:03:03 +02001018 r_pio: pinctrl@01f02c00 {
1019 compatible = "allwinner,sun6i-a31-r-pinctrl";
1020 reg = <0x01f02c00 0x400>;
Maxime Ripard19882b82014-12-16 22:59:58 +01001021 interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>,
1022 <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
Boris BREZILLON209394a2014-05-13 16:03:03 +02001023 clocks = <&apb0_gates 0>;
1024 resets = <&apb0_rst 0>;
1025 gpio-controller;
1026 interrupt-controller;
Chen-Yu Tsai7d4ff962014-06-30 23:57:51 +02001027 #interrupt-cells = <2>;
Boris BREZILLON209394a2014-05-13 16:03:03 +02001028 #size-cells = <0>;
1029 #gpio-cells = <3>;
Hans de Goededbbcd882014-11-23 14:38:14 +01001030
1031 ir_pins_a: ir@0 {
1032 allwinner,pins = "PL4";
1033 allwinner,function = "s_ir";
Maxime Ripard092a0c32014-12-16 22:59:57 +01001034 allwinner,drive = <SUN4I_PINCTRL_10_MA>;
1035 allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
Hans de Goededbbcd882014-11-23 14:38:14 +01001036 };
Boris BREZILLONfcd60132015-03-10 19:59:12 +08001037
1038 p2wi_pins: p2wi {
1039 allwinner,pins = "PL0", "PL1";
1040 allwinner,function = "s_p2wi";
1041 allwinner,drive = <SUN4I_PINCTRL_10_MA>;
1042 allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
1043 };
1044 };
1045
1046 p2wi: i2c@01f03400 {
1047 compatible = "allwinner,sun6i-a31-p2wi";
1048 reg = <0x01f03400 0x400>;
1049 interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
1050 clocks = <&apb0_gates 3>;
1051 clock-frequency = <100000>;
1052 resets = <&apb0_rst 3>;
1053 pinctrl-names = "default";
1054 pinctrl-0 = <&p2wi_pins>;
1055 status = "disabled";
1056 #address-cells = <1>;
1057 #size-cells = <0>;
Boris BREZILLON209394a2014-05-13 16:03:03 +02001058 };
Maxime Ripard8aed3b32013-03-10 16:09:06 +01001059 };
1060};