1*4882a593Smuzhiyun/* 2*4882a593Smuzhiyun * Spreadtrum SC9860 SoC 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/interrupt-controller/arm-gic.h> 10*4882a593Smuzhiyun#include <dt-bindings/input/input.h> 11*4882a593Smuzhiyun#include <dt-bindings/gpio/gpio.h> 12*4882a593Smuzhiyun#include "whale2.dtsi" 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun/ { 15*4882a593Smuzhiyun cpus { 16*4882a593Smuzhiyun #address-cells = <2>; 17*4882a593Smuzhiyun #size-cells = <0>; 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun cpu-map { 20*4882a593Smuzhiyun cluster0 { 21*4882a593Smuzhiyun core0 { 22*4882a593Smuzhiyun cpu = <&CPU0>; 23*4882a593Smuzhiyun }; 24*4882a593Smuzhiyun core1 { 25*4882a593Smuzhiyun cpu = <&CPU1>; 26*4882a593Smuzhiyun }; 27*4882a593Smuzhiyun core2 { 28*4882a593Smuzhiyun cpu = <&CPU2>; 29*4882a593Smuzhiyun }; 30*4882a593Smuzhiyun core3 { 31*4882a593Smuzhiyun cpu = <&CPU3>; 32*4882a593Smuzhiyun }; 33*4882a593Smuzhiyun }; 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun cluster1 { 36*4882a593Smuzhiyun core0 { 37*4882a593Smuzhiyun cpu = <&CPU4>; 38*4882a593Smuzhiyun }; 39*4882a593Smuzhiyun core1 { 40*4882a593Smuzhiyun cpu = <&CPU5>; 41*4882a593Smuzhiyun }; 42*4882a593Smuzhiyun core2 { 43*4882a593Smuzhiyun cpu = <&CPU6>; 44*4882a593Smuzhiyun }; 45*4882a593Smuzhiyun core3 { 46*4882a593Smuzhiyun cpu = <&CPU7>; 47*4882a593Smuzhiyun }; 48*4882a593Smuzhiyun }; 49*4882a593Smuzhiyun }; 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun CPU0: cpu@530000 { 52*4882a593Smuzhiyun device_type = "cpu"; 53*4882a593Smuzhiyun compatible = "arm,cortex-a53"; 54*4882a593Smuzhiyun reg = <0x0 0x530000>; 55*4882a593Smuzhiyun enable-method = "psci"; 56*4882a593Smuzhiyun cpu-idle-states = <&CORE_PD &CLUSTER_PD>; 57*4882a593Smuzhiyun }; 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun CPU1: cpu@530001 { 60*4882a593Smuzhiyun device_type = "cpu"; 61*4882a593Smuzhiyun compatible = "arm,cortex-a53"; 62*4882a593Smuzhiyun reg = <0x0 0x530001>; 63*4882a593Smuzhiyun enable-method = "psci"; 64*4882a593Smuzhiyun cpu-idle-states = <&CORE_PD &CLUSTER_PD>; 65*4882a593Smuzhiyun }; 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun CPU2: cpu@530002 { 68*4882a593Smuzhiyun device_type = "cpu"; 69*4882a593Smuzhiyun compatible = "arm,cortex-a53"; 70*4882a593Smuzhiyun reg = <0x0 0x530002>; 71*4882a593Smuzhiyun enable-method = "psci"; 72*4882a593Smuzhiyun cpu-idle-states = <&CORE_PD &CLUSTER_PD>; 73*4882a593Smuzhiyun }; 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun CPU3: cpu@530003 { 76*4882a593Smuzhiyun device_type = "cpu"; 77*4882a593Smuzhiyun compatible = "arm,cortex-a53"; 78*4882a593Smuzhiyun reg = <0x0 0x530003>; 79*4882a593Smuzhiyun enable-method = "psci"; 80*4882a593Smuzhiyun cpu-idle-states = <&CORE_PD &CLUSTER_PD>; 81*4882a593Smuzhiyun }; 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun CPU4: cpu@530100 { 84*4882a593Smuzhiyun device_type = "cpu"; 85*4882a593Smuzhiyun compatible = "arm,cortex-a53"; 86*4882a593Smuzhiyun reg = <0x0 0x530100>; 87*4882a593Smuzhiyun enable-method = "psci"; 88*4882a593Smuzhiyun cpu-idle-states = <&CORE_PD &CLUSTER_PD>; 89*4882a593Smuzhiyun }; 90*4882a593Smuzhiyun 91*4882a593Smuzhiyun CPU5: cpu@530101 { 92*4882a593Smuzhiyun device_type = "cpu"; 93*4882a593Smuzhiyun compatible = "arm,cortex-a53"; 94*4882a593Smuzhiyun reg = <0x0 0x530101>; 95*4882a593Smuzhiyun enable-method = "psci"; 96*4882a593Smuzhiyun cpu-idle-states = <&CORE_PD &CLUSTER_PD>; 97*4882a593Smuzhiyun }; 98*4882a593Smuzhiyun 99*4882a593Smuzhiyun CPU6: cpu@530102 { 100*4882a593Smuzhiyun device_type = "cpu"; 101*4882a593Smuzhiyun compatible = "arm,cortex-a53"; 102*4882a593Smuzhiyun reg = <0x0 0x530102>; 103*4882a593Smuzhiyun enable-method = "psci"; 104*4882a593Smuzhiyun cpu-idle-states = <&CORE_PD &CLUSTER_PD>; 105*4882a593Smuzhiyun }; 106*4882a593Smuzhiyun 107*4882a593Smuzhiyun CPU7: cpu@530103 { 108*4882a593Smuzhiyun device_type = "cpu"; 109*4882a593Smuzhiyun compatible = "arm,cortex-a53"; 110*4882a593Smuzhiyun reg = <0x0 0x530103>; 111*4882a593Smuzhiyun enable-method = "psci"; 112*4882a593Smuzhiyun cpu-idle-states = <&CORE_PD &CLUSTER_PD>; 113*4882a593Smuzhiyun }; 114*4882a593Smuzhiyun }; 115*4882a593Smuzhiyun 116*4882a593Smuzhiyun idle-states{ 117*4882a593Smuzhiyun entry-method = "psci"; 118*4882a593Smuzhiyun 119*4882a593Smuzhiyun CORE_PD: core_pd { 120*4882a593Smuzhiyun compatible = "arm,idle-state"; 121*4882a593Smuzhiyun entry-latency-us = <1000>; 122*4882a593Smuzhiyun exit-latency-us = <700>; 123*4882a593Smuzhiyun min-residency-us = <2500>; 124*4882a593Smuzhiyun local-timer-stop; 125*4882a593Smuzhiyun arm,psci-suspend-param = <0x00010002>; 126*4882a593Smuzhiyun }; 127*4882a593Smuzhiyun 128*4882a593Smuzhiyun CLUSTER_PD: cluster_pd { 129*4882a593Smuzhiyun compatible = "arm,idle-state"; 130*4882a593Smuzhiyun entry-latency-us = <1000>; 131*4882a593Smuzhiyun exit-latency-us = <1000>; 132*4882a593Smuzhiyun min-residency-us = <3000>; 133*4882a593Smuzhiyun local-timer-stop; 134*4882a593Smuzhiyun arm,psci-suspend-param = <0x01010003>; 135*4882a593Smuzhiyun }; 136*4882a593Smuzhiyun }; 137*4882a593Smuzhiyun 138*4882a593Smuzhiyun gic: interrupt-controller@12001000 { 139*4882a593Smuzhiyun compatible = "arm,gic-400"; 140*4882a593Smuzhiyun reg = <0 0x12001000 0 0x1000>, 141*4882a593Smuzhiyun <0 0x12002000 0 0x2000>, 142*4882a593Smuzhiyun <0 0x12004000 0 0x2000>, 143*4882a593Smuzhiyun <0 0x12006000 0 0x2000>; 144*4882a593Smuzhiyun #interrupt-cells = <3>; 145*4882a593Smuzhiyun interrupt-controller; 146*4882a593Smuzhiyun interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(8) 147*4882a593Smuzhiyun | IRQ_TYPE_LEVEL_HIGH)>; 148*4882a593Smuzhiyun }; 149*4882a593Smuzhiyun 150*4882a593Smuzhiyun psci { 151*4882a593Smuzhiyun compatible = "arm,psci-0.2"; 152*4882a593Smuzhiyun method = "smc"; 153*4882a593Smuzhiyun }; 154*4882a593Smuzhiyun 155*4882a593Smuzhiyun timer { 156*4882a593Smuzhiyun compatible = "arm,armv8-timer"; 157*4882a593Smuzhiyun interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(8) 158*4882a593Smuzhiyun | IRQ_TYPE_LEVEL_LOW)>, 159*4882a593Smuzhiyun <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(8) 160*4882a593Smuzhiyun | IRQ_TYPE_LEVEL_LOW)>, 161*4882a593Smuzhiyun <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(8) 162*4882a593Smuzhiyun | IRQ_TYPE_LEVEL_LOW)>, 163*4882a593Smuzhiyun <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(8) 164*4882a593Smuzhiyun | IRQ_TYPE_LEVEL_LOW)>; 165*4882a593Smuzhiyun }; 166*4882a593Smuzhiyun 167*4882a593Smuzhiyun pmu { 168*4882a593Smuzhiyun compatible = "arm,cortex-a53-pmu", "arm,armv8-pmuv3"; 169*4882a593Smuzhiyun interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>, 170*4882a593Smuzhiyun <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>, 171*4882a593Smuzhiyun <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>, 172*4882a593Smuzhiyun <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>, 173*4882a593Smuzhiyun <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>, 174*4882a593Smuzhiyun <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>, 175*4882a593Smuzhiyun <GIC_SPI 156 IRQ_TYPE_LEVEL_HIGH>, 176*4882a593Smuzhiyun <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>; 177*4882a593Smuzhiyun interrupt-affinity = <&CPU0>, 178*4882a593Smuzhiyun <&CPU1>, 179*4882a593Smuzhiyun <&CPU2>, 180*4882a593Smuzhiyun <&CPU3>, 181*4882a593Smuzhiyun <&CPU4>, 182*4882a593Smuzhiyun <&CPU5>, 183*4882a593Smuzhiyun <&CPU6>, 184*4882a593Smuzhiyun <&CPU7>; 185*4882a593Smuzhiyun }; 186*4882a593Smuzhiyun 187*4882a593Smuzhiyun soc { 188*4882a593Smuzhiyun pmu_gate: pmu-gate { 189*4882a593Smuzhiyun compatible = "sprd,sc9860-pmu-gate"; 190*4882a593Smuzhiyun sprd,syscon = <&pmu_regs>; /* 0x402b0000 */ 191*4882a593Smuzhiyun clocks = <&ext_26m>; 192*4882a593Smuzhiyun #clock-cells = <1>; 193*4882a593Smuzhiyun }; 194*4882a593Smuzhiyun 195*4882a593Smuzhiyun pll: pll { 196*4882a593Smuzhiyun compatible = "sprd,sc9860-pll"; 197*4882a593Smuzhiyun sprd,syscon = <&ana_regs>; /* 0x40400000 */ 198*4882a593Smuzhiyun clocks = <&pmu_gate 0>; 199*4882a593Smuzhiyun #clock-cells = <1>; 200*4882a593Smuzhiyun }; 201*4882a593Smuzhiyun 202*4882a593Smuzhiyun ap_clk: clock-controller@20000000 { 203*4882a593Smuzhiyun compatible = "sprd,sc9860-ap-clk"; 204*4882a593Smuzhiyun reg = <0 0x20000000 0 0x400>; 205*4882a593Smuzhiyun clocks = <&ext_26m>, <&pll 0>, 206*4882a593Smuzhiyun <&pmu_gate 0>; 207*4882a593Smuzhiyun #clock-cells = <1>; 208*4882a593Smuzhiyun }; 209*4882a593Smuzhiyun 210*4882a593Smuzhiyun aon_prediv: aon-prediv { 211*4882a593Smuzhiyun compatible = "sprd,sc9860-aon-prediv"; 212*4882a593Smuzhiyun reg = <0 0x402d0000 0 0x400>; 213*4882a593Smuzhiyun clocks = <&ext_26m>, <&pll 0>, 214*4882a593Smuzhiyun <&pmu_gate 0>; 215*4882a593Smuzhiyun #clock-cells = <1>; 216*4882a593Smuzhiyun }; 217*4882a593Smuzhiyun 218*4882a593Smuzhiyun apahb_gate: apahb-gate { 219*4882a593Smuzhiyun compatible = "sprd,sc9860-apahb-gate"; 220*4882a593Smuzhiyun sprd,syscon = <&ap_ahb_regs>; /* 0x20210000 */ 221*4882a593Smuzhiyun clocks = <&aon_prediv 0>; 222*4882a593Smuzhiyun #clock-cells = <1>; 223*4882a593Smuzhiyun }; 224*4882a593Smuzhiyun 225*4882a593Smuzhiyun aon_gate: aon-gate { 226*4882a593Smuzhiyun compatible = "sprd,sc9860-aon-gate"; 227*4882a593Smuzhiyun sprd,syscon = <&aon_regs>; /* 0x402e0000 */ 228*4882a593Smuzhiyun clocks = <&aon_prediv 0>; 229*4882a593Smuzhiyun #clock-cells = <1>; 230*4882a593Smuzhiyun }; 231*4882a593Smuzhiyun 232*4882a593Smuzhiyun aonsecure_clk: clock-controller@40880000 { 233*4882a593Smuzhiyun compatible = "sprd,sc9860-aonsecure-clk"; 234*4882a593Smuzhiyun reg = <0 0x40880000 0 0x400>; 235*4882a593Smuzhiyun clocks = <&ext_26m>, <&pll 0>; 236*4882a593Smuzhiyun #clock-cells = <1>; 237*4882a593Smuzhiyun }; 238*4882a593Smuzhiyun 239*4882a593Smuzhiyun agcp_gate: agcp-gate { 240*4882a593Smuzhiyun compatible = "sprd,sc9860-agcp-gate"; 241*4882a593Smuzhiyun sprd,syscon = <&agcp_regs>; /* 0x415e0000 */ 242*4882a593Smuzhiyun clocks = <&aon_prediv 0>; 243*4882a593Smuzhiyun #clock-cells = <1>; 244*4882a593Smuzhiyun }; 245*4882a593Smuzhiyun 246*4882a593Smuzhiyun gpu_clk: clock-controller@60200000 { 247*4882a593Smuzhiyun compatible = "sprd,sc9860-gpu-clk"; 248*4882a593Smuzhiyun reg = <0 0x60200000 0 0x400>; 249*4882a593Smuzhiyun clocks = <&pll 0>; 250*4882a593Smuzhiyun #clock-cells = <1>; 251*4882a593Smuzhiyun }; 252*4882a593Smuzhiyun 253*4882a593Smuzhiyun vsp_clk: clock-controller@61000000 { 254*4882a593Smuzhiyun compatible = "sprd,sc9860-vsp-clk"; 255*4882a593Smuzhiyun reg = <0 0x61000000 0 0x400>; 256*4882a593Smuzhiyun clocks = <&ext_26m>, <&pll 0>; 257*4882a593Smuzhiyun #clock-cells = <1>; 258*4882a593Smuzhiyun }; 259*4882a593Smuzhiyun 260*4882a593Smuzhiyun vsp_gate: vsp-gate { 261*4882a593Smuzhiyun compatible = "sprd,sc9860-vsp-gate"; 262*4882a593Smuzhiyun sprd,syscon = <&vsp_regs>; /* 0x61100000 */ 263*4882a593Smuzhiyun clocks = <&vsp_clk 0>; 264*4882a593Smuzhiyun #clock-cells = <1>; 265*4882a593Smuzhiyun }; 266*4882a593Smuzhiyun 267*4882a593Smuzhiyun cam_clk: clock-controller@62000000 { 268*4882a593Smuzhiyun compatible = "sprd,sc9860-cam-clk"; 269*4882a593Smuzhiyun reg = <0 0x62000000 0 0x4000>; 270*4882a593Smuzhiyun clocks = <&ext_26m>, <&pll 0>; 271*4882a593Smuzhiyun #clock-cells = <1>; 272*4882a593Smuzhiyun }; 273*4882a593Smuzhiyun 274*4882a593Smuzhiyun cam_gate: cam-gate { 275*4882a593Smuzhiyun compatible = "sprd,sc9860-cam-gate"; 276*4882a593Smuzhiyun sprd,syscon = <&cam_regs>; /* 0x62100000 */ 277*4882a593Smuzhiyun clocks = <&cam_clk 0>; 278*4882a593Smuzhiyun #clock-cells = <1>; 279*4882a593Smuzhiyun }; 280*4882a593Smuzhiyun 281*4882a593Smuzhiyun disp_clk: clock-controller@63000000 { 282*4882a593Smuzhiyun compatible = "sprd,sc9860-disp-clk"; 283*4882a593Smuzhiyun reg = <0 0x63000000 0 0x400>; 284*4882a593Smuzhiyun clocks = <&ext_26m>, <&pll 0>; 285*4882a593Smuzhiyun #clock-cells = <1>; 286*4882a593Smuzhiyun }; 287*4882a593Smuzhiyun 288*4882a593Smuzhiyun disp_gate: disp-gate { 289*4882a593Smuzhiyun compatible = "sprd,sc9860-disp-gate"; 290*4882a593Smuzhiyun sprd,syscon = <&disp_regs>; /* 0x63100000 */ 291*4882a593Smuzhiyun clocks = <&disp_clk 0>; 292*4882a593Smuzhiyun #clock-cells = <1>; 293*4882a593Smuzhiyun }; 294*4882a593Smuzhiyun 295*4882a593Smuzhiyun apapb_gate: apapb-gate { 296*4882a593Smuzhiyun compatible = "sprd,sc9860-apapb-gate"; 297*4882a593Smuzhiyun sprd,syscon = <&ap_apb_regs>; /* 0x70b00000 */ 298*4882a593Smuzhiyun clocks = <&ap_clk 0>; 299*4882a593Smuzhiyun #clock-cells = <1>; 300*4882a593Smuzhiyun }; 301*4882a593Smuzhiyun 302*4882a593Smuzhiyun funnel@10001000 { /* SoC Funnel */ 303*4882a593Smuzhiyun compatible = "arm,coresight-dynamic-funnel", "arm,primecell"; 304*4882a593Smuzhiyun reg = <0 0x10001000 0 0x1000>; 305*4882a593Smuzhiyun clocks = <&ext_26m>; 306*4882a593Smuzhiyun clock-names = "apb_pclk"; 307*4882a593Smuzhiyun out-ports { 308*4882a593Smuzhiyun port { 309*4882a593Smuzhiyun soc_funnel_out_port: endpoint { 310*4882a593Smuzhiyun remote-endpoint = <&etb_in>; 311*4882a593Smuzhiyun }; 312*4882a593Smuzhiyun }; 313*4882a593Smuzhiyun }; 314*4882a593Smuzhiyun 315*4882a593Smuzhiyun in-ports { 316*4882a593Smuzhiyun #address-cells = <1>; 317*4882a593Smuzhiyun #size-cells = <0>; 318*4882a593Smuzhiyun 319*4882a593Smuzhiyun port@0 { 320*4882a593Smuzhiyun reg = <0>; 321*4882a593Smuzhiyun soc_funnel_in_port0: endpoint { 322*4882a593Smuzhiyun remote-endpoint = 323*4882a593Smuzhiyun <&main_funnel_out_port>; 324*4882a593Smuzhiyun }; 325*4882a593Smuzhiyun }; 326*4882a593Smuzhiyun 327*4882a593Smuzhiyun port@4 { 328*4882a593Smuzhiyun reg = <4>; 329*4882a593Smuzhiyun soc_funnel_in_port1: endpoint { 330*4882a593Smuzhiyun remote-endpoint = 331*4882a593Smuzhiyun <&stm_out_port>; 332*4882a593Smuzhiyun }; 333*4882a593Smuzhiyun }; 334*4882a593Smuzhiyun }; 335*4882a593Smuzhiyun }; 336*4882a593Smuzhiyun 337*4882a593Smuzhiyun etb@10003000 { 338*4882a593Smuzhiyun compatible = "arm,coresight-tmc", "arm,primecell"; 339*4882a593Smuzhiyun reg = <0 0x10003000 0 0x1000>; 340*4882a593Smuzhiyun clocks = <&ext_26m>; 341*4882a593Smuzhiyun clock-names = "apb_pclk"; 342*4882a593Smuzhiyun out-ports { 343*4882a593Smuzhiyun port { 344*4882a593Smuzhiyun etb_in: endpoint { 345*4882a593Smuzhiyun remote-endpoint = 346*4882a593Smuzhiyun <&soc_funnel_out_port>; 347*4882a593Smuzhiyun }; 348*4882a593Smuzhiyun }; 349*4882a593Smuzhiyun }; 350*4882a593Smuzhiyun }; 351*4882a593Smuzhiyun 352*4882a593Smuzhiyun stm@10006000 { 353*4882a593Smuzhiyun compatible = "arm,coresight-stm", "arm,primecell"; 354*4882a593Smuzhiyun reg = <0 0x10006000 0 0x1000>, 355*4882a593Smuzhiyun <0 0x01000000 0 0x180000>; 356*4882a593Smuzhiyun reg-names = "stm-base", "stm-stimulus-base"; 357*4882a593Smuzhiyun clocks = <&ext_26m>; 358*4882a593Smuzhiyun clock-names = "apb_pclk"; 359*4882a593Smuzhiyun out-ports { 360*4882a593Smuzhiyun port { 361*4882a593Smuzhiyun stm_out_port: endpoint { 362*4882a593Smuzhiyun remote-endpoint = 363*4882a593Smuzhiyun <&soc_funnel_in_port1>; 364*4882a593Smuzhiyun }; 365*4882a593Smuzhiyun }; 366*4882a593Smuzhiyun }; 367*4882a593Smuzhiyun }; 368*4882a593Smuzhiyun 369*4882a593Smuzhiyun funnel@11001000 { /* Cluster0 Funnel */ 370*4882a593Smuzhiyun compatible = "arm,coresight-dynamic-funnel", "arm,primecell"; 371*4882a593Smuzhiyun reg = <0 0x11001000 0 0x1000>; 372*4882a593Smuzhiyun clocks = <&ext_26m>; 373*4882a593Smuzhiyun clock-names = "apb_pclk"; 374*4882a593Smuzhiyun out-ports { 375*4882a593Smuzhiyun port { 376*4882a593Smuzhiyun cluster0_funnel_out_port: endpoint { 377*4882a593Smuzhiyun remote-endpoint = 378*4882a593Smuzhiyun <&cluster0_etf_in>; 379*4882a593Smuzhiyun }; 380*4882a593Smuzhiyun }; 381*4882a593Smuzhiyun }; 382*4882a593Smuzhiyun 383*4882a593Smuzhiyun in-ports { 384*4882a593Smuzhiyun #address-cells = <1>; 385*4882a593Smuzhiyun #size-cells = <0>; 386*4882a593Smuzhiyun 387*4882a593Smuzhiyun port@0 { 388*4882a593Smuzhiyun reg = <0>; 389*4882a593Smuzhiyun cluster0_funnel_in_port0: endpoint { 390*4882a593Smuzhiyun remote-endpoint = <&etm0_out>; 391*4882a593Smuzhiyun }; 392*4882a593Smuzhiyun }; 393*4882a593Smuzhiyun 394*4882a593Smuzhiyun port@1 { 395*4882a593Smuzhiyun reg = <1>; 396*4882a593Smuzhiyun cluster0_funnel_in_port1: endpoint { 397*4882a593Smuzhiyun remote-endpoint = <&etm1_out>; 398*4882a593Smuzhiyun }; 399*4882a593Smuzhiyun }; 400*4882a593Smuzhiyun 401*4882a593Smuzhiyun port@2 { 402*4882a593Smuzhiyun reg = <2>; 403*4882a593Smuzhiyun cluster0_funnel_in_port2: endpoint { 404*4882a593Smuzhiyun remote-endpoint = <&etm2_out>; 405*4882a593Smuzhiyun }; 406*4882a593Smuzhiyun }; 407*4882a593Smuzhiyun 408*4882a593Smuzhiyun port@4 { 409*4882a593Smuzhiyun reg = <4>; 410*4882a593Smuzhiyun cluster0_funnel_in_port3: endpoint { 411*4882a593Smuzhiyun remote-endpoint = <&etm3_out>; 412*4882a593Smuzhiyun }; 413*4882a593Smuzhiyun }; 414*4882a593Smuzhiyun }; 415*4882a593Smuzhiyun }; 416*4882a593Smuzhiyun 417*4882a593Smuzhiyun funnel@11002000 { /* Cluster1 Funnel */ 418*4882a593Smuzhiyun compatible = "arm,coresight-dynamic-funnel", "arm,primecell"; 419*4882a593Smuzhiyun reg = <0 0x11002000 0 0x1000>; 420*4882a593Smuzhiyun clocks = <&ext_26m>; 421*4882a593Smuzhiyun clock-names = "apb_pclk"; 422*4882a593Smuzhiyun out-ports { 423*4882a593Smuzhiyun port { 424*4882a593Smuzhiyun cluster1_funnel_out_port: endpoint { 425*4882a593Smuzhiyun remote-endpoint = 426*4882a593Smuzhiyun <&cluster1_etf_in>; 427*4882a593Smuzhiyun }; 428*4882a593Smuzhiyun }; 429*4882a593Smuzhiyun }; 430*4882a593Smuzhiyun 431*4882a593Smuzhiyun in-ports { 432*4882a593Smuzhiyun #address-cells = <1>; 433*4882a593Smuzhiyun #size-cells = <0>; 434*4882a593Smuzhiyun 435*4882a593Smuzhiyun port@0 { 436*4882a593Smuzhiyun reg = <0>; 437*4882a593Smuzhiyun cluster1_funnel_in_port0: endpoint { 438*4882a593Smuzhiyun remote-endpoint = <&etm4_out>; 439*4882a593Smuzhiyun }; 440*4882a593Smuzhiyun }; 441*4882a593Smuzhiyun 442*4882a593Smuzhiyun port@1 { 443*4882a593Smuzhiyun reg = <1>; 444*4882a593Smuzhiyun cluster1_funnel_in_port1: endpoint { 445*4882a593Smuzhiyun remote-endpoint = <&etm5_out>; 446*4882a593Smuzhiyun }; 447*4882a593Smuzhiyun }; 448*4882a593Smuzhiyun 449*4882a593Smuzhiyun port@2 { 450*4882a593Smuzhiyun reg = <2>; 451*4882a593Smuzhiyun cluster1_funnel_in_port2: endpoint { 452*4882a593Smuzhiyun remote-endpoint = <&etm6_out>; 453*4882a593Smuzhiyun }; 454*4882a593Smuzhiyun }; 455*4882a593Smuzhiyun 456*4882a593Smuzhiyun port@3 { 457*4882a593Smuzhiyun reg = <3>; 458*4882a593Smuzhiyun cluster1_funnel_in_port3: endpoint { 459*4882a593Smuzhiyun remote-endpoint = <&etm7_out>; 460*4882a593Smuzhiyun }; 461*4882a593Smuzhiyun }; 462*4882a593Smuzhiyun }; 463*4882a593Smuzhiyun }; 464*4882a593Smuzhiyun 465*4882a593Smuzhiyun etf@11003000 { /* ETF on Cluster0 */ 466*4882a593Smuzhiyun compatible = "arm,coresight-tmc", "arm,primecell"; 467*4882a593Smuzhiyun reg = <0 0x11003000 0 0x1000>; 468*4882a593Smuzhiyun clocks = <&ext_26m>; 469*4882a593Smuzhiyun clock-names = "apb_pclk"; 470*4882a593Smuzhiyun 471*4882a593Smuzhiyun out-ports { 472*4882a593Smuzhiyun port { 473*4882a593Smuzhiyun cluster0_etf_out: endpoint { 474*4882a593Smuzhiyun remote-endpoint = 475*4882a593Smuzhiyun <&main_funnel_in_port0>; 476*4882a593Smuzhiyun }; 477*4882a593Smuzhiyun }; 478*4882a593Smuzhiyun }; 479*4882a593Smuzhiyun 480*4882a593Smuzhiyun in-ports { 481*4882a593Smuzhiyun port { 482*4882a593Smuzhiyun cluster0_etf_in: endpoint { 483*4882a593Smuzhiyun remote-endpoint = 484*4882a593Smuzhiyun <&cluster0_funnel_out_port>; 485*4882a593Smuzhiyun }; 486*4882a593Smuzhiyun }; 487*4882a593Smuzhiyun }; 488*4882a593Smuzhiyun }; 489*4882a593Smuzhiyun 490*4882a593Smuzhiyun etf@11004000 { /* ETF on Cluster1 */ 491*4882a593Smuzhiyun compatible = "arm,coresight-tmc", "arm,primecell"; 492*4882a593Smuzhiyun reg = <0 0x11004000 0 0x1000>; 493*4882a593Smuzhiyun clocks = <&ext_26m>; 494*4882a593Smuzhiyun clock-names = "apb_pclk"; 495*4882a593Smuzhiyun 496*4882a593Smuzhiyun out-ports { 497*4882a593Smuzhiyun port { 498*4882a593Smuzhiyun cluster1_etf_out: endpoint { 499*4882a593Smuzhiyun remote-endpoint = 500*4882a593Smuzhiyun <&main_funnel_in_port1>; 501*4882a593Smuzhiyun }; 502*4882a593Smuzhiyun }; 503*4882a593Smuzhiyun }; 504*4882a593Smuzhiyun 505*4882a593Smuzhiyun in-ports { 506*4882a593Smuzhiyun port { 507*4882a593Smuzhiyun cluster1_etf_in: endpoint { 508*4882a593Smuzhiyun remote-endpoint = 509*4882a593Smuzhiyun <&cluster1_funnel_out_port>; 510*4882a593Smuzhiyun }; 511*4882a593Smuzhiyun }; 512*4882a593Smuzhiyun }; 513*4882a593Smuzhiyun }; 514*4882a593Smuzhiyun 515*4882a593Smuzhiyun funnel@11005000 { /* Main Funnel */ 516*4882a593Smuzhiyun compatible = "arm,coresight-dynamic-funnel", "arm,primecell"; 517*4882a593Smuzhiyun reg = <0 0x11005000 0 0x1000>; 518*4882a593Smuzhiyun clocks = <&ext_26m>; 519*4882a593Smuzhiyun clock-names = "apb_pclk"; 520*4882a593Smuzhiyun 521*4882a593Smuzhiyun out-ports { 522*4882a593Smuzhiyun port { 523*4882a593Smuzhiyun main_funnel_out_port: endpoint { 524*4882a593Smuzhiyun remote-endpoint = 525*4882a593Smuzhiyun <&soc_funnel_in_port0>; 526*4882a593Smuzhiyun }; 527*4882a593Smuzhiyun }; 528*4882a593Smuzhiyun }; 529*4882a593Smuzhiyun 530*4882a593Smuzhiyun in-ports { 531*4882a593Smuzhiyun #address-cells = <1>; 532*4882a593Smuzhiyun #size-cells = <0>; 533*4882a593Smuzhiyun 534*4882a593Smuzhiyun port@0 { 535*4882a593Smuzhiyun reg = <0>; 536*4882a593Smuzhiyun main_funnel_in_port0: endpoint { 537*4882a593Smuzhiyun remote-endpoint = 538*4882a593Smuzhiyun <&cluster0_etf_out>; 539*4882a593Smuzhiyun }; 540*4882a593Smuzhiyun }; 541*4882a593Smuzhiyun 542*4882a593Smuzhiyun port@1 { 543*4882a593Smuzhiyun reg = <1>; 544*4882a593Smuzhiyun main_funnel_in_port1: endpoint { 545*4882a593Smuzhiyun remote-endpoint = 546*4882a593Smuzhiyun <&cluster1_etf_out>; 547*4882a593Smuzhiyun }; 548*4882a593Smuzhiyun }; 549*4882a593Smuzhiyun }; 550*4882a593Smuzhiyun }; 551*4882a593Smuzhiyun 552*4882a593Smuzhiyun etm@11440000 { 553*4882a593Smuzhiyun compatible = "arm,coresight-etm4x", "arm,primecell"; 554*4882a593Smuzhiyun reg = <0 0x11440000 0 0x1000>; 555*4882a593Smuzhiyun cpu = <&CPU0>; 556*4882a593Smuzhiyun clocks = <&ext_26m>; 557*4882a593Smuzhiyun clock-names = "apb_pclk"; 558*4882a593Smuzhiyun 559*4882a593Smuzhiyun out-ports { 560*4882a593Smuzhiyun port { 561*4882a593Smuzhiyun etm0_out: endpoint { 562*4882a593Smuzhiyun remote-endpoint = 563*4882a593Smuzhiyun <&cluster0_funnel_in_port0>; 564*4882a593Smuzhiyun }; 565*4882a593Smuzhiyun }; 566*4882a593Smuzhiyun }; 567*4882a593Smuzhiyun }; 568*4882a593Smuzhiyun 569*4882a593Smuzhiyun etm@11540000 { 570*4882a593Smuzhiyun compatible = "arm,coresight-etm4x", "arm,primecell"; 571*4882a593Smuzhiyun reg = <0 0x11540000 0 0x1000>; 572*4882a593Smuzhiyun cpu = <&CPU1>; 573*4882a593Smuzhiyun clocks = <&ext_26m>; 574*4882a593Smuzhiyun clock-names = "apb_pclk"; 575*4882a593Smuzhiyun 576*4882a593Smuzhiyun out-ports { 577*4882a593Smuzhiyun port { 578*4882a593Smuzhiyun etm1_out: endpoint { 579*4882a593Smuzhiyun remote-endpoint = 580*4882a593Smuzhiyun <&cluster0_funnel_in_port1>; 581*4882a593Smuzhiyun }; 582*4882a593Smuzhiyun }; 583*4882a593Smuzhiyun }; 584*4882a593Smuzhiyun }; 585*4882a593Smuzhiyun 586*4882a593Smuzhiyun etm@11640000 { 587*4882a593Smuzhiyun compatible = "arm,coresight-etm4x", "arm,primecell"; 588*4882a593Smuzhiyun reg = <0 0x11640000 0 0x1000>; 589*4882a593Smuzhiyun cpu = <&CPU2>; 590*4882a593Smuzhiyun clocks = <&ext_26m>; 591*4882a593Smuzhiyun clock-names = "apb_pclk"; 592*4882a593Smuzhiyun 593*4882a593Smuzhiyun out-ports { 594*4882a593Smuzhiyun port { 595*4882a593Smuzhiyun etm2_out: endpoint { 596*4882a593Smuzhiyun remote-endpoint = 597*4882a593Smuzhiyun <&cluster0_funnel_in_port2>; 598*4882a593Smuzhiyun }; 599*4882a593Smuzhiyun }; 600*4882a593Smuzhiyun }; 601*4882a593Smuzhiyun }; 602*4882a593Smuzhiyun 603*4882a593Smuzhiyun etm@11740000 { 604*4882a593Smuzhiyun compatible = "arm,coresight-etm4x", "arm,primecell"; 605*4882a593Smuzhiyun reg = <0 0x11740000 0 0x1000>; 606*4882a593Smuzhiyun cpu = <&CPU3>; 607*4882a593Smuzhiyun clocks = <&ext_26m>; 608*4882a593Smuzhiyun clock-names = "apb_pclk"; 609*4882a593Smuzhiyun 610*4882a593Smuzhiyun out-ports { 611*4882a593Smuzhiyun port { 612*4882a593Smuzhiyun etm3_out: endpoint { 613*4882a593Smuzhiyun remote-endpoint = 614*4882a593Smuzhiyun <&cluster0_funnel_in_port3>; 615*4882a593Smuzhiyun }; 616*4882a593Smuzhiyun }; 617*4882a593Smuzhiyun }; 618*4882a593Smuzhiyun }; 619*4882a593Smuzhiyun 620*4882a593Smuzhiyun etm@11840000 { 621*4882a593Smuzhiyun compatible = "arm,coresight-etm4x", "arm,primecell"; 622*4882a593Smuzhiyun reg = <0 0x11840000 0 0x1000>; 623*4882a593Smuzhiyun cpu = <&CPU4>; 624*4882a593Smuzhiyun clocks = <&ext_26m>; 625*4882a593Smuzhiyun clock-names = "apb_pclk"; 626*4882a593Smuzhiyun 627*4882a593Smuzhiyun out-ports { 628*4882a593Smuzhiyun port { 629*4882a593Smuzhiyun etm4_out: endpoint { 630*4882a593Smuzhiyun remote-endpoint = 631*4882a593Smuzhiyun <&cluster1_funnel_in_port0>; 632*4882a593Smuzhiyun }; 633*4882a593Smuzhiyun }; 634*4882a593Smuzhiyun }; 635*4882a593Smuzhiyun }; 636*4882a593Smuzhiyun 637*4882a593Smuzhiyun etm@11940000 { 638*4882a593Smuzhiyun compatible = "arm,coresight-etm4x", "arm,primecell"; 639*4882a593Smuzhiyun reg = <0 0x11940000 0 0x1000>; 640*4882a593Smuzhiyun cpu = <&CPU5>; 641*4882a593Smuzhiyun clocks = <&ext_26m>; 642*4882a593Smuzhiyun clock-names = "apb_pclk"; 643*4882a593Smuzhiyun 644*4882a593Smuzhiyun out-ports { 645*4882a593Smuzhiyun port { 646*4882a593Smuzhiyun etm5_out: endpoint { 647*4882a593Smuzhiyun remote-endpoint = 648*4882a593Smuzhiyun <&cluster1_funnel_in_port1>; 649*4882a593Smuzhiyun }; 650*4882a593Smuzhiyun }; 651*4882a593Smuzhiyun }; 652*4882a593Smuzhiyun }; 653*4882a593Smuzhiyun 654*4882a593Smuzhiyun etm@11a40000 { 655*4882a593Smuzhiyun compatible = "arm,coresight-etm4x", "arm,primecell"; 656*4882a593Smuzhiyun reg = <0 0x11a40000 0 0x1000>; 657*4882a593Smuzhiyun cpu = <&CPU6>; 658*4882a593Smuzhiyun clocks = <&ext_26m>; 659*4882a593Smuzhiyun clock-names = "apb_pclk"; 660*4882a593Smuzhiyun 661*4882a593Smuzhiyun out-ports { 662*4882a593Smuzhiyun port { 663*4882a593Smuzhiyun etm6_out: endpoint { 664*4882a593Smuzhiyun remote-endpoint = 665*4882a593Smuzhiyun <&cluster1_funnel_in_port2>; 666*4882a593Smuzhiyun }; 667*4882a593Smuzhiyun }; 668*4882a593Smuzhiyun }; 669*4882a593Smuzhiyun }; 670*4882a593Smuzhiyun 671*4882a593Smuzhiyun etm@11b40000 { 672*4882a593Smuzhiyun compatible = "arm,coresight-etm4x", "arm,primecell"; 673*4882a593Smuzhiyun reg = <0 0x11b40000 0 0x1000>; 674*4882a593Smuzhiyun cpu = <&CPU7>; 675*4882a593Smuzhiyun clocks = <&ext_26m>; 676*4882a593Smuzhiyun clock-names = "apb_pclk"; 677*4882a593Smuzhiyun 678*4882a593Smuzhiyun out-ports { 679*4882a593Smuzhiyun port { 680*4882a593Smuzhiyun etm7_out: endpoint { 681*4882a593Smuzhiyun remote-endpoint = 682*4882a593Smuzhiyun <&cluster1_funnel_in_port3>; 683*4882a593Smuzhiyun }; 684*4882a593Smuzhiyun }; 685*4882a593Smuzhiyun }; 686*4882a593Smuzhiyun }; 687*4882a593Smuzhiyun 688*4882a593Smuzhiyun gpio-keys { 689*4882a593Smuzhiyun compatible = "gpio-keys"; 690*4882a593Smuzhiyun 691*4882a593Smuzhiyun key-volumedown { 692*4882a593Smuzhiyun label = "Volume Down Key"; 693*4882a593Smuzhiyun linux,code = <KEY_VOLUMEDOWN>; 694*4882a593Smuzhiyun gpios = <&eic_debounce 2 GPIO_ACTIVE_LOW>; 695*4882a593Smuzhiyun debounce-interval = <2>; 696*4882a593Smuzhiyun wakeup-source; 697*4882a593Smuzhiyun }; 698*4882a593Smuzhiyun 699*4882a593Smuzhiyun key-volumeup { 700*4882a593Smuzhiyun label = "Volume Up Key"; 701*4882a593Smuzhiyun linux,code = <KEY_VOLUMEUP>; 702*4882a593Smuzhiyun gpios = <&pmic_eic 10 GPIO_ACTIVE_HIGH>; 703*4882a593Smuzhiyun debounce-interval = <2>; 704*4882a593Smuzhiyun wakeup-source; 705*4882a593Smuzhiyun }; 706*4882a593Smuzhiyun 707*4882a593Smuzhiyun key-power { 708*4882a593Smuzhiyun label = "Power Key"; 709*4882a593Smuzhiyun linux,code = <KEY_POWER>; 710*4882a593Smuzhiyun gpios = <&pmic_eic 1 GPIO_ACTIVE_HIGH>; 711*4882a593Smuzhiyun debounce-interval = <2>; 712*4882a593Smuzhiyun wakeup-source; 713*4882a593Smuzhiyun }; 714*4882a593Smuzhiyun }; 715*4882a593Smuzhiyun }; 716*4882a593Smuzhiyun}; 717