1 // SPDX-License-Identifier: GPL-2.0 OR MIT
3 * Copyright 2015 Endless Mobile, Inc.
4 * Author: Carlo Caione <carlo@endlessm.com>
7 #include <dt-bindings/clock/meson8-ddr-clkc.h>
8 #include <dt-bindings/clock/meson8b-clkc.h>
9 #include <dt-bindings/gpio/meson8b-gpio.h>
10 #include <dt-bindings/power/meson8-power.h>
11 #include <dt-bindings/reset/amlogic,meson8b-reset.h>
12 #include <dt-bindings/reset/amlogic,meson8b-clkc-reset.h>
22 compatible = "arm,cortex-a5";
23 next-level-cache = <&L2>;
25 enable-method = "amlogic,meson8b-smp";
26 resets = <&clkc CLKC_RESET_CPU0_SOFT_RESET>;
27 operating-points-v2 = <&cpu_opp_table>;
28 clocks = <&clkc CLKID_CPUCLK>;
33 compatible = "arm,cortex-a5";
34 next-level-cache = <&L2>;
36 enable-method = "amlogic,meson8b-smp";
37 resets = <&clkc CLKC_RESET_CPU1_SOFT_RESET>;
38 operating-points-v2 = <&cpu_opp_table>;
39 clocks = <&clkc CLKID_CPUCLK>;
44 compatible = "arm,cortex-a5";
45 next-level-cache = <&L2>;
47 enable-method = "amlogic,meson8b-smp";
48 resets = <&clkc CLKC_RESET_CPU2_SOFT_RESET>;
49 operating-points-v2 = <&cpu_opp_table>;
50 clocks = <&clkc CLKID_CPUCLK>;
55 compatible = "arm,cortex-a5";
56 next-level-cache = <&L2>;
58 enable-method = "amlogic,meson8b-smp";
59 resets = <&clkc CLKC_RESET_CPU3_SOFT_RESET>;
60 operating-points-v2 = <&cpu_opp_table>;
61 clocks = <&clkc CLKID_CPUCLK>;
65 cpu_opp_table: opp-table {
66 compatible = "operating-points-v2";
70 opp-hz = /bits/ 64 <96000000>;
71 opp-microvolt = <860000>;
74 opp-hz = /bits/ 64 <192000000>;
75 opp-microvolt = <860000>;
78 opp-hz = /bits/ 64 <312000000>;
79 opp-microvolt = <860000>;
82 opp-hz = /bits/ 64 <408000000>;
83 opp-microvolt = <860000>;
86 opp-hz = /bits/ 64 <504000000>;
87 opp-microvolt = <860000>;
90 opp-hz = /bits/ 64 <600000000>;
91 opp-microvolt = <860000>;
94 opp-hz = /bits/ 64 <720000000>;
95 opp-microvolt = <860000>;
98 opp-hz = /bits/ 64 <816000000>;
99 opp-microvolt = <900000>;
102 opp-hz = /bits/ 64 <1008000000>;
103 opp-microvolt = <1140000>;
106 opp-hz = /bits/ 64 <1200000000>;
107 opp-microvolt = <1140000>;
110 opp-hz = /bits/ 64 <1320000000>;
111 opp-microvolt = <1140000>;
114 opp-hz = /bits/ 64 <1488000000>;
115 opp-microvolt = <1140000>;
118 opp-hz = /bits/ 64 <1536000000>;
119 opp-microvolt = <1140000>;
123 gpu_opp_table: gpu-opp-table {
124 compatible = "operating-points-v2";
127 opp-hz = /bits/ 64 <255000000>;
128 opp-microvolt = <1100000>;
131 opp-hz = /bits/ 64 <364285714>;
132 opp-microvolt = <1100000>;
135 opp-hz = /bits/ 64 <425000000>;
136 opp-microvolt = <1100000>;
139 opp-hz = /bits/ 64 <510000000>;
140 opp-microvolt = <1100000>;
143 opp-hz = /bits/ 64 <637500000>;
144 opp-microvolt = <1100000>;
150 compatible = "arm,cortex-a5-pmu";
151 interrupts = <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>,
152 <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>,
153 <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>,
154 <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>;
155 interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
159 #address-cells = <1>;
163 /* 2 MiB reserved for Hardware ROM Firmware? */
165 reg = <0x0 0x200000>;
170 mmcbus: bus@c8000000 {
171 compatible = "simple-bus";
172 reg = <0xc8000000 0x8000>;
173 #address-cells = <1>;
175 ranges = <0x0 0xc8000000 0x8000>;
177 ddr_clkc: clock-controller@400 {
178 compatible = "amlogic,meson8b-ddr-clkc";
181 clock-names = "xtal";
186 compatible = "simple-bus";
187 reg = <0x6000 0x400>;
188 #address-cells = <1>;
190 ranges = <0x0 0x6000 0x400>;
192 canvas: video-lut@48 {
193 compatible = "amlogic,meson8b-canvas",
201 compatible = "simple-bus";
202 reg = <0xd0000000 0x200000>;
203 #address-cells = <1>;
205 ranges = <0x0 0xd0000000 0x200000>;
208 compatible = "amlogic,meson8b-mali", "arm,mali-450";
209 reg = <0xc0000 0x40000>;
210 interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
211 <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
212 <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>,
213 <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>,
214 <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>,
215 <GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH>,
216 <GIC_SPI 166 IRQ_TYPE_LEVEL_HIGH>,
217 <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>;
218 interrupt-names = "gp", "gpmmu", "pp", "pmu",
219 "pp0", "ppmmu0", "pp1", "ppmmu1";
220 resets = <&reset RESET_MALI>;
221 clocks = <&clkc CLKID_CLK81>, <&clkc CLKID_MALI>;
222 clock-names = "bus", "core";
223 operating-points-v2 = <&gpu_opp_table>;
230 compatible = "amlogic,meson8b-pmu", "syscon";
234 pinctrl_aobus: pinctrl@84 {
235 compatible = "amlogic,meson8b-aobus-pinctrl";
237 #address-cells = <1>;
241 gpio_ao: ao-bank@14 {
245 reg-names = "mux", "pull", "gpio";
248 gpio-ranges = <&pinctrl_aobus 0 0 16>;
251 uart_ao_a_pins: uart_ao_a {
253 groups = "uart_tx_ao_a", "uart_rx_ao_a";
254 function = "uart_ao";
259 ir_recv_pins: remote {
261 groups = "remote_input";
270 reset: reset-controller@4404 {
271 compatible = "amlogic,meson8b-reset";
276 analog_top: analog-top@81a8 {
277 compatible = "amlogic,meson8b-analog-top", "syscon";
282 compatible = "amlogic,meson8b-pwm";
289 compatible = "amlogic,meson8b-clk-measure";
293 pinctrl_cbus: pinctrl@9880 {
294 compatible = "amlogic,meson8b-cbus-pinctrl";
296 #address-cells = <1>;
305 reg-names = "mux", "pull", "pull-enable", "gpio";
308 gpio-ranges = <&pinctrl_cbus 0 0 83>;
311 eth_rgmii_pins: eth-rgmii {
313 groups = "eth_tx_clk",
328 function = "ethernet";
333 eth_rmii_pins: eth-rmii {
335 groups = "eth_tx_en",
344 function = "ethernet";
351 groups = "i2c_sda_a", "i2c_sck_a";
359 groups = "sd_d0_b", "sd_d1_b", "sd_d2_b",
360 "sd_d3_b", "sd_clk_b", "sd_cmd_b";
366 sdxc_c_pins: sdxc-c {
368 groups = "sdxc_d0_c", "sdxc_d13_c",
369 "sdxc_d47_c", "sdxc_clk_c",
376 pwm_c1_pins: pwm-c1 {
392 uart_b0_pins: uart-b0 {
394 groups = "uart_tx_b0",
401 uart_b0_cts_rts_pins: uart-b0-cts-rts {
403 groups = "uart_cts_b0",
414 compatible = "amlogic,meson8b-smp-sram";
421 compatible = "amlogic,meson8b-efuse";
422 clocks = <&clkc CLKID_EFUSE>;
423 clock-names = "core";
425 temperature_calib: calib@1f4 {
426 /* only the upper two bytes are relevant */
432 compatible = "amlogic,meson8b-dwmac", "snps,dwmac-3.70a", "snps,dwmac";
434 reg = <0xc9410000 0x10000
437 clocks = <&clkc CLKID_ETH>,
440 <&clkc CLKID_FCLK_DIV2>;
441 clock-names = "stmmaceth", "clkin0", "clkin1", "timing-adjustment";
442 rx-fifo-depth = <4096>;
443 tx-fifo-depth = <2048>;
445 resets = <&reset RESET_ETHERNET>;
446 reset-names = "stmmaceth";
448 power-domains = <&pwrc PWRC_MESON8_ETHERNET_MEM_ID>;
452 compatible = "amlogic,meson-gpio-intc",
453 "amlogic,meson8b-gpio-intc";
458 clkc: clock-controller {
459 compatible = "amlogic,meson8b-clkc";
460 clocks = <&xtal>, <&ddr_clkc DDR_CLKID_DDR_PLL>;
461 clock-names = "xtal", "ddr_pll";
466 pwrc: power-controller {
467 compatible = "amlogic,meson8b-pwrc";
468 #power-domain-cells = <1>;
469 amlogic,ao-sysctrl = <&pmu>;
470 resets = <&reset RESET_DBLK>,
471 <&reset RESET_PIC_DC>,
472 <&reset RESET_HDMI_APB>,
473 <&reset RESET_HDMI_SYSTEM_RESET>,
474 <&reset RESET_VENCI>,
475 <&reset RESET_VENCP>,
476 <&reset RESET_VDAC_4>,
477 <&reset RESET_VENCL>,
481 reset-names = "dblk", "pic_dc", "hdmi_apb", "hdmi_system",
482 "venci", "vencp", "vdac", "vencl", "viu",
484 clocks = <&clkc CLKID_VPU>;
486 assigned-clocks = <&clkc CLKID_VPU>;
487 assigned-clock-rates = <182142857>;
492 compatible = "amlogic,meson8b-rng", "amlogic,meson-rng";
493 clocks = <&clkc CLKID_RNG0>;
494 clock-names = "core";
498 clocks = <&clkc CLKID_CLK81>;
502 clocks = <&clkc CLKID_I2C>;
506 clocks = <&clkc CLKID_I2C>;
510 arm,data-latency = <3 3 3>;
511 arm,tag-latency = <2 2 2>;
512 arm,filter-ranges = <0x100000 0xc0000000>;
514 prefetch-instr = <1>;
520 compatible = "arm,cortex-a5-scu";
525 compatible = "arm,cortex-a5-global-timer";
527 interrupts = <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>;
528 clocks = <&clkc CLKID_PERIPH>;
531 * the arm_global_timer driver currently does not handle clock
532 * rate changes. Keep it disabled for now.
538 compatible = "arm,cortex-a5-twd-timer";
540 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>;
541 clocks = <&clkc CLKID_PERIPH>;
546 compatible = "amlogic,meson8b-pwm";
550 compatible = "amlogic,meson8b-pwm";
554 compatible = "amlogic,meson8b-rtc";
555 resets = <&reset RESET_RTC>;
559 compatible = "amlogic,meson8b-saradc", "amlogic,meson-saradc";
560 clocks = <&xtal>, <&clkc CLKID_SAR_ADC>;
561 clock-names = "clkin", "core";
562 amlogic,hhi-sysctrl = <&hhi>;
563 nvmem-cells = <&temperature_calib>;
564 nvmem-cell-names = "temperature_calib";
568 compatible = "amlogic,meson8-sdhc", "amlogic,meson-mx-sdhc";
570 <&clkc CLKID_FCLK_DIV4>,
571 <&clkc CLKID_FCLK_DIV3>,
572 <&clkc CLKID_FCLK_DIV5>,
574 clock-names = "clkin0", "clkin1", "clkin2", "clkin3", "pclk";
578 compatible = "amlogic,meson8b-sdio", "amlogic,meson-mx-sdio";
579 clocks = <&clkc CLKID_SDIO>, <&clkc CLKID_CLK81>;
580 clock-names = "core", "clkin";
584 clocks = <&xtal>, <&clkc CLKID_CLK81>;
585 clock-names = "xtal", "pclk";
589 compatible = "amlogic,meson8b-uart", "amlogic,meson-uart";
590 clocks = <&clkc CLKID_CLK81>, <&xtal>, <&clkc CLKID_CLK81>;
591 clock-names = "baud", "xtal", "pclk";
595 compatible = "amlogic,meson8b-uart", "amlogic,meson-uart";
596 clocks = <&clkc CLKID_CLK81>, <&xtal>, <&clkc CLKID_UART0>;
597 clock-names = "baud", "xtal", "pclk";
601 compatible = "amlogic,meson8b-uart", "amlogic,meson-uart";
602 clocks = <&clkc CLKID_CLK81>, <&xtal>, <&clkc CLKID_UART1>;
603 clock-names = "baud", "xtal", "pclk";
607 compatible = "amlogic,meson8b-uart", "amlogic,meson-uart";
608 clocks = <&clkc CLKID_CLK81>, <&xtal>, <&clkc CLKID_UART2>;
609 clock-names = "baud", "xtal", "pclk";
613 compatible = "amlogic,meson8b-usb", "snps,dwc2";
614 clocks = <&clkc CLKID_USB0_DDR_BRIDGE>;
619 compatible = "amlogic,meson8b-usb", "snps,dwc2";
620 clocks = <&clkc CLKID_USB1_DDR_BRIDGE>;
625 compatible = "amlogic,meson8b-usb2-phy", "amlogic,meson-mx-usb2-phy";
626 clocks = <&clkc CLKID_USB>, <&clkc CLKID_USB0>;
627 clock-names = "usb_general", "usb";
628 resets = <&reset RESET_USB_OTG>;
632 compatible = "amlogic,meson8b-usb2-phy", "amlogic,meson-mx-usb2-phy";
633 clocks = <&clkc CLKID_USB>, <&clkc CLKID_USB1>;
634 clock-names = "usb_general", "usb";
635 resets = <&reset RESET_USB_OTG>;
639 compatible = "amlogic,meson8b-wdt";