ums512.dtsi 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918
  1. // SPDX-License-Identifier: (GPL-2.0 OR MIT)
  2. /*
  3. * Unisoc UMS512 SoC DTS file
  4. *
  5. * Copyright (C) 2021, Unisoc Inc.
  6. */
  7. #include <dt-bindings/clock/sprd,ums512-clk.h>
  8. #include <dt-bindings/interrupt-controller/arm-gic.h>
  9. / {
  10. interrupt-parent = <&gic>;
  11. #address-cells = <2>;
  12. #size-cells = <2>;
  13. cpus {
  14. #address-cells = <2>;
  15. #size-cells = <0>;
  16. cpu-map {
  17. cluster0 {
  18. core0 {
  19. cpu = <&CPU0>;
  20. };
  21. core1 {
  22. cpu = <&CPU1>;
  23. };
  24. core2 {
  25. cpu = <&CPU2>;
  26. };
  27. core3 {
  28. cpu = <&CPU3>;
  29. };
  30. core4 {
  31. cpu = <&CPU4>;
  32. };
  33. core5 {
  34. cpu = <&CPU5>;
  35. };
  36. core6 {
  37. cpu = <&CPU6>;
  38. };
  39. core7 {
  40. cpu = <&CPU7>;
  41. };
  42. };
  43. };
  44. CPU0: cpu@0 {
  45. device_type = "cpu";
  46. compatible = "arm,cortex-a55";
  47. reg = <0x0 0x0>;
  48. enable-method = "psci";
  49. cpu-idle-states = <&CORE_PD>;
  50. };
  51. CPU1: cpu@100 {
  52. device_type = "cpu";
  53. compatible = "arm,cortex-a55";
  54. reg = <0x0 0x100>;
  55. enable-method = "psci";
  56. cpu-idle-states = <&CORE_PD>;
  57. };
  58. CPU2: cpu@200 {
  59. device_type = "cpu";
  60. compatible = "arm,cortex-a55";
  61. reg = <0x0 0x200>;
  62. enable-method = "psci";
  63. cpu-idle-states = <&CORE_PD>;
  64. };
  65. CPU3: cpu@300 {
  66. device_type = "cpu";
  67. compatible = "arm,cortex-a55";
  68. reg = <0x0 0x300>;
  69. enable-method = "psci";
  70. cpu-idle-states = <&CORE_PD>;
  71. };
  72. CPU4: cpu@400 {
  73. device_type = "cpu";
  74. compatible = "arm,cortex-a55";
  75. reg = <0x0 0x400>;
  76. enable-method = "psci";
  77. cpu-idle-states = <&CORE_PD>;
  78. };
  79. CPU5: cpu@500 {
  80. device_type = "cpu";
  81. compatible = "arm,cortex-a55";
  82. reg = <0x0 0x500>;
  83. enable-method = "psci";
  84. cpu-idle-states = <&CORE_PD>;
  85. };
  86. CPU6: cpu@600 {
  87. device_type = "cpu";
  88. compatible = "arm,cortex-a75";
  89. reg = <0x0 0x600>;
  90. enable-method = "psci";
  91. cpu-idle-states = <&CORE_PD>;
  92. };
  93. CPU7: cpu@700 {
  94. device_type = "cpu";
  95. compatible = "arm,cortex-a75";
  96. reg = <0x0 0x700>;
  97. enable-method = "psci";
  98. cpu-idle-states = <&CORE_PD>;
  99. };
  100. };
  101. idle-states {
  102. entry-method = "psci";
  103. CORE_PD: cpu-pd {
  104. compatible = "arm,idle-state";
  105. entry-latency-us = <4000>;
  106. exit-latency-us = <4000>;
  107. min-residency-us = <10000>;
  108. local-timer-stop;
  109. arm,psci-suspend-param = <0x00010000>;
  110. };
  111. };
  112. psci {
  113. compatible = "arm,psci-0.2";
  114. method = "smc";
  115. };
  116. timer {
  117. compatible = "arm,armv8-timer";
  118. interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>, /* Physical Secure PPI */
  119. <GIC_PPI 14 IRQ_TYPE_LEVEL_HIGH>, /* Physical Non-Secure PPI */
  120. <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH>, /* Virtual PPI */
  121. <GIC_PPI 10 IRQ_TYPE_LEVEL_HIGH>; /* Hipervisor PPI */
  122. };
  123. pmu-a55 {
  124. compatible = "arm,cortex-a55-pmu";
  125. interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>,
  126. <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>,
  127. <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>,
  128. <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>,
  129. <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>,
  130. <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
  131. interrupt-affinity = <&CPU0>, <&CPU1>, <&CPU2>, <&CPU3>, <&CPU4>, <&CPU5>;
  132. };
  133. pmu-a75 {
  134. compatible = "arm,cortex-a75-pmu";
  135. interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
  136. <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
  137. interrupt-affinity = <&CPU6>, <&CPU7>;
  138. };
  139. soc: soc {
  140. compatible = "simple-bus";
  141. #address-cells = <2>;
  142. #size-cells = <2>;
  143. ranges;
  144. gic: interrupt-controller@12000000 {
  145. compatible = "arm,gic-v3";
  146. reg = <0x0 0x12000000 0 0x20000>, /* GICD */
  147. <0x0 0x12040000 0 0x100000>; /* GICR */
  148. #interrupt-cells = <3>;
  149. #address-cells = <2>;
  150. #size-cells = <2>;
  151. ranges;
  152. redistributor-stride = <0x0 0x20000>; /* 128KB stride */
  153. #redistributor-regions = <1>;
  154. interrupt-controller;
  155. interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
  156. };
  157. ap_ahb_regs: syscon@20100000 {
  158. compatible = "sprd,ums512-glbregs", "syscon",
  159. "simple-mfd";
  160. reg = <0 0x20100000 0 0x4000>;
  161. #address-cells = <1>;
  162. #size-cells = <1>;
  163. ranges = <0 0 0x20100000 0x4000>;
  164. apahb_gate: clock-controller@0 {
  165. compatible = "sprd,ums512-apahb-gate";
  166. reg = <0x0 0x3000>;
  167. clocks = <&ext_26m>;
  168. clock-names = "ext-26m";
  169. #clock-cells = <1>;
  170. };
  171. };
  172. pub_apb_regs: syscon@31050000 {
  173. compatible = "sprd,ums512-glbregs", "syscon",
  174. "simple-mfd";
  175. reg = <0 0x31050000 0 0x9000>;
  176. };
  177. top_dvfs_apb_regs: syscon@322a0000 {
  178. compatible = "sprd,ums512-glbregs", "syscon",
  179. "simple-mfd";
  180. reg = <0 0x322a0000 0 0x8000>;
  181. };
  182. ap_intc0_regs: syscon@32310000 {
  183. compatible = "sprd,ums512-glbregs", "syscon",
  184. "simple-mfd";
  185. reg = <0 0x32310000 0 0x1000>;
  186. };
  187. ap_intc1_regs: syscon@32320000 {
  188. compatible = "sprd,ums512-glbregs", "syscon",
  189. "simple-mfd";
  190. reg = <0 0x32320000 0 0x1000>;
  191. };
  192. ap_intc2_regs: syscon@32330000 {
  193. compatible = "sprd,ums512-glbregs", "syscon",
  194. "simple-mfd";
  195. reg = <0 0x32330000 0 0x1000>;
  196. };
  197. ap_intc3_regs: syscon@32340000 {
  198. compatible = "sprd,ums512-glbregs", "syscon",
  199. "simple-mfd";
  200. reg = <0 0x32340000 0 0x1000>;
  201. };
  202. ap_intc4_regs: syscon@32350000 {
  203. compatible = "sprd,ums512-glbregs", "syscon",
  204. "simple-mfd";
  205. reg = <0 0x32350000 0 0x1000>;
  206. };
  207. ap_intc5_regs: syscon@32360000 {
  208. compatible = "sprd,ums512-glbregs", "syscon",
  209. "simple-mfd";
  210. reg = <0 0x32360000 0 0x1000>;
  211. };
  212. anlg_phy_g0_regs: syscon@32390000 {
  213. compatible = "sprd,ums512-glbregs", "syscon",
  214. "simple-mfd";
  215. reg = <0 0x32390000 0 0x3000>;
  216. #address-cells = <1>;
  217. #size-cells = <1>;
  218. ranges = <0 0 0x32390000 0x3000>;
  219. dpll0: clock-controller@0 {
  220. compatible = "sprd,ums512-g0-pll";
  221. reg = <0x0 0x100>;
  222. #clock-cells = <1>;
  223. };
  224. };
  225. anlg_phy_g2_regs: syscon@323b0000 {
  226. compatible = "sprd,ums512-glbregs", "syscon",
  227. "simple-mfd";
  228. reg = <0 0x323b0000 0 0x3000>;
  229. #address-cells = <1>;
  230. #size-cells = <1>;
  231. ranges = <0 0 0x323b0000 0x3000>;
  232. mpll1: clock-controller@0 {
  233. compatible = "sprd,ums512-g2-pll";
  234. reg = <0x0 0x100>;
  235. #clock-cells = <1>;
  236. };
  237. };
  238. anlg_phy_g3_regs: syscon@323c0000 {
  239. compatible = "sprd,ums512-glbregs", "syscon",
  240. "simple-mfd";
  241. reg = <0 0x323c0000 0 0x3000>;
  242. #address-cells = <1>;
  243. #size-cells = <1>;
  244. ranges = <0 0 0x323c0000 0x3000>;
  245. pll1: clock-controller@0 {
  246. compatible = "sprd,ums512-g3-pll";
  247. reg = <0x0 0x3000>;
  248. clocks = <&ext_26m>;
  249. clock-names = "ext-26m";
  250. #clock-cells = <1>;
  251. };
  252. };
  253. anlg_phy_gc_regs: syscon@323e0000 {
  254. compatible = "sprd,ums512-glbregs", "syscon",
  255. "simple-mfd";
  256. reg = <0 0x323e0000 0 0x3000>;
  257. #address-cells = <1>;
  258. #size-cells = <1>;
  259. ranges = <0 0 0x323e0000 0x3000>;
  260. pll2: clock-controller@0 {
  261. compatible = "sprd,ums512-gc-pll";
  262. reg = <0x0 0x100>;
  263. clocks = <&ext_26m>;
  264. clock-names = "ext-26m";
  265. #clock-cells = <1>;
  266. };
  267. };
  268. anlg_phy_g10_regs: syscon@323f0000 {
  269. compatible = "sprd,ums512-glbregs", "syscon",
  270. "simple-mfd";
  271. reg = <0 0x323f0000 0 0x3000>;
  272. };
  273. aon_apb_regs: syscon@327d0000 {
  274. compatible = "sprd,ums512-glbregs", "syscon",
  275. "simple-mfd";
  276. reg = <0 0x327d0000 0 0x3000>;
  277. #address-cells = <1>;
  278. #size-cells = <1>;
  279. ranges = <0 0 0x327d0000 0x3000>;
  280. aonapb_gate: clock-controller@0 {
  281. compatible = "sprd,ums512-aon-gate";
  282. reg = <0x0 0x3000>;
  283. clocks = <&ext_26m>;
  284. clock-names = "ext-26m";
  285. #clock-cells = <1>;
  286. };
  287. };
  288. pmu_apb_regs: syscon@327e0000 {
  289. compatible = "sprd,ums512-glbregs", "syscon",
  290. "simple-mfd";
  291. reg = <0 0x327e0000 0 0x3000>;
  292. #address-cells = <1>;
  293. #size-cells = <1>;
  294. ranges = <0 0 0x327e0000 0x3000>;
  295. pmu_gate: clock-controller@0 {
  296. compatible = "sprd,ums512-pmu-gate";
  297. reg = <0x0 0x3000>;
  298. clocks = <&ext_26m>;
  299. clock-names = "ext-26m";
  300. #clock-cells = <1>;
  301. };
  302. };
  303. audcp_apb_regs: syscon@3350d000 {
  304. compatible = "sprd,ums512-glbregs", "syscon",
  305. "simple-mfd";
  306. reg = <0 0x3350d000 0 0x1000>;
  307. #address-cells = <1>;
  308. #size-cells = <1>;
  309. ranges = <0 0 0x3350d000 0x1000>;
  310. audcpapb_gate: clock-controller@0 {
  311. compatible = "sprd,ums512-audcpapb-gate";
  312. reg = <0x0 0x300>;
  313. #clock-cells = <1>;
  314. };
  315. };
  316. audcp_ahb_regs: syscon@335e0000 {
  317. compatible = "sprd,ums512-glbregs", "syscon",
  318. "simple-mfd";
  319. reg = <0 0x335e0000 0 0x1000>;
  320. #address-cells = <1>;
  321. #size-cells = <1>;
  322. ranges = <0 0 0x335e0000 0x1000>;
  323. audcpahb_gate: clock-controller@0 {
  324. compatible = "sprd,ums512-audcpahb-gate";
  325. reg = <0x0 0x300>;
  326. #clock-cells = <1>;
  327. };
  328. };
  329. gpu_apb_regs: syscon@60100000 {
  330. compatible = "sprd,ums512-glbregs", "syscon",
  331. "simple-mfd";
  332. reg = <0 0x60100000 0 0x3000>;
  333. #address-cells = <1>;
  334. #size-cells = <1>;
  335. ranges = <0 0 0x60100000 0x3000>;
  336. gpu_clk: clock-controller@0 {
  337. compatible = "sprd,ums512-gpu-clk";
  338. clocks = <&ext_26m>;
  339. clock-names = "ext-26m";
  340. reg = <0x0 0x100>;
  341. #clock-cells = <1>;
  342. };
  343. };
  344. gpu_dvfs_apb_regs: syscon@60110000 {
  345. compatible = "sprd,ums512-glbregs", "syscon",
  346. "simple-mfd";
  347. reg = <0 0x60110000 0 0x3000>;
  348. };
  349. mm_ahb_regs: syscon@62200000 {
  350. compatible = "sprd,ums512-glbregs", "syscon",
  351. "simple-mfd";
  352. reg = <0 0x62200000 0 0x3000>;
  353. #address-cells = <1>;
  354. #size-cells = <1>;
  355. ranges = <0 0 0x62200000 0x3000>;
  356. mm_gate: clock-controller@0 {
  357. compatible = "sprd,ums512-mm-gate-clk";
  358. reg = <0x0 0x3000>;
  359. #clock-cells = <1>;
  360. };
  361. };
  362. ap_apb_regs: syscon@71000000 {
  363. compatible = "sprd,ums512-glbregs", "syscon",
  364. "simple-mfd";
  365. reg = <0 0x71000000 0 0x3000>;
  366. #address-cells = <1>;
  367. #size-cells = <1>;
  368. ranges = <0 0 0x71000000 0x3000>;
  369. apapb_gate: clock-controller@0 {
  370. compatible = "sprd,ums512-apapb-gate";
  371. reg = <0x0 0x3000>;
  372. #clock-cells = <1>;
  373. };
  374. };
  375. ap_clk: clock-controller@20200000 {
  376. compatible = "sprd,ums512-ap-clk";
  377. reg = <0 0x20200000 0 0x1000>;
  378. clocks = <&ext_26m>;
  379. clock-names = "ext-26m";
  380. #clock-cells = <1>;
  381. };
  382. aon_clk: clock-controller@32080000 {
  383. compatible = "sprd,ums512-aonapb-clk";
  384. reg = <0 0x32080000 0 0x1000>;
  385. clocks = <&ext_26m>, <&ext_32k>,
  386. <&ext_4m>, <&rco_100m>;
  387. clock-names = "ext-26m", "ext-32k",
  388. "ext-4m", "rco-100m";
  389. #clock-cells = <1>;
  390. };
  391. mm_clk: clock-controller@62100000 {
  392. compatible = "sprd,ums512-mm-clk";
  393. reg = <0 0x62100000 0 0x1000>;
  394. clocks = <&ext_26m>;
  395. clock-names = "ext-26m";
  396. #clock-cells = <1>;
  397. };
  398. /* SoC Funnel */
  399. funnel@3c002000 {
  400. compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
  401. reg = <0 0x3c002000 0 0x1000>;
  402. clocks = <&ext_26m>;
  403. clock-names = "apb_pclk";
  404. out-ports {
  405. port {
  406. funnel_soc_out_port: endpoint {
  407. remote-endpoint = <&etb_in>;
  408. };
  409. };
  410. };
  411. in-ports {
  412. #address-cells = <1>;
  413. #size-cells = <0>;
  414. port@1 {
  415. reg = <1>;
  416. funnel_soc_in_port: endpoint {
  417. remote-endpoint =
  418. <&funnel_corinth_out_port>;
  419. };
  420. };
  421. };
  422. };
  423. /* SoC ETF */
  424. soc_etb: etb@3c003000 {
  425. compatible = "arm,coresight-tmc", "arm,primecell";
  426. reg = <0 0x3c003000 0 0x1000>;
  427. clocks = <&ext_26m>;
  428. clock-names = "apb_pclk";
  429. in-ports {
  430. port {
  431. etb_in: endpoint {
  432. remote-endpoint =
  433. <&funnel_soc_out_port>;
  434. };
  435. };
  436. };
  437. };
  438. /* AP-CPU Funnel for core3/4/5/7 */
  439. funnel@3e001000 {
  440. compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
  441. reg = <0 0x3e001000 0 0x1000>;
  442. clocks = <&ext_26m>;
  443. clock-names = "apb_pclk";
  444. out-ports {
  445. port {
  446. funnel_corinth_lit_out_port: endpoint {
  447. remote-endpoint =
  448. <&corinth_etf_lit_in>;
  449. };
  450. };
  451. };
  452. in-ports {
  453. #address-cells = <1>;
  454. #size-cells = <0>;
  455. port@0 {
  456. reg = <0>;
  457. funnel_core_in_port3: endpoint {
  458. remote-endpoint = <&etm3_out>;
  459. };
  460. };
  461. port@1 {
  462. reg = <1>;
  463. funnel_core_in_port4: endpoint {
  464. remote-endpoint = <&etm4_out>;
  465. };
  466. };
  467. port@2 {
  468. reg = <2>;
  469. funnel_core_in_port5: endpoint {
  470. remote-endpoint = <&etm5_out>;
  471. };
  472. };
  473. port@3 {
  474. reg = <3>;
  475. funnel_core_in_port7: endpoint {
  476. remote-endpoint = <&etm7_out>;
  477. };
  478. };
  479. };
  480. };
  481. /* AP-CPU ETF for little cores */
  482. etf@3e002000 {
  483. compatible = "arm,coresight-tmc", "arm,primecell";
  484. reg = <0 0x3e002000 0 0x1000>;
  485. clocks = <&ext_26m>;
  486. clock-names = "apb_pclk";
  487. out-ports {
  488. port {
  489. corinth_etf_lit_out: endpoint {
  490. remote-endpoint =
  491. <&funnel_corinth_from_lit_in_port>;
  492. };
  493. };
  494. };
  495. in-ports {
  496. port {
  497. corinth_etf_lit_in: endpoint {
  498. remote-endpoint =
  499. <&funnel_corinth_lit_out_port>;
  500. };
  501. };
  502. };
  503. };
  504. /* AP-CPU ETF for big cores */
  505. etf@3e003000 {
  506. compatible = "arm,coresight-tmc", "arm,primecell";
  507. reg = <0 0x3e003000 0 0x1000>;
  508. clocks = <&ext_26m>;
  509. clock-names = "apb_pclk";
  510. out-ports {
  511. port {
  512. corinth_etf_big_out: endpoint {
  513. remote-endpoint =
  514. <&funnel_corinth_from_big_in_port>;
  515. };
  516. };
  517. };
  518. in-ports {
  519. port {
  520. corinth_etf_big_in: endpoint {
  521. remote-endpoint =
  522. <&funnel_corinth_big_out_port>;
  523. };
  524. };
  525. };
  526. };
  527. /* Funnel to SoC */
  528. funnel@3e004000 {
  529. compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
  530. reg = <0 0x3e004000 0 0x1000>;
  531. clocks = <&ext_26m>;
  532. clock-names = "apb_pclk";
  533. out-ports {
  534. port {
  535. funnel_corinth_out_port: endpoint {
  536. remote-endpoint =
  537. <&funnel_soc_in_port>;
  538. };
  539. };
  540. };
  541. in-ports {
  542. #address-cells = <1>;
  543. #size-cells = <0>;
  544. port@0 {
  545. reg = <0>;
  546. funnel_corinth_from_lit_in_port: endpoint {
  547. remote-endpoint = <&corinth_etf_lit_out>;
  548. };
  549. };
  550. port@1 {
  551. reg = <1>;
  552. funnel_corinth_from_big_in_port: endpoint {
  553. remote-endpoint = <&corinth_etf_big_out>;
  554. };
  555. };
  556. };
  557. };
  558. /* AP-CPU Funnel for core0/1/2/6 */
  559. funnel@3e005000 {
  560. compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
  561. reg = <0 0x3e005000 0 0x1000>;
  562. clocks = <&ext_26m>;
  563. clock-names = "apb_pclk";
  564. out-ports {
  565. port {
  566. funnel_corinth_big_out_port: endpoint {
  567. remote-endpoint = <&corinth_etf_big_in>;
  568. };
  569. };
  570. };
  571. in-ports {
  572. #address-cells = <1>;
  573. #size-cells = <0>;
  574. port@0 {
  575. reg = <0>;
  576. funnel_core_in_port0: endpoint {
  577. remote-endpoint = <&etm0_out>;
  578. };
  579. };
  580. port@1 {
  581. reg = <1>;
  582. funnel_core_in_port1: endpoint {
  583. remote-endpoint = <&etm1_out>;
  584. };
  585. };
  586. port@2 {
  587. reg = <2>;
  588. funnel_core_in_port2: endpoint {
  589. remote-endpoint = <&etm2_out>;
  590. };
  591. };
  592. port@3 {
  593. reg = <3>;
  594. funnel_core_in_port6: endpoint {
  595. remote-endpoint = <&etm6_out>;
  596. };
  597. };
  598. };
  599. };
  600. etm0: etm@3f040000 {
  601. compatible = "arm,coresight-etm4x", "arm,primecell";
  602. reg = <0 0x3f040000 0 0x1000>;
  603. cpu = <&CPU0>;
  604. clocks = <&ext_26m>;
  605. clock-names = "apb_pclk";
  606. out-ports {
  607. port {
  608. etm0_out: endpoint {
  609. remote-endpoint =
  610. <&funnel_core_in_port0>;
  611. };
  612. };
  613. };
  614. };
  615. etm1: etm@3f140000 {
  616. compatible = "arm,coresight-etm4x", "arm,primecell";
  617. reg = <0 0x3f140000 0 0x1000>;
  618. cpu = <&CPU1>;
  619. clocks = <&ext_26m>;
  620. clock-names = "apb_pclk";
  621. out-ports {
  622. port {
  623. etm1_out: endpoint {
  624. remote-endpoint =
  625. <&funnel_core_in_port1>;
  626. };
  627. };
  628. };
  629. };
  630. etm2: etm@3f240000 {
  631. compatible = "arm,coresight-etm4x", "arm,primecell";
  632. reg = <0 0x3f240000 0 0x1000>;
  633. cpu = <&CPU2>;
  634. clocks = <&ext_26m>;
  635. clock-names = "apb_pclk";
  636. out-ports {
  637. port {
  638. etm2_out: endpoint {
  639. remote-endpoint =
  640. <&funnel_core_in_port2>;
  641. };
  642. };
  643. };
  644. };
  645. etm3: etm@3f340000 {
  646. compatible = "arm,coresight-etm4x", "arm,primecell";
  647. reg = <0 0x3f340000 0 0x1000>;
  648. cpu = <&CPU3>;
  649. clocks = <&ext_26m>;
  650. clock-names = "apb_pclk";
  651. out-ports {
  652. port {
  653. etm3_out: endpoint {
  654. remote-endpoint =
  655. <&funnel_core_in_port3>;
  656. };
  657. };
  658. };
  659. };
  660. etm4: etm@3f440000 {
  661. compatible = "arm,coresight-etm4x", "arm,primecell";
  662. reg = <0 0x3f440000 0 0x1000>;
  663. cpu = <&CPU4>;
  664. clocks = <&ext_26m>;
  665. clock-names = "apb_pclk";
  666. out-ports {
  667. port {
  668. etm4_out: endpoint {
  669. remote-endpoint =
  670. <&funnel_core_in_port4>;
  671. };
  672. };
  673. };
  674. };
  675. etm5: etm@3f540000 {
  676. compatible = "arm,coresight-etm4x", "arm,primecell";
  677. reg = <0 0x3f540000 0 0x1000>;
  678. cpu = <&CPU5>;
  679. clocks = <&ext_26m>;
  680. clock-names = "apb_pclk";
  681. out-ports {
  682. port {
  683. etm5_out: endpoint {
  684. remote-endpoint =
  685. <&funnel_core_in_port5>;
  686. };
  687. };
  688. };
  689. };
  690. etm6: etm@3f640000 {
  691. compatible = "arm,coresight-etm4x", "arm,primecell";
  692. reg = <0 0x3f640000 0 0x1000>;
  693. cpu = <&CPU6>;
  694. clocks = <&ext_26m>;
  695. clock-names = "apb_pclk";
  696. out-ports {
  697. port {
  698. etm6_out: endpoint {
  699. remote-endpoint =
  700. <&funnel_core_in_port6>;
  701. };
  702. };
  703. };
  704. };
  705. etm7: etm@3f740000 {
  706. compatible = "arm,coresight-etm4x", "arm,primecell";
  707. reg = <0 0x3f740000 0 0x1000>;
  708. cpu = <&CPU7>;
  709. clocks = <&ext_26m>;
  710. clock-names = "apb_pclk";
  711. out-ports {
  712. port {
  713. etm7_out: endpoint {
  714. remote-endpoint =
  715. <&funnel_core_in_port7>;
  716. };
  717. };
  718. };
  719. };
  720. apb@70000000 {
  721. compatible = "simple-bus";
  722. #address-cells = <1>;
  723. #size-cells = <1>;
  724. ranges = <0 0x0 0x70000000 0x10000000>;
  725. uart0: serial@0 {
  726. compatible = "sprd,ums512-uart",
  727. "sprd,sc9836-uart";
  728. reg = <0x0 0x100>;
  729. interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
  730. clocks = <&ext_26m>;
  731. status = "disabled";
  732. };
  733. uart1: serial@100000 {
  734. compatible = "sprd,ums512-uart",
  735. "sprd,sc9836-uart";
  736. reg = <0x100000 0x100>;
  737. interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
  738. clocks = <&ext_26m>;
  739. status = "disabled";
  740. };
  741. sdio0: mmc@1100000 {
  742. compatible = "sprd,sdhci-r11";
  743. reg = <0x1100000 0x1000>;
  744. interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
  745. clocks = <&ap_clk CLK_SDIO0_2X>,
  746. <&apapb_gate CLK_SDIO0_EB>;
  747. clock-names = "sdio", "enable";
  748. assigned-clocks = <&ap_clk CLK_SDIO0_2X>;
  749. assigned-clock-parents = <&pll1 CLK_RPLL>;
  750. status = "disabled";
  751. };
  752. sdio3: mmc@1400000 {
  753. compatible = "sprd,sdhci-r11";
  754. reg = <0x1400000 0x1000>;
  755. interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
  756. clocks = <&ap_clk CLK_EMMC_2X>,
  757. <&apapb_gate CLK_EMMC_EB>;
  758. clock-names = "sdio", "enable";
  759. assigned-clocks = <&ap_clk CLK_EMMC_2X>;
  760. assigned-clock-parents = <&pll1 CLK_RPLL>;
  761. status = "disabled";
  762. };
  763. };
  764. aon: bus@32000000 {
  765. compatible = "simple-bus";
  766. #address-cells = <1>;
  767. #size-cells = <1>;
  768. ranges = <0 0x0 0x32000000 0x1000000>;
  769. adi_bus: spi@100000 {
  770. compatible = "sprd,ums512-adi";
  771. reg = <0x100000 0x100000>;
  772. #address-cells = <1>;
  773. #size-cells = <0>;
  774. sprd,hw-channels = <2 0x18cc>, <3 0x18cc>, <13 0x1854>, <15 0x1874>,
  775. <17 0x1844>,<19 0x1844>, <21 0x1864>, <30 0x1820>,
  776. <35 0x19b8>, <39 0x19ac>;
  777. };
  778. };
  779. };
  780. ext_26m: clk-26m {
  781. compatible = "fixed-clock";
  782. #clock-cells = <0>;
  783. clock-frequency = <26000000>;
  784. clock-output-names = "ext-26m";
  785. };
  786. ext_32k: clk-32k {
  787. compatible = "fixed-clock";
  788. #clock-cells = <0>;
  789. clock-frequency = <32768>;
  790. clock-output-names = "ext-32k";
  791. };
  792. ext_4m: clk-4m {
  793. compatible = "fixed-clock";
  794. #clock-cells = <0>;
  795. clock-frequency = <4000000>;
  796. clock-output-names = "ext-4m";
  797. };
  798. rco_100m: clk-100m {
  799. compatible = "fixed-clock";
  800. #clock-cells = <0>;
  801. clock-frequency = <100000000>;
  802. clock-output-names = "rco-100m";
  803. };
  804. };