Home | History | Annotate | Line # | Download | only in sprd
      1 // SPDX-License-Identifier: GPL-2.0-only
      2 /*
      3  * Unisoc SC9863A SoC DTS file
      4  *
      5  * Copyright (C) 2019, Unisoc Inc.
      6  */
      7 
      8 #include <dt-bindings/clock/sprd,sc9863a-clk.h>
      9 #include <dt-bindings/interrupt-controller/arm-gic.h>
     10 #include "sharkl3.dtsi"
     11 
     12 / {
     13 	cpus {
     14 		#address-cells = <2>;
     15 		#size-cells = <0>;
     16 
     17 		cpu-map {
     18 			cluster0 {
     19 				core0 {
     20 					cpu = <&CPU0>;
     21 				};
     22 				core1 {
     23 					cpu = <&CPU1>;
     24 				};
     25 				core2 {
     26 					cpu = <&CPU2>;
     27 				};
     28 				core3 {
     29 					cpu = <&CPU3>;
     30 				};
     31 				core4 {
     32 					cpu = <&CPU4>;
     33 				};
     34 				core5 {
     35 					cpu = <&CPU5>;
     36 				};
     37 				core6 {
     38 					cpu = <&CPU6>;
     39 				};
     40 				core7 {
     41 					cpu = <&CPU7>;
     42 				};
     43 			};
     44 		};
     45 
     46 		CPU0: cpu@0 {
     47 			device_type = "cpu";
     48 			compatible = "arm,cortex-a55";
     49 			reg = <0x0 0x0>;
     50 			enable-method = "psci";
     51 			cpu-idle-states = <&CORE_PD>;
     52 		};
     53 
     54 		CPU1: cpu@100 {
     55 			device_type = "cpu";
     56 			compatible = "arm,cortex-a55";
     57 			reg = <0x0 0x100>;
     58 			enable-method = "psci";
     59 			cpu-idle-states = <&CORE_PD>;
     60 		};
     61 
     62 		CPU2: cpu@200 {
     63 			device_type = "cpu";
     64 			compatible = "arm,cortex-a55";
     65 			reg = <0x0 0x200>;
     66 			enable-method = "psci";
     67 			cpu-idle-states = <&CORE_PD>;
     68 		};
     69 
     70 		CPU3: cpu@300 {
     71 			device_type = "cpu";
     72 			compatible = "arm,cortex-a55";
     73 			reg = <0x0 0x300>;
     74 			enable-method = "psci";
     75 			cpu-idle-states = <&CORE_PD>;
     76 		};
     77 
     78 		CPU4: cpu@400 {
     79 			device_type = "cpu";
     80 			compatible = "arm,cortex-a55";
     81 			reg = <0x0 0x400>;
     82 			enable-method = "psci";
     83 			cpu-idle-states = <&CORE_PD>;
     84 		};
     85 
     86 		CPU5: cpu@500 {
     87 			device_type = "cpu";
     88 			compatible = "arm,cortex-a55";
     89 			reg = <0x0 0x500>;
     90 			enable-method = "psci";
     91 			cpu-idle-states = <&CORE_PD>;
     92 		};
     93 
     94 		CPU6: cpu@600 {
     95 			device_type = "cpu";
     96 			compatible = "arm,cortex-a55";
     97 			reg = <0x0 0x600>;
     98 			enable-method = "psci";
     99 			cpu-idle-states = <&CORE_PD>;
    100 		};
    101 
    102 		CPU7: cpu@700 {
    103 			device_type = "cpu";
    104 			compatible = "arm,cortex-a55";
    105 			reg = <0x0 0x700>;
    106 			enable-method = "psci";
    107 			cpu-idle-states = <&CORE_PD>;
    108 		};
    109 	};
    110 
    111 	idle-states {
    112 		entry-method = "psci";
    113 		CORE_PD: core-pd {
    114 			compatible = "arm,idle-state";
    115 			entry-latency-us = <4000>;
    116 			exit-latency-us = <4000>;
    117 			min-residency-us = <10000>;
    118 			local-timer-stop;
    119 			arm,psci-suspend-param = <0x00010000>;
    120 		};
    121 	};
    122 
    123 	psci {
    124 		compatible = "arm,psci-0.2";
    125 		method = "smc";
    126 	};
    127 
    128 	timer {
    129 		compatible = "arm,armv8-timer";
    130 		interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>, /* Physical Secure PPI */
    131 			     <GIC_PPI 14 IRQ_TYPE_LEVEL_HIGH>, /* Physical Non-Secure PPI */
    132 			     <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH>, /* Virtual PPI */
    133 			     <GIC_PPI 10 IRQ_TYPE_LEVEL_HIGH>; /* Hipervisor PPI */
    134 	};
    135 
    136 	pmu {
    137 		compatible = "arm,armv8-pmuv3";
    138 		interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>,
    139 			     <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
    140 			     <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>,
    141 			     <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>,
    142 			     <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>,
    143 			     <GIC_SPI 149 IRQ_TYPE_LEVEL_HIGH>,
    144 			     <GIC_SPI 150 IRQ_TYPE_LEVEL_HIGH>,
    145 			     <GIC_SPI 151 IRQ_TYPE_LEVEL_HIGH>;
    146 	};
    147 
    148 	soc {
    149 		gic: interrupt-controller@14000000 {
    150 			compatible = "arm,gic-v3";
    151 			#interrupt-cells = <3>;
    152 			#address-cells = <2>;
    153 			#size-cells = <2>;
    154 			ranges;
    155 			redistributor-stride = <0x0 0x20000>;	/* 128KB stride */
    156 			#redistributor-regions = <1>;
    157 			interrupt-controller;
    158 			reg = <0x0 0x14000000 0 0x20000>,	/* GICD */
    159 			      <0x0 0x14040000 0 0x100000>;	/* GICR */
    160 			interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
    161 		};
    162 
    163 		ap_clk: clock-controller@21500000 {
    164 			compatible = "sprd,sc9863a-ap-clk";
    165 			reg = <0 0x21500000 0 0x1000>;
    166 			clocks = <&ext_32k>, <&ext_26m>;
    167 			clock-names = "ext-32k", "ext-26m";
    168 			#clock-cells = <1>;
    169 		};
    170 
    171 		aon_clk: clock-controller@402d0000 {
    172 			compatible = "sprd,sc9863a-aon-clk";
    173 			reg = <0 0x402d0000 0 0x1000>;
    174 			clocks = <&ext_26m>, <&rco_100m>,
    175 				 <&ext_32k>, <&ext_4m>;
    176 			clock-names = "ext-26m", "rco-100m",
    177 				      "ext-32k", "ext-4m";
    178 			#clock-cells = <1>;
    179 		};
    180 
    181 		mm_clk: clock-controller@60900000 {
    182 			compatible = "sprd,sc9863a-mm-clk";
    183 			reg = <0 0x60900000 0 0x1000>;
    184 			#clock-cells = <1>;
    185 		};
    186 
    187 		funnel@10001000 {
    188 			compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
    189 			reg = <0 0x10001000 0 0x1000>;
    190 			clocks = <&ext_26m>;
    191 			clock-names = "apb_pclk";
    192 
    193 			out-ports {
    194 				port {
    195 					funnel_soc_out_port: endpoint {
    196 						remote-endpoint = <&etb_in>;
    197 					};
    198 				};
    199 			};
    200 
    201 			in-ports {
    202 				port {
    203 					funnel_soc_in_port: endpoint {
    204 						remote-endpoint =
    205 						<&funnel_ca55_out_port>;
    206 					};
    207 				};
    208 			};
    209 		};
    210 
    211 		etb@10003000 {
    212 			compatible = "arm,coresight-tmc", "arm,primecell";
    213 			reg = <0 0x10003000 0 0x1000>;
    214 			clocks = <&ext_26m>;
    215 			clock-names = "apb_pclk";
    216 
    217 			in-ports {
    218 				port {
    219 					etb_in: endpoint {
    220 						remote-endpoint =
    221 						<&funnel_soc_out_port>;
    222 					};
    223 				};
    224 			};
    225 		};
    226 
    227 		funnel@12001000 {
    228 			compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
    229 			reg = <0 0x12001000 0 0x1000>;
    230 			clocks = <&ext_26m>;
    231 			clock-names = "apb_pclk";
    232 
    233 			out-ports {
    234 				port {
    235 					funnel_little_out_port: endpoint {
    236 						remote-endpoint =
    237 						<&etf_little_in>;
    238 					};
    239 				};
    240 			};
    241 
    242 			in-ports {
    243 				#address-cells = <1>;
    244 				#size-cells = <0>;
    245 
    246 				port@0 {
    247 					reg = <0>;
    248 					funnel_little_in_port0: endpoint {
    249 						remote-endpoint = <&etm0_out>;
    250 					};
    251 				};
    252 
    253 				port@1 {
    254 					reg = <1>;
    255 					funnel_little_in_port1: endpoint {
    256 						remote-endpoint = <&etm1_out>;
    257 					};
    258 				};
    259 
    260 				port@2 {
    261 					reg = <2>;
    262 					funnel_little_in_port2: endpoint {
    263 						remote-endpoint = <&etm2_out>;
    264 					};
    265 				};
    266 
    267 				port@3 {
    268 					reg = <3>;
    269 					funnel_little_in_port3: endpoint {
    270 						remote-endpoint = <&etm3_out>;
    271 					};
    272 				};
    273 			};
    274 		};
    275 
    276 		etf@12002000 {
    277 			compatible = "arm,coresight-tmc", "arm,primecell";
    278 			reg = <0 0x12002000 0 0x1000>;
    279 			clocks = <&ext_26m>;
    280 			clock-names = "apb_pclk";
    281 
    282 			out-ports {
    283 				port {
    284 					etf_little_out: endpoint {
    285 						remote-endpoint =
    286 						<&funnel_ca55_in_port0>;
    287 					};
    288 				};
    289 			};
    290 
    291 			in-port {
    292 				port {
    293 					etf_little_in: endpoint {
    294 						remote-endpoint =
    295 						<&funnel_little_out_port>;
    296 					};
    297 				};
    298 			};
    299 		};
    300 
    301 		etf@12003000 {
    302 			compatible = "arm,coresight-tmc", "arm,primecell";
    303 			reg = <0 0x12003000 0 0x1000>;
    304 			clocks = <&ext_26m>;
    305 			clock-names = "apb_pclk";
    306 
    307 			out-ports {
    308 				port {
    309 					etf_big_out: endpoint {
    310 						remote-endpoint =
    311 						<&funnel_ca55_in_port1>;
    312 					};
    313 				};
    314 			};
    315 
    316 			in-ports {
    317 				port {
    318 					etf_big_in: endpoint {
    319 						remote-endpoint =
    320 						<&funnel_big_out_port>;
    321 					};
    322 				};
    323 			};
    324 		};
    325 
    326 		funnel@12004000 {
    327 			compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
    328 			reg = <0 0x12004000 0 0x1000>;
    329 			clocks = <&ext_26m>;
    330 			clock-names = "apb_pclk";
    331 
    332 			out-ports {
    333 				port {
    334 					funnel_ca55_out_port: endpoint {
    335 						remote-endpoint =
    336 						<&funnel_soc_in_port>;
    337 					};
    338 				};
    339 			};
    340 
    341 			in-ports {
    342 				#address-cells = <1>;
    343 				#size-cells = <0>;
    344 
    345 				port@0 {
    346 					reg = <0>;
    347 					funnel_ca55_in_port0: endpoint {
    348 						remote-endpoint =
    349 						<&etf_little_out>;
    350 					};
    351 				};
    352 
    353 				port@1 {
    354 					reg = <1>;
    355 					funnel_ca55_in_port1: endpoint {
    356 						remote-endpoint =
    357 						<&etf_big_out>;
    358 					};
    359 				};
    360 			};
    361 		};
    362 
    363 		funnel@12005000 {
    364 			compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
    365 			reg = <0 0x12005000 0 0x1000>;
    366 			clocks = <&ext_26m>;
    367 			clock-names = "apb_pclk";
    368 
    369 			out-ports {
    370 				port {
    371 					funnel_big_out_port: endpoint {
    372 						remote-endpoint =
    373 						<&etf_big_in>;
    374 					};
    375 				};
    376 			};
    377 
    378 			in-ports {
    379 				#address-cells = <1>;
    380 				#size-cells = <0>;
    381 
    382 				port@0 {
    383 					reg = <0>;
    384 					funnel_big_in_port0: endpoint {
    385 						remote-endpoint = <&etm4_out>;
    386 					};
    387 				};
    388 
    389 				port@1 {
    390 					reg = <1>;
    391 					funnel_big_in_port1: endpoint {
    392 						remote-endpoint = <&etm5_out>;
    393 					};
    394 				};
    395 
    396 				port@2 {
    397 					reg = <2>;
    398 					funnel_big_in_port2: endpoint {
    399 						remote-endpoint = <&etm6_out>;
    400 					};
    401 				};
    402 
    403 				port@3 {
    404 					reg = <3>;
    405 					funnel_big_in_port3: endpoint {
    406 						remote-endpoint = <&etm7_out>;
    407 					};
    408 				};
    409 			};
    410 		};
    411 
    412 		etm@13040000 {
    413 			compatible = "arm,coresight-etm4x", "arm,primecell";
    414 			reg = <0 0x13040000 0 0x1000>;
    415 			cpu = <&CPU0>;
    416 			clocks = <&ext_26m>;
    417 			clock-names = "apb_pclk";
    418 
    419 			out-ports {
    420 				port {
    421 					etm0_out: endpoint {
    422 						remote-endpoint =
    423 						<&funnel_little_in_port0>;
    424 					};
    425 				};
    426 			};
    427 		};
    428 
    429 		etm@13140000 {
    430 			compatible = "arm,coresight-etm4x", "arm,primecell";
    431 			reg = <0 0x13140000 0 0x1000>;
    432 			cpu = <&CPU1>;
    433 			clocks = <&ext_26m>;
    434 			clock-names = "apb_pclk";
    435 
    436 			out-ports {
    437 				port {
    438 					etm1_out: endpoint {
    439 						remote-endpoint =
    440 						<&funnel_little_in_port1>;
    441 					};
    442 				};
    443 			};
    444 		};
    445 
    446 		etm@13240000 {
    447 			compatible = "arm,coresight-etm4x", "arm,primecell";
    448 			reg = <0 0x13240000 0 0x1000>;
    449 			cpu = <&CPU2>;
    450 			clocks = <&ext_26m>;
    451 			clock-names = "apb_pclk";
    452 
    453 			out-ports {
    454 				port {
    455 					etm2_out: endpoint {
    456 						remote-endpoint =
    457 						<&funnel_little_in_port2>;
    458 					};
    459 				};
    460 			};
    461 		};
    462 
    463 		etm@13340000 {
    464 			compatible = "arm,coresight-etm4x", "arm,primecell";
    465 			reg = <0 0x13340000 0 0x1000>;
    466 			cpu = <&CPU3>;
    467 			clocks = <&ext_26m>;
    468 			clock-names = "apb_pclk";
    469 
    470 			out-ports {
    471 				port {
    472 					etm3_out: endpoint {
    473 						remote-endpoint =
    474 						<&funnel_little_in_port3>;
    475 					};
    476 				};
    477 			};
    478 		};
    479 
    480 		etm@13440000 {
    481 			compatible = "arm,coresight-etm4x", "arm,primecell";
    482 			reg = <0 0x13440000 0 0x1000>;
    483 			cpu = <&CPU4>;
    484 			clocks = <&ext_26m>;
    485 			clock-names = "apb_pclk";
    486 
    487 			out-ports {
    488 				port {
    489 					etm4_out: endpoint {
    490 						remote-endpoint =
    491 						<&funnel_big_in_port0>;
    492 					};
    493 				};
    494 			};
    495 		};
    496 
    497 		etm@13540000 {
    498 			compatible = "arm,coresight-etm4x", "arm,primecell";
    499 			reg = <0 0x13540000 0 0x1000>;
    500 			cpu = <&CPU5>;
    501 			clocks = <&ext_26m>;
    502 			clock-names = "apb_pclk";
    503 
    504 			out-ports {
    505 				port {
    506 					etm5_out: endpoint {
    507 						remote-endpoint =
    508 						<&funnel_big_in_port1>;
    509 					};
    510 				};
    511 			};
    512 		};
    513 
    514 		etm@13640000 {
    515 			compatible = "arm,coresight-etm4x", "arm,primecell";
    516 			reg = <0 0x13640000 0 0x1000>;
    517 			cpu = <&CPU6>;
    518 			clocks = <&ext_26m>;
    519 			clock-names = "apb_pclk";
    520 
    521 			out-ports {
    522 				port {
    523 					etm6_out: endpoint {
    524 						remote-endpoint =
    525 						<&funnel_big_in_port2>;
    526 					};
    527 				};
    528 			};
    529 		};
    530 
    531 		etm@13740000 {
    532 			compatible = "arm,coresight-etm4x", "arm,primecell";
    533 			reg = <0 0x13740000 0 0x1000>;
    534 			cpu = <&CPU7>;
    535 			clocks = <&ext_26m>;
    536 			clock-names = "apb_pclk";
    537 
    538 			out-ports {
    539 				port {
    540 					etm7_out: endpoint {
    541 						remote-endpoint =
    542 						<&funnel_big_in_port3>;
    543 					};
    544 				};
    545 			};
    546 		};
    547 
    548 		ap-ahb {
    549 			compatible = "simple-bus";
    550 			#address-cells = <2>;
    551 			#size-cells = <2>;
    552 			ranges;
    553 
    554 			sdio0: sdio@20300000 {
    555 				compatible  = "sprd,sdhci-r11";
    556 				reg = <0 0x20300000 0 0x1000>;
    557 				interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
    558 
    559 				clock-names = "sdio", "enable";
    560 				clocks = <&aon_clk CLK_SDIO0_2X>,
    561 					 <&apahb_gate CLK_SDIO0_EB>;
    562 				assigned-clocks = <&aon_clk CLK_SDIO0_2X>;
    563 				assigned-clock-parents = <&rpll CLK_RPLL_390M>;
    564 
    565 				bus-width = <4>;
    566 				no-sdio;
    567 				no-mmc;
    568 			};
    569 
    570 			sdio3: sdio@20600000 {
    571 				compatible  = "sprd,sdhci-r11";
    572 				reg = <0 0x20600000 0 0x1000>;
    573 				interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
    574 
    575 				clock-names = "sdio", "enable";
    576 				clocks = <&aon_clk CLK_EMMC_2X>,
    577 					 <&apahb_gate CLK_EMMC_EB>;
    578 				assigned-clocks = <&aon_clk CLK_EMMC_2X>;
    579 				assigned-clock-parents = <&rpll CLK_RPLL_390M>;
    580 
    581 				bus-width = <8>;
    582 				non-removable;
    583 				no-sdio;
    584 				no-sd;
    585 				cap-mmc-hw-reset;
    586 			};
    587 		};
    588 	};
    589 };
    590