vexpress-v2p-ca15_a7.dts 13 KB

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