1*4882a593Smuzhiyun// SPDX-License-Identifier: GPL-2.0 OR MIT 2*4882a593Smuzhiyun/* 3*4882a593Smuzhiyun * Copyright 2014 Carlo Caione <carlo@caione.org> 4*4882a593Smuzhiyun */ 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun#include <dt-bindings/clock/meson8-ddr-clkc.h> 7*4882a593Smuzhiyun#include <dt-bindings/clock/meson8b-clkc.h> 8*4882a593Smuzhiyun#include <dt-bindings/gpio/meson8-gpio.h> 9*4882a593Smuzhiyun#include <dt-bindings/power/meson8-power.h> 10*4882a593Smuzhiyun#include <dt-bindings/reset/amlogic,meson8b-clkc-reset.h> 11*4882a593Smuzhiyun#include <dt-bindings/reset/amlogic,meson8b-reset.h> 12*4882a593Smuzhiyun#include "meson.dtsi" 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun/ { 15*4882a593Smuzhiyun model = "Amlogic Meson8 SoC"; 16*4882a593Smuzhiyun compatible = "amlogic,meson8"; 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun cpus { 19*4882a593Smuzhiyun #address-cells = <1>; 20*4882a593Smuzhiyun #size-cells = <0>; 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun cpu0: cpu@200 { 23*4882a593Smuzhiyun device_type = "cpu"; 24*4882a593Smuzhiyun compatible = "arm,cortex-a9"; 25*4882a593Smuzhiyun next-level-cache = <&L2>; 26*4882a593Smuzhiyun reg = <0x200>; 27*4882a593Smuzhiyun enable-method = "amlogic,meson8-smp"; 28*4882a593Smuzhiyun resets = <&clkc CLKC_RESET_CPU0_SOFT_RESET>; 29*4882a593Smuzhiyun operating-points-v2 = <&cpu_opp_table>; 30*4882a593Smuzhiyun clocks = <&clkc CLKID_CPUCLK>; 31*4882a593Smuzhiyun }; 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun cpu1: cpu@201 { 34*4882a593Smuzhiyun device_type = "cpu"; 35*4882a593Smuzhiyun compatible = "arm,cortex-a9"; 36*4882a593Smuzhiyun next-level-cache = <&L2>; 37*4882a593Smuzhiyun reg = <0x201>; 38*4882a593Smuzhiyun enable-method = "amlogic,meson8-smp"; 39*4882a593Smuzhiyun resets = <&clkc CLKC_RESET_CPU1_SOFT_RESET>; 40*4882a593Smuzhiyun operating-points-v2 = <&cpu_opp_table>; 41*4882a593Smuzhiyun clocks = <&clkc CLKID_CPUCLK>; 42*4882a593Smuzhiyun }; 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun cpu2: cpu@202 { 45*4882a593Smuzhiyun device_type = "cpu"; 46*4882a593Smuzhiyun compatible = "arm,cortex-a9"; 47*4882a593Smuzhiyun next-level-cache = <&L2>; 48*4882a593Smuzhiyun reg = <0x202>; 49*4882a593Smuzhiyun enable-method = "amlogic,meson8-smp"; 50*4882a593Smuzhiyun resets = <&clkc CLKC_RESET_CPU2_SOFT_RESET>; 51*4882a593Smuzhiyun operating-points-v2 = <&cpu_opp_table>; 52*4882a593Smuzhiyun clocks = <&clkc CLKID_CPUCLK>; 53*4882a593Smuzhiyun }; 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun cpu3: cpu@203 { 56*4882a593Smuzhiyun device_type = "cpu"; 57*4882a593Smuzhiyun compatible = "arm,cortex-a9"; 58*4882a593Smuzhiyun next-level-cache = <&L2>; 59*4882a593Smuzhiyun reg = <0x203>; 60*4882a593Smuzhiyun enable-method = "amlogic,meson8-smp"; 61*4882a593Smuzhiyun resets = <&clkc CLKC_RESET_CPU3_SOFT_RESET>; 62*4882a593Smuzhiyun operating-points-v2 = <&cpu_opp_table>; 63*4882a593Smuzhiyun clocks = <&clkc CLKID_CPUCLK>; 64*4882a593Smuzhiyun }; 65*4882a593Smuzhiyun }; 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun cpu_opp_table: opp-table { 68*4882a593Smuzhiyun compatible = "operating-points-v2"; 69*4882a593Smuzhiyun opp-shared; 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun opp-96000000 { 72*4882a593Smuzhiyun opp-hz = /bits/ 64 <96000000>; 73*4882a593Smuzhiyun opp-microvolt = <825000>; 74*4882a593Smuzhiyun }; 75*4882a593Smuzhiyun opp-192000000 { 76*4882a593Smuzhiyun opp-hz = /bits/ 64 <192000000>; 77*4882a593Smuzhiyun opp-microvolt = <825000>; 78*4882a593Smuzhiyun }; 79*4882a593Smuzhiyun opp-312000000 { 80*4882a593Smuzhiyun opp-hz = /bits/ 64 <312000000>; 81*4882a593Smuzhiyun opp-microvolt = <825000>; 82*4882a593Smuzhiyun }; 83*4882a593Smuzhiyun opp-408000000 { 84*4882a593Smuzhiyun opp-hz = /bits/ 64 <408000000>; 85*4882a593Smuzhiyun opp-microvolt = <825000>; 86*4882a593Smuzhiyun }; 87*4882a593Smuzhiyun opp-504000000 { 88*4882a593Smuzhiyun opp-hz = /bits/ 64 <504000000>; 89*4882a593Smuzhiyun opp-microvolt = <825000>; 90*4882a593Smuzhiyun }; 91*4882a593Smuzhiyun opp-600000000 { 92*4882a593Smuzhiyun opp-hz = /bits/ 64 <600000000>; 93*4882a593Smuzhiyun opp-microvolt = <850000>; 94*4882a593Smuzhiyun }; 95*4882a593Smuzhiyun opp-720000000 { 96*4882a593Smuzhiyun opp-hz = /bits/ 64 <720000000>; 97*4882a593Smuzhiyun opp-microvolt = <850000>; 98*4882a593Smuzhiyun }; 99*4882a593Smuzhiyun opp-816000000 { 100*4882a593Smuzhiyun opp-hz = /bits/ 64 <816000000>; 101*4882a593Smuzhiyun opp-microvolt = <875000>; 102*4882a593Smuzhiyun }; 103*4882a593Smuzhiyun opp-1008000000 { 104*4882a593Smuzhiyun opp-hz = /bits/ 64 <1008000000>; 105*4882a593Smuzhiyun opp-microvolt = <925000>; 106*4882a593Smuzhiyun }; 107*4882a593Smuzhiyun opp-1200000000 { 108*4882a593Smuzhiyun opp-hz = /bits/ 64 <1200000000>; 109*4882a593Smuzhiyun opp-microvolt = <975000>; 110*4882a593Smuzhiyun }; 111*4882a593Smuzhiyun opp-1416000000 { 112*4882a593Smuzhiyun opp-hz = /bits/ 64 <1416000000>; 113*4882a593Smuzhiyun opp-microvolt = <1025000>; 114*4882a593Smuzhiyun }; 115*4882a593Smuzhiyun opp-1608000000 { 116*4882a593Smuzhiyun opp-hz = /bits/ 64 <1608000000>; 117*4882a593Smuzhiyun opp-microvolt = <1100000>; 118*4882a593Smuzhiyun }; 119*4882a593Smuzhiyun opp-1800000000 { 120*4882a593Smuzhiyun status = "disabled"; 121*4882a593Smuzhiyun opp-hz = /bits/ 64 <1800000000>; 122*4882a593Smuzhiyun opp-microvolt = <1125000>; 123*4882a593Smuzhiyun }; 124*4882a593Smuzhiyun opp-1992000000 { 125*4882a593Smuzhiyun status = "disabled"; 126*4882a593Smuzhiyun opp-hz = /bits/ 64 <1992000000>; 127*4882a593Smuzhiyun opp-microvolt = <1150000>; 128*4882a593Smuzhiyun }; 129*4882a593Smuzhiyun }; 130*4882a593Smuzhiyun 131*4882a593Smuzhiyun gpu_opp_table: gpu-opp-table { 132*4882a593Smuzhiyun compatible = "operating-points-v2"; 133*4882a593Smuzhiyun 134*4882a593Smuzhiyun opp-182142857 { 135*4882a593Smuzhiyun opp-hz = /bits/ 64 <182142857>; 136*4882a593Smuzhiyun opp-microvolt = <1150000>; 137*4882a593Smuzhiyun }; 138*4882a593Smuzhiyun opp-318750000 { 139*4882a593Smuzhiyun opp-hz = /bits/ 64 <318750000>; 140*4882a593Smuzhiyun opp-microvolt = <1150000>; 141*4882a593Smuzhiyun }; 142*4882a593Smuzhiyun opp-425000000 { 143*4882a593Smuzhiyun opp-hz = /bits/ 64 <425000000>; 144*4882a593Smuzhiyun opp-microvolt = <1150000>; 145*4882a593Smuzhiyun }; 146*4882a593Smuzhiyun opp-510000000 { 147*4882a593Smuzhiyun opp-hz = /bits/ 64 <510000000>; 148*4882a593Smuzhiyun opp-microvolt = <1150000>; 149*4882a593Smuzhiyun }; 150*4882a593Smuzhiyun opp-637500000 { 151*4882a593Smuzhiyun opp-hz = /bits/ 64 <637500000>; 152*4882a593Smuzhiyun opp-microvolt = <1150000>; 153*4882a593Smuzhiyun turbo-mode; 154*4882a593Smuzhiyun }; 155*4882a593Smuzhiyun }; 156*4882a593Smuzhiyun 157*4882a593Smuzhiyun pmu { 158*4882a593Smuzhiyun compatible = "arm,cortex-a9-pmu"; 159*4882a593Smuzhiyun interrupts = <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>, 160*4882a593Smuzhiyun <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>, 161*4882a593Smuzhiyun <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>, 162*4882a593Smuzhiyun <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>; 163*4882a593Smuzhiyun interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>; 164*4882a593Smuzhiyun }; 165*4882a593Smuzhiyun 166*4882a593Smuzhiyun reserved-memory { 167*4882a593Smuzhiyun #address-cells = <1>; 168*4882a593Smuzhiyun #size-cells = <1>; 169*4882a593Smuzhiyun ranges; 170*4882a593Smuzhiyun 171*4882a593Smuzhiyun /* 2 MiB reserved for Hardware ROM Firmware? */ 172*4882a593Smuzhiyun hwrom@0 { 173*4882a593Smuzhiyun reg = <0x0 0x200000>; 174*4882a593Smuzhiyun no-map; 175*4882a593Smuzhiyun }; 176*4882a593Smuzhiyun 177*4882a593Smuzhiyun /* 178*4882a593Smuzhiyun * 1 MiB reserved for the "ARM Power Firmware": this is ARM 179*4882a593Smuzhiyun * code which is responsible for system suspend. It loads a 180*4882a593Smuzhiyun * piece of ARC code ("arc_power" in the vendor u-boot tree) 181*4882a593Smuzhiyun * into SRAM, executes that and shuts down the (last) ARM core. 182*4882a593Smuzhiyun * The arc_power firmware then checks various wakeup sources 183*4882a593Smuzhiyun * (IR remote receiver, HDMI CEC, WIFI and Bluetooth wakeup or 184*4882a593Smuzhiyun * simply the power key) and re-starts the ARM core once it 185*4882a593Smuzhiyun * detects a wakeup request. 186*4882a593Smuzhiyun */ 187*4882a593Smuzhiyun power-firmware@4f00000 { 188*4882a593Smuzhiyun reg = <0x4f00000 0x100000>; 189*4882a593Smuzhiyun no-map; 190*4882a593Smuzhiyun }; 191*4882a593Smuzhiyun }; 192*4882a593Smuzhiyun 193*4882a593Smuzhiyun mmcbus: bus@c8000000 { 194*4882a593Smuzhiyun compatible = "simple-bus"; 195*4882a593Smuzhiyun reg = <0xc8000000 0x8000>; 196*4882a593Smuzhiyun #address-cells = <1>; 197*4882a593Smuzhiyun #size-cells = <1>; 198*4882a593Smuzhiyun ranges = <0x0 0xc8000000 0x8000>; 199*4882a593Smuzhiyun 200*4882a593Smuzhiyun ddr_clkc: clock-controller@400 { 201*4882a593Smuzhiyun compatible = "amlogic,meson8-ddr-clkc"; 202*4882a593Smuzhiyun reg = <0x400 0x20>; 203*4882a593Smuzhiyun clocks = <&xtal>; 204*4882a593Smuzhiyun clock-names = "xtal"; 205*4882a593Smuzhiyun #clock-cells = <1>; 206*4882a593Smuzhiyun }; 207*4882a593Smuzhiyun 208*4882a593Smuzhiyun dmcbus: bus@6000 { 209*4882a593Smuzhiyun compatible = "simple-bus"; 210*4882a593Smuzhiyun reg = <0x6000 0x400>; 211*4882a593Smuzhiyun #address-cells = <1>; 212*4882a593Smuzhiyun #size-cells = <1>; 213*4882a593Smuzhiyun ranges = <0x0 0x6000 0x400>; 214*4882a593Smuzhiyun 215*4882a593Smuzhiyun canvas: video-lut@20 { 216*4882a593Smuzhiyun compatible = "amlogic,meson8-canvas", 217*4882a593Smuzhiyun "amlogic,canvas"; 218*4882a593Smuzhiyun reg = <0x20 0x14>; 219*4882a593Smuzhiyun }; 220*4882a593Smuzhiyun }; 221*4882a593Smuzhiyun }; 222*4882a593Smuzhiyun 223*4882a593Smuzhiyun apb: bus@d0000000 { 224*4882a593Smuzhiyun compatible = "simple-bus"; 225*4882a593Smuzhiyun reg = <0xd0000000 0x200000>; 226*4882a593Smuzhiyun #address-cells = <1>; 227*4882a593Smuzhiyun #size-cells = <1>; 228*4882a593Smuzhiyun ranges = <0x0 0xd0000000 0x200000>; 229*4882a593Smuzhiyun 230*4882a593Smuzhiyun mali: gpu@c0000 { 231*4882a593Smuzhiyun compatible = "amlogic,meson8-mali", "arm,mali-450"; 232*4882a593Smuzhiyun reg = <0xc0000 0x40000>; 233*4882a593Smuzhiyun interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>, 234*4882a593Smuzhiyun <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>, 235*4882a593Smuzhiyun <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>, 236*4882a593Smuzhiyun <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>, 237*4882a593Smuzhiyun <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>, 238*4882a593Smuzhiyun <GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH>, 239*4882a593Smuzhiyun <GIC_SPI 166 IRQ_TYPE_LEVEL_HIGH>, 240*4882a593Smuzhiyun <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>, 241*4882a593Smuzhiyun <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>, 242*4882a593Smuzhiyun <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>, 243*4882a593Smuzhiyun <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH>, 244*4882a593Smuzhiyun <GIC_SPI 173 IRQ_TYPE_LEVEL_HIGH>, 245*4882a593Smuzhiyun <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>, 246*4882a593Smuzhiyun <GIC_SPI 175 IRQ_TYPE_LEVEL_HIGH>, 247*4882a593Smuzhiyun <GIC_SPI 176 IRQ_TYPE_LEVEL_HIGH>, 248*4882a593Smuzhiyun <GIC_SPI 177 IRQ_TYPE_LEVEL_HIGH>; 249*4882a593Smuzhiyun interrupt-names = "gp", "gpmmu", "pp", "pmu", 250*4882a593Smuzhiyun "pp0", "ppmmu0", "pp1", "ppmmu1", 251*4882a593Smuzhiyun "pp2", "ppmmu2", "pp4", "ppmmu4", 252*4882a593Smuzhiyun "pp5", "ppmmu5", "pp6", "ppmmu6"; 253*4882a593Smuzhiyun resets = <&reset RESET_MALI>; 254*4882a593Smuzhiyun 255*4882a593Smuzhiyun clocks = <&clkc CLKID_CLK81>, <&clkc CLKID_MALI>; 256*4882a593Smuzhiyun clock-names = "bus", "core"; 257*4882a593Smuzhiyun 258*4882a593Smuzhiyun assigned-clocks = <&clkc CLKID_MALI>; 259*4882a593Smuzhiyun assigned-clock-rates = <318750000>; 260*4882a593Smuzhiyun 261*4882a593Smuzhiyun operating-points-v2 = <&gpu_opp_table>; 262*4882a593Smuzhiyun }; 263*4882a593Smuzhiyun }; 264*4882a593Smuzhiyun}; /* end of / */ 265*4882a593Smuzhiyun 266*4882a593Smuzhiyun&aobus { 267*4882a593Smuzhiyun pmu: pmu@e0 { 268*4882a593Smuzhiyun compatible = "amlogic,meson8-pmu", "syscon"; 269*4882a593Smuzhiyun reg = <0xe0 0x18>; 270*4882a593Smuzhiyun }; 271*4882a593Smuzhiyun 272*4882a593Smuzhiyun pinctrl_aobus: pinctrl@84 { 273*4882a593Smuzhiyun compatible = "amlogic,meson8-aobus-pinctrl"; 274*4882a593Smuzhiyun reg = <0x84 0xc>; 275*4882a593Smuzhiyun #address-cells = <1>; 276*4882a593Smuzhiyun #size-cells = <1>; 277*4882a593Smuzhiyun ranges; 278*4882a593Smuzhiyun 279*4882a593Smuzhiyun gpio_ao: ao-bank@14 { 280*4882a593Smuzhiyun reg = <0x14 0x4>, 281*4882a593Smuzhiyun <0x2c 0x4>, 282*4882a593Smuzhiyun <0x24 0x8>; 283*4882a593Smuzhiyun reg-names = "mux", "pull", "gpio"; 284*4882a593Smuzhiyun gpio-controller; 285*4882a593Smuzhiyun #gpio-cells = <2>; 286*4882a593Smuzhiyun gpio-ranges = <&pinctrl_aobus 0 0 16>; 287*4882a593Smuzhiyun }; 288*4882a593Smuzhiyun 289*4882a593Smuzhiyun uart_ao_a_pins: uart_ao_a { 290*4882a593Smuzhiyun mux { 291*4882a593Smuzhiyun groups = "uart_tx_ao_a", "uart_rx_ao_a"; 292*4882a593Smuzhiyun function = "uart_ao"; 293*4882a593Smuzhiyun bias-disable; 294*4882a593Smuzhiyun }; 295*4882a593Smuzhiyun }; 296*4882a593Smuzhiyun 297*4882a593Smuzhiyun i2c_ao_pins: i2c_mst_ao { 298*4882a593Smuzhiyun mux { 299*4882a593Smuzhiyun groups = "i2c_mst_sck_ao", "i2c_mst_sda_ao"; 300*4882a593Smuzhiyun function = "i2c_mst_ao"; 301*4882a593Smuzhiyun bias-disable; 302*4882a593Smuzhiyun }; 303*4882a593Smuzhiyun }; 304*4882a593Smuzhiyun 305*4882a593Smuzhiyun ir_recv_pins: remote { 306*4882a593Smuzhiyun mux { 307*4882a593Smuzhiyun groups = "remote_input"; 308*4882a593Smuzhiyun function = "remote"; 309*4882a593Smuzhiyun bias-disable; 310*4882a593Smuzhiyun }; 311*4882a593Smuzhiyun }; 312*4882a593Smuzhiyun 313*4882a593Smuzhiyun pwm_f_ao_pins: pwm-f-ao { 314*4882a593Smuzhiyun mux { 315*4882a593Smuzhiyun groups = "pwm_f_ao"; 316*4882a593Smuzhiyun function = "pwm_f_ao"; 317*4882a593Smuzhiyun bias-disable; 318*4882a593Smuzhiyun }; 319*4882a593Smuzhiyun }; 320*4882a593Smuzhiyun }; 321*4882a593Smuzhiyun}; 322*4882a593Smuzhiyun 323*4882a593Smuzhiyun&cbus { 324*4882a593Smuzhiyun reset: reset-controller@4404 { 325*4882a593Smuzhiyun compatible = "amlogic,meson8b-reset"; 326*4882a593Smuzhiyun reg = <0x4404 0x9c>; 327*4882a593Smuzhiyun #reset-cells = <1>; 328*4882a593Smuzhiyun }; 329*4882a593Smuzhiyun 330*4882a593Smuzhiyun analog_top: analog-top@81a8 { 331*4882a593Smuzhiyun compatible = "amlogic,meson8-analog-top", "syscon"; 332*4882a593Smuzhiyun reg = <0x81a8 0x14>; 333*4882a593Smuzhiyun }; 334*4882a593Smuzhiyun 335*4882a593Smuzhiyun pwm_ef: pwm@86c0 { 336*4882a593Smuzhiyun compatible = "amlogic,meson8-pwm", "amlogic,meson8b-pwm"; 337*4882a593Smuzhiyun reg = <0x86c0 0x10>; 338*4882a593Smuzhiyun #pwm-cells = <3>; 339*4882a593Smuzhiyun status = "disabled"; 340*4882a593Smuzhiyun }; 341*4882a593Smuzhiyun 342*4882a593Smuzhiyun clock-measure@8758 { 343*4882a593Smuzhiyun compatible = "amlogic,meson8-clk-measure"; 344*4882a593Smuzhiyun reg = <0x8758 0x1c>; 345*4882a593Smuzhiyun }; 346*4882a593Smuzhiyun 347*4882a593Smuzhiyun pinctrl_cbus: pinctrl@9880 { 348*4882a593Smuzhiyun compatible = "amlogic,meson8-cbus-pinctrl"; 349*4882a593Smuzhiyun reg = <0x9880 0x10>; 350*4882a593Smuzhiyun #address-cells = <1>; 351*4882a593Smuzhiyun #size-cells = <1>; 352*4882a593Smuzhiyun ranges; 353*4882a593Smuzhiyun 354*4882a593Smuzhiyun gpio: banks@80b0 { 355*4882a593Smuzhiyun reg = <0x80b0 0x28>, 356*4882a593Smuzhiyun <0x80e8 0x18>, 357*4882a593Smuzhiyun <0x8120 0x18>, 358*4882a593Smuzhiyun <0x8030 0x30>; 359*4882a593Smuzhiyun reg-names = "mux", "pull", "pull-enable", "gpio"; 360*4882a593Smuzhiyun gpio-controller; 361*4882a593Smuzhiyun #gpio-cells = <2>; 362*4882a593Smuzhiyun gpio-ranges = <&pinctrl_cbus 0 0 120>; 363*4882a593Smuzhiyun }; 364*4882a593Smuzhiyun 365*4882a593Smuzhiyun sd_a_pins: sd-a { 366*4882a593Smuzhiyun mux { 367*4882a593Smuzhiyun groups = "sd_d0_a", "sd_d1_a", "sd_d2_a", 368*4882a593Smuzhiyun "sd_d3_a", "sd_clk_a", "sd_cmd_a"; 369*4882a593Smuzhiyun function = "sd_a"; 370*4882a593Smuzhiyun bias-disable; 371*4882a593Smuzhiyun }; 372*4882a593Smuzhiyun }; 373*4882a593Smuzhiyun 374*4882a593Smuzhiyun sd_b_pins: sd-b { 375*4882a593Smuzhiyun mux { 376*4882a593Smuzhiyun groups = "sd_d0_b", "sd_d1_b", "sd_d2_b", 377*4882a593Smuzhiyun "sd_d3_b", "sd_clk_b", "sd_cmd_b"; 378*4882a593Smuzhiyun function = "sd_b"; 379*4882a593Smuzhiyun bias-disable; 380*4882a593Smuzhiyun }; 381*4882a593Smuzhiyun }; 382*4882a593Smuzhiyun 383*4882a593Smuzhiyun sd_c_pins: sd-c { 384*4882a593Smuzhiyun mux { 385*4882a593Smuzhiyun groups = "sd_d0_c", "sd_d1_c", "sd_d2_c", 386*4882a593Smuzhiyun "sd_d3_c", "sd_clk_c", "sd_cmd_c"; 387*4882a593Smuzhiyun function = "sd_c"; 388*4882a593Smuzhiyun bias-disable; 389*4882a593Smuzhiyun }; 390*4882a593Smuzhiyun }; 391*4882a593Smuzhiyun 392*4882a593Smuzhiyun sdxc_b_pins: sdxc-b { 393*4882a593Smuzhiyun mux { 394*4882a593Smuzhiyun groups = "sdxc_d0_b", "sdxc_d13_b", 395*4882a593Smuzhiyun "sdxc_clk_b", "sdxc_cmd_b"; 396*4882a593Smuzhiyun function = "sdxc_b"; 397*4882a593Smuzhiyun bias-pull-up; 398*4882a593Smuzhiyun }; 399*4882a593Smuzhiyun }; 400*4882a593Smuzhiyun 401*4882a593Smuzhiyun spi_nor_pins: nor { 402*4882a593Smuzhiyun mux { 403*4882a593Smuzhiyun groups = "nor_d", "nor_q", "nor_c", "nor_cs"; 404*4882a593Smuzhiyun function = "nor"; 405*4882a593Smuzhiyun bias-disable; 406*4882a593Smuzhiyun }; 407*4882a593Smuzhiyun }; 408*4882a593Smuzhiyun 409*4882a593Smuzhiyun eth_pins: ethernet { 410*4882a593Smuzhiyun mux { 411*4882a593Smuzhiyun groups = "eth_tx_clk_50m", "eth_tx_en", 412*4882a593Smuzhiyun "eth_txd1", "eth_txd0", 413*4882a593Smuzhiyun "eth_rx_clk_in", "eth_rx_dv", 414*4882a593Smuzhiyun "eth_rxd1", "eth_rxd0", "eth_mdio", 415*4882a593Smuzhiyun "eth_mdc"; 416*4882a593Smuzhiyun function = "ethernet"; 417*4882a593Smuzhiyun bias-disable; 418*4882a593Smuzhiyun }; 419*4882a593Smuzhiyun }; 420*4882a593Smuzhiyun 421*4882a593Smuzhiyun pwm_e_pins: pwm-e { 422*4882a593Smuzhiyun mux { 423*4882a593Smuzhiyun groups = "pwm_e"; 424*4882a593Smuzhiyun function = "pwm_e"; 425*4882a593Smuzhiyun bias-disable; 426*4882a593Smuzhiyun }; 427*4882a593Smuzhiyun }; 428*4882a593Smuzhiyun 429*4882a593Smuzhiyun uart_a1_pins: uart-a1 { 430*4882a593Smuzhiyun mux { 431*4882a593Smuzhiyun groups = "uart_tx_a1", 432*4882a593Smuzhiyun "uart_rx_a1"; 433*4882a593Smuzhiyun function = "uart_a"; 434*4882a593Smuzhiyun bias-disable; 435*4882a593Smuzhiyun }; 436*4882a593Smuzhiyun }; 437*4882a593Smuzhiyun 438*4882a593Smuzhiyun uart_a1_cts_rts_pins: uart-a1-cts-rts { 439*4882a593Smuzhiyun mux { 440*4882a593Smuzhiyun groups = "uart_cts_a1", 441*4882a593Smuzhiyun "uart_rts_a1"; 442*4882a593Smuzhiyun function = "uart_a"; 443*4882a593Smuzhiyun bias-disable; 444*4882a593Smuzhiyun }; 445*4882a593Smuzhiyun }; 446*4882a593Smuzhiyun }; 447*4882a593Smuzhiyun}; 448*4882a593Smuzhiyun 449*4882a593Smuzhiyun&ahb_sram { 450*4882a593Smuzhiyun smp-sram@1ff80 { 451*4882a593Smuzhiyun compatible = "amlogic,meson8-smp-sram"; 452*4882a593Smuzhiyun reg = <0x1ff80 0x8>; 453*4882a593Smuzhiyun }; 454*4882a593Smuzhiyun}; 455*4882a593Smuzhiyun 456*4882a593Smuzhiyun&efuse { 457*4882a593Smuzhiyun compatible = "amlogic,meson8-efuse"; 458*4882a593Smuzhiyun clocks = <&clkc CLKID_EFUSE>; 459*4882a593Smuzhiyun clock-names = "core"; 460*4882a593Smuzhiyun 461*4882a593Smuzhiyun temperature_calib: calib@1f4 { 462*4882a593Smuzhiyun /* only the upper two bytes are relevant */ 463*4882a593Smuzhiyun reg = <0x1f4 0x4>; 464*4882a593Smuzhiyun }; 465*4882a593Smuzhiyun}; 466*4882a593Smuzhiyun 467*4882a593Smuzhiyunðmac { 468*4882a593Smuzhiyun clocks = <&clkc CLKID_ETH>; 469*4882a593Smuzhiyun clock-names = "stmmaceth"; 470*4882a593Smuzhiyun 471*4882a593Smuzhiyun power-domains = <&pwrc PWRC_MESON8_ETHERNET_MEM_ID>; 472*4882a593Smuzhiyun}; 473*4882a593Smuzhiyun 474*4882a593Smuzhiyun&gpio_intc { 475*4882a593Smuzhiyun compatible = "amlogic,meson8-gpio-intc", "amlogic,meson-gpio-intc"; 476*4882a593Smuzhiyun status = "okay"; 477*4882a593Smuzhiyun}; 478*4882a593Smuzhiyun 479*4882a593Smuzhiyun&hhi { 480*4882a593Smuzhiyun clkc: clock-controller { 481*4882a593Smuzhiyun compatible = "amlogic,meson8-clkc"; 482*4882a593Smuzhiyun clocks = <&xtal>, <&ddr_clkc DDR_CLKID_DDR_PLL>; 483*4882a593Smuzhiyun clock-names = "xtal", "ddr_pll"; 484*4882a593Smuzhiyun #clock-cells = <1>; 485*4882a593Smuzhiyun #reset-cells = <1>; 486*4882a593Smuzhiyun }; 487*4882a593Smuzhiyun 488*4882a593Smuzhiyun pwrc: power-controller { 489*4882a593Smuzhiyun compatible = "amlogic,meson8-pwrc"; 490*4882a593Smuzhiyun #power-domain-cells = <1>; 491*4882a593Smuzhiyun amlogic,ao-sysctrl = <&pmu>; 492*4882a593Smuzhiyun clocks = <&clkc CLKID_VPU>; 493*4882a593Smuzhiyun clock-names = "vpu"; 494*4882a593Smuzhiyun assigned-clocks = <&clkc CLKID_VPU>; 495*4882a593Smuzhiyun assigned-clock-rates = <364285714>; 496*4882a593Smuzhiyun }; 497*4882a593Smuzhiyun}; 498*4882a593Smuzhiyun 499*4882a593Smuzhiyun&hwrng { 500*4882a593Smuzhiyun compatible = "amlogic,meson8-rng", "amlogic,meson-rng"; 501*4882a593Smuzhiyun clocks = <&clkc CLKID_RNG0>; 502*4882a593Smuzhiyun clock-names = "core"; 503*4882a593Smuzhiyun}; 504*4882a593Smuzhiyun 505*4882a593Smuzhiyun&i2c_AO { 506*4882a593Smuzhiyun clocks = <&clkc CLKID_CLK81>; 507*4882a593Smuzhiyun}; 508*4882a593Smuzhiyun 509*4882a593Smuzhiyun&i2c_A { 510*4882a593Smuzhiyun clocks = <&clkc CLKID_CLK81>; 511*4882a593Smuzhiyun}; 512*4882a593Smuzhiyun 513*4882a593Smuzhiyun&i2c_B { 514*4882a593Smuzhiyun clocks = <&clkc CLKID_CLK81>; 515*4882a593Smuzhiyun}; 516*4882a593Smuzhiyun 517*4882a593Smuzhiyun&L2 { 518*4882a593Smuzhiyun arm,data-latency = <3 3 3>; 519*4882a593Smuzhiyun arm,tag-latency = <2 2 2>; 520*4882a593Smuzhiyun arm,filter-ranges = <0x100000 0xc0000000>; 521*4882a593Smuzhiyun prefetch-data = <1>; 522*4882a593Smuzhiyun prefetch-instr = <1>; 523*4882a593Smuzhiyun arm,shared-override; 524*4882a593Smuzhiyun}; 525*4882a593Smuzhiyun 526*4882a593Smuzhiyun&periph { 527*4882a593Smuzhiyun scu@0 { 528*4882a593Smuzhiyun compatible = "arm,cortex-a9-scu"; 529*4882a593Smuzhiyun reg = <0x0 0x100>; 530*4882a593Smuzhiyun }; 531*4882a593Smuzhiyun 532*4882a593Smuzhiyun timer@200 { 533*4882a593Smuzhiyun compatible = "arm,cortex-a9-global-timer"; 534*4882a593Smuzhiyun reg = <0x200 0x20>; 535*4882a593Smuzhiyun interrupts = <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>; 536*4882a593Smuzhiyun clocks = <&clkc CLKID_PERIPH>; 537*4882a593Smuzhiyun 538*4882a593Smuzhiyun /* 539*4882a593Smuzhiyun * the arm_global_timer driver currently does not handle clock 540*4882a593Smuzhiyun * rate changes. Keep it disabled for now. 541*4882a593Smuzhiyun */ 542*4882a593Smuzhiyun status = "disabled"; 543*4882a593Smuzhiyun }; 544*4882a593Smuzhiyun 545*4882a593Smuzhiyun timer@600 { 546*4882a593Smuzhiyun compatible = "arm,cortex-a9-twd-timer"; 547*4882a593Smuzhiyun reg = <0x600 0x20>; 548*4882a593Smuzhiyun interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>; 549*4882a593Smuzhiyun clocks = <&clkc CLKID_PERIPH>; 550*4882a593Smuzhiyun }; 551*4882a593Smuzhiyun}; 552*4882a593Smuzhiyun 553*4882a593Smuzhiyun&pwm_ab { 554*4882a593Smuzhiyun compatible = "amlogic,meson8-pwm", "amlogic,meson8b-pwm"; 555*4882a593Smuzhiyun}; 556*4882a593Smuzhiyun 557*4882a593Smuzhiyun&pwm_cd { 558*4882a593Smuzhiyun compatible = "amlogic,meson8-pwm", "amlogic,meson8b-pwm"; 559*4882a593Smuzhiyun}; 560*4882a593Smuzhiyun 561*4882a593Smuzhiyun&rtc { 562*4882a593Smuzhiyun compatible = "amlogic,meson8-rtc"; 563*4882a593Smuzhiyun resets = <&reset RESET_RTC>; 564*4882a593Smuzhiyun}; 565*4882a593Smuzhiyun 566*4882a593Smuzhiyun&saradc { 567*4882a593Smuzhiyun compatible = "amlogic,meson8-saradc", "amlogic,meson-saradc"; 568*4882a593Smuzhiyun clocks = <&xtal>, <&clkc CLKID_SAR_ADC>; 569*4882a593Smuzhiyun clock-names = "clkin", "core"; 570*4882a593Smuzhiyun amlogic,hhi-sysctrl = <&hhi>; 571*4882a593Smuzhiyun nvmem-cells = <&temperature_calib>; 572*4882a593Smuzhiyun nvmem-cell-names = "temperature_calib"; 573*4882a593Smuzhiyun}; 574*4882a593Smuzhiyun 575*4882a593Smuzhiyun&sdhc { 576*4882a593Smuzhiyun compatible = "amlogic,meson8-sdhc", "amlogic,meson-mx-sdhc"; 577*4882a593Smuzhiyun clocks = <&xtal>, 578*4882a593Smuzhiyun <&clkc CLKID_FCLK_DIV4>, 579*4882a593Smuzhiyun <&clkc CLKID_FCLK_DIV3>, 580*4882a593Smuzhiyun <&clkc CLKID_FCLK_DIV5>, 581*4882a593Smuzhiyun <&clkc CLKID_SDHC>; 582*4882a593Smuzhiyun clock-names = "clkin0", "clkin1", "clkin2", "clkin3", "pclk"; 583*4882a593Smuzhiyun}; 584*4882a593Smuzhiyun 585*4882a593Smuzhiyun&sdio { 586*4882a593Smuzhiyun compatible = "amlogic,meson8-sdio", "amlogic,meson-mx-sdio"; 587*4882a593Smuzhiyun clocks = <&clkc CLKID_SDIO>, <&clkc CLKID_CLK81>; 588*4882a593Smuzhiyun clock-names = "core", "clkin"; 589*4882a593Smuzhiyun}; 590*4882a593Smuzhiyun 591*4882a593Smuzhiyun&spifc { 592*4882a593Smuzhiyun clocks = <&clkc CLKID_CLK81>; 593*4882a593Smuzhiyun}; 594*4882a593Smuzhiyun 595*4882a593Smuzhiyun&timer_abcde { 596*4882a593Smuzhiyun clocks = <&xtal>, <&clkc CLKID_CLK81>; 597*4882a593Smuzhiyun clock-names = "xtal", "pclk"; 598*4882a593Smuzhiyun}; 599*4882a593Smuzhiyun 600*4882a593Smuzhiyun&uart_AO { 601*4882a593Smuzhiyun compatible = "amlogic,meson8-uart", "amlogic,meson-ao-uart"; 602*4882a593Smuzhiyun clocks = <&xtal>, <&clkc CLKID_CLK81>, <&clkc CLKID_CLK81>; 603*4882a593Smuzhiyun clock-names = "xtal", "pclk", "baud"; 604*4882a593Smuzhiyun}; 605*4882a593Smuzhiyun 606*4882a593Smuzhiyun&uart_A { 607*4882a593Smuzhiyun compatible = "amlogic,meson8-uart"; 608*4882a593Smuzhiyun clocks = <&xtal>, <&clkc CLKID_UART0>, <&clkc CLKID_CLK81>; 609*4882a593Smuzhiyun clock-names = "xtal", "pclk", "baud"; 610*4882a593Smuzhiyun}; 611*4882a593Smuzhiyun 612*4882a593Smuzhiyun&uart_B { 613*4882a593Smuzhiyun compatible = "amlogic,meson8-uart"; 614*4882a593Smuzhiyun clocks = <&xtal>, <&clkc CLKID_UART0>, <&clkc CLKID_CLK81>; 615*4882a593Smuzhiyun clock-names = "xtal", "pclk", "baud"; 616*4882a593Smuzhiyun}; 617*4882a593Smuzhiyun 618*4882a593Smuzhiyun&uart_C { 619*4882a593Smuzhiyun compatible = "amlogic,meson8-uart"; 620*4882a593Smuzhiyun clocks = <&xtal>, <&clkc CLKID_UART0>, <&clkc CLKID_CLK81>; 621*4882a593Smuzhiyun clock-names = "xtal", "pclk", "baud"; 622*4882a593Smuzhiyun}; 623*4882a593Smuzhiyun 624*4882a593Smuzhiyun&usb0 { 625*4882a593Smuzhiyun compatible = "amlogic,meson8-usb", "snps,dwc2"; 626*4882a593Smuzhiyun clocks = <&clkc CLKID_USB0_DDR_BRIDGE>; 627*4882a593Smuzhiyun clock-names = "otg"; 628*4882a593Smuzhiyun}; 629*4882a593Smuzhiyun 630*4882a593Smuzhiyun&usb1 { 631*4882a593Smuzhiyun compatible = "amlogic,meson8-usb", "snps,dwc2"; 632*4882a593Smuzhiyun clocks = <&clkc CLKID_USB1_DDR_BRIDGE>; 633*4882a593Smuzhiyun clock-names = "otg"; 634*4882a593Smuzhiyun}; 635*4882a593Smuzhiyun 636*4882a593Smuzhiyun&usb0_phy { 637*4882a593Smuzhiyun compatible = "amlogic,meson8-usb2-phy", "amlogic,meson-mx-usb2-phy"; 638*4882a593Smuzhiyun clocks = <&clkc CLKID_USB>, <&clkc CLKID_USB0>; 639*4882a593Smuzhiyun clock-names = "usb_general", "usb"; 640*4882a593Smuzhiyun resets = <&reset RESET_USB_OTG>; 641*4882a593Smuzhiyun}; 642*4882a593Smuzhiyun 643*4882a593Smuzhiyun&usb1_phy { 644*4882a593Smuzhiyun compatible = "amlogic,meson8-usb2-phy", "amlogic,meson-mx-usb2-phy"; 645*4882a593Smuzhiyun clocks = <&clkc CLKID_USB>, <&clkc CLKID_USB1>; 646*4882a593Smuzhiyun clock-names = "usb_general", "usb"; 647*4882a593Smuzhiyun resets = <&reset RESET_USB_OTG>; 648*4882a593Smuzhiyun}; 649