1*4882a593Smuzhiyun// SPDX-License-Identifier: GPL-2.0 2*4882a593Smuzhiyun/dts-v1/; 3*4882a593Smuzhiyun 4*4882a593Smuzhiyun#include <dt-bindings/interrupt-controller/arm-gic.h> 5*4882a593Smuzhiyun#include <dt-bindings/clock/qcom,gcc-msm8960.h> 6*4882a593Smuzhiyun#include <dt-bindings/mfd/qcom-rpm.h> 7*4882a593Smuzhiyun#include <dt-bindings/soc/qcom,gsbi.h> 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun/ { 10*4882a593Smuzhiyun #address-cells = <1>; 11*4882a593Smuzhiyun #size-cells = <1>; 12*4882a593Smuzhiyun model = "Qualcomm MSM8960"; 13*4882a593Smuzhiyun compatible = "qcom,msm8960"; 14*4882a593Smuzhiyun interrupt-parent = <&intc>; 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun cpus { 17*4882a593Smuzhiyun #address-cells = <1>; 18*4882a593Smuzhiyun #size-cells = <0>; 19*4882a593Smuzhiyun interrupts = <1 14 0x304>; 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun cpu@0 { 22*4882a593Smuzhiyun compatible = "qcom,krait"; 23*4882a593Smuzhiyun enable-method = "qcom,kpss-acc-v1"; 24*4882a593Smuzhiyun device_type = "cpu"; 25*4882a593Smuzhiyun reg = <0>; 26*4882a593Smuzhiyun next-level-cache = <&L2>; 27*4882a593Smuzhiyun qcom,acc = <&acc0>; 28*4882a593Smuzhiyun qcom,saw = <&saw0>; 29*4882a593Smuzhiyun }; 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun cpu@1 { 32*4882a593Smuzhiyun compatible = "qcom,krait"; 33*4882a593Smuzhiyun enable-method = "qcom,kpss-acc-v1"; 34*4882a593Smuzhiyun device_type = "cpu"; 35*4882a593Smuzhiyun reg = <1>; 36*4882a593Smuzhiyun next-level-cache = <&L2>; 37*4882a593Smuzhiyun qcom,acc = <&acc1>; 38*4882a593Smuzhiyun qcom,saw = <&saw1>; 39*4882a593Smuzhiyun }; 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun L2: l2-cache { 42*4882a593Smuzhiyun compatible = "cache"; 43*4882a593Smuzhiyun cache-level = <2>; 44*4882a593Smuzhiyun }; 45*4882a593Smuzhiyun }; 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun memory { 48*4882a593Smuzhiyun device_type = "memory"; 49*4882a593Smuzhiyun reg = <0x0 0x0>; 50*4882a593Smuzhiyun }; 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun cpu-pmu { 53*4882a593Smuzhiyun compatible = "qcom,krait-pmu"; 54*4882a593Smuzhiyun interrupts = <1 10 0x304>; 55*4882a593Smuzhiyun qcom,no-pc-write; 56*4882a593Smuzhiyun }; 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun clocks { 59*4882a593Smuzhiyun cxo_board { 60*4882a593Smuzhiyun compatible = "fixed-clock"; 61*4882a593Smuzhiyun #clock-cells = <0>; 62*4882a593Smuzhiyun clock-frequency = <19200000>; 63*4882a593Smuzhiyun clock-output-names = "cxo_board"; 64*4882a593Smuzhiyun }; 65*4882a593Smuzhiyun 66*4882a593Smuzhiyun pxo_board { 67*4882a593Smuzhiyun compatible = "fixed-clock"; 68*4882a593Smuzhiyun #clock-cells = <0>; 69*4882a593Smuzhiyun clock-frequency = <27000000>; 70*4882a593Smuzhiyun clock-output-names = "pxo_board"; 71*4882a593Smuzhiyun }; 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun sleep_clk { 74*4882a593Smuzhiyun compatible = "fixed-clock"; 75*4882a593Smuzhiyun #clock-cells = <0>; 76*4882a593Smuzhiyun clock-frequency = <32768>; 77*4882a593Smuzhiyun clock-output-names = "sleep_clk"; 78*4882a593Smuzhiyun }; 79*4882a593Smuzhiyun }; 80*4882a593Smuzhiyun 81*4882a593Smuzhiyun soc: soc { 82*4882a593Smuzhiyun #address-cells = <1>; 83*4882a593Smuzhiyun #size-cells = <1>; 84*4882a593Smuzhiyun ranges; 85*4882a593Smuzhiyun compatible = "simple-bus"; 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun intc: interrupt-controller@2000000 { 88*4882a593Smuzhiyun compatible = "qcom,msm-qgic2"; 89*4882a593Smuzhiyun interrupt-controller; 90*4882a593Smuzhiyun #interrupt-cells = <3>; 91*4882a593Smuzhiyun reg = <0x02000000 0x1000>, 92*4882a593Smuzhiyun <0x02002000 0x1000>; 93*4882a593Smuzhiyun }; 94*4882a593Smuzhiyun 95*4882a593Smuzhiyun timer@200a000 { 96*4882a593Smuzhiyun compatible = "qcom,kpss-timer", 97*4882a593Smuzhiyun "qcom,kpss-wdt-msm8960", "qcom,msm-timer"; 98*4882a593Smuzhiyun interrupts = <1 1 0x301>, 99*4882a593Smuzhiyun <1 2 0x301>, 100*4882a593Smuzhiyun <1 3 0x301>; 101*4882a593Smuzhiyun reg = <0x0200a000 0x100>; 102*4882a593Smuzhiyun clock-frequency = <27000000>, 103*4882a593Smuzhiyun <32768>; 104*4882a593Smuzhiyun cpu-offset = <0x80000>; 105*4882a593Smuzhiyun }; 106*4882a593Smuzhiyun 107*4882a593Smuzhiyun msmgpio: pinctrl@800000 { 108*4882a593Smuzhiyun compatible = "qcom,msm8960-pinctrl"; 109*4882a593Smuzhiyun gpio-controller; 110*4882a593Smuzhiyun gpio-ranges = <&msmgpio 0 0 152>; 111*4882a593Smuzhiyun #gpio-cells = <2>; 112*4882a593Smuzhiyun interrupts = <0 16 0x4>; 113*4882a593Smuzhiyun interrupt-controller; 114*4882a593Smuzhiyun #interrupt-cells = <2>; 115*4882a593Smuzhiyun reg = <0x800000 0x4000>; 116*4882a593Smuzhiyun }; 117*4882a593Smuzhiyun 118*4882a593Smuzhiyun gcc: clock-controller@900000 { 119*4882a593Smuzhiyun compatible = "qcom,gcc-msm8960"; 120*4882a593Smuzhiyun #clock-cells = <1>; 121*4882a593Smuzhiyun #reset-cells = <1>; 122*4882a593Smuzhiyun reg = <0x900000 0x4000>; 123*4882a593Smuzhiyun }; 124*4882a593Smuzhiyun 125*4882a593Smuzhiyun lcc: clock-controller@28000000 { 126*4882a593Smuzhiyun compatible = "qcom,lcc-msm8960"; 127*4882a593Smuzhiyun reg = <0x28000000 0x1000>; 128*4882a593Smuzhiyun #clock-cells = <1>; 129*4882a593Smuzhiyun #reset-cells = <1>; 130*4882a593Smuzhiyun }; 131*4882a593Smuzhiyun 132*4882a593Smuzhiyun clock-controller@4000000 { 133*4882a593Smuzhiyun compatible = "qcom,mmcc-msm8960"; 134*4882a593Smuzhiyun reg = <0x4000000 0x1000>; 135*4882a593Smuzhiyun #clock-cells = <1>; 136*4882a593Smuzhiyun #reset-cells = <1>; 137*4882a593Smuzhiyun }; 138*4882a593Smuzhiyun 139*4882a593Smuzhiyun l2cc: clock-controller@2011000 { 140*4882a593Smuzhiyun compatible = "syscon"; 141*4882a593Smuzhiyun reg = <0x2011000 0x1000>; 142*4882a593Smuzhiyun }; 143*4882a593Smuzhiyun 144*4882a593Smuzhiyun rpm@108000 { 145*4882a593Smuzhiyun compatible = "qcom,rpm-msm8960"; 146*4882a593Smuzhiyun reg = <0x108000 0x1000>; 147*4882a593Smuzhiyun qcom,ipc = <&l2cc 0x8 2>; 148*4882a593Smuzhiyun 149*4882a593Smuzhiyun interrupts = <GIC_SPI 19 IRQ_TYPE_EDGE_RISING>, 150*4882a593Smuzhiyun <GIC_SPI 21 IRQ_TYPE_EDGE_RISING>, 151*4882a593Smuzhiyun <GIC_SPI 22 IRQ_TYPE_EDGE_RISING>; 152*4882a593Smuzhiyun interrupt-names = "ack", "err", "wakeup"; 153*4882a593Smuzhiyun 154*4882a593Smuzhiyun regulators { 155*4882a593Smuzhiyun compatible = "qcom,rpm-pm8921-regulators"; 156*4882a593Smuzhiyun }; 157*4882a593Smuzhiyun }; 158*4882a593Smuzhiyun 159*4882a593Smuzhiyun acc0: clock-controller@2088000 { 160*4882a593Smuzhiyun compatible = "qcom,kpss-acc-v1"; 161*4882a593Smuzhiyun reg = <0x02088000 0x1000>, <0x02008000 0x1000>; 162*4882a593Smuzhiyun }; 163*4882a593Smuzhiyun 164*4882a593Smuzhiyun acc1: clock-controller@2098000 { 165*4882a593Smuzhiyun compatible = "qcom,kpss-acc-v1"; 166*4882a593Smuzhiyun reg = <0x02098000 0x1000>, <0x02008000 0x1000>; 167*4882a593Smuzhiyun }; 168*4882a593Smuzhiyun 169*4882a593Smuzhiyun saw0: regulator@2089000 { 170*4882a593Smuzhiyun compatible = "qcom,saw2"; 171*4882a593Smuzhiyun reg = <0x02089000 0x1000>, <0x02009000 0x1000>; 172*4882a593Smuzhiyun regulator; 173*4882a593Smuzhiyun }; 174*4882a593Smuzhiyun 175*4882a593Smuzhiyun saw1: regulator@2099000 { 176*4882a593Smuzhiyun compatible = "qcom,saw2"; 177*4882a593Smuzhiyun reg = <0x02099000 0x1000>, <0x02009000 0x1000>; 178*4882a593Smuzhiyun regulator; 179*4882a593Smuzhiyun }; 180*4882a593Smuzhiyun 181*4882a593Smuzhiyun gsbi5: gsbi@16400000 { 182*4882a593Smuzhiyun compatible = "qcom,gsbi-v1.0.0"; 183*4882a593Smuzhiyun cell-index = <5>; 184*4882a593Smuzhiyun reg = <0x16400000 0x100>; 185*4882a593Smuzhiyun clocks = <&gcc GSBI5_H_CLK>; 186*4882a593Smuzhiyun clock-names = "iface"; 187*4882a593Smuzhiyun #address-cells = <1>; 188*4882a593Smuzhiyun #size-cells = <1>; 189*4882a593Smuzhiyun ranges; 190*4882a593Smuzhiyun 191*4882a593Smuzhiyun syscon-tcsr = <&tcsr>; 192*4882a593Smuzhiyun 193*4882a593Smuzhiyun gsbi5_serial: serial@16440000 { 194*4882a593Smuzhiyun compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm"; 195*4882a593Smuzhiyun reg = <0x16440000 0x1000>, 196*4882a593Smuzhiyun <0x16400000 0x1000>; 197*4882a593Smuzhiyun interrupts = <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>; 198*4882a593Smuzhiyun clocks = <&gcc GSBI5_UART_CLK>, <&gcc GSBI5_H_CLK>; 199*4882a593Smuzhiyun clock-names = "core", "iface"; 200*4882a593Smuzhiyun status = "disabled"; 201*4882a593Smuzhiyun }; 202*4882a593Smuzhiyun }; 203*4882a593Smuzhiyun 204*4882a593Smuzhiyun qcom,ssbi@500000 { 205*4882a593Smuzhiyun compatible = "qcom,ssbi"; 206*4882a593Smuzhiyun reg = <0x500000 0x1000>; 207*4882a593Smuzhiyun qcom,controller-type = "pmic-arbiter"; 208*4882a593Smuzhiyun 209*4882a593Smuzhiyun pmicintc: pmic@0 { 210*4882a593Smuzhiyun compatible = "qcom,pm8921"; 211*4882a593Smuzhiyun interrupt-parent = <&msmgpio>; 212*4882a593Smuzhiyun interrupts = <104 8>; 213*4882a593Smuzhiyun #interrupt-cells = <2>; 214*4882a593Smuzhiyun interrupt-controller; 215*4882a593Smuzhiyun #address-cells = <1>; 216*4882a593Smuzhiyun #size-cells = <0>; 217*4882a593Smuzhiyun 218*4882a593Smuzhiyun pwrkey@1c { 219*4882a593Smuzhiyun compatible = "qcom,pm8921-pwrkey"; 220*4882a593Smuzhiyun reg = <0x1c>; 221*4882a593Smuzhiyun interrupt-parent = <&pmicintc>; 222*4882a593Smuzhiyun interrupts = <50 1>, <51 1>; 223*4882a593Smuzhiyun debounce = <15625>; 224*4882a593Smuzhiyun pull-up; 225*4882a593Smuzhiyun }; 226*4882a593Smuzhiyun 227*4882a593Smuzhiyun keypad@148 { 228*4882a593Smuzhiyun compatible = "qcom,pm8921-keypad"; 229*4882a593Smuzhiyun reg = <0x148>; 230*4882a593Smuzhiyun interrupt-parent = <&pmicintc>; 231*4882a593Smuzhiyun interrupts = <74 1>, <75 1>; 232*4882a593Smuzhiyun debounce = <15>; 233*4882a593Smuzhiyun scan-delay = <32>; 234*4882a593Smuzhiyun row-hold = <91500>; 235*4882a593Smuzhiyun }; 236*4882a593Smuzhiyun 237*4882a593Smuzhiyun rtc@11d { 238*4882a593Smuzhiyun compatible = "qcom,pm8921-rtc"; 239*4882a593Smuzhiyun interrupt-parent = <&pmicintc>; 240*4882a593Smuzhiyun interrupts = <39 1>; 241*4882a593Smuzhiyun reg = <0x11d>; 242*4882a593Smuzhiyun allow-set-time; 243*4882a593Smuzhiyun }; 244*4882a593Smuzhiyun }; 245*4882a593Smuzhiyun }; 246*4882a593Smuzhiyun 247*4882a593Smuzhiyun rng@1a500000 { 248*4882a593Smuzhiyun compatible = "qcom,prng"; 249*4882a593Smuzhiyun reg = <0x1a500000 0x200>; 250*4882a593Smuzhiyun clocks = <&gcc PRNG_CLK>; 251*4882a593Smuzhiyun clock-names = "core"; 252*4882a593Smuzhiyun }; 253*4882a593Smuzhiyun 254*4882a593Smuzhiyun /* Temporary fixed regulator */ 255*4882a593Smuzhiyun vsdcc_fixed: vsdcc-regulator { 256*4882a593Smuzhiyun compatible = "regulator-fixed"; 257*4882a593Smuzhiyun regulator-name = "SDCC Power"; 258*4882a593Smuzhiyun regulator-min-microvolt = <2700000>; 259*4882a593Smuzhiyun regulator-max-microvolt = <2700000>; 260*4882a593Smuzhiyun regulator-always-on; 261*4882a593Smuzhiyun }; 262*4882a593Smuzhiyun 263*4882a593Smuzhiyun amba { 264*4882a593Smuzhiyun compatible = "simple-bus"; 265*4882a593Smuzhiyun #address-cells = <1>; 266*4882a593Smuzhiyun #size-cells = <1>; 267*4882a593Smuzhiyun ranges; 268*4882a593Smuzhiyun sdcc1: sdcc@12400000 { 269*4882a593Smuzhiyun status = "disabled"; 270*4882a593Smuzhiyun compatible = "arm,pl18x", "arm,primecell"; 271*4882a593Smuzhiyun arm,primecell-periphid = <0x00051180>; 272*4882a593Smuzhiyun reg = <0x12400000 0x8000>; 273*4882a593Smuzhiyun interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>; 274*4882a593Smuzhiyun interrupt-names = "cmd_irq"; 275*4882a593Smuzhiyun clocks = <&gcc SDC1_CLK>, <&gcc SDC1_H_CLK>; 276*4882a593Smuzhiyun clock-names = "mclk", "apb_pclk"; 277*4882a593Smuzhiyun bus-width = <8>; 278*4882a593Smuzhiyun max-frequency = <96000000>; 279*4882a593Smuzhiyun non-removable; 280*4882a593Smuzhiyun cap-sd-highspeed; 281*4882a593Smuzhiyun cap-mmc-highspeed; 282*4882a593Smuzhiyun vmmc-supply = <&vsdcc_fixed>; 283*4882a593Smuzhiyun }; 284*4882a593Smuzhiyun 285*4882a593Smuzhiyun sdcc3: sdcc@12180000 { 286*4882a593Smuzhiyun compatible = "arm,pl18x", "arm,primecell"; 287*4882a593Smuzhiyun arm,primecell-periphid = <0x00051180>; 288*4882a593Smuzhiyun status = "disabled"; 289*4882a593Smuzhiyun reg = <0x12180000 0x8000>; 290*4882a593Smuzhiyun interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>; 291*4882a593Smuzhiyun interrupt-names = "cmd_irq"; 292*4882a593Smuzhiyun clocks = <&gcc SDC3_CLK>, <&gcc SDC3_H_CLK>; 293*4882a593Smuzhiyun clock-names = "mclk", "apb_pclk"; 294*4882a593Smuzhiyun bus-width = <4>; 295*4882a593Smuzhiyun cap-sd-highspeed; 296*4882a593Smuzhiyun cap-mmc-highspeed; 297*4882a593Smuzhiyun max-frequency = <192000000>; 298*4882a593Smuzhiyun no-1-8-v; 299*4882a593Smuzhiyun vmmc-supply = <&vsdcc_fixed>; 300*4882a593Smuzhiyun }; 301*4882a593Smuzhiyun }; 302*4882a593Smuzhiyun 303*4882a593Smuzhiyun tcsr: syscon@1a400000 { 304*4882a593Smuzhiyun compatible = "qcom,tcsr-msm8960", "syscon"; 305*4882a593Smuzhiyun reg = <0x1a400000 0x100>; 306*4882a593Smuzhiyun }; 307*4882a593Smuzhiyun 308*4882a593Smuzhiyun gsbi@16000000 { 309*4882a593Smuzhiyun compatible = "qcom,gsbi-v1.0.0"; 310*4882a593Smuzhiyun cell-index = <1>; 311*4882a593Smuzhiyun reg = <0x16000000 0x100>; 312*4882a593Smuzhiyun clocks = <&gcc GSBI1_H_CLK>; 313*4882a593Smuzhiyun clock-names = "iface"; 314*4882a593Smuzhiyun #address-cells = <1>; 315*4882a593Smuzhiyun #size-cells = <1>; 316*4882a593Smuzhiyun ranges; 317*4882a593Smuzhiyun 318*4882a593Smuzhiyun spi@16080000 { 319*4882a593Smuzhiyun compatible = "qcom,spi-qup-v1.1.1"; 320*4882a593Smuzhiyun #address-cells = <1>; 321*4882a593Smuzhiyun #size-cells = <0>; 322*4882a593Smuzhiyun reg = <0x16080000 0x1000>; 323*4882a593Smuzhiyun interrupts = <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>; 324*4882a593Smuzhiyun spi-max-frequency = <24000000>; 325*4882a593Smuzhiyun cs-gpios = <&msmgpio 8 0>; 326*4882a593Smuzhiyun 327*4882a593Smuzhiyun clocks = <&gcc GSBI1_QUP_CLK>, <&gcc GSBI1_H_CLK>; 328*4882a593Smuzhiyun clock-names = "core", "iface"; 329*4882a593Smuzhiyun status = "disabled"; 330*4882a593Smuzhiyun }; 331*4882a593Smuzhiyun }; 332*4882a593Smuzhiyun }; 333*4882a593Smuzhiyun}; 334