1*4882a593Smuzhiyun/* 2*4882a593Smuzhiyun * Copyright 2016 ZTE Corporation. 3*4882a593Smuzhiyun * Copyright 2016 Linaro Ltd. 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * This file is dual-licensed: you can use it either under the terms 6*4882a593Smuzhiyun * of the GPL or the X11 license, at your option. Note that this dual 7*4882a593Smuzhiyun * licensing only applies to this file, and not this project as a 8*4882a593Smuzhiyun * whole. 9*4882a593Smuzhiyun * 10*4882a593Smuzhiyun * a) This library is free software; you can redistribute it and/or 11*4882a593Smuzhiyun * modify it under the terms of the GNU General Public License as 12*4882a593Smuzhiyun * published by the Free Software Foundation; either version 2 of the 13*4882a593Smuzhiyun * License, or (at your option) any later version. 14*4882a593Smuzhiyun * 15*4882a593Smuzhiyun * This library is distributed in the hope that it will be useful, 16*4882a593Smuzhiyun * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*4882a593Smuzhiyun * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*4882a593Smuzhiyun * GNU General Public License for more details. 19*4882a593Smuzhiyun * 20*4882a593Smuzhiyun * Or, alternatively, 21*4882a593Smuzhiyun * 22*4882a593Smuzhiyun * b) Permission is hereby granted, free of charge, to any person 23*4882a593Smuzhiyun * obtaining a copy of this software and associated documentation 24*4882a593Smuzhiyun * files (the "Software"), to deal in the Software without 25*4882a593Smuzhiyun * restriction, including without limitation the rights to use, 26*4882a593Smuzhiyun * copy, modify, merge, publish, distribute, sublicense, and/or 27*4882a593Smuzhiyun * sell copies of the Software, and to permit persons to whom the 28*4882a593Smuzhiyun * Software is furnished to do so, subject to the following 29*4882a593Smuzhiyun * conditions: 30*4882a593Smuzhiyun * 31*4882a593Smuzhiyun * The above copyright notice and this permission notice shall be 32*4882a593Smuzhiyun * included in all copies or substantial portions of the Software. 33*4882a593Smuzhiyun * 34*4882a593Smuzhiyun * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 35*4882a593Smuzhiyun * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 36*4882a593Smuzhiyun * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 37*4882a593Smuzhiyun * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 38*4882a593Smuzhiyun * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 39*4882a593Smuzhiyun * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 40*4882a593Smuzhiyun * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 41*4882a593Smuzhiyun * OTHER DEALINGS IN THE SOFTWARE. 42*4882a593Smuzhiyun */ 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun#include <dt-bindings/input/input.h> 45*4882a593Smuzhiyun#include <dt-bindings/interrupt-controller/arm-gic.h> 46*4882a593Smuzhiyun#include <dt-bindings/gpio/gpio.h> 47*4882a593Smuzhiyun#include <dt-bindings/clock/zx296718-clock.h> 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun/ { 50*4882a593Smuzhiyun compatible = "zte,zx296718"; 51*4882a593Smuzhiyun #address-cells = <1>; 52*4882a593Smuzhiyun #size-cells = <1>; 53*4882a593Smuzhiyun interrupt-parent = <&gic>; 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun aliases { 56*4882a593Smuzhiyun gpio0 = &bgpio0; 57*4882a593Smuzhiyun gpio1 = &bgpio1; 58*4882a593Smuzhiyun gpio2 = &bgpio2; 59*4882a593Smuzhiyun gpio3 = &bgpio3; 60*4882a593Smuzhiyun gpio4 = &bgpio4; 61*4882a593Smuzhiyun gpio5 = &bgpio5; 62*4882a593Smuzhiyun gpio6 = &bgpio6; 63*4882a593Smuzhiyun serial0 = &uart0; 64*4882a593Smuzhiyun }; 65*4882a593Smuzhiyun 66*4882a593Smuzhiyun cpus { 67*4882a593Smuzhiyun #address-cells = <2>; 68*4882a593Smuzhiyun #size-cells = <0>; 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun cpu-map { 71*4882a593Smuzhiyun cluster0 { 72*4882a593Smuzhiyun core0 { 73*4882a593Smuzhiyun cpu = <&cpu0>; 74*4882a593Smuzhiyun }; 75*4882a593Smuzhiyun core1 { 76*4882a593Smuzhiyun cpu = <&cpu1>; 77*4882a593Smuzhiyun }; 78*4882a593Smuzhiyun core2 { 79*4882a593Smuzhiyun cpu = <&cpu2>; 80*4882a593Smuzhiyun }; 81*4882a593Smuzhiyun core3 { 82*4882a593Smuzhiyun cpu = <&cpu3>; 83*4882a593Smuzhiyun }; 84*4882a593Smuzhiyun }; 85*4882a593Smuzhiyun }; 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun cpu0: cpu@0 { 88*4882a593Smuzhiyun device_type = "cpu"; 89*4882a593Smuzhiyun compatible = "arm,cortex-a53"; 90*4882a593Smuzhiyun reg = <0x0 0x0>; 91*4882a593Smuzhiyun enable-method = "psci"; 92*4882a593Smuzhiyun clocks = <&topcrm A53_GATE>; 93*4882a593Smuzhiyun operating-points-v2 = <&cluster0_opp>; 94*4882a593Smuzhiyun }; 95*4882a593Smuzhiyun 96*4882a593Smuzhiyun cpu1: cpu@1 { 97*4882a593Smuzhiyun device_type = "cpu"; 98*4882a593Smuzhiyun compatible = "arm,cortex-a53"; 99*4882a593Smuzhiyun reg = <0x0 0x1>; 100*4882a593Smuzhiyun enable-method = "psci"; 101*4882a593Smuzhiyun clocks = <&topcrm A53_GATE>; 102*4882a593Smuzhiyun operating-points-v2 = <&cluster0_opp>; 103*4882a593Smuzhiyun }; 104*4882a593Smuzhiyun 105*4882a593Smuzhiyun cpu2: cpu@2 { 106*4882a593Smuzhiyun device_type = "cpu"; 107*4882a593Smuzhiyun compatible = "arm,cortex-a53"; 108*4882a593Smuzhiyun reg = <0x0 0x2>; 109*4882a593Smuzhiyun enable-method = "psci"; 110*4882a593Smuzhiyun clocks = <&topcrm A53_GATE>; 111*4882a593Smuzhiyun operating-points-v2 = <&cluster0_opp>; 112*4882a593Smuzhiyun }; 113*4882a593Smuzhiyun 114*4882a593Smuzhiyun cpu3: cpu@3 { 115*4882a593Smuzhiyun device_type = "cpu"; 116*4882a593Smuzhiyun compatible = "arm,cortex-a53"; 117*4882a593Smuzhiyun reg = <0x0 0x3>; 118*4882a593Smuzhiyun enable-method = "psci"; 119*4882a593Smuzhiyun clocks = <&topcrm A53_GATE>; 120*4882a593Smuzhiyun operating-points-v2 = <&cluster0_opp>; 121*4882a593Smuzhiyun }; 122*4882a593Smuzhiyun }; 123*4882a593Smuzhiyun 124*4882a593Smuzhiyun cluster0_opp: opp-table0 { 125*4882a593Smuzhiyun compatible = "operating-points-v2"; 126*4882a593Smuzhiyun opp-shared; 127*4882a593Smuzhiyun 128*4882a593Smuzhiyun opp-500000000 { 129*4882a593Smuzhiyun opp-hz = /bits/ 64 <500000000>; 130*4882a593Smuzhiyun opp-microvolt = <866000>; 131*4882a593Smuzhiyun clock-latency-ns = <500000>; 132*4882a593Smuzhiyun }; 133*4882a593Smuzhiyun 134*4882a593Smuzhiyun opp-648000000 { 135*4882a593Smuzhiyun opp-hz = /bits/ 64 <648000000>; 136*4882a593Smuzhiyun opp-microvolt = <866000>; 137*4882a593Smuzhiyun clock-latency-ns = <500000>; 138*4882a593Smuzhiyun }; 139*4882a593Smuzhiyun 140*4882a593Smuzhiyun opp-800000000 { 141*4882a593Smuzhiyun opp-hz = /bits/ 64 <800000000>; 142*4882a593Smuzhiyun opp-microvolt = <888000>; 143*4882a593Smuzhiyun clock-latency-ns = <500000>; 144*4882a593Smuzhiyun }; 145*4882a593Smuzhiyun 146*4882a593Smuzhiyun opp-1000000000 { 147*4882a593Smuzhiyun opp-hz = /bits/ 64 <1000000000>; 148*4882a593Smuzhiyun opp-microvolt = <898000>; 149*4882a593Smuzhiyun clock-latency-ns = <500000>; 150*4882a593Smuzhiyun }; 151*4882a593Smuzhiyun 152*4882a593Smuzhiyun opp-1188000000 { 153*4882a593Smuzhiyun opp-hz = /bits/ 64 <1188000000>; 154*4882a593Smuzhiyun opp-microvolt = <1015000>; 155*4882a593Smuzhiyun clock-latency-ns = <500000>; 156*4882a593Smuzhiyun }; 157*4882a593Smuzhiyun }; 158*4882a593Smuzhiyun 159*4882a593Smuzhiyun clk24k: clk-24k { 160*4882a593Smuzhiyun compatible = "fixed-clock"; 161*4882a593Smuzhiyun #clock-cells = <0>; 162*4882a593Smuzhiyun clock-frequency = <24000>; 163*4882a593Smuzhiyun clock-output-names = "rtcclk"; 164*4882a593Smuzhiyun }; 165*4882a593Smuzhiyun 166*4882a593Smuzhiyun osc32k: clk-osc32k { 167*4882a593Smuzhiyun compatible = "fixed-clock"; 168*4882a593Smuzhiyun #clock-cells = <0>; 169*4882a593Smuzhiyun clock-frequency = <32000>; 170*4882a593Smuzhiyun clock-output-names = "osc32k"; 171*4882a593Smuzhiyun }; 172*4882a593Smuzhiyun 173*4882a593Smuzhiyun osc12m: clk-osc12m { 174*4882a593Smuzhiyun compatible = "fixed-clock"; 175*4882a593Smuzhiyun #clock-cells = <0>; 176*4882a593Smuzhiyun clock-frequency = <12000000>; 177*4882a593Smuzhiyun clock-output-names = "osc12m"; 178*4882a593Smuzhiyun }; 179*4882a593Smuzhiyun 180*4882a593Smuzhiyun osc24m: clk-osc24m { 181*4882a593Smuzhiyun compatible = "fixed-clock"; 182*4882a593Smuzhiyun #clock-cells = <0>; 183*4882a593Smuzhiyun clock-frequency = <24000000>; 184*4882a593Smuzhiyun clock-output-names = "osc24m"; 185*4882a593Smuzhiyun }; 186*4882a593Smuzhiyun 187*4882a593Smuzhiyun osc25m: clk-osc25m { 188*4882a593Smuzhiyun compatible = "fixed-clock"; 189*4882a593Smuzhiyun #clock-cells = <0>; 190*4882a593Smuzhiyun clock-frequency = <25000000>; 191*4882a593Smuzhiyun clock-output-names = "osc25m"; 192*4882a593Smuzhiyun }; 193*4882a593Smuzhiyun 194*4882a593Smuzhiyun osc60m: clk-osc60m { 195*4882a593Smuzhiyun compatible = "fixed-clock"; 196*4882a593Smuzhiyun #clock-cells = <0>; 197*4882a593Smuzhiyun clock-frequency = <60000000>; 198*4882a593Smuzhiyun clock-output-names = "osc60m"; 199*4882a593Smuzhiyun }; 200*4882a593Smuzhiyun 201*4882a593Smuzhiyun osc99m: clk-osc99m { 202*4882a593Smuzhiyun compatible = "fixed-clock"; 203*4882a593Smuzhiyun #clock-cells = <0>; 204*4882a593Smuzhiyun clock-frequency = <99000000>; 205*4882a593Smuzhiyun clock-output-names = "osc99m"; 206*4882a593Smuzhiyun }; 207*4882a593Smuzhiyun 208*4882a593Smuzhiyun osc125m: clk-osc125m { 209*4882a593Smuzhiyun compatible = "fixed-clock"; 210*4882a593Smuzhiyun #clock-cells = <0>; 211*4882a593Smuzhiyun clock-frequency = <125000000>; 212*4882a593Smuzhiyun clock-output-names = "osc125m"; 213*4882a593Smuzhiyun }; 214*4882a593Smuzhiyun 215*4882a593Smuzhiyun osc198m: clk-osc198m { 216*4882a593Smuzhiyun compatible = "fixed-clock"; 217*4882a593Smuzhiyun #clock-cells = <0>; 218*4882a593Smuzhiyun clock-frequency = <198000000>; 219*4882a593Smuzhiyun clock-output-names = "osc198m"; 220*4882a593Smuzhiyun }; 221*4882a593Smuzhiyun 222*4882a593Smuzhiyun pll_audio: clk-pll-884m { 223*4882a593Smuzhiyun compatible = "fixed-clock"; 224*4882a593Smuzhiyun #clock-cells = <0>; 225*4882a593Smuzhiyun clock-frequency = <884000000>; 226*4882a593Smuzhiyun clock-output-names = "pll_audio"; 227*4882a593Smuzhiyun }; 228*4882a593Smuzhiyun 229*4882a593Smuzhiyun pll_ddr: clk-pll-932m { 230*4882a593Smuzhiyun compatible = "fixed-clock"; 231*4882a593Smuzhiyun #clock-cells = <0>; 232*4882a593Smuzhiyun clock-frequency = <932000000>; 233*4882a593Smuzhiyun clock-output-names = "pll_ddr"; 234*4882a593Smuzhiyun }; 235*4882a593Smuzhiyun 236*4882a593Smuzhiyun pll_hsic: clk-pll-960m { 237*4882a593Smuzhiyun compatible = "fixed-clock"; 238*4882a593Smuzhiyun #clock-cells = <0>; 239*4882a593Smuzhiyun clock-frequency = <960000000>; 240*4882a593Smuzhiyun clock-output-names = "pll_hsic"; 241*4882a593Smuzhiyun }; 242*4882a593Smuzhiyun 243*4882a593Smuzhiyun pll_mac: clk-pll-1000m { 244*4882a593Smuzhiyun compatible = "fixed-clock"; 245*4882a593Smuzhiyun #clock-cells = <0>; 246*4882a593Smuzhiyun clock-frequency = <1000000000>; 247*4882a593Smuzhiyun clock-output-names = "pll_mac"; 248*4882a593Smuzhiyun }; 249*4882a593Smuzhiyun 250*4882a593Smuzhiyun pll_mm0: clk-pll-1188m { 251*4882a593Smuzhiyun compatible = "fixed-clock"; 252*4882a593Smuzhiyun #clock-cells = <0>; 253*4882a593Smuzhiyun clock-frequency = <1188000000>; 254*4882a593Smuzhiyun clock-output-names = "pll_mm0"; 255*4882a593Smuzhiyun }; 256*4882a593Smuzhiyun 257*4882a593Smuzhiyun pll_mm1: clk-pll-1296m { 258*4882a593Smuzhiyun compatible = "fixed-clock"; 259*4882a593Smuzhiyun #clock-cells = <0>; 260*4882a593Smuzhiyun clock-frequency = <1296000000>; 261*4882a593Smuzhiyun clock-output-names = "pll_mm1"; 262*4882a593Smuzhiyun }; 263*4882a593Smuzhiyun 264*4882a593Smuzhiyun psci { 265*4882a593Smuzhiyun compatible = "arm,psci-1.0"; 266*4882a593Smuzhiyun method = "smc"; 267*4882a593Smuzhiyun }; 268*4882a593Smuzhiyun 269*4882a593Smuzhiyun timer { 270*4882a593Smuzhiyun compatible = "arm,armv8-timer"; 271*4882a593Smuzhiyun interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>, 272*4882a593Smuzhiyun <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>, 273*4882a593Smuzhiyun <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>, 274*4882a593Smuzhiyun <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>; 275*4882a593Smuzhiyun }; 276*4882a593Smuzhiyun 277*4882a593Smuzhiyun pmu { 278*4882a593Smuzhiyun compatible = "arm,cortex-a53-pmu"; 279*4882a593Smuzhiyun interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>; 280*4882a593Smuzhiyun }; 281*4882a593Smuzhiyun 282*4882a593Smuzhiyun gic: interrupt-controller@2a00000 { 283*4882a593Smuzhiyun compatible = "arm,gic-v3"; 284*4882a593Smuzhiyun #interrupt-cells = <3>; 285*4882a593Smuzhiyun #address-cells = <0>; 286*4882a593Smuzhiyun interrupt-controller; 287*4882a593Smuzhiyun reg = <0x02a00000 0x10000>, 288*4882a593Smuzhiyun <0x02b00000 0xc0000>; 289*4882a593Smuzhiyun interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>; 290*4882a593Smuzhiyun }; 291*4882a593Smuzhiyun 292*4882a593Smuzhiyun soc { 293*4882a593Smuzhiyun #address-cells = <1>; 294*4882a593Smuzhiyun #size-cells = <1>; 295*4882a593Smuzhiyun compatible = "simple-bus"; 296*4882a593Smuzhiyun ranges; 297*4882a593Smuzhiyun 298*4882a593Smuzhiyun irdec: ir-decoder@111000 { 299*4882a593Smuzhiyun compatible = "zte,zx296718-irdec"; 300*4882a593Smuzhiyun reg = <0x111000 0x1000>; 301*4882a593Smuzhiyun interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>; 302*4882a593Smuzhiyun status = "disabled"; 303*4882a593Smuzhiyun }; 304*4882a593Smuzhiyun 305*4882a593Smuzhiyun aon_sysctrl: aon-sysctrl@116000 { 306*4882a593Smuzhiyun compatible = "zte,zx296718-aon-sysctrl", "syscon"; 307*4882a593Smuzhiyun reg = <0x116000 0x1000>; 308*4882a593Smuzhiyun }; 309*4882a593Smuzhiyun 310*4882a593Smuzhiyun iocfg: pin-controller@119000 { 311*4882a593Smuzhiyun compatible = "zte,zx296718-iocfg"; 312*4882a593Smuzhiyun reg = <0x119000 0x1000>; 313*4882a593Smuzhiyun }; 314*4882a593Smuzhiyun 315*4882a593Smuzhiyun uart0: uart@11f000 { 316*4882a593Smuzhiyun compatible = "arm,pl011", "arm,primecell"; 317*4882a593Smuzhiyun arm,primecell-periphid = <0x001feffe>; 318*4882a593Smuzhiyun reg = <0x11f000 0x1000>; 319*4882a593Smuzhiyun interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>; 320*4882a593Smuzhiyun clocks = <&osc24m>; 321*4882a593Smuzhiyun clock-names = "apb_pclk"; 322*4882a593Smuzhiyun status = "disabled"; 323*4882a593Smuzhiyun }; 324*4882a593Smuzhiyun 325*4882a593Smuzhiyun sd0: mmc@1110000 { 326*4882a593Smuzhiyun compatible = "zte,zx296718-dw-mshc"; 327*4882a593Smuzhiyun #address-cells = <1>; 328*4882a593Smuzhiyun #size-cells = <0>; 329*4882a593Smuzhiyun reg = <0x01110000 0x1000>; 330*4882a593Smuzhiyun interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>; 331*4882a593Smuzhiyun fifo-depth = <32>; 332*4882a593Smuzhiyun data-addr = <0x200>; 333*4882a593Smuzhiyun fifo-watermark-aligned; 334*4882a593Smuzhiyun bus-width = <4>; 335*4882a593Smuzhiyun clock-frequency = <50000000>; 336*4882a593Smuzhiyun clocks = <&topcrm SD0_AHB>, <&topcrm SD0_WCLK>; 337*4882a593Smuzhiyun clock-names = "biu", "ciu"; 338*4882a593Smuzhiyun max-frequency = <50000000>; 339*4882a593Smuzhiyun cap-sdio-irq; 340*4882a593Smuzhiyun cap-sd-highspeed; 341*4882a593Smuzhiyun sd-uhs-sdr12; 342*4882a593Smuzhiyun sd-uhs-sdr25; 343*4882a593Smuzhiyun sd-uhs-sdr50; 344*4882a593Smuzhiyun sd-uhs-sdr104; 345*4882a593Smuzhiyun sd-uhs-ddr50; 346*4882a593Smuzhiyun status = "disabled"; 347*4882a593Smuzhiyun }; 348*4882a593Smuzhiyun 349*4882a593Smuzhiyun sd1: mmc@1111000 { 350*4882a593Smuzhiyun compatible = "zte,zx296718-dw-mshc"; 351*4882a593Smuzhiyun #address-cells = <1>; 352*4882a593Smuzhiyun #size-cells = <0>; 353*4882a593Smuzhiyun reg = <0x01111000 0x1000>; 354*4882a593Smuzhiyun interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>; 355*4882a593Smuzhiyun fifo-depth = <32>; 356*4882a593Smuzhiyun data-addr = <0x200>; 357*4882a593Smuzhiyun fifo-watermark-aligned; 358*4882a593Smuzhiyun bus-width = <4>; 359*4882a593Smuzhiyun clock-frequency = <167000000>; 360*4882a593Smuzhiyun clocks = <&topcrm SD1_AHB>, <&topcrm SD1_WCLK>; 361*4882a593Smuzhiyun clock-names = "biu", "ciu"; 362*4882a593Smuzhiyun max-frequency = <167000000>; 363*4882a593Smuzhiyun cap-sdio-irq; 364*4882a593Smuzhiyun cap-sd-highspeed; 365*4882a593Smuzhiyun status = "disabled"; 366*4882a593Smuzhiyun }; 367*4882a593Smuzhiyun 368*4882a593Smuzhiyun dma: dma-controller@1460000 { 369*4882a593Smuzhiyun compatible = "zte,zx296702-dma"; 370*4882a593Smuzhiyun reg = <0x01460000 0x1000>; 371*4882a593Smuzhiyun interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>; 372*4882a593Smuzhiyun clocks = <&osc24m>; 373*4882a593Smuzhiyun clock-names = "dmaclk"; 374*4882a593Smuzhiyun #dma-cells = <1>; 375*4882a593Smuzhiyun dma-channels = <32>; 376*4882a593Smuzhiyun dma-requests = <32>; 377*4882a593Smuzhiyun }; 378*4882a593Smuzhiyun 379*4882a593Smuzhiyun lsp0crm: clock-controller@1420000 { 380*4882a593Smuzhiyun compatible = "zte,zx296718-lsp0crm"; 381*4882a593Smuzhiyun reg = <0x01420000 0x1000>; 382*4882a593Smuzhiyun #clock-cells = <1>; 383*4882a593Smuzhiyun }; 384*4882a593Smuzhiyun 385*4882a593Smuzhiyun bgpio0: gpio@142d000 { 386*4882a593Smuzhiyun compatible = "zte,zx296718-gpio", "zte,zx296702-gpio"; 387*4882a593Smuzhiyun reg = <0x142d000 0x40>; 388*4882a593Smuzhiyun gpio-controller; 389*4882a593Smuzhiyun #gpio-cells = <2>; 390*4882a593Smuzhiyun gpio-ranges = <&pmm 0 48 16>; 391*4882a593Smuzhiyun interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>; 392*4882a593Smuzhiyun interrupt-parent = <&gic>; 393*4882a593Smuzhiyun interrupt-controller; 394*4882a593Smuzhiyun #interrupt-cells = <2>; 395*4882a593Smuzhiyun }; 396*4882a593Smuzhiyun 397*4882a593Smuzhiyun bgpio1: gpio@142d040 { 398*4882a593Smuzhiyun compatible = "zte,zx296718-gpio", "zte,zx296702-gpio"; 399*4882a593Smuzhiyun reg = <0x142d040 0x40>; 400*4882a593Smuzhiyun gpio-controller; 401*4882a593Smuzhiyun #gpio-cells = <2>; 402*4882a593Smuzhiyun gpio-ranges = <&pmm 0 80 16>; 403*4882a593Smuzhiyun interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>; 404*4882a593Smuzhiyun interrupt-parent = <&gic>; 405*4882a593Smuzhiyun interrupt-controller; 406*4882a593Smuzhiyun #interrupt-cells = <2>; 407*4882a593Smuzhiyun }; 408*4882a593Smuzhiyun 409*4882a593Smuzhiyun bgpio2: gpio@142d080 { 410*4882a593Smuzhiyun compatible = "zte,zx296718-gpio", "zte,zx296702-gpio"; 411*4882a593Smuzhiyun reg = <0x142d080 0x40>; 412*4882a593Smuzhiyun gpio-controller; 413*4882a593Smuzhiyun #gpio-cells = <2>; 414*4882a593Smuzhiyun gpio-ranges = <&pmm 0 80 3 415*4882a593Smuzhiyun &pmm 3 32 4 416*4882a593Smuzhiyun &pmm 7 83 9>; 417*4882a593Smuzhiyun interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>; 418*4882a593Smuzhiyun interrupt-parent = <&gic>; 419*4882a593Smuzhiyun interrupt-controller; 420*4882a593Smuzhiyun #interrupt-cells = <2>; 421*4882a593Smuzhiyun }; 422*4882a593Smuzhiyun 423*4882a593Smuzhiyun bgpio3: gpio@142d0c0 { 424*4882a593Smuzhiyun compatible = "zte,zx296718-gpio", "zte,zx296702-gpio"; 425*4882a593Smuzhiyun reg = <0x142d0c0 0x40>; 426*4882a593Smuzhiyun gpio-controller; 427*4882a593Smuzhiyun #gpio-cells = <2>; 428*4882a593Smuzhiyun gpio-ranges = <&pmm 0 92 16>; 429*4882a593Smuzhiyun interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>; 430*4882a593Smuzhiyun interrupt-parent = <&gic>; 431*4882a593Smuzhiyun interrupt-controller; 432*4882a593Smuzhiyun #interrupt-cells = <2>; 433*4882a593Smuzhiyun }; 434*4882a593Smuzhiyun 435*4882a593Smuzhiyun bgpio4: gpio@142d100 { 436*4882a593Smuzhiyun compatible = "zte,zx296718-gpio", "zte,zx296702-gpio"; 437*4882a593Smuzhiyun reg = <0x142d100 0x40>; 438*4882a593Smuzhiyun gpio-controller; 439*4882a593Smuzhiyun #gpio-cells = <2>; 440*4882a593Smuzhiyun gpio-ranges = <&pmm 0 108 12 441*4882a593Smuzhiyun &pmm 12 121 4>; 442*4882a593Smuzhiyun interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>; 443*4882a593Smuzhiyun interrupt-parent = <&gic>; 444*4882a593Smuzhiyun interrupt-controller; 445*4882a593Smuzhiyun #interrupt-cells = <2>; 446*4882a593Smuzhiyun }; 447*4882a593Smuzhiyun 448*4882a593Smuzhiyun bgpio5: gpio@142d140 { 449*4882a593Smuzhiyun compatible = "zte,zx296718-gpio", "zte,zx296702-gpio"; 450*4882a593Smuzhiyun reg = <0x142d140 0x40>; 451*4882a593Smuzhiyun gpio-controller; 452*4882a593Smuzhiyun #gpio-cells = <2>; 453*4882a593Smuzhiyun gpio-ranges = <&pmm 0 125 16>; 454*4882a593Smuzhiyun interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>; 455*4882a593Smuzhiyun interrupt-parent = <&gic>; 456*4882a593Smuzhiyun interrupt-controller; 457*4882a593Smuzhiyun #interrupt-cells = <2>; 458*4882a593Smuzhiyun }; 459*4882a593Smuzhiyun 460*4882a593Smuzhiyun bgpio6: gpio@142d180 { 461*4882a593Smuzhiyun compatible = "zte,zx296718-gpio", "zte,zx296702-gpio"; 462*4882a593Smuzhiyun reg = <0x142d180 0x40>; 463*4882a593Smuzhiyun gpio-controller; 464*4882a593Smuzhiyun #gpio-cells = <2>; 465*4882a593Smuzhiyun gpio-ranges = <&pmm 0 141 2>; 466*4882a593Smuzhiyun interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>; 467*4882a593Smuzhiyun interrupt-parent = <&gic>; 468*4882a593Smuzhiyun interrupt-controller; 469*4882a593Smuzhiyun #interrupt-cells = <2>; 470*4882a593Smuzhiyun }; 471*4882a593Smuzhiyun 472*4882a593Smuzhiyun lsp1crm: clock-controller@1430000 { 473*4882a593Smuzhiyun compatible = "zte,zx296718-lsp1crm"; 474*4882a593Smuzhiyun reg = <0x01430000 0x1000>; 475*4882a593Smuzhiyun #clock-cells = <1>; 476*4882a593Smuzhiyun }; 477*4882a593Smuzhiyun 478*4882a593Smuzhiyun pwm: pwm@1439000 { 479*4882a593Smuzhiyun compatible = "zte,zx296718-pwm"; 480*4882a593Smuzhiyun reg = <0x1439000 0x1000>; 481*4882a593Smuzhiyun clocks = <&lsp1crm LSP1_PWM_PCLK>, 482*4882a593Smuzhiyun <&lsp1crm LSP1_PWM_WCLK>; 483*4882a593Smuzhiyun clock-names = "pclk", "wclk"; 484*4882a593Smuzhiyun #pwm-cells = <3>; 485*4882a593Smuzhiyun status = "disabled"; 486*4882a593Smuzhiyun }; 487*4882a593Smuzhiyun 488*4882a593Smuzhiyun vou: vou@1440000 { 489*4882a593Smuzhiyun compatible = "zte,zx296718-vou"; 490*4882a593Smuzhiyun #address-cells = <1>; 491*4882a593Smuzhiyun #size-cells = <1>; 492*4882a593Smuzhiyun ranges = <0 0x1440000 0x10000>; 493*4882a593Smuzhiyun 494*4882a593Smuzhiyun dpc: dpc@0 { 495*4882a593Smuzhiyun compatible = "zte,zx296718-dpc"; 496*4882a593Smuzhiyun reg = <0x0000 0x1000>, <0x1000 0x1000>, 497*4882a593Smuzhiyun <0x5000 0x1000>, <0x6000 0x1000>, 498*4882a593Smuzhiyun <0xa000 0x1000>; 499*4882a593Smuzhiyun reg-names = "osd", "timing_ctrl", 500*4882a593Smuzhiyun "dtrc", "vou_ctrl", 501*4882a593Smuzhiyun "otfppu"; 502*4882a593Smuzhiyun interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>; 503*4882a593Smuzhiyun clocks = <&topcrm VOU_ACLK>, <&topcrm VOU_PPU_WCLK>, 504*4882a593Smuzhiyun <&topcrm VOU_MAIN_WCLK>, <&topcrm VOU_AUX_WCLK>; 505*4882a593Smuzhiyun clock-names = "aclk", "ppu_wclk", 506*4882a593Smuzhiyun "main_wclk", "aux_wclk"; 507*4882a593Smuzhiyun }; 508*4882a593Smuzhiyun 509*4882a593Smuzhiyun vga: vga@8000 { 510*4882a593Smuzhiyun compatible = "zte,zx296718-vga"; 511*4882a593Smuzhiyun reg = <0x8000 0x1000>; 512*4882a593Smuzhiyun interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>; 513*4882a593Smuzhiyun clocks = <&topcrm VGA_I2C_WCLK>; 514*4882a593Smuzhiyun clock-names = "i2c_wclk"; 515*4882a593Smuzhiyun zte,vga-power-control = <&sysctrl 0x170 0xe0>; 516*4882a593Smuzhiyun status = "disabled"; 517*4882a593Smuzhiyun }; 518*4882a593Smuzhiyun 519*4882a593Smuzhiyun hdmi: hdmi@c000 { 520*4882a593Smuzhiyun compatible = "zte,zx296718-hdmi"; 521*4882a593Smuzhiyun reg = <0xc000 0x4000>; 522*4882a593Smuzhiyun interrupts = <GIC_SPI 82 IRQ_TYPE_EDGE_RISING>; 523*4882a593Smuzhiyun clocks = <&topcrm HDMI_OSC_CEC>, 524*4882a593Smuzhiyun <&topcrm HDMI_OSC_CLK>, 525*4882a593Smuzhiyun <&topcrm HDMI_XCLK>; 526*4882a593Smuzhiyun clock-names = "osc_cec", "osc_clk", "xclk"; 527*4882a593Smuzhiyun #sound-dai-cells = <0>; 528*4882a593Smuzhiyun status = "disabled"; 529*4882a593Smuzhiyun }; 530*4882a593Smuzhiyun 531*4882a593Smuzhiyun tvenc: tvenc@2000 { 532*4882a593Smuzhiyun compatible = "zte,zx296718-tvenc"; 533*4882a593Smuzhiyun reg = <0x2000 0x1000>; 534*4882a593Smuzhiyun zte,tvenc-power-control = <&sysctrl 0x170 0x10>; 535*4882a593Smuzhiyun status = "disabled"; 536*4882a593Smuzhiyun }; 537*4882a593Smuzhiyun }; 538*4882a593Smuzhiyun 539*4882a593Smuzhiyun topcrm: clock-controller@1461000 { 540*4882a593Smuzhiyun compatible = "zte,zx296718-topcrm"; 541*4882a593Smuzhiyun reg = <0x01461000 0x1000>; 542*4882a593Smuzhiyun #clock-cells = <1>; 543*4882a593Smuzhiyun }; 544*4882a593Smuzhiyun 545*4882a593Smuzhiyun pmm: pin-controller@1462000 { 546*4882a593Smuzhiyun compatible = "zte,zx296718-pmm"; 547*4882a593Smuzhiyun reg = <0x1462000 0x1000>; 548*4882a593Smuzhiyun zte,auxiliary-controller = <&iocfg>; 549*4882a593Smuzhiyun }; 550*4882a593Smuzhiyun 551*4882a593Smuzhiyun sysctrl: sysctrl@1463000 { 552*4882a593Smuzhiyun compatible = "zte,zx296718-sysctrl", "syscon"; 553*4882a593Smuzhiyun reg = <0x1463000 0x1000>; 554*4882a593Smuzhiyun }; 555*4882a593Smuzhiyun 556*4882a593Smuzhiyun emmc: mmc@1470000{ 557*4882a593Smuzhiyun compatible = "zte,zx296718-dw-mshc"; 558*4882a593Smuzhiyun reg = <0x01470000 0x1000>; 559*4882a593Smuzhiyun interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>; 560*4882a593Smuzhiyun zte,aon-syscon = <&aon_sysctrl>; 561*4882a593Smuzhiyun bus-width = <8>; 562*4882a593Smuzhiyun fifo-depth = <128>; 563*4882a593Smuzhiyun data-addr = <0x200>; 564*4882a593Smuzhiyun fifo-watermark-aligned; 565*4882a593Smuzhiyun clock-frequency = <167000000>; 566*4882a593Smuzhiyun clocks = <&topcrm EMMC_NAND_AHB>, <&topcrm EMMC_WCLK>; 567*4882a593Smuzhiyun clock-names = "biu", "ciu"; 568*4882a593Smuzhiyun max-frequency = <167000000>; 569*4882a593Smuzhiyun cap-mmc-highspeed; 570*4882a593Smuzhiyun mmc-ddr-1_8v; 571*4882a593Smuzhiyun mmc-hs200-1_8v; 572*4882a593Smuzhiyun non-removable; 573*4882a593Smuzhiyun disable-wp; 574*4882a593Smuzhiyun status = "disabled"; 575*4882a593Smuzhiyun }; 576*4882a593Smuzhiyun 577*4882a593Smuzhiyun audiocrm: clock-controller@1480000 { 578*4882a593Smuzhiyun compatible = "zte,zx296718-audiocrm"; 579*4882a593Smuzhiyun reg = <0x01480000 0x1000>; 580*4882a593Smuzhiyun #clock-cells = <1>; 581*4882a593Smuzhiyun }; 582*4882a593Smuzhiyun 583*4882a593Smuzhiyun i2s0: i2s@1482000 { 584*4882a593Smuzhiyun compatible = "zte,zx296718-i2s", "zte,zx296702-i2s"; 585*4882a593Smuzhiyun reg = <0x01482000 0x1000>; 586*4882a593Smuzhiyun clocks = <&audiocrm AUDIO_I2S0_WCLK>, 587*4882a593Smuzhiyun <&audiocrm AUDIO_I2S0_PCLK>; 588*4882a593Smuzhiyun clock-names = "wclk", "pclk"; 589*4882a593Smuzhiyun assigned-clocks = <&audiocrm I2S0_WCLK_MUX>; 590*4882a593Smuzhiyun assigned-clock-parents = <&topcrm AUDIO_99M>; 591*4882a593Smuzhiyun interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>; 592*4882a593Smuzhiyun dmas = <&dma 22>, <&dma 23>; 593*4882a593Smuzhiyun dma-names = "tx", "rx"; 594*4882a593Smuzhiyun #sound-dai-cells = <0>; 595*4882a593Smuzhiyun status = "disabled"; 596*4882a593Smuzhiyun }; 597*4882a593Smuzhiyun 598*4882a593Smuzhiyun i2c0: i2c@1486000 { 599*4882a593Smuzhiyun compatible = "zte,zx296718-i2c"; 600*4882a593Smuzhiyun reg = <0x01486000 0x1000>; 601*4882a593Smuzhiyun interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>; 602*4882a593Smuzhiyun #address-cells = <1>; 603*4882a593Smuzhiyun #size-cells = <0>; 604*4882a593Smuzhiyun clocks = <&audiocrm AUDIO_I2C0_WCLK>; 605*4882a593Smuzhiyun clock-frequency = <1600000>; 606*4882a593Smuzhiyun status = "disabled"; 607*4882a593Smuzhiyun 608*4882a593Smuzhiyun aud96p22: codec@22 { 609*4882a593Smuzhiyun compatible = "zte,zx-aud96p22"; 610*4882a593Smuzhiyun #sound-dai-cells = <0>; 611*4882a593Smuzhiyun reg = <0x22>; 612*4882a593Smuzhiyun }; 613*4882a593Smuzhiyun }; 614*4882a593Smuzhiyun 615*4882a593Smuzhiyun spdif0: spdif@1488000 { 616*4882a593Smuzhiyun compatible = "zte,zx296702-spdif"; 617*4882a593Smuzhiyun reg = <0x1488000 0x1000>; 618*4882a593Smuzhiyun clocks = <&audiocrm AUDIO_SPDIF0_WCLK>; 619*4882a593Smuzhiyun clock-names = "tx"; 620*4882a593Smuzhiyun interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>; 621*4882a593Smuzhiyun #sound-dai-cells = <0>; 622*4882a593Smuzhiyun dmas = <&dma 30>; 623*4882a593Smuzhiyun dma-names = "tx"; 624*4882a593Smuzhiyun status = "disabled"; 625*4882a593Smuzhiyun }; 626*4882a593Smuzhiyun }; 627*4882a593Smuzhiyun}; 628