blob: dbf7963b6c8743fd558a0b743c18e2125ee7a3b6 [file] [log] [blame]
Neil Armstrong677092c2019-05-27 15:38:55 +02001// SPDX-License-Identifier: GPL-2.0 OR MIT
Carlo Caione4a69fcd2015-10-07 22:31:04 +02002/*
3 * Copyright 2015 Endless Mobile, Inc.
4 * Author: Carlo Caione <carlo@endlessm.com>
Carlo Caione4a69fcd2015-10-07 22:31:04 +02005 */
6
Martin Blumenstingl6d549ff2019-12-08 19:05:25 +01007#include <dt-bindings/clock/meson8-ddr-clkc.h>
Carlo Caione4a69fcd2015-10-07 22:31:04 +02008#include <dt-bindings/clock/meson8b-clkc.h>
9#include <dt-bindings/gpio/meson8b-gpio.h>
Martin Blumenstingl9960cac2020-06-20 18:10:10 +020010#include <dt-bindings/power/meson8-power.h>
Neil Armstrongcad059c2016-05-30 15:27:18 +020011#include <dt-bindings/reset/amlogic,meson8b-reset.h>
Carlo Caione46921422017-09-17 18:45:23 +020012#include <dt-bindings/reset/amlogic,meson8b-clkc-reset.h>
Martin Blumenstingl9073f692020-12-21 19:13:05 +010013#include <dt-bindings/thermal/thermal.h>
Martin Blumenstinglf44135e2017-04-17 23:39:38 +020014#include "meson.dtsi"
Carlo Caione4a69fcd2015-10-07 22:31:04 +020015
16/ {
Carlo Caione4a69fcd2015-10-07 22:31:04 +020017 cpus {
18 #address-cells = <1>;
19 #size-cells = <0>;
20
Martin Blumenstingle8d85d72018-04-22 12:45:02 +020021 cpu0: cpu@200 {
Carlo Caione4a69fcd2015-10-07 22:31:04 +020022 device_type = "cpu";
23 compatible = "arm,cortex-a5";
24 next-level-cache = <&L2>;
25 reg = <0x200>;
Carlo Caione46921422017-09-17 18:45:23 +020026 enable-method = "amlogic,meson8b-smp";
27 resets = <&clkc CLKC_RESET_CPU0_SOFT_RESET>;
Martin Blumenstinglc3115522018-11-30 00:00:44 +010028 operating-points-v2 = <&cpu_opp_table>;
29 clocks = <&clkc CLKID_CPUCLK>;
Martin Blumenstingl9073f692020-12-21 19:13:05 +010030 #cooling-cells = <2>; /* min followed by max */
Carlo Caione4a69fcd2015-10-07 22:31:04 +020031 };
32
Martin Blumenstingle8d85d72018-04-22 12:45:02 +020033 cpu1: cpu@201 {
Carlo Caione4a69fcd2015-10-07 22:31:04 +020034 device_type = "cpu";
35 compatible = "arm,cortex-a5";
36 next-level-cache = <&L2>;
37 reg = <0x201>;
Carlo Caione46921422017-09-17 18:45:23 +020038 enable-method = "amlogic,meson8b-smp";
39 resets = <&clkc CLKC_RESET_CPU1_SOFT_RESET>;
Martin Blumenstinglc3115522018-11-30 00:00:44 +010040 operating-points-v2 = <&cpu_opp_table>;
41 clocks = <&clkc CLKID_CPUCLK>;
Martin Blumenstingl9073f692020-12-21 19:13:05 +010042 #cooling-cells = <2>; /* min followed by max */
Carlo Caione4a69fcd2015-10-07 22:31:04 +020043 };
44
Martin Blumenstingle8d85d72018-04-22 12:45:02 +020045 cpu2: cpu@202 {
Carlo Caione4a69fcd2015-10-07 22:31:04 +020046 device_type = "cpu";
47 compatible = "arm,cortex-a5";
48 next-level-cache = <&L2>;
49 reg = <0x202>;
Carlo Caione46921422017-09-17 18:45:23 +020050 enable-method = "amlogic,meson8b-smp";
51 resets = <&clkc CLKC_RESET_CPU2_SOFT_RESET>;
Martin Blumenstinglc3115522018-11-30 00:00:44 +010052 operating-points-v2 = <&cpu_opp_table>;
53 clocks = <&clkc CLKID_CPUCLK>;
Martin Blumenstingl9073f692020-12-21 19:13:05 +010054 #cooling-cells = <2>; /* min followed by max */
Carlo Caione4a69fcd2015-10-07 22:31:04 +020055 };
56
Martin Blumenstingle8d85d72018-04-22 12:45:02 +020057 cpu3: cpu@203 {
Carlo Caione4a69fcd2015-10-07 22:31:04 +020058 device_type = "cpu";
59 compatible = "arm,cortex-a5";
60 next-level-cache = <&L2>;
61 reg = <0x203>;
Carlo Caione46921422017-09-17 18:45:23 +020062 enable-method = "amlogic,meson8b-smp";
63 resets = <&clkc CLKC_RESET_CPU3_SOFT_RESET>;
Martin Blumenstinglc3115522018-11-30 00:00:44 +010064 operating-points-v2 = <&cpu_opp_table>;
65 clocks = <&clkc CLKID_CPUCLK>;
Martin Blumenstingl9073f692020-12-21 19:13:05 +010066 #cooling-cells = <2>; /* min followed by max */
Martin Blumenstinglc3115522018-11-30 00:00:44 +010067 };
68 };
69
70 cpu_opp_table: opp-table {
71 compatible = "operating-points-v2";
72 opp-shared;
73
74 opp-96000000 {
75 opp-hz = /bits/ 64 <96000000>;
76 opp-microvolt = <860000>;
77 };
78 opp-192000000 {
79 opp-hz = /bits/ 64 <192000000>;
80 opp-microvolt = <860000>;
81 };
82 opp-312000000 {
83 opp-hz = /bits/ 64 <312000000>;
84 opp-microvolt = <860000>;
85 };
86 opp-408000000 {
87 opp-hz = /bits/ 64 <408000000>;
88 opp-microvolt = <860000>;
89 };
90 opp-504000000 {
91 opp-hz = /bits/ 64 <504000000>;
92 opp-microvolt = <860000>;
93 };
94 opp-600000000 {
95 opp-hz = /bits/ 64 <600000000>;
96 opp-microvolt = <860000>;
97 };
98 opp-720000000 {
99 opp-hz = /bits/ 64 <720000000>;
100 opp-microvolt = <860000>;
101 };
102 opp-816000000 {
103 opp-hz = /bits/ 64 <816000000>;
104 opp-microvolt = <900000>;
105 };
106 opp-1008000000 {
107 opp-hz = /bits/ 64 <1008000000>;
108 opp-microvolt = <1140000>;
109 };
110 opp-1200000000 {
111 opp-hz = /bits/ 64 <1200000000>;
112 opp-microvolt = <1140000>;
113 };
114 opp-1320000000 {
115 opp-hz = /bits/ 64 <1320000000>;
116 opp-microvolt = <1140000>;
117 };
118 opp-1488000000 {
119 opp-hz = /bits/ 64 <1488000000>;
120 opp-microvolt = <1140000>;
121 };
122 opp-1536000000 {
123 opp-hz = /bits/ 64 <1536000000>;
124 opp-microvolt = <1140000>;
Carlo Caione4a69fcd2015-10-07 22:31:04 +0200125 };
126 };
Martin Blumenstingld8dd3d22017-06-15 23:33:51 +0200127
Martin Blumenstinglc3ea80b2018-12-08 18:12:47 +0100128 gpu_opp_table: gpu-opp-table {
129 compatible = "operating-points-v2";
130
131 opp-255000000 {
132 opp-hz = /bits/ 64 <255000000>;
Martin Blumenstingl26d65142019-05-12 21:39:36 +0200133 opp-microvolt = <1100000>;
Martin Blumenstinglc3ea80b2018-12-08 18:12:47 +0100134 };
Martin Blumenstinglc3dd3312019-12-25 02:06:07 +0100135 opp-364285714 {
136 opp-hz = /bits/ 64 <364285714>;
Martin Blumenstingl26d65142019-05-12 21:39:36 +0200137 opp-microvolt = <1100000>;
Martin Blumenstinglc3ea80b2018-12-08 18:12:47 +0100138 };
139 opp-425000000 {
140 opp-hz = /bits/ 64 <425000000>;
Martin Blumenstingl26d65142019-05-12 21:39:36 +0200141 opp-microvolt = <1100000>;
Martin Blumenstinglc3ea80b2018-12-08 18:12:47 +0100142 };
143 opp-510000000 {
144 opp-hz = /bits/ 64 <510000000>;
Martin Blumenstingl26d65142019-05-12 21:39:36 +0200145 opp-microvolt = <1100000>;
Martin Blumenstinglc3ea80b2018-12-08 18:12:47 +0100146 };
147 opp-637500000 {
148 opp-hz = /bits/ 64 <637500000>;
Martin Blumenstingl26d65142019-05-12 21:39:36 +0200149 opp-microvolt = <1100000>;
Martin Blumenstinglc3ea80b2018-12-08 18:12:47 +0100150 turbo-mode;
151 };
152 };
153
Martin Blumenstingle8d85d72018-04-22 12:45:02 +0200154 pmu {
155 compatible = "arm,cortex-a5-pmu";
156 interrupts = <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>,
157 <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>,
158 <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>,
159 <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>;
160 interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
161 };
162
Linus Lüssingb9b4bf52017-10-02 17:59:03 +0200163 reserved-memory {
164 #address-cells = <1>;
165 #size-cells = <1>;
166 ranges;
167
168 /* 2 MiB reserved for Hardware ROM Firmware? */
169 hwrom@0 {
170 reg = <0x0 0x200000>;
171 no-map;
172 };
173 };
Martin Blumenstingle402d242018-12-08 17:50:25 +0100174
Martin Blumenstingl9073f692020-12-21 19:13:05 +0100175 thermal-zones {
176 soc {
177 polling-delay-passive = <250>; /* milliseconds */
178 polling-delay = <1000>; /* milliseconds */
179 thermal-sensors = <&thermal_sensor>;
180
181 cooling-maps {
182 map0 {
183 trip = <&soc_passive>;
184 cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
185 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
186 <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
187 <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
188 <&mali THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
189 };
190
191 map1 {
192 trip = <&soc_hot>;
193 cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
194 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
195 <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
196 <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
197 <&mali THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
198 };
199 };
200
201 trips {
202 soc_passive: soc-passive {
203 temperature = <80000>; /* millicelsius */
204 hysteresis = <2000>; /* millicelsius */
205 type = "passive";
206 };
207
208 soc_hot: soc-hot {
209 temperature = <90000>; /* millicelsius */
210 hysteresis = <2000>; /* millicelsius */
211 type = "hot";
212 };
213
214 soc_critical: soc-critical {
215 temperature = <110000>; /* millicelsius */
216 hysteresis = <2000>; /* millicelsius */
217 type = "critical";
218 };
219 };
220 };
221 };
222
Martin Blumenstingl872f8812019-05-20 21:43:53 +0200223 mmcbus: bus@c8000000 {
224 compatible = "simple-bus";
225 reg = <0xc8000000 0x8000>;
226 #address-cells = <1>;
227 #size-cells = <1>;
228 ranges = <0x0 0xc8000000 0x8000>;
229
Martin Blumenstingl6d549ff2019-12-08 19:05:25 +0100230 ddr_clkc: clock-controller@400 {
231 compatible = "amlogic,meson8b-ddr-clkc";
232 reg = <0x400 0x20>;
233 clocks = <&xtal>;
234 clock-names = "xtal";
235 #clock-cells = <1>;
236 };
237
Martin Blumenstingl872f8812019-05-20 21:43:53 +0200238 dmcbus: bus@6000 {
239 compatible = "simple-bus";
240 reg = <0x6000 0x400>;
241 #address-cells = <1>;
242 #size-cells = <1>;
243 ranges = <0x0 0x6000 0x400>;
244
245 canvas: video-lut@48 {
246 compatible = "amlogic,meson8b-canvas",
247 "amlogic,canvas";
248 reg = <0x48 0x14>;
249 };
250 };
251 };
252
Martin Blumenstingle402d242018-12-08 17:50:25 +0100253 apb: bus@d0000000 {
254 compatible = "simple-bus";
255 reg = <0xd0000000 0x200000>;
256 #address-cells = <1>;
257 #size-cells = <1>;
258 ranges = <0x0 0xd0000000 0x200000>;
Martin Blumenstinglc3ea80b2018-12-08 18:12:47 +0100259
260 mali: gpu@c0000 {
261 compatible = "amlogic,meson8b-mali", "arm,mali-450";
262 reg = <0xc0000 0x40000>;
263 interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
264 <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
265 <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>,
266 <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>,
267 <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>,
268 <GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH>,
269 <GIC_SPI 166 IRQ_TYPE_LEVEL_HIGH>,
270 <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>;
271 interrupt-names = "gp", "gpmmu", "pp", "pmu",
272 "pp0", "ppmmu0", "pp1", "ppmmu1";
273 resets = <&reset RESET_MALI>;
274 clocks = <&clkc CLKID_CLK81>, <&clkc CLKID_MALI>;
275 clock-names = "bus", "core";
276 operating-points-v2 = <&gpu_opp_table>;
Martin Blumenstingl9073f692020-12-21 19:13:05 +0100277 #cooling-cells = <2>; /* min followed by max */
Martin Blumenstinglc3ea80b2018-12-08 18:12:47 +0100278 };
Martin Blumenstingle402d242018-12-08 17:50:25 +0100279 };
Martin Blumenstinglf44135e2017-04-17 23:39:38 +0200280}; /* end of / */
Carlo Caione4a69fcd2015-10-07 22:31:04 +0200281
Martin Blumenstinglf44135e2017-04-17 23:39:38 +0200282&aobus {
Carlo Caione46921422017-09-17 18:45:23 +0200283 pmu: pmu@e0 {
284 compatible = "amlogic,meson8b-pmu", "syscon";
285 reg = <0xe0 0x18>;
286 };
287
Martin Blumenstinglf44135e2017-04-17 23:39:38 +0200288 pinctrl_aobus: pinctrl@84 {
289 compatible = "amlogic,meson8b-aobus-pinctrl";
290 reg = <0x84 0xc>;
Carlo Caione4a69fcd2015-10-07 22:31:04 +0200291 #address-cells = <1>;
292 #size-cells = <1>;
293 ranges;
294
Martin Blumenstinglf44135e2017-04-17 23:39:38 +0200295 gpio_ao: ao-bank@14 {
296 reg = <0x14 0x4>,
297 <0x2c 0x4>,
298 <0x24 0x8>;
299 reg-names = "mux", "pull", "gpio";
300 gpio-controller;
301 #gpio-cells = <2>;
Jerome Brunet677c4322017-09-21 19:14:44 +0200302 gpio-ranges = <&pinctrl_aobus 0 0 16>;
Carlo Caione4a69fcd2015-10-07 22:31:04 +0200303 };
304
Martin Blumenstinglf44135e2017-04-17 23:39:38 +0200305 uart_ao_a_pins: uart_ao_a {
306 mux {
307 groups = "uart_tx_ao_a", "uart_rx_ao_a";
308 function = "uart_ao";
Jerome Brunet7e263352018-11-09 15:04:45 +0100309 bias-disable;
Carlo Caione4a69fcd2015-10-07 22:31:04 +0200310 };
311 };
Martin Blumenstingl15b520f2018-05-06 22:57:49 +0200312
313 ir_recv_pins: remote {
314 mux {
315 groups = "remote_input";
316 function = "remote";
Jerome Brunet7e263352018-11-09 15:04:45 +0100317 bias-disable;
Martin Blumenstingl15b520f2018-05-06 22:57:49 +0200318 };
319 };
Carlo Caione4a69fcd2015-10-07 22:31:04 +0200320 };
Martin Blumenstinglf44135e2017-04-17 23:39:38 +0200321};
322
323&cbus {
Martin Blumenstinglf44135e2017-04-17 23:39:38 +0200324 reset: reset-controller@4404 {
325 compatible = "amlogic,meson8b-reset";
Martin Blumenstingla2730ed2018-01-21 23:14:12 +0100326 reg = <0x4404 0x9c>;
Martin Blumenstinglf44135e2017-04-17 23:39:38 +0200327 #reset-cells = <1>;
328 };
329
Martin Blumenstinglbd835d52017-09-23 16:14:03 +0200330 analog_top: analog-top@81a8 {
331 compatible = "amlogic,meson8b-analog-top", "syscon";
332 reg = <0x81a8 0x14>;
333 };
334
Martin Blumenstinglf44135e2017-04-17 23:39:38 +0200335 pwm_ef: pwm@86c0 {
336 compatible = "amlogic,meson8b-pwm";
337 reg = <0x86c0 0x10>;
338 #pwm-cells = <3>;
339 status = "disabled";
340 };
341
Martin Blumenstinglf1975b982019-02-09 01:26:41 +0100342 clock-measure@8758 {
343 compatible = "amlogic,meson8b-clk-measure";
344 reg = <0x8758 0x1c>;
345 };
346
Martin Blumenstinglf44135e2017-04-17 23:39:38 +0200347 pinctrl_cbus: pinctrl@9880 {
348 compatible = "amlogic,meson8b-cbus-pinctrl";
349 reg = <0x9880 0x10>;
350 #address-cells = <1>;
351 #size-cells = <1>;
352 ranges;
353
354 gpio: banks@80b0 {
355 reg = <0x80b0 0x28>,
356 <0x80e8 0x18>,
357 <0x8120 0x18>,
358 <0x8030 0x38>;
359 reg-names = "mux", "pull", "pull-enable", "gpio";
360 gpio-controller;
361 #gpio-cells = <2>;
Martin Blumenstingl4e461e62018-03-12 21:57:09 +0100362 gpio-ranges = <&pinctrl_cbus 0 0 83>;
Martin Blumenstinglf44135e2017-04-17 23:39:38 +0200363 };
Emiliano Ingrassiab9644652018-01-19 02:48:00 +0100364
365 eth_rgmii_pins: eth-rgmii {
366 mux {
367 groups = "eth_tx_clk",
368 "eth_tx_en",
369 "eth_txd1_0",
Emiliano Ingrassiab9644652018-01-19 02:48:00 +0100370 "eth_txd0_0",
Emiliano Ingrassiab9644652018-01-19 02:48:00 +0100371 "eth_rx_clk",
372 "eth_rx_dv",
373 "eth_rxd1",
374 "eth_rxd0",
375 "eth_mdio_en",
376 "eth_mdc",
377 "eth_ref_clk",
378 "eth_txd2",
Martin Blumenstingl29f00232018-12-29 15:35:56 +0100379 "eth_txd3",
380 "eth_rxd3",
381 "eth_rxd2";
Emiliano Ingrassiab9644652018-01-19 02:48:00 +0100382 function = "ethernet";
Jerome Brunet7e263352018-11-09 15:04:45 +0100383 bias-disable;
Emiliano Ingrassiab9644652018-01-19 02:48:00 +0100384 };
385 };
Linus Lüssinge03efbc2018-03-17 21:11:14 +0100386
Martin Blumenstingla77d0ba2018-09-22 17:10:02 +0200387 eth_rmii_pins: eth-rmii {
388 mux {
389 groups = "eth_tx_en",
390 "eth_txd1_0",
391 "eth_txd0_0",
392 "eth_rx_clk",
393 "eth_rx_dv",
394 "eth_rxd1",
395 "eth_rxd0",
396 "eth_mdio_en",
397 "eth_mdc";
398 function = "ethernet";
Jerome Brunet7e263352018-11-09 15:04:45 +0100399 bias-disable;
Martin Blumenstingla77d0ba2018-09-22 17:10:02 +0200400 };
401 };
402
Martin Blumenstinglc821b812018-09-22 17:10:01 +0200403 i2c_a_pins: i2c-a {
404 mux {
405 groups = "i2c_sda_a", "i2c_sck_a";
406 function = "i2c_a";
Jerome Brunet7e263352018-11-09 15:04:45 +0100407 bias-disable;
Martin Blumenstinglc821b812018-09-22 17:10:01 +0200408 };
409 };
410
Linus Lüssinge03efbc2018-03-17 21:11:14 +0100411 sd_b_pins: sd-b {
412 mux {
413 groups = "sd_d0_b", "sd_d1_b", "sd_d2_b",
414 "sd_d3_b", "sd_clk_b", "sd_cmd_b";
415 function = "sd_b";
Jerome Brunet7e263352018-11-09 15:04:45 +0100416 bias-disable;
Linus Lüssinge03efbc2018-03-17 21:11:14 +0100417 };
418 };
Martin Blumenstinglc821b812018-09-22 17:10:01 +0200419
Martin Blumenstingl73106f72020-06-20 18:36:52 +0200420 sdxc_c_pins: sdxc-c {
421 mux {
422 groups = "sdxc_d0_c", "sdxc_d13_c",
423 "sdxc_d47_c", "sdxc_clk_c",
424 "sdxc_cmd_c";
425 function = "sdxc_c";
426 bias-pull-up;
427 };
428 };
429
Martin Blumenstinglc821b812018-09-22 17:10:01 +0200430 pwm_c1_pins: pwm-c1 {
431 mux {
432 groups = "pwm_c1";
433 function = "pwm_c";
Jerome Brunet7e263352018-11-09 15:04:45 +0100434 bias-disable;
Martin Blumenstinglc821b812018-09-22 17:10:01 +0200435 };
436 };
437
Martin Blumenstinglea241bd2019-07-27 14:12:54 +0200438 pwm_d_pins: pwm-d {
439 mux {
440 groups = "pwm_d";
441 function = "pwm_d";
442 bias-disable;
443 };
444 };
445
Martin Blumenstinglc821b812018-09-22 17:10:01 +0200446 uart_b0_pins: uart-b0 {
447 mux {
448 groups = "uart_tx_b0",
449 "uart_rx_b0";
450 function = "uart_b";
Jerome Brunet7e263352018-11-09 15:04:45 +0100451 bias-disable;
Martin Blumenstinglc821b812018-09-22 17:10:01 +0200452 };
453 };
454
455 uart_b0_cts_rts_pins: uart-b0-cts-rts {
456 mux {
457 groups = "uart_cts_b0",
458 "uart_rts_b0";
459 function = "uart_b";
Jerome Brunet7e263352018-11-09 15:04:45 +0100460 bias-disable;
Martin Blumenstinglc821b812018-09-22 17:10:01 +0200461 };
462 };
Martin Blumenstinglf44135e2017-04-17 23:39:38 +0200463 };
464};
465
Carlo Caione46921422017-09-17 18:45:23 +0200466&ahb_sram {
467 smp-sram@1ff80 {
468 compatible = "amlogic,meson8b-smp-sram";
469 reg = <0x1ff80 0x8>;
470 };
471};
472
Martin Blumenstingl2cb51a82017-10-03 01:28:04 +0200473
474&efuse {
475 compatible = "amlogic,meson8b-efuse";
476 clocks = <&clkc CLKID_EFUSE>;
477 clock-names = "core";
Martin Blumenstinglbbbcf642019-01-18 23:52:24 +0100478
479 temperature_calib: calib@1f4 {
480 /* only the upper two bytes are relevant */
481 reg = <0x1f4 0x4>;
482 };
Martin Blumenstingl2cb51a82017-10-03 01:28:04 +0200483};
484
Martin Blumenstinglf28d4bd2017-06-15 23:33:52 +0200485&ethmac {
Emiliano Ingrassiab9644652018-01-19 02:48:00 +0100486 compatible = "amlogic,meson8b-dwmac", "snps,dwmac-3.70a", "snps,dwmac";
487
488 reg = <0xc9410000 0x10000
489 0xc1108140 0x4>;
490
491 clocks = <&clkc CLKID_ETH>,
492 <&clkc CLKID_MPLL2>,
Martin Blumenstinglb632506c2020-05-12 23:51:47 +0200493 <&clkc CLKID_MPLL2>,
494 <&clkc CLKID_FCLK_DIV2>;
495 clock-names = "stmmaceth", "clkin0", "clkin1", "timing-adjustment";
Jerome Brunet4f0303d2019-07-18 11:36:23 +0200496 rx-fifo-depth = <4096>;
497 tx-fifo-depth = <2048>;
Emiliano Ingrassiab9644652018-01-19 02:48:00 +0100498
499 resets = <&reset RESET_ETHERNET>;
500 reset-names = "stmmaceth";
Martin Blumenstingl9960cac2020-06-20 18:10:10 +0200501
502 power-domains = <&pwrc PWRC_MESON8_ETHERNET_MEM_ID>;
Martin Blumenstinglf28d4bd2017-06-15 23:33:52 +0200503};
504
Jerome Brunet7d32bc02017-10-19 14:01:41 +0200505&gpio_intc {
506 compatible = "amlogic,meson-gpio-intc",
507 "amlogic,meson8b-gpio-intc";
508 status = "okay";
509};
510
Martin Blumenstinglb6db3932019-01-18 23:52:21 +0100511&hhi {
512 clkc: clock-controller {
Martin Blumenstinglda256552019-12-25 02:06:05 +0100513 compatible = "amlogic,meson8b-clkc";
Martin Blumenstingl6d549ff2019-12-08 19:05:25 +0100514 clocks = <&xtal>, <&ddr_clkc DDR_CLKID_DDR_PLL>;
515 clock-names = "xtal", "ddr_pll";
Martin Blumenstinglb6db3932019-01-18 23:52:21 +0100516 #clock-cells = <1>;
517 #reset-cells = <1>;
518 };
Martin Blumenstingl9960cac2020-06-20 18:10:10 +0200519
520 pwrc: power-controller {
521 compatible = "amlogic,meson8b-pwrc";
522 #power-domain-cells = <1>;
523 amlogic,ao-sysctrl = <&pmu>;
524 resets = <&reset RESET_DBLK>,
525 <&reset RESET_PIC_DC>,
526 <&reset RESET_HDMI_APB>,
527 <&reset RESET_HDMI_SYSTEM_RESET>,
528 <&reset RESET_VENCI>,
529 <&reset RESET_VENCP>,
530 <&reset RESET_VDAC_4>,
531 <&reset RESET_VENCL>,
532 <&reset RESET_VIU>,
533 <&reset RESET_VENC>,
534 <&reset RESET_RDMA>;
535 reset-names = "dblk", "pic_dc", "hdmi_apb", "hdmi_system",
536 "venci", "vencp", "vdac", "vencl", "viu",
537 "venc", "rdma";
538 clocks = <&clkc CLKID_VPU>;
539 clock-names = "vpu";
540 assigned-clocks = <&clkc CLKID_VPU>;
541 assigned-clock-rates = <182142857>;
542 };
Martin Blumenstinglb6db3932019-01-18 23:52:21 +0100543};
544
Martin Blumenstingla35910d2017-06-15 23:33:49 +0200545&hwrng {
546 compatible = "amlogic,meson8b-rng", "amlogic,meson-rng";
547 clocks = <&clkc CLKID_RNG0>;
548 clock-names = "core";
549};
550
Martin Blumenstingl7a6cc8b2018-02-17 17:06:50 +0100551&i2c_AO {
552 clocks = <&clkc CLKID_CLK81>;
553};
554
555&i2c_A {
556 clocks = <&clkc CLKID_I2C>;
557};
558
559&i2c_B {
560 clocks = <&clkc CLKID_I2C>;
561};
562
Carlo Caionebbe5b232017-04-17 23:42:44 +0200563&L2 {
564 arm,data-latency = <3 3 3>;
565 arm,tag-latency = <2 2 2>;
566 arm,filter-ranges = <0x100000 0xc0000000>;
Martin Blumenstingl9bef3062017-10-31 23:23:15 +0100567 prefetch-data = <1>;
568 prefetch-instr = <1>;
569 arm,shared-override;
Carlo Caionebbe5b232017-04-17 23:42:44 +0200570};
571
Martin Blumenstingle8c276d2018-11-23 20:53:07 +0100572&periph {
573 scu@0 {
574 compatible = "arm,cortex-a5-scu";
575 reg = <0x0 0x100>;
576 };
Martin Blumenstinglf5506e82018-11-23 20:53:10 +0100577
Martin Blumenstinglda386362018-11-23 20:53:11 +0100578 timer@200 {
579 compatible = "arm,cortex-a5-global-timer";
580 reg = <0x200 0x20>;
581 interrupts = <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>;
582 clocks = <&clkc CLKID_PERIPH>;
583
584 /*
585 * the arm_global_timer driver currently does not handle clock
586 * rate changes. Keep it disabled for now.
587 */
588 status = "disabled";
589 };
590
Martin Blumenstinglf5506e82018-11-23 20:53:10 +0100591 timer@600 {
592 compatible = "arm,cortex-a5-twd-timer";
593 reg = <0x600 0x20>;
594 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>;
595 clocks = <&clkc CLKID_PERIPH>;
596 };
Martin Blumenstingle8c276d2018-11-23 20:53:07 +0100597};
598
Martin Blumenstingl440bdcd2017-07-12 00:20:14 +0200599&pwm_ab {
600 compatible = "amlogic,meson8b-pwm";
601};
602
603&pwm_cd {
604 compatible = "amlogic,meson8b-pwm";
605};
606
Martin Blumenstinglf6eb9732019-04-13 18:34:21 +0200607&rtc {
608 compatible = "amlogic,meson8b-rtc";
609 resets = <&reset RESET_RTC>;
610};
611
Martin Blumenstingla39a3b92017-06-15 23:33:47 +0200612&saradc {
613 compatible = "amlogic,meson8b-saradc", "amlogic,meson-saradc";
Martin Blumenstingl630ea312019-12-08 19:05:23 +0100614 clocks = <&xtal>, <&clkc CLKID_SAR_ADC>;
Xingyu Chenb9b9db02017-11-16 17:01:15 +0800615 clock-names = "clkin", "core";
Martin Blumenstinglbbbcf642019-01-18 23:52:24 +0100616 amlogic,hhi-sysctrl = <&hhi>;
617 nvmem-cells = <&temperature_calib>;
618 nvmem-cell-names = "temperature_calib";
Martin Blumenstingla39a3b92017-06-15 23:33:47 +0200619};
620
Martin Blumenstingl73106f72020-06-20 18:36:52 +0200621&sdhc {
622 compatible = "amlogic,meson8-sdhc", "amlogic,meson-mx-sdhc";
623 clocks = <&xtal>,
624 <&clkc CLKID_FCLK_DIV4>,
625 <&clkc CLKID_FCLK_DIV3>,
626 <&clkc CLKID_FCLK_DIV5>,
627 <&clkc CLKID_SDHC>;
628 clock-names = "clkin0", "clkin1", "clkin2", "clkin3", "pclk";
629};
630
Martin Blumenstingl88b1b182017-10-07 18:29:39 +0200631&sdio {
632 compatible = "amlogic,meson8b-sdio", "amlogic,meson-mx-sdio";
633 clocks = <&clkc CLKID_SDIO>, <&clkc CLKID_CLK81>;
634 clock-names = "core", "clkin";
635};
636
Martin Blumenstingl7b141ab2018-11-16 21:42:35 +0100637&timer_abcde {
Martin Blumenstingl630ea312019-12-08 19:05:23 +0100638 clocks = <&xtal>, <&clkc CLKID_CLK81>;
Martin Blumenstingl7b141ab2018-11-16 21:42:35 +0100639 clock-names = "xtal", "pclk";
640};
641
Martin Blumenstinglf44135e2017-04-17 23:39:38 +0200642&uart_AO {
Martin Blumenstinglb02d6e72017-11-17 23:58:57 +0100643 compatible = "amlogic,meson8b-uart", "amlogic,meson-uart";
Martin Blumenstingl630ea312019-12-08 19:05:23 +0100644 clocks = <&clkc CLKID_CLK81>, <&xtal>, <&clkc CLKID_CLK81>;
Martin Blumenstinglb02d6e72017-11-17 23:58:57 +0100645 clock-names = "baud", "xtal", "pclk";
Martin Blumenstinglf44135e2017-04-17 23:39:38 +0200646};
647
648&uart_A {
Martin Blumenstinglb02d6e72017-11-17 23:58:57 +0100649 compatible = "amlogic,meson8b-uart", "amlogic,meson-uart";
Martin Blumenstingl630ea312019-12-08 19:05:23 +0100650 clocks = <&clkc CLKID_CLK81>, <&xtal>, <&clkc CLKID_UART0>;
Martin Blumenstinglb02d6e72017-11-17 23:58:57 +0100651 clock-names = "baud", "xtal", "pclk";
Martin Blumenstinglf44135e2017-04-17 23:39:38 +0200652};
653
654&uart_B {
Martin Blumenstinglb02d6e72017-11-17 23:58:57 +0100655 compatible = "amlogic,meson8b-uart", "amlogic,meson-uart";
Martin Blumenstingl630ea312019-12-08 19:05:23 +0100656 clocks = <&clkc CLKID_CLK81>, <&xtal>, <&clkc CLKID_UART1>;
Martin Blumenstinglb02d6e72017-11-17 23:58:57 +0100657 clock-names = "baud", "xtal", "pclk";
Martin Blumenstinglf44135e2017-04-17 23:39:38 +0200658};
659
660&uart_C {
Martin Blumenstinglb02d6e72017-11-17 23:58:57 +0100661 compatible = "amlogic,meson8b-uart", "amlogic,meson-uart";
Martin Blumenstingl630ea312019-12-08 19:05:23 +0100662 clocks = <&clkc CLKID_CLK81>, <&xtal>, <&clkc CLKID_UART2>;
Martin Blumenstinglb02d6e72017-11-17 23:58:57 +0100663 clock-names = "baud", "xtal", "pclk";
Martin Blumenstinglf44135e2017-04-17 23:39:38 +0200664};
Martin Blumenstingle29b1cf2017-06-15 23:33:50 +0200665
666&usb0 {
667 compatible = "amlogic,meson8b-usb", "snps,dwc2";
668 clocks = <&clkc CLKID_USB0_DDR_BRIDGE>;
669 clock-names = "otg";
670};
671
672&usb1 {
673 compatible = "amlogic,meson8b-usb", "snps,dwc2";
674 clocks = <&clkc CLKID_USB1_DDR_BRIDGE>;
675 clock-names = "otg";
676};
677
678&usb0_phy {
679 compatible = "amlogic,meson8b-usb2-phy", "amlogic,meson-mx-usb2-phy";
680 clocks = <&clkc CLKID_USB>, <&clkc CLKID_USB0>;
681 clock-names = "usb_general", "usb";
682 resets = <&reset RESET_USB_OTG>;
683};
684
685&usb1_phy {
686 compatible = "amlogic,meson8b-usb2-phy", "amlogic,meson-mx-usb2-phy";
687 clocks = <&clkc CLKID_USB>, <&clkc CLKID_USB1>;
688 clock-names = "usb_general", "usb";
689 resets = <&reset RESET_USB_OTG>;
690};
Martin Blumenstingl2eca2a12017-07-12 00:22:22 +0200691
692&wdt {
693 compatible = "amlogic,meson8b-wdt";
694};