1*4882a593Smuzhiyun/* 2*4882a593Smuzhiyun * Spreadtrum Whale2 platform peripherals 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Copyright (C) 2016, Spreadtrum Communications Inc. 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * SPDX-License-Identifier: (GPL-2.0+ OR MIT) 7*4882a593Smuzhiyun */ 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun#include <dt-bindings/clock/sprd,sc9860-clk.h> 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun/ { 12*4882a593Smuzhiyun interrupt-parent = <&gic>; 13*4882a593Smuzhiyun #address-cells = <2>; 14*4882a593Smuzhiyun #size-cells = <2>; 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun soc: soc { 17*4882a593Smuzhiyun compatible = "simple-bus"; 18*4882a593Smuzhiyun #address-cells = <2>; 19*4882a593Smuzhiyun #size-cells = <2>; 20*4882a593Smuzhiyun ranges; 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun ap_ahb_regs: syscon@20210000 { 23*4882a593Smuzhiyun compatible = "syscon"; 24*4882a593Smuzhiyun reg = <0 0x20210000 0 0x10000>; 25*4882a593Smuzhiyun }; 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun pmu_regs: syscon@402b0000 { 28*4882a593Smuzhiyun compatible = "syscon"; 29*4882a593Smuzhiyun reg = <0 0x402b0000 0 0x10000>; 30*4882a593Smuzhiyun }; 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun aon_regs: syscon@402e0000 { 33*4882a593Smuzhiyun compatible = "syscon"; 34*4882a593Smuzhiyun reg = <0 0x402e0000 0 0x10000>; 35*4882a593Smuzhiyun }; 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun ana_regs: syscon@40400000 { 38*4882a593Smuzhiyun compatible = "syscon"; 39*4882a593Smuzhiyun reg = <0 0x40400000 0 0x10000>; 40*4882a593Smuzhiyun }; 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun agcp_regs: syscon@415e0000 { 43*4882a593Smuzhiyun compatible = "syscon"; 44*4882a593Smuzhiyun reg = <0 0x415e0000 0 0x1000000>; 45*4882a593Smuzhiyun }; 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun vsp_regs: syscon@61100000 { 48*4882a593Smuzhiyun compatible = "syscon"; 49*4882a593Smuzhiyun reg = <0 0x61100000 0 0x10000>; 50*4882a593Smuzhiyun }; 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun cam_regs: syscon@62100000 { 53*4882a593Smuzhiyun compatible = "syscon"; 54*4882a593Smuzhiyun reg = <0 0x62100000 0 0x10000>; 55*4882a593Smuzhiyun }; 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun disp_regs: syscon@63100000 { 58*4882a593Smuzhiyun compatible = "syscon"; 59*4882a593Smuzhiyun reg = <0 0x63100000 0 0x10000>; 60*4882a593Smuzhiyun }; 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun ap_apb_regs: syscon@70b00000 { 63*4882a593Smuzhiyun compatible = "syscon"; 64*4882a593Smuzhiyun reg = <0 0x70b00000 0 0x40000>; 65*4882a593Smuzhiyun }; 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun ap-apb { 68*4882a593Smuzhiyun compatible = "simple-bus"; 69*4882a593Smuzhiyun #address-cells = <1>; 70*4882a593Smuzhiyun #size-cells = <1>; 71*4882a593Smuzhiyun ranges = <0 0x0 0x70000000 0x10000000>; 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun uart0: serial@0 { 74*4882a593Smuzhiyun compatible = "sprd,sc9860-uart", 75*4882a593Smuzhiyun "sprd,sc9836-uart"; 76*4882a593Smuzhiyun reg = <0x0 0x100>; 77*4882a593Smuzhiyun interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>; 78*4882a593Smuzhiyun clock-names = "enable", "uart", "source"; 79*4882a593Smuzhiyun clocks = <&apapb_gate CLK_UART0_EB>, 80*4882a593Smuzhiyun <&ap_clk CLK_UART0>, <&ext_26m>; 81*4882a593Smuzhiyun status = "disabled"; 82*4882a593Smuzhiyun }; 83*4882a593Smuzhiyun 84*4882a593Smuzhiyun uart1: serial@100000 { 85*4882a593Smuzhiyun compatible = "sprd,sc9860-uart", 86*4882a593Smuzhiyun "sprd,sc9836-uart"; 87*4882a593Smuzhiyun reg = <0x100000 0x100>; 88*4882a593Smuzhiyun interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>; 89*4882a593Smuzhiyun clock-names = "enable", "uart", "source"; 90*4882a593Smuzhiyun clocks = <&apapb_gate CLK_UART1_EB>, 91*4882a593Smuzhiyun <&ap_clk CLK_UART1>, <&ext_26m>; 92*4882a593Smuzhiyun status = "disabled"; 93*4882a593Smuzhiyun }; 94*4882a593Smuzhiyun 95*4882a593Smuzhiyun uart2: serial@200000 { 96*4882a593Smuzhiyun compatible = "sprd,sc9860-uart", 97*4882a593Smuzhiyun "sprd,sc9836-uart"; 98*4882a593Smuzhiyun reg = <0x200000 0x100>; 99*4882a593Smuzhiyun interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>; 100*4882a593Smuzhiyun clock-names = "enable", "uart", "source"; 101*4882a593Smuzhiyun clocks = <&apapb_gate CLK_UART2_EB>, 102*4882a593Smuzhiyun <&ap_clk CLK_UART2>, <&ext_26m>; 103*4882a593Smuzhiyun status = "disabled"; 104*4882a593Smuzhiyun }; 105*4882a593Smuzhiyun 106*4882a593Smuzhiyun uart3: serial@300000 { 107*4882a593Smuzhiyun compatible = "sprd,sc9860-uart", 108*4882a593Smuzhiyun "sprd,sc9836-uart"; 109*4882a593Smuzhiyun reg = <0x300000 0x100>; 110*4882a593Smuzhiyun interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>; 111*4882a593Smuzhiyun clock-names = "enable", "uart", "source"; 112*4882a593Smuzhiyun clocks = <&apapb_gate CLK_UART3_EB>, 113*4882a593Smuzhiyun <&ap_clk CLK_UART3>, <&ext_26m>; 114*4882a593Smuzhiyun status = "disabled"; 115*4882a593Smuzhiyun }; 116*4882a593Smuzhiyun }; 117*4882a593Smuzhiyun 118*4882a593Smuzhiyun ap-ahb { 119*4882a593Smuzhiyun compatible = "simple-bus"; 120*4882a593Smuzhiyun #address-cells = <2>; 121*4882a593Smuzhiyun #size-cells = <2>; 122*4882a593Smuzhiyun ranges; 123*4882a593Smuzhiyun 124*4882a593Smuzhiyun ap_dma: dma-controller@20100000 { 125*4882a593Smuzhiyun compatible = "sprd,sc9860-dma"; 126*4882a593Smuzhiyun reg = <0 0x20100000 0 0x4000>; 127*4882a593Smuzhiyun interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>; 128*4882a593Smuzhiyun #dma-cells = <1>; 129*4882a593Smuzhiyun #dma-channels = <32>; 130*4882a593Smuzhiyun clock-names = "enable"; 131*4882a593Smuzhiyun clocks = <&apahb_gate CLK_DMA_EB>; 132*4882a593Smuzhiyun }; 133*4882a593Smuzhiyun 134*4882a593Smuzhiyun sdio3: sdio@50430000 { 135*4882a593Smuzhiyun compatible = "sprd,sdhci-r11"; 136*4882a593Smuzhiyun reg = <0 0x50430000 0 0x1000>; 137*4882a593Smuzhiyun interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>; 138*4882a593Smuzhiyun 139*4882a593Smuzhiyun clock-names = "sdio", "enable", "2x_enable"; 140*4882a593Smuzhiyun clocks = <&aon_prediv CLK_EMMC_2X>, 141*4882a593Smuzhiyun <&apahb_gate CLK_EMMC_EB>, 142*4882a593Smuzhiyun <&aon_gate CLK_EMMC_2X_EN>; 143*4882a593Smuzhiyun assigned-clocks = <&aon_prediv CLK_EMMC_2X>; 144*4882a593Smuzhiyun assigned-clock-parents = <&clk_l0_409m6>; 145*4882a593Smuzhiyun 146*4882a593Smuzhiyun sprd,phy-delay-mmc-hs400 = <0x44 0x7f 0x2e 0x2e>; 147*4882a593Smuzhiyun sprd,phy-delay-mmc-hs200 = <0x0 0x8c 0x8c 0x8c>; 148*4882a593Smuzhiyun sprd,phy-delay-mmc-ddr52 = <0x3f 0x75 0x14 0x14>; 149*4882a593Smuzhiyun sprd,phy-delay-mmc-hs400es = <0x3f 0x3f 0x2e 0x2e>; 150*4882a593Smuzhiyun vmmc-supply = <&vddemmccore>; 151*4882a593Smuzhiyun bus-width = <8>; 152*4882a593Smuzhiyun non-removable; 153*4882a593Smuzhiyun no-sdio; 154*4882a593Smuzhiyun no-sd; 155*4882a593Smuzhiyun cap-mmc-hw-reset; 156*4882a593Smuzhiyun mmc-hs400-enhanced-strobe; 157*4882a593Smuzhiyun mmc-hs400-1_8v; 158*4882a593Smuzhiyun mmc-hs200-1_8v; 159*4882a593Smuzhiyun mmc-ddr-1_8v; 160*4882a593Smuzhiyun }; 161*4882a593Smuzhiyun }; 162*4882a593Smuzhiyun 163*4882a593Smuzhiyun aon { 164*4882a593Smuzhiyun compatible = "simple-bus"; 165*4882a593Smuzhiyun #address-cells = <2>; 166*4882a593Smuzhiyun #size-cells = <2>; 167*4882a593Smuzhiyun ranges; 168*4882a593Smuzhiyun 169*4882a593Smuzhiyun adi_bus: spi@40030000 { 170*4882a593Smuzhiyun compatible = "sprd,sc9860-adi"; 171*4882a593Smuzhiyun reg = <0 0x40030000 0 0x10000>; 172*4882a593Smuzhiyun hwlocks = <&hwlock 0>; 173*4882a593Smuzhiyun hwlock-names = "adi"; 174*4882a593Smuzhiyun #address-cells = <1>; 175*4882a593Smuzhiyun #size-cells = <0>; 176*4882a593Smuzhiyun }; 177*4882a593Smuzhiyun 178*4882a593Smuzhiyun timer@40050000 { 179*4882a593Smuzhiyun compatible = "sprd,sc9860-timer"; 180*4882a593Smuzhiyun reg = <0 0x40050000 0 0x20>; 181*4882a593Smuzhiyun interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>; 182*4882a593Smuzhiyun clocks = <&ext_32k>; 183*4882a593Smuzhiyun }; 184*4882a593Smuzhiyun 185*4882a593Smuzhiyun timer@40050020 { 186*4882a593Smuzhiyun compatible = "sprd,sc9860-suspend-timer"; 187*4882a593Smuzhiyun reg = <0 0x40050020 0 0x20>; 188*4882a593Smuzhiyun clocks = <&ext_32k>; 189*4882a593Smuzhiyun }; 190*4882a593Smuzhiyun 191*4882a593Smuzhiyun hwlock: hwspinlock@40500000 { 192*4882a593Smuzhiyun compatible = "sprd,hwspinlock-r3p0"; 193*4882a593Smuzhiyun reg = <0 0x40500000 0 0x1000>; 194*4882a593Smuzhiyun #hwlock-cells = <1>; 195*4882a593Smuzhiyun clock-names = "enable"; 196*4882a593Smuzhiyun clocks = <&aon_gate CLK_SPLK_EB>; 197*4882a593Smuzhiyun }; 198*4882a593Smuzhiyun 199*4882a593Smuzhiyun eic_debounce: gpio@40210000 { 200*4882a593Smuzhiyun compatible = "sprd,sc9860-eic-debounce"; 201*4882a593Smuzhiyun reg = <0 0x40210000 0 0x80>; 202*4882a593Smuzhiyun gpio-controller; 203*4882a593Smuzhiyun #gpio-cells = <2>; 204*4882a593Smuzhiyun interrupt-controller; 205*4882a593Smuzhiyun #interrupt-cells = <2>; 206*4882a593Smuzhiyun interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>; 207*4882a593Smuzhiyun }; 208*4882a593Smuzhiyun 209*4882a593Smuzhiyun eic_latch: gpio@40210080 { 210*4882a593Smuzhiyun compatible = "sprd,sc9860-eic-latch"; 211*4882a593Smuzhiyun reg = <0 0x40210080 0 0x20>; 212*4882a593Smuzhiyun gpio-controller; 213*4882a593Smuzhiyun #gpio-cells = <2>; 214*4882a593Smuzhiyun interrupt-controller; 215*4882a593Smuzhiyun #interrupt-cells = <2>; 216*4882a593Smuzhiyun interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>; 217*4882a593Smuzhiyun }; 218*4882a593Smuzhiyun 219*4882a593Smuzhiyun eic_async: gpio@402100a0 { 220*4882a593Smuzhiyun compatible = "sprd,sc9860-eic-async"; 221*4882a593Smuzhiyun reg = <0 0x402100a0 0 0x20>; 222*4882a593Smuzhiyun gpio-controller; 223*4882a593Smuzhiyun #gpio-cells = <2>; 224*4882a593Smuzhiyun interrupt-controller; 225*4882a593Smuzhiyun #interrupt-cells = <2>; 226*4882a593Smuzhiyun interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>; 227*4882a593Smuzhiyun }; 228*4882a593Smuzhiyun 229*4882a593Smuzhiyun eic_sync: gpio@402100c0 { 230*4882a593Smuzhiyun compatible = "sprd,sc9860-eic-sync"; 231*4882a593Smuzhiyun reg = <0 0x402100c0 0 0x20>; 232*4882a593Smuzhiyun gpio-controller; 233*4882a593Smuzhiyun #gpio-cells = <2>; 234*4882a593Smuzhiyun interrupt-controller; 235*4882a593Smuzhiyun #interrupt-cells = <2>; 236*4882a593Smuzhiyun interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>; 237*4882a593Smuzhiyun }; 238*4882a593Smuzhiyun 239*4882a593Smuzhiyun ap_gpio: gpio@40280000 { 240*4882a593Smuzhiyun compatible = "sprd,sc9860-gpio"; 241*4882a593Smuzhiyun reg = <0 0x40280000 0 0x1000>; 242*4882a593Smuzhiyun gpio-controller; 243*4882a593Smuzhiyun #gpio-cells = <2>; 244*4882a593Smuzhiyun interrupt-controller; 245*4882a593Smuzhiyun #interrupt-cells = <2>; 246*4882a593Smuzhiyun interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>; 247*4882a593Smuzhiyun }; 248*4882a593Smuzhiyun 249*4882a593Smuzhiyun pin_controller: pinctrl@402a0000 { 250*4882a593Smuzhiyun compatible = "sprd,sc9860-pinctrl"; 251*4882a593Smuzhiyun reg = <0 0x402a0000 0 0x10000>; 252*4882a593Smuzhiyun }; 253*4882a593Smuzhiyun 254*4882a593Smuzhiyun watchdog@40310000 { 255*4882a593Smuzhiyun compatible = "sprd,sp9860-wdt"; 256*4882a593Smuzhiyun reg = <0 0x40310000 0 0x1000>; 257*4882a593Smuzhiyun interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>; 258*4882a593Smuzhiyun timeout-sec = <12>; 259*4882a593Smuzhiyun clock-names = "enable", "rtc_enable"; 260*4882a593Smuzhiyun clocks = <&aon_gate CLK_APCPU_WDG_EB>, 261*4882a593Smuzhiyun <&aon_gate CLK_AP_WDG_RTC_EB>; 262*4882a593Smuzhiyun }; 263*4882a593Smuzhiyun }; 264*4882a593Smuzhiyun 265*4882a593Smuzhiyun agcp { 266*4882a593Smuzhiyun compatible = "simple-bus"; 267*4882a593Smuzhiyun #address-cells = <2>; 268*4882a593Smuzhiyun #size-cells = <2>; 269*4882a593Smuzhiyun ranges; 270*4882a593Smuzhiyun 271*4882a593Smuzhiyun agcp_dma: dma-controller@41580000 { 272*4882a593Smuzhiyun compatible = "sprd,sc9860-dma"; 273*4882a593Smuzhiyun reg = <0 0x41580000 0 0x4000>; 274*4882a593Smuzhiyun #dma-cells = <1>; 275*4882a593Smuzhiyun #dma-channels = <32>; 276*4882a593Smuzhiyun clock-names = "enable", "ashb_eb"; 277*4882a593Smuzhiyun clocks = <&agcp_gate CLK_AGCP_DMAAP_EB>, 278*4882a593Smuzhiyun <&agcp_gate CLK_AGCP_AP_ASHB_EB>; 279*4882a593Smuzhiyun }; 280*4882a593Smuzhiyun }; 281*4882a593Smuzhiyun }; 282*4882a593Smuzhiyun 283*4882a593Smuzhiyun ext_32k: ext_32k { 284*4882a593Smuzhiyun compatible = "fixed-clock"; 285*4882a593Smuzhiyun #clock-cells = <0>; 286*4882a593Smuzhiyun clock-frequency = <32768>; 287*4882a593Smuzhiyun clock-output-names = "ext-32k"; 288*4882a593Smuzhiyun }; 289*4882a593Smuzhiyun 290*4882a593Smuzhiyun ext_26m: ext_26m { 291*4882a593Smuzhiyun compatible = "fixed-clock"; 292*4882a593Smuzhiyun #clock-cells = <0>; 293*4882a593Smuzhiyun clock-frequency = <26000000>; 294*4882a593Smuzhiyun clock-output-names = "ext-26m"; 295*4882a593Smuzhiyun }; 296*4882a593Smuzhiyun 297*4882a593Smuzhiyun ext_rco_100m: ext_rco_100m { 298*4882a593Smuzhiyun compatible = "fixed-clock"; 299*4882a593Smuzhiyun #clock-cells = <0>; 300*4882a593Smuzhiyun clock-frequency = <100000000>; 301*4882a593Smuzhiyun clock-output-names = "ext-rco-100m"; 302*4882a593Smuzhiyun }; 303*4882a593Smuzhiyun 304*4882a593Smuzhiyun clk_l0_409m6: clk_l0_409m6 { 305*4882a593Smuzhiyun compatible = "fixed-clock"; 306*4882a593Smuzhiyun #clock-cells = <0>; 307*4882a593Smuzhiyun clock-frequency = <409600000>; 308*4882a593Smuzhiyun clock-output-names = "ext-409m6"; 309*4882a593Smuzhiyun }; 310*4882a593Smuzhiyun}; 311