cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

sc9860.dtsi (14610B)


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