1*69ed3df4SEmmanuel Vadot// SPDX-License-Identifier: BSD-3-Clause 2*69ed3df4SEmmanuel Vadot/* 3*69ed3df4SEmmanuel Vadot * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. 4*69ed3df4SEmmanuel Vadot */ 5*69ed3df4SEmmanuel Vadot 6*69ed3df4SEmmanuel Vadot#include <dt-bindings/interrupt-controller/arm-gic.h> 7*69ed3df4SEmmanuel Vadot#include <dt-bindings/clock/qcom,ipq5210-gcc.h> 8*69ed3df4SEmmanuel Vadot#include <dt-bindings/reset/qcom,ipq5210-gcc.h> 9*69ed3df4SEmmanuel Vadot 10*69ed3df4SEmmanuel Vadot/ { 11*69ed3df4SEmmanuel Vadot #address-cells = <2>; 12*69ed3df4SEmmanuel Vadot #size-cells = <2>; 13*69ed3df4SEmmanuel Vadot interrupt-parent = <&intc>; 14*69ed3df4SEmmanuel Vadot 15*69ed3df4SEmmanuel Vadot clocks { 16*69ed3df4SEmmanuel Vadot sleep_clk: sleep-clk { 17*69ed3df4SEmmanuel Vadot compatible = "fixed-clock"; 18*69ed3df4SEmmanuel Vadot #clock-cells = <0>; 19*69ed3df4SEmmanuel Vadot }; 20*69ed3df4SEmmanuel Vadot 21*69ed3df4SEmmanuel Vadot xo_board: xo-board-clk { 22*69ed3df4SEmmanuel Vadot compatible = "fixed-clock"; 23*69ed3df4SEmmanuel Vadot #clock-cells = <0>; 24*69ed3df4SEmmanuel Vadot }; 25*69ed3df4SEmmanuel Vadot }; 26*69ed3df4SEmmanuel Vadot 27*69ed3df4SEmmanuel Vadot cpus { 28*69ed3df4SEmmanuel Vadot #address-cells = <1>; 29*69ed3df4SEmmanuel Vadot #size-cells = <0>; 30*69ed3df4SEmmanuel Vadot 31*69ed3df4SEmmanuel Vadot cpu@0 { 32*69ed3df4SEmmanuel Vadot device_type = "cpu"; 33*69ed3df4SEmmanuel Vadot compatible = "arm,cortex-a53"; 34*69ed3df4SEmmanuel Vadot reg = <0x0>; 35*69ed3df4SEmmanuel Vadot enable-method = "psci"; 36*69ed3df4SEmmanuel Vadot next-level-cache = <&l2_0>; 37*69ed3df4SEmmanuel Vadot }; 38*69ed3df4SEmmanuel Vadot 39*69ed3df4SEmmanuel Vadot cpu@1 { 40*69ed3df4SEmmanuel Vadot device_type = "cpu"; 41*69ed3df4SEmmanuel Vadot compatible = "arm,cortex-a53"; 42*69ed3df4SEmmanuel Vadot reg = <0x1>; 43*69ed3df4SEmmanuel Vadot enable-method = "psci"; 44*69ed3df4SEmmanuel Vadot next-level-cache = <&l2_0>; 45*69ed3df4SEmmanuel Vadot }; 46*69ed3df4SEmmanuel Vadot 47*69ed3df4SEmmanuel Vadot cpu@2 { 48*69ed3df4SEmmanuel Vadot device_type = "cpu"; 49*69ed3df4SEmmanuel Vadot compatible = "arm,cortex-a53"; 50*69ed3df4SEmmanuel Vadot reg = <0x2>; 51*69ed3df4SEmmanuel Vadot enable-method = "psci"; 52*69ed3df4SEmmanuel Vadot next-level-cache = <&l2_0>; 53*69ed3df4SEmmanuel Vadot }; 54*69ed3df4SEmmanuel Vadot 55*69ed3df4SEmmanuel Vadot cpu@3 { 56*69ed3df4SEmmanuel Vadot device_type = "cpu"; 57*69ed3df4SEmmanuel Vadot compatible = "arm,cortex-a53"; 58*69ed3df4SEmmanuel Vadot reg = <0x3>; 59*69ed3df4SEmmanuel Vadot enable-method = "psci"; 60*69ed3df4SEmmanuel Vadot next-level-cache = <&l2_0>; 61*69ed3df4SEmmanuel Vadot }; 62*69ed3df4SEmmanuel Vadot 63*69ed3df4SEmmanuel Vadot l2_0: l2-cache { 64*69ed3df4SEmmanuel Vadot compatible = "cache"; 65*69ed3df4SEmmanuel Vadot cache-level = <2>; 66*69ed3df4SEmmanuel Vadot cache-unified; 67*69ed3df4SEmmanuel Vadot }; 68*69ed3df4SEmmanuel Vadot }; 69*69ed3df4SEmmanuel Vadot 70*69ed3df4SEmmanuel Vadot firmware { 71*69ed3df4SEmmanuel Vadot optee { 72*69ed3df4SEmmanuel Vadot compatible = "linaro,optee-tz"; 73*69ed3df4SEmmanuel Vadot method = "smc"; 74*69ed3df4SEmmanuel Vadot }; 75*69ed3df4SEmmanuel Vadot 76*69ed3df4SEmmanuel Vadot scm { 77*69ed3df4SEmmanuel Vadot compatible = "qcom,scm-ipq5210", "qcom,scm"; 78*69ed3df4SEmmanuel Vadot }; 79*69ed3df4SEmmanuel Vadot }; 80*69ed3df4SEmmanuel Vadot 81*69ed3df4SEmmanuel Vadot memory@80000000 { 82*69ed3df4SEmmanuel Vadot device_type = "memory"; 83*69ed3df4SEmmanuel Vadot /* We expect the bootloader to fill in the size */ 84*69ed3df4SEmmanuel Vadot reg = <0x0 0x80000000 0x0 0x0>; 85*69ed3df4SEmmanuel Vadot }; 86*69ed3df4SEmmanuel Vadot 87*69ed3df4SEmmanuel Vadot pmu { 88*69ed3df4SEmmanuel Vadot compatible = "arm,cortex-a53-pmu"; 89*69ed3df4SEmmanuel Vadot interrupts = <GIC_PPI 7 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>; 90*69ed3df4SEmmanuel Vadot }; 91*69ed3df4SEmmanuel Vadot 92*69ed3df4SEmmanuel Vadot psci { 93*69ed3df4SEmmanuel Vadot compatible = "arm,psci-1.0"; 94*69ed3df4SEmmanuel Vadot method = "smc"; 95*69ed3df4SEmmanuel Vadot }; 96*69ed3df4SEmmanuel Vadot 97*69ed3df4SEmmanuel Vadot reserved-memory { 98*69ed3df4SEmmanuel Vadot #address-cells = <2>; 99*69ed3df4SEmmanuel Vadot #size-cells = <2>; 100*69ed3df4SEmmanuel Vadot ranges; 101*69ed3df4SEmmanuel Vadot 102*69ed3df4SEmmanuel Vadot bootloader@87800000 { 103*69ed3df4SEmmanuel Vadot reg = <0x0 0x87800000 0x0 0x400000>; 104*69ed3df4SEmmanuel Vadot no-map; 105*69ed3df4SEmmanuel Vadot }; 106*69ed3df4SEmmanuel Vadot 107*69ed3df4SEmmanuel Vadot smem@87c00000 { 108*69ed3df4SEmmanuel Vadot compatible = "qcom,smem"; 109*69ed3df4SEmmanuel Vadot reg = <0x0 0x87c00000 0x0 0x40000>; 110*69ed3df4SEmmanuel Vadot no-map; 111*69ed3df4SEmmanuel Vadot 112*69ed3df4SEmmanuel Vadot hwlocks = <&tcsr_mutex 3>; 113*69ed3df4SEmmanuel Vadot }; 114*69ed3df4SEmmanuel Vadot 115*69ed3df4SEmmanuel Vadot tfa@87d00000 { 116*69ed3df4SEmmanuel Vadot reg = <0x0 0x87d00000 0x0 0x80000>; 117*69ed3df4SEmmanuel Vadot no-map; 118*69ed3df4SEmmanuel Vadot }; 119*69ed3df4SEmmanuel Vadot 120*69ed3df4SEmmanuel Vadot optee@87d80000 { 121*69ed3df4SEmmanuel Vadot reg = <0x0 0x87d80000 0x0 0x280000>; 122*69ed3df4SEmmanuel Vadot no-map; 123*69ed3df4SEmmanuel Vadot }; 124*69ed3df4SEmmanuel Vadot }; 125*69ed3df4SEmmanuel Vadot 126*69ed3df4SEmmanuel Vadot soc@0 { 127*69ed3df4SEmmanuel Vadot compatible = "simple-bus"; 128*69ed3df4SEmmanuel Vadot #address-cells = <2>; 129*69ed3df4SEmmanuel Vadot #size-cells = <2>; 130*69ed3df4SEmmanuel Vadot dma-ranges = <0 0 0 0 0x10 0>; 131*69ed3df4SEmmanuel Vadot ranges = <0 0 0 0 0x10 0>; 132*69ed3df4SEmmanuel Vadot 133*69ed3df4SEmmanuel Vadot tlmm: pinctrl@1000000 { 134*69ed3df4SEmmanuel Vadot compatible = "qcom,ipq5210-tlmm"; 135*69ed3df4SEmmanuel Vadot reg = <0x0 0x01000000 0x0 0x300000>; 136*69ed3df4SEmmanuel Vadot interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>; 137*69ed3df4SEmmanuel Vadot gpio-controller; 138*69ed3df4SEmmanuel Vadot #gpio-cells = <2>; 139*69ed3df4SEmmanuel Vadot gpio-ranges = <&tlmm 0 0 54>; 140*69ed3df4SEmmanuel Vadot interrupt-controller; 141*69ed3df4SEmmanuel Vadot #interrupt-cells = <2>; 142*69ed3df4SEmmanuel Vadot }; 143*69ed3df4SEmmanuel Vadot 144*69ed3df4SEmmanuel Vadot gcc: clock-controller@1800000 { 145*69ed3df4SEmmanuel Vadot compatible = "qcom,ipq5210-gcc"; 146*69ed3df4SEmmanuel Vadot reg = <0x0 0x01800000 0x0 0x40000>; 147*69ed3df4SEmmanuel Vadot clocks = <&xo_board>, 148*69ed3df4SEmmanuel Vadot <&sleep_clk>, 149*69ed3df4SEmmanuel Vadot <0>, 150*69ed3df4SEmmanuel Vadot <0>, 151*69ed3df4SEmmanuel Vadot <0>, 152*69ed3df4SEmmanuel Vadot <0>; 153*69ed3df4SEmmanuel Vadot #clock-cells = <1>; 154*69ed3df4SEmmanuel Vadot #reset-cells = <1>; 155*69ed3df4SEmmanuel Vadot }; 156*69ed3df4SEmmanuel Vadot 157*69ed3df4SEmmanuel Vadot tcsr_mutex: hwlock@1905000 { 158*69ed3df4SEmmanuel Vadot compatible = "qcom,tcsr-mutex"; 159*69ed3df4SEmmanuel Vadot reg = <0x0 0x01905000 0x0 0x20000>; 160*69ed3df4SEmmanuel Vadot #hwlock-cells = <1>; 161*69ed3df4SEmmanuel Vadot }; 162*69ed3df4SEmmanuel Vadot 163*69ed3df4SEmmanuel Vadot qupv3: geniqup@1ac0000 { 164*69ed3df4SEmmanuel Vadot compatible = "qcom,geni-se-qup"; 165*69ed3df4SEmmanuel Vadot reg = <0x0 0x01ac0000 0x0 0x2000>; 166*69ed3df4SEmmanuel Vadot clocks = <&gcc GCC_QUPV3_AHB_MST_CLK>, 167*69ed3df4SEmmanuel Vadot <&gcc GCC_QUPV3_AHB_SLV_CLK>; 168*69ed3df4SEmmanuel Vadot clock-names = "m-ahb", "s-ahb"; 169*69ed3df4SEmmanuel Vadot ranges; 170*69ed3df4SEmmanuel Vadot #address-cells = <2>; 171*69ed3df4SEmmanuel Vadot #size-cells = <2>; 172*69ed3df4SEmmanuel Vadot 173*69ed3df4SEmmanuel Vadot uart1: serial@1a84000 { 174*69ed3df4SEmmanuel Vadot compatible = "qcom,geni-debug-uart"; 175*69ed3df4SEmmanuel Vadot reg = <0x0 0x01a84000 0x0 0x4000>; 176*69ed3df4SEmmanuel Vadot clocks = <&gcc GCC_QUPV3_WRAP_SE1_CLK>; 177*69ed3df4SEmmanuel Vadot clock-names = "se"; 178*69ed3df4SEmmanuel Vadot interrupts = <GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH>; 179*69ed3df4SEmmanuel Vadot 180*69ed3df4SEmmanuel Vadot status = "disabled"; 181*69ed3df4SEmmanuel Vadot }; 182*69ed3df4SEmmanuel Vadot }; 183*69ed3df4SEmmanuel Vadot 184*69ed3df4SEmmanuel Vadot sdhc: mmc@7804000 { 185*69ed3df4SEmmanuel Vadot compatible = "qcom,ipq5210-sdhci", "qcom,sdhci-msm-v5"; 186*69ed3df4SEmmanuel Vadot reg = <0x0 0x07804000 0x0 0x1000>, 187*69ed3df4SEmmanuel Vadot <0x0 0x07805000 0x0 0x1000>; 188*69ed3df4SEmmanuel Vadot reg-names = "hc", 189*69ed3df4SEmmanuel Vadot "cqhci"; 190*69ed3df4SEmmanuel Vadot 191*69ed3df4SEmmanuel Vadot interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>, 192*69ed3df4SEmmanuel Vadot <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>; 193*69ed3df4SEmmanuel Vadot interrupt-names = "hc_irq", 194*69ed3df4SEmmanuel Vadot "pwr_irq"; 195*69ed3df4SEmmanuel Vadot 196*69ed3df4SEmmanuel Vadot clocks = <&gcc GCC_SDCC1_AHB_CLK>, 197*69ed3df4SEmmanuel Vadot <&gcc GCC_SDCC1_APPS_CLK>, 198*69ed3df4SEmmanuel Vadot <&xo_board>; 199*69ed3df4SEmmanuel Vadot clock-names = "iface", 200*69ed3df4SEmmanuel Vadot "core", 201*69ed3df4SEmmanuel Vadot "xo"; 202*69ed3df4SEmmanuel Vadot non-removable; 203*69ed3df4SEmmanuel Vadot 204*69ed3df4SEmmanuel Vadot status = "disabled"; 205*69ed3df4SEmmanuel Vadot }; 206*69ed3df4SEmmanuel Vadot 207*69ed3df4SEmmanuel Vadot intc: interrupt-controller@b000000 { 208*69ed3df4SEmmanuel Vadot compatible = "qcom,msm-qgic2"; 209*69ed3df4SEmmanuel Vadot interrupt-controller; 210*69ed3df4SEmmanuel Vadot #interrupt-cells = <3>; 211*69ed3df4SEmmanuel Vadot reg = <0x0 0xb000000 0x0 0x1000>, 212*69ed3df4SEmmanuel Vadot <0x0 0xb002000 0x0 0x1000>, 213*69ed3df4SEmmanuel Vadot <0x0 0xb001000 0x0 0x1000>, 214*69ed3df4SEmmanuel Vadot <0x0 0xb004000 0x0 0x1000>; 215*69ed3df4SEmmanuel Vadot interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>; 216*69ed3df4SEmmanuel Vadot #address-cells = <2>; 217*69ed3df4SEmmanuel Vadot #size-cells = <2>; 218*69ed3df4SEmmanuel Vadot ranges = <0 0 0 0x0b00c000 0 0x3000>; 219*69ed3df4SEmmanuel Vadot 220*69ed3df4SEmmanuel Vadot v2m0: v2m@0 { 221*69ed3df4SEmmanuel Vadot compatible = "arm,gic-v2m-frame"; 222*69ed3df4SEmmanuel Vadot reg = <0x0 0x0 0x0 0xffd>; 223*69ed3df4SEmmanuel Vadot msi-controller; 224*69ed3df4SEmmanuel Vadot }; 225*69ed3df4SEmmanuel Vadot 226*69ed3df4SEmmanuel Vadot v2m1: v2m@1000 { 227*69ed3df4SEmmanuel Vadot compatible = "arm,gic-v2m-frame"; 228*69ed3df4SEmmanuel Vadot reg = <0x0 0x00001000 0x0 0xffd>; 229*69ed3df4SEmmanuel Vadot msi-controller; 230*69ed3df4SEmmanuel Vadot }; 231*69ed3df4SEmmanuel Vadot 232*69ed3df4SEmmanuel Vadot v2m2: v2m@2000 { 233*69ed3df4SEmmanuel Vadot compatible = "arm,gic-v2m-frame"; 234*69ed3df4SEmmanuel Vadot reg = <0x0 0x00002000 0x0 0xffd>; 235*69ed3df4SEmmanuel Vadot msi-controller; 236*69ed3df4SEmmanuel Vadot }; 237*69ed3df4SEmmanuel Vadot }; 238*69ed3df4SEmmanuel Vadot 239*69ed3df4SEmmanuel Vadot timer@b120000 { 240*69ed3df4SEmmanuel Vadot compatible = "arm,armv7-timer-mem"; 241*69ed3df4SEmmanuel Vadot reg = <0x0 0x0b120000 0x0 0x1000>; 242*69ed3df4SEmmanuel Vadot ranges = <0 0 0 0x10000000>; 243*69ed3df4SEmmanuel Vadot #address-cells = <1>; 244*69ed3df4SEmmanuel Vadot #size-cells = <1>; 245*69ed3df4SEmmanuel Vadot 246*69ed3df4SEmmanuel Vadot frame@b121000 { 247*69ed3df4SEmmanuel Vadot frame-number = <0>; 248*69ed3df4SEmmanuel Vadot interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>, 249*69ed3df4SEmmanuel Vadot <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>; 250*69ed3df4SEmmanuel Vadot reg = <0x0b121000 0x1000>, 251*69ed3df4SEmmanuel Vadot <0x0b122000 0x1000>; 252*69ed3df4SEmmanuel Vadot }; 253*69ed3df4SEmmanuel Vadot 254*69ed3df4SEmmanuel Vadot frame@b123000 { 255*69ed3df4SEmmanuel Vadot frame-number = <1>; 256*69ed3df4SEmmanuel Vadot interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>; 257*69ed3df4SEmmanuel Vadot reg = <0x0b123000 0x1000>; 258*69ed3df4SEmmanuel Vadot 259*69ed3df4SEmmanuel Vadot status = "disabled"; 260*69ed3df4SEmmanuel Vadot }; 261*69ed3df4SEmmanuel Vadot 262*69ed3df4SEmmanuel Vadot frame@b124000 { 263*69ed3df4SEmmanuel Vadot frame-number = <2>; 264*69ed3df4SEmmanuel Vadot interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>; 265*69ed3df4SEmmanuel Vadot reg = <0x0b124000 0x1000>; 266*69ed3df4SEmmanuel Vadot 267*69ed3df4SEmmanuel Vadot status = "disabled"; 268*69ed3df4SEmmanuel Vadot }; 269*69ed3df4SEmmanuel Vadot 270*69ed3df4SEmmanuel Vadot frame@b125000 { 271*69ed3df4SEmmanuel Vadot frame-number = <3>; 272*69ed3df4SEmmanuel Vadot interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>; 273*69ed3df4SEmmanuel Vadot reg = <0x0b125000 0x1000>; 274*69ed3df4SEmmanuel Vadot 275*69ed3df4SEmmanuel Vadot status = "disabled"; 276*69ed3df4SEmmanuel Vadot }; 277*69ed3df4SEmmanuel Vadot 278*69ed3df4SEmmanuel Vadot frame@b126000 { 279*69ed3df4SEmmanuel Vadot frame-number = <4>; 280*69ed3df4SEmmanuel Vadot interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>; 281*69ed3df4SEmmanuel Vadot reg = <0x0b126000 0x1000>; 282*69ed3df4SEmmanuel Vadot 283*69ed3df4SEmmanuel Vadot status = "disabled"; 284*69ed3df4SEmmanuel Vadot }; 285*69ed3df4SEmmanuel Vadot 286*69ed3df4SEmmanuel Vadot frame@b127000 { 287*69ed3df4SEmmanuel Vadot frame-number = <5>; 288*69ed3df4SEmmanuel Vadot interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>; 289*69ed3df4SEmmanuel Vadot reg = <0x0b127000 0x1000>; 290*69ed3df4SEmmanuel Vadot 291*69ed3df4SEmmanuel Vadot status = "disabled"; 292*69ed3df4SEmmanuel Vadot }; 293*69ed3df4SEmmanuel Vadot 294*69ed3df4SEmmanuel Vadot frame@b128000 { 295*69ed3df4SEmmanuel Vadot frame-number = <6>; 296*69ed3df4SEmmanuel Vadot interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>; 297*69ed3df4SEmmanuel Vadot reg = <0x0b128000 0x1000>; 298*69ed3df4SEmmanuel Vadot 299*69ed3df4SEmmanuel Vadot status = "disabled"; 300*69ed3df4SEmmanuel Vadot }; 301*69ed3df4SEmmanuel Vadot }; 302*69ed3df4SEmmanuel Vadot }; 303*69ed3df4SEmmanuel Vadot 304*69ed3df4SEmmanuel Vadot timer { 305*69ed3df4SEmmanuel Vadot compatible = "arm,armv8-timer"; 306*69ed3df4SEmmanuel Vadot interrupts = <GIC_PPI 2 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 307*69ed3df4SEmmanuel Vadot <GIC_PPI 3 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 308*69ed3df4SEmmanuel Vadot <GIC_PPI 4 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 309*69ed3df4SEmmanuel Vadot <GIC_PPI 1 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>; 310*69ed3df4SEmmanuel Vadot }; 311*69ed3df4SEmmanuel Vadot}; 312