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

vexpress-v2p-ca15_a7.dts (13508B)


      1// SPDX-License-Identifier: GPL-2.0
      2/*
      3 * ARM Ltd. Versatile Express
      4 *
      5 * CoreTile Express A15x2 A7x3
      6 * Cortex-A15_A7 MPCore (V2P-CA15_A7)
      7 *
      8 * HBI-0249A
      9 */
     10
     11/dts-v1/;
     12#include "vexpress-v2m-rs1.dtsi"
     13
     14/ {
     15	model = "V2P-CA15_CA7";
     16	arm,hbi = <0x249>;
     17	arm,vexpress,site = <0xf>;
     18	compatible = "arm,vexpress,v2p-ca15_a7", "arm,vexpress";
     19	interrupt-parent = <&gic>;
     20	#address-cells = <2>;
     21	#size-cells = <2>;
     22
     23	chosen { };
     24
     25	aliases {
     26		serial0 = &v2m_serial0;
     27		serial1 = &v2m_serial1;
     28		serial2 = &v2m_serial2;
     29		serial3 = &v2m_serial3;
     30		i2c0 = &v2m_i2c_dvi;
     31		i2c1 = &v2m_i2c_pcie;
     32	};
     33
     34	cpus {
     35		#address-cells = <1>;
     36		#size-cells = <0>;
     37
     38		cpu0: cpu@0 {
     39			device_type = "cpu";
     40			compatible = "arm,cortex-a15";
     41			reg = <0>;
     42			cci-control-port = <&cci_control1>;
     43			cpu-idle-states = <&CLUSTER_SLEEP_BIG>;
     44			capacity-dmips-mhz = <1024>;
     45			dynamic-power-coefficient = <990>;
     46		};
     47
     48		cpu1: cpu@1 {
     49			device_type = "cpu";
     50			compatible = "arm,cortex-a15";
     51			reg = <1>;
     52			cci-control-port = <&cci_control1>;
     53			cpu-idle-states = <&CLUSTER_SLEEP_BIG>;
     54			capacity-dmips-mhz = <1024>;
     55			dynamic-power-coefficient = <990>;
     56		};
     57
     58		cpu2: cpu@2 {
     59			device_type = "cpu";
     60			compatible = "arm,cortex-a7";
     61			reg = <0x100>;
     62			cci-control-port = <&cci_control2>;
     63			cpu-idle-states = <&CLUSTER_SLEEP_LITTLE>;
     64			capacity-dmips-mhz = <516>;
     65			dynamic-power-coefficient = <133>;
     66		};
     67
     68		cpu3: cpu@3 {
     69			device_type = "cpu";
     70			compatible = "arm,cortex-a7";
     71			reg = <0x101>;
     72			cci-control-port = <&cci_control2>;
     73			cpu-idle-states = <&CLUSTER_SLEEP_LITTLE>;
     74			capacity-dmips-mhz = <516>;
     75			dynamic-power-coefficient = <133>;
     76		};
     77
     78		cpu4: cpu@4 {
     79			device_type = "cpu";
     80			compatible = "arm,cortex-a7";
     81			reg = <0x102>;
     82			cci-control-port = <&cci_control2>;
     83			cpu-idle-states = <&CLUSTER_SLEEP_LITTLE>;
     84			capacity-dmips-mhz = <516>;
     85			dynamic-power-coefficient = <133>;
     86		};
     87
     88		idle-states {
     89			CLUSTER_SLEEP_BIG: cluster-sleep-big {
     90				compatible = "arm,idle-state";
     91				local-timer-stop;
     92				entry-latency-us = <1000>;
     93				exit-latency-us = <700>;
     94				min-residency-us = <2000>;
     95			};
     96
     97			CLUSTER_SLEEP_LITTLE: cluster-sleep-little {
     98				compatible = "arm,idle-state";
     99				local-timer-stop;
    100				entry-latency-us = <1000>;
    101				exit-latency-us = <500>;
    102				min-residency-us = <2500>;
    103			};
    104		};
    105	};
    106
    107	memory@80000000 {
    108		device_type = "memory";
    109		reg = <0 0x80000000 0 0x40000000>;
    110	};
    111
    112	reserved-memory {
    113		#address-cells = <2>;
    114		#size-cells = <2>;
    115		ranges;
    116
    117		/* Chipselect 2 is physically at 0x18000000 */
    118		vram: vram@18000000 {
    119			/* 8 MB of designated video RAM */
    120			compatible = "shared-dma-pool";
    121			reg = <0 0x18000000 0 0x00800000>;
    122			no-map;
    123		};
    124	};
    125
    126	wdt@2a490000 {
    127		compatible = "arm,sp805", "arm,primecell";
    128		reg = <0 0x2a490000 0 0x1000>;
    129		interrupts = <0 98 4>;
    130		clocks = <&oscclk6a>, <&oscclk6a>;
    131		clock-names = "wdog_clk", "apb_pclk";
    132	};
    133
    134	hdlcd@2b000000 {
    135		compatible = "arm,hdlcd";
    136		reg = <0 0x2b000000 0 0x1000>;
    137		interrupts = <0 85 4>;
    138		clocks = <&hdlcd_clk>;
    139		clock-names = "pxlclk";
    140	};
    141
    142	memory-controller@2b0a0000 {
    143		compatible = "arm,pl341", "arm,primecell";
    144		reg = <0 0x2b0a0000 0 0x1000>;
    145		clocks = <&oscclk6a>;
    146		clock-names = "apb_pclk";
    147	};
    148
    149	gic: interrupt-controller@2c001000 {
    150		compatible = "arm,cortex-a15-gic", "arm,cortex-a9-gic";
    151		#interrupt-cells = <3>;
    152		#address-cells = <0>;
    153		interrupt-controller;
    154		reg = <0 0x2c001000 0 0x1000>,
    155		      <0 0x2c002000 0 0x2000>,
    156		      <0 0x2c004000 0 0x2000>,
    157		      <0 0x2c006000 0 0x2000>;
    158		interrupts = <1 9 0xf04>;
    159	};
    160
    161	cci@2c090000 {
    162		compatible = "arm,cci-400";
    163		#address-cells = <1>;
    164		#size-cells = <1>;
    165		reg = <0 0x2c090000 0 0x1000>;
    166		ranges = <0x0 0x0 0x2c090000 0x10000>;
    167
    168		cci_control1: slave-if@4000 {
    169			compatible = "arm,cci-400-ctrl-if";
    170			interface-type = "ace";
    171			reg = <0x4000 0x1000>;
    172		};
    173
    174		cci_control2: slave-if@5000 {
    175			compatible = "arm,cci-400-ctrl-if";
    176			interface-type = "ace";
    177			reg = <0x5000 0x1000>;
    178		};
    179
    180		pmu@9000 {
    181			 compatible = "arm,cci-400-pmu,r0";
    182			 reg = <0x9000 0x5000>;
    183			 interrupts = <0 105 4>,
    184				      <0 101 4>,
    185				      <0 102 4>,
    186				      <0 103 4>,
    187				      <0 104 4>;
    188		};
    189	};
    190
    191	memory-controller@7ffd0000 {
    192		compatible = "arm,pl354", "arm,primecell";
    193		reg = <0 0x7ffd0000 0 0x1000>;
    194		interrupts = <0 86 4>,
    195			     <0 87 4>;
    196		clocks = <&oscclk6a>;
    197		clock-names = "apb_pclk";
    198	};
    199
    200	dma@7ff00000 {
    201		compatible = "arm,pl330", "arm,primecell";
    202		reg = <0 0x7ff00000 0 0x1000>;
    203		interrupts = <0 92 4>,
    204			     <0 88 4>,
    205			     <0 89 4>,
    206			     <0 90 4>,
    207			     <0 91 4>;
    208		clocks = <&oscclk6a>;
    209		clock-names = "apb_pclk";
    210	};
    211
    212        scc@7fff0000 {
    213		compatible = "arm,vexpress-scc,v2p-ca15_a7", "arm,vexpress-scc";
    214		reg = <0 0x7fff0000 0 0x1000>;
    215		interrupts = <0 95 4>;
    216        };
    217
    218	timer {
    219		compatible = "arm,armv7-timer";
    220		interrupts = <1 13 0xf08>,
    221			     <1 14 0xf08>,
    222			     <1 11 0xf08>,
    223			     <1 10 0xf08>;
    224	};
    225
    226	pmu-a15 {
    227		compatible = "arm,cortex-a15-pmu";
    228		interrupts = <0 68 4>,
    229			     <0 69 4>;
    230		interrupt-affinity = <&cpu0>,
    231				     <&cpu1>;
    232	};
    233
    234	pmu-a7 {
    235		compatible = "arm,cortex-a7-pmu";
    236		interrupts = <0 128 4>,
    237			     <0 129 4>,
    238			     <0 130 4>;
    239		interrupt-affinity = <&cpu2>,
    240				     <&cpu3>,
    241				     <&cpu4>;
    242	};
    243
    244	oscclk6a: oscclk6a {
    245		/* Reference 24MHz clock */
    246		compatible = "fixed-clock";
    247		#clock-cells = <0>;
    248		clock-frequency = <24000000>;
    249		clock-output-names = "oscclk6a";
    250	};
    251
    252	dcc {
    253		compatible = "arm,vexpress,config-bus";
    254		arm,vexpress,config-bridge = <&v2m_sysreg>;
    255
    256		oscclk0 {
    257			/* A15 PLL 0 reference clock */
    258			compatible = "arm,vexpress-osc";
    259			arm,vexpress-sysreg,func = <1 0>;
    260			freq-range = <17000000 50000000>;
    261			#clock-cells = <0>;
    262			clock-output-names = "oscclk0";
    263		};
    264
    265		oscclk1 {
    266			/* A15 PLL 1 reference clock */
    267			compatible = "arm,vexpress-osc";
    268			arm,vexpress-sysreg,func = <1 1>;
    269			freq-range = <17000000 50000000>;
    270			#clock-cells = <0>;
    271			clock-output-names = "oscclk1";
    272		};
    273
    274		oscclk2 {
    275			/* A7 PLL 0 reference clock */
    276			compatible = "arm,vexpress-osc";
    277			arm,vexpress-sysreg,func = <1 2>;
    278			freq-range = <17000000 50000000>;
    279			#clock-cells = <0>;
    280			clock-output-names = "oscclk2";
    281		};
    282
    283		oscclk3 {
    284			/* A7 PLL 1 reference clock */
    285			compatible = "arm,vexpress-osc";
    286			arm,vexpress-sysreg,func = <1 3>;
    287			freq-range = <17000000 50000000>;
    288			#clock-cells = <0>;
    289			clock-output-names = "oscclk3";
    290		};
    291
    292		oscclk4 {
    293			/* External AXI master clock */
    294			compatible = "arm,vexpress-osc";
    295			arm,vexpress-sysreg,func = <1 4>;
    296			freq-range = <20000000 40000000>;
    297			#clock-cells = <0>;
    298			clock-output-names = "oscclk4";
    299		};
    300
    301		hdlcd_clk: oscclk5 {
    302			/* HDLCD PLL reference clock */
    303			compatible = "arm,vexpress-osc";
    304			arm,vexpress-sysreg,func = <1 5>;
    305			freq-range = <23750000 165000000>;
    306			#clock-cells = <0>;
    307			clock-output-names = "oscclk5";
    308		};
    309
    310		smbclk: oscclk6 {
    311			/* Static memory controller clock */
    312			compatible = "arm,vexpress-osc";
    313			arm,vexpress-sysreg,func = <1 6>;
    314			freq-range = <20000000 40000000>;
    315			#clock-cells = <0>;
    316			clock-output-names = "oscclk6";
    317		};
    318
    319		oscclk7 {
    320			/* SYS PLL reference clock */
    321			compatible = "arm,vexpress-osc";
    322			arm,vexpress-sysreg,func = <1 7>;
    323			freq-range = <17000000 50000000>;
    324			#clock-cells = <0>;
    325			clock-output-names = "oscclk7";
    326		};
    327
    328		oscclk8 {
    329			/* DDR2 PLL reference clock */
    330			compatible = "arm,vexpress-osc";
    331			arm,vexpress-sysreg,func = <1 8>;
    332			freq-range = <20000000 50000000>;
    333			#clock-cells = <0>;
    334			clock-output-names = "oscclk8";
    335		};
    336
    337		volt-a15 {
    338			/* A15 CPU core voltage */
    339			compatible = "arm,vexpress-volt";
    340			arm,vexpress-sysreg,func = <2 0>;
    341			regulator-name = "A15 Vcore";
    342			regulator-min-microvolt = <800000>;
    343			regulator-max-microvolt = <1050000>;
    344			regulator-always-on;
    345			label = "A15 Vcore";
    346		};
    347
    348		volt-a7 {
    349			/* A7 CPU core voltage */
    350			compatible = "arm,vexpress-volt";
    351			arm,vexpress-sysreg,func = <2 1>;
    352			regulator-name = "A7 Vcore";
    353			regulator-min-microvolt = <800000>;
    354			regulator-max-microvolt = <1050000>;
    355			regulator-always-on;
    356			label = "A7 Vcore";
    357		};
    358
    359		amp-a15 {
    360			/* Total current for the two A15 cores */
    361			compatible = "arm,vexpress-amp";
    362			arm,vexpress-sysreg,func = <3 0>;
    363			label = "A15 Icore";
    364		};
    365
    366		amp-a7 {
    367			/* Total current for the three A7 cores */
    368			compatible = "arm,vexpress-amp";
    369			arm,vexpress-sysreg,func = <3 1>;
    370			label = "A7 Icore";
    371		};
    372
    373		temp-dcc {
    374			/* DCC internal temperature */
    375			compatible = "arm,vexpress-temp";
    376			arm,vexpress-sysreg,func = <4 0>;
    377			label = "DCC";
    378		};
    379
    380		power-a15 {
    381			/* Total power for the two A15 cores */
    382			compatible = "arm,vexpress-power";
    383			arm,vexpress-sysreg,func = <12 0>;
    384			label = "A15 Pcore";
    385		};
    386
    387		power-a7 {
    388			/* Total power for the three A7 cores */
    389			compatible = "arm,vexpress-power";
    390			arm,vexpress-sysreg,func = <12 1>;
    391			label = "A7 Pcore";
    392		};
    393
    394		energy-a15 {
    395			/* Total energy for the two A15 cores */
    396			compatible = "arm,vexpress-energy";
    397			arm,vexpress-sysreg,func = <13 0>, <13 1>;
    398			label = "A15 Jcore";
    399		};
    400
    401		energy-a7 {
    402			/* Total energy for the three A7 cores */
    403			compatible = "arm,vexpress-energy";
    404			arm,vexpress-sysreg,func = <13 2>, <13 3>;
    405			label = "A7 Jcore";
    406		};
    407	};
    408
    409	etb@20010000 {
    410		compatible = "arm,coresight-etb10", "arm,primecell";
    411		reg = <0 0x20010000 0 0x1000>;
    412
    413		clocks = <&oscclk6a>;
    414		clock-names = "apb_pclk";
    415		in-ports {
    416			port {
    417				etb_in_port: endpoint {
    418					remote-endpoint = <&replicator_out_port0>;
    419				};
    420			};
    421		};
    422	};
    423
    424	tpiu@20030000 {
    425		compatible = "arm,coresight-tpiu", "arm,primecell";
    426		reg = <0 0x20030000 0 0x1000>;
    427
    428		clocks = <&oscclk6a>;
    429		clock-names = "apb_pclk";
    430		in-ports {
    431			port {
    432				tpiu_in_port: endpoint {
    433					remote-endpoint = <&replicator_out_port1>;
    434				};
    435			};
    436		};
    437	};
    438
    439	replicator {
    440		/* non-configurable replicators don't show up on the
    441		 * AMBA bus.  As such no need to add "arm,primecell".
    442		 */
    443		compatible = "arm,coresight-static-replicator";
    444
    445		out-ports {
    446			#address-cells = <1>;
    447			#size-cells = <0>;
    448
    449			port@0 {
    450				reg = <0>;
    451				replicator_out_port0: endpoint {
    452					remote-endpoint = <&etb_in_port>;
    453				};
    454			};
    455
    456			port@1 {
    457				reg = <1>;
    458				replicator_out_port1: endpoint {
    459					remote-endpoint = <&tpiu_in_port>;
    460				};
    461			};
    462		};
    463
    464		in-ports {
    465			port {
    466				replicator_in_port0: endpoint {
    467					remote-endpoint = <&funnel_out_port0>;
    468				};
    469			};
    470		};
    471	};
    472
    473	funnel@20040000 {
    474		compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
    475		reg = <0 0x20040000 0 0x1000>;
    476
    477		clocks = <&oscclk6a>;
    478		clock-names = "apb_pclk";
    479		out-ports {
    480			port {
    481				funnel_out_port0: endpoint {
    482					remote-endpoint =
    483						<&replicator_in_port0>;
    484				};
    485			};
    486		};
    487
    488		in-ports {
    489			#address-cells = <1>;
    490			#size-cells = <0>;
    491
    492			port@0 {
    493				reg = <0>;
    494				funnel_in_port0: endpoint {
    495					remote-endpoint = <&ptm0_out_port>;
    496				};
    497			};
    498
    499			port@1 {
    500				reg = <1>;
    501				funnel_in_port1: endpoint {
    502					remote-endpoint = <&ptm1_out_port>;
    503				};
    504			};
    505
    506			port@2 {
    507				reg = <2>;
    508				funnel_in_port2: endpoint {
    509					remote-endpoint = <&etm0_out_port>;
    510				};
    511			};
    512
    513			/* Input port #3 is for ITM, not supported here */
    514
    515			port@4 {
    516				reg = <4>;
    517				funnel_in_port4: endpoint {
    518					remote-endpoint = <&etm1_out_port>;
    519				};
    520			};
    521
    522			port@5 {
    523				reg = <5>;
    524				funnel_in_port5: endpoint {
    525					remote-endpoint = <&etm2_out_port>;
    526				};
    527			};
    528		};
    529	};
    530
    531	ptm@2201c000 {
    532		compatible = "arm,coresight-etm3x", "arm,primecell";
    533		reg = <0 0x2201c000 0 0x1000>;
    534
    535		cpu = <&cpu0>;
    536		clocks = <&oscclk6a>;
    537		clock-names = "apb_pclk";
    538		out-ports {
    539			port {
    540				ptm0_out_port: endpoint {
    541					remote-endpoint = <&funnel_in_port0>;
    542				};
    543			};
    544		};
    545	};
    546
    547	ptm@2201d000 {
    548		compatible = "arm,coresight-etm3x", "arm,primecell";
    549		reg = <0 0x2201d000 0 0x1000>;
    550
    551		cpu = <&cpu1>;
    552		clocks = <&oscclk6a>;
    553		clock-names = "apb_pclk";
    554		out-ports {
    555			port {
    556				ptm1_out_port: endpoint {
    557					remote-endpoint = <&funnel_in_port1>;
    558				};
    559			};
    560		};
    561	};
    562
    563	etm@2203c000 {
    564		compatible = "arm,coresight-etm3x", "arm,primecell";
    565		reg = <0 0x2203c000 0 0x1000>;
    566
    567		cpu = <&cpu2>;
    568		clocks = <&oscclk6a>;
    569		clock-names = "apb_pclk";
    570		out-ports {
    571			port {
    572				etm0_out_port: endpoint {
    573					remote-endpoint = <&funnel_in_port2>;
    574				};
    575			};
    576		};
    577	};
    578
    579	etm@2203d000 {
    580		compatible = "arm,coresight-etm3x", "arm,primecell";
    581		reg = <0 0x2203d000 0 0x1000>;
    582
    583		cpu = <&cpu3>;
    584		clocks = <&oscclk6a>;
    585		clock-names = "apb_pclk";
    586		out-ports {
    587			port {
    588				etm1_out_port: endpoint {
    589					remote-endpoint = <&funnel_in_port4>;
    590				};
    591			};
    592		};
    593	};
    594
    595	etm@2203e000 {
    596		compatible = "arm,coresight-etm3x", "arm,primecell";
    597		reg = <0 0x2203e000 0 0x1000>;
    598
    599		cpu = <&cpu4>;
    600		clocks = <&oscclk6a>;
    601		clock-names = "apb_pclk";
    602		out-ports {
    603			port {
    604				etm2_out_port: endpoint {
    605					remote-endpoint = <&funnel_in_port5>;
    606				};
    607			};
    608		};
    609	};
    610
    611	smb: bus@8000000 {
    612		ranges = <0x8000000 0 0x8000000 0x18000000>;
    613	};
    614
    615	site2: hsb@40000000 {
    616		compatible = "simple-bus";
    617		#address-cells = <1>;
    618		#size-cells = <1>;
    619		ranges = <0 0 0x40000000 0x3fef0000>;
    620		#interrupt-cells = <1>;
    621		interrupt-map-mask = <0 3>;
    622		interrupt-map = <0 0 &gic 0 36 4>,
    623				<0 1 &gic 0 37 4>,
    624				<0 2 &gic 0 38 4>,
    625				<0 3 &gic 0 39 4>;
    626	};
    627};
    628
    629&nor_flash {
    630	/*
    631	 * Unfortunately, accessing the flash disturbs the CPU idle states
    632	 * (suspend) and CPU hotplug of this platform. For this reason, flash
    633	 * hardware access is disabled by default on this platform alone.
    634	 */
    635	status = "disabled";
    636};