msm8998.dtsi 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690
  1. // SPDX-License-Identifier: GPL-2.0
  2. /* Copyright (c) 2016, The Linux Foundation. All rights reserved. */
  3. #include <dt-bindings/interrupt-controller/arm-gic.h>
  4. #include <dt-bindings/clock/qcom,gcc-msm8998.h>
  5. / {
  6. interrupt-parent = <&intc>;
  7. qcom,msm-id = <292 0x0>;
  8. #address-cells = <2>;
  9. #size-cells = <2>;
  10. chosen { };
  11. memory {
  12. device_type = "memory";
  13. /* We expect the bootloader to fill in the reg */
  14. reg = <0 0 0 0>;
  15. };
  16. reserved-memory {
  17. #address-cells = <2>;
  18. #size-cells = <2>;
  19. ranges;
  20. memory@85800000 {
  21. reg = <0x0 0x85800000 0x0 0x800000>;
  22. no-map;
  23. };
  24. smem_mem: smem-mem@86000000 {
  25. reg = <0x0 0x86000000 0x0 0x200000>;
  26. no-map;
  27. };
  28. memory@86200000 {
  29. reg = <0x0 0x86200000 0x0 0x2600000>;
  30. no-map;
  31. };
  32. rmtfs {
  33. compatible = "qcom,rmtfs-mem";
  34. size = <0x0 0x200000>;
  35. alloc-ranges = <0x0 0xa0000000 0x0 0x2000000>;
  36. no-map;
  37. qcom,client-id = <1>;
  38. qcom,vmid = <15>;
  39. };
  40. };
  41. clocks {
  42. xo_board {
  43. compatible = "fixed-clock";
  44. #clock-cells = <0>;
  45. clock-frequency = <19200000>;
  46. };
  47. sleep_clk {
  48. compatible = "fixed-clock";
  49. #clock-cells = <0>;
  50. clock-frequency = <32764>;
  51. };
  52. };
  53. cpus {
  54. #address-cells = <2>;
  55. #size-cells = <0>;
  56. CPU0: cpu@0 {
  57. device_type = "cpu";
  58. compatible = "arm,armv8";
  59. reg = <0x0 0x0>;
  60. enable-method = "psci";
  61. efficiency = <1024>;
  62. next-level-cache = <&L2_0>;
  63. L2_0: l2-cache {
  64. compatible = "arm,arch-cache";
  65. cache-level = <2>;
  66. };
  67. L1_I_0: l1-icache {
  68. compatible = "arm,arch-cache";
  69. };
  70. L1_D_0: l1-dcache {
  71. compatible = "arm,arch-cache";
  72. };
  73. };
  74. CPU1: cpu@1 {
  75. device_type = "cpu";
  76. compatible = "arm,armv8";
  77. reg = <0x0 0x1>;
  78. enable-method = "psci";
  79. efficiency = <1024>;
  80. next-level-cache = <&L2_0>;
  81. L1_I_1: l1-icache {
  82. compatible = "arm,arch-cache";
  83. };
  84. L1_D_1: l1-dcache {
  85. compatible = "arm,arch-cache";
  86. };
  87. };
  88. CPU2: cpu@2 {
  89. device_type = "cpu";
  90. compatible = "arm,armv8";
  91. reg = <0x0 0x2>;
  92. enable-method = "psci";
  93. efficiency = <1024>;
  94. next-level-cache = <&L2_0>;
  95. L1_I_2: l1-icache {
  96. compatible = "arm,arch-cache";
  97. };
  98. L1_D_2: l1-dcache {
  99. compatible = "arm,arch-cache";
  100. };
  101. };
  102. CPU3: cpu@3 {
  103. device_type = "cpu";
  104. compatible = "arm,armv8";
  105. reg = <0x0 0x3>;
  106. enable-method = "psci";
  107. efficiency = <1024>;
  108. next-level-cache = <&L2_0>;
  109. L1_I_3: l1-icache {
  110. compatible = "arm,arch-cache";
  111. };
  112. L1_D_3: l1-dcache {
  113. compatible = "arm,arch-cache";
  114. };
  115. };
  116. CPU4: cpu@100 {
  117. device_type = "cpu";
  118. compatible = "arm,armv8";
  119. reg = <0x0 0x100>;
  120. enable-method = "psci";
  121. efficiency = <1536>;
  122. next-level-cache = <&L2_1>;
  123. L2_1: l2-cache {
  124. compatible = "arm,arch-cache";
  125. cache-level = <2>;
  126. };
  127. L1_I_100: l1-icache {
  128. compatible = "arm,arch-cache";
  129. };
  130. L1_D_100: l1-dcache {
  131. compatible = "arm,arch-cache";
  132. };
  133. };
  134. CPU5: cpu@101 {
  135. device_type = "cpu";
  136. compatible = "arm,armv8";
  137. reg = <0x0 0x101>;
  138. enable-method = "psci";
  139. efficiency = <1536>;
  140. next-level-cache = <&L2_1>;
  141. L1_I_101: l1-icache {
  142. compatible = "arm,arch-cache";
  143. };
  144. L1_D_101: l1-dcache {
  145. compatible = "arm,arch-cache";
  146. };
  147. };
  148. CPU6: cpu@102 {
  149. device_type = "cpu";
  150. compatible = "arm,armv8";
  151. reg = <0x0 0x102>;
  152. enable-method = "psci";
  153. efficiency = <1536>;
  154. next-level-cache = <&L2_1>;
  155. L1_I_102: l1-icache {
  156. compatible = "arm,arch-cache";
  157. };
  158. L1_D_102: l1-dcache {
  159. compatible = "arm,arch-cache";
  160. };
  161. };
  162. CPU7: cpu@103 {
  163. device_type = "cpu";
  164. compatible = "arm,armv8";
  165. reg = <0x0 0x103>;
  166. enable-method = "psci";
  167. efficiency = <1536>;
  168. next-level-cache = <&L2_1>;
  169. L1_I_103: l1-icache {
  170. compatible = "arm,arch-cache";
  171. };
  172. L1_D_103: l1-dcache {
  173. compatible = "arm,arch-cache";
  174. };
  175. };
  176. cpu-map {
  177. cluster0 {
  178. core0 {
  179. cpu = <&CPU0>;
  180. };
  181. core1 {
  182. cpu = <&CPU1>;
  183. };
  184. core2 {
  185. cpu = <&CPU2>;
  186. };
  187. core3 {
  188. cpu = <&CPU3>;
  189. };
  190. };
  191. cluster1 {
  192. core0 {
  193. cpu = <&CPU4>;
  194. };
  195. core1 {
  196. cpu = <&CPU5>;
  197. };
  198. core2 {
  199. cpu = <&CPU6>;
  200. };
  201. core3 {
  202. cpu = <&CPU7>;
  203. };
  204. };
  205. };
  206. };
  207. firmware {
  208. scm {
  209. compatible = "qcom,scm-msm8998";
  210. };
  211. };
  212. tcsr_mutex: hwlock {
  213. compatible = "qcom,tcsr-mutex";
  214. syscon = <&tcsr_mutex_regs 0 0x1000>;
  215. #hwlock-cells = <1>;
  216. };
  217. psci {
  218. compatible = "arm,psci-1.0";
  219. method = "smc";
  220. };
  221. rpm-glink {
  222. compatible = "qcom,glink-rpm";
  223. interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
  224. qcom,rpm-msg-ram = <&rpm_msg_ram>;
  225. mboxes = <&apcs_glb 0>;
  226. rpm_requests: rpm-requests {
  227. compatible = "qcom,rpm-msm8998";
  228. qcom,glink-channels = "rpm_requests";
  229. };
  230. };
  231. smem {
  232. compatible = "qcom,smem";
  233. memory-region = <&smem_mem>;
  234. hwlocks = <&tcsr_mutex 3>;
  235. };
  236. smp2p-lpass {
  237. compatible = "qcom,smp2p";
  238. qcom,smem = <443>, <429>;
  239. interrupts = <GIC_SPI 158 IRQ_TYPE_EDGE_RISING>;
  240. mboxes = <&apcs_glb 10>;
  241. qcom,local-pid = <0>;
  242. qcom,remote-pid = <2>;
  243. adsp_smp2p_out: master-kernel {
  244. qcom,entry-name = "master-kernel";
  245. #qcom,smem-state-cells = <1>;
  246. };
  247. adsp_smp2p_in: slave-kernel {
  248. qcom,entry-name = "slave-kernel";
  249. interrupt-controller;
  250. #interrupt-cells = <2>;
  251. };
  252. };
  253. smp2p-mpss {
  254. compatible = "qcom,smp2p";
  255. qcom,smem = <435>, <428>;
  256. interrupts = <GIC_SPI 451 IRQ_TYPE_EDGE_RISING>;
  257. mboxes = <&apcs_glb 14>;
  258. qcom,local-pid = <0>;
  259. qcom,remote-pid = <1>;
  260. modem_smp2p_out: master-kernel {
  261. qcom,entry-name = "master-kernel";
  262. #qcom,smem-state-cells = <1>;
  263. };
  264. modem_smp2p_in: slave-kernel {
  265. qcom,entry-name = "slave-kernel";
  266. interrupt-controller;
  267. #interrupt-cells = <2>;
  268. };
  269. };
  270. smp2p-slpi {
  271. compatible = "qcom,smp2p";
  272. qcom,smem = <481>, <430>;
  273. interrupts = <GIC_SPI 178 IRQ_TYPE_EDGE_RISING>;
  274. mboxes = <&apcs_glb 26>;
  275. qcom,local-pid = <0>;
  276. qcom,remote-pid = <3>;
  277. slpi_smp2p_out: master-kernel {
  278. qcom,entry-name = "master-kernel";
  279. #qcom,smem-state-cells = <1>;
  280. };
  281. slpi_smp2p_in: slave-kernel {
  282. qcom,entry-name = "slave-kernel";
  283. interrupt-controller;
  284. #interrupt-cells = <2>;
  285. };
  286. };
  287. thermal-zones {
  288. cpu-thermal0 {
  289. polling-delay-passive = <250>;
  290. polling-delay = <1000>;
  291. thermal-sensors = <&tsens0 6>;
  292. trips {
  293. cpu_alert0: trip0 {
  294. temperature = <75000>;
  295. hysteresis = <2000>;
  296. type = "passive";
  297. };
  298. cpu_crit0: trip1 {
  299. temperature = <110000>;
  300. hysteresis = <2000>;
  301. type = "critical";
  302. };
  303. };
  304. };
  305. cpu-thermal1 {
  306. polling-delay-passive = <250>;
  307. polling-delay = <1000>;
  308. thermal-sensors = <&tsens0 7>;
  309. trips {
  310. cpu_alert1: trip0 {
  311. temperature = <75000>;
  312. hysteresis = <2000>;
  313. type = "passive";
  314. };
  315. cpu_crit1: trip1 {
  316. temperature = <110000>;
  317. hysteresis = <2000>;
  318. type = "critical";
  319. };
  320. };
  321. };
  322. cpu-thermal2 {
  323. polling-delay-passive = <250>;
  324. polling-delay = <1000>;
  325. thermal-sensors = <&tsens0 8>;
  326. trips {
  327. cpu_alert2: trip0 {
  328. temperature = <75000>;
  329. hysteresis = <2000>;
  330. type = "passive";
  331. };
  332. cpu_crit2: trip1 {
  333. temperature = <110000>;
  334. hysteresis = <2000>;
  335. type = "critical";
  336. };
  337. };
  338. };
  339. cpu-thermal3 {
  340. polling-delay-passive = <250>;
  341. polling-delay = <1000>;
  342. thermal-sensors = <&tsens0 9>;
  343. trips {
  344. cpu_alert3: trip0 {
  345. temperature = <75000>;
  346. hysteresis = <2000>;
  347. type = "passive";
  348. };
  349. cpu_crit3: trip1 {
  350. temperature = <110000>;
  351. hysteresis = <2000>;
  352. type = "critical";
  353. };
  354. };
  355. };
  356. cpu-thermal4 {
  357. polling-delay-passive = <250>;
  358. polling-delay = <1000>;
  359. thermal-sensors = <&tsens0 10>;
  360. trips {
  361. cpu_alert4: trip0 {
  362. temperature = <75000>;
  363. hysteresis = <2000>;
  364. type = "passive";
  365. };
  366. cpu_crit4: trip1 {
  367. temperature = <110000>;
  368. hysteresis = <2000>;
  369. type = "critical";
  370. };
  371. };
  372. };
  373. cpu-thermal5 {
  374. polling-delay-passive = <250>;
  375. polling-delay = <1000>;
  376. thermal-sensors = <&tsens0 11>;
  377. trips {
  378. cpu_alert5: trip0 {
  379. temperature = <75000>;
  380. hysteresis = <2000>;
  381. type = "passive";
  382. };
  383. cpu_crit5: trip1 {
  384. temperature = <110000>;
  385. hysteresis = <2000>;
  386. type = "critical";
  387. };
  388. };
  389. };
  390. cpu-thermal6 {
  391. polling-delay-passive = <250>;
  392. polling-delay = <1000>;
  393. thermal-sensors = <&tsens1 0>;
  394. trips {
  395. cpu_alert6: trip0 {
  396. temperature = <75000>;
  397. hysteresis = <2000>;
  398. type = "passive";
  399. };
  400. cpu_crit6: trip1 {
  401. temperature = <110000>;
  402. hysteresis = <2000>;
  403. type = "critical";
  404. };
  405. };
  406. };
  407. cpu-thermal7 {
  408. polling-delay-passive = <250>;
  409. polling-delay = <1000>;
  410. thermal-sensors = <&tsens1 1>;
  411. trips {
  412. cpu_alert7: trip0 {
  413. temperature = <75000>;
  414. hysteresis = <2000>;
  415. type = "passive";
  416. };
  417. cpu_crit7: trip1 {
  418. temperature = <110000>;
  419. hysteresis = <2000>;
  420. type = "critical";
  421. };
  422. };
  423. };
  424. gpu-thermal {
  425. polling-delay-passive = <250>;
  426. polling-delay = <1000>;
  427. thermal-sensors = <&tsens1 3>;
  428. };
  429. };
  430. timer {
  431. compatible = "arm,armv8-timer";
  432. interrupts = <GIC_PPI 1 IRQ_TYPE_LEVEL_LOW>,
  433. <GIC_PPI 2 IRQ_TYPE_LEVEL_LOW>,
  434. <GIC_PPI 3 IRQ_TYPE_LEVEL_LOW>,
  435. <GIC_PPI 0 IRQ_TYPE_LEVEL_LOW>;
  436. };
  437. soc: soc {
  438. #address-cells = <1>;
  439. #size-cells = <1>;
  440. ranges = <0 0 0 0xffffffff>;
  441. compatible = "simple-bus";
  442. rpm_msg_ram: memory@68000 {
  443. compatible = "qcom,rpm-msg-ram";
  444. reg = <0x778000 0x7000>;
  445. };
  446. qfprom: qfprom@780000 {
  447. compatible = "qcom,qfprom";
  448. reg = <0x780000 0x621c>;
  449. #address-cells = <1>;
  450. #size-cells = <1>;
  451. };
  452. gcc: clock-controller@100000 {
  453. compatible = "qcom,gcc-msm8998";
  454. #clock-cells = <1>;
  455. #reset-cells = <1>;
  456. #power-domain-cells = <1>;
  457. reg = <0x100000 0xb0000>;
  458. };
  459. tlmm: pinctrl@3400000 {
  460. compatible = "qcom,msm8998-pinctrl";
  461. reg = <0x3400000 0xc00000>;
  462. interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
  463. gpio-controller;
  464. #gpio-cells = <0x2>;
  465. interrupt-controller;
  466. #interrupt-cells = <0x2>;
  467. };
  468. spmi_bus: spmi@800f000 {
  469. compatible = "qcom,spmi-pmic-arb";
  470. reg = <0x800f000 0x1000>,
  471. <0x8400000 0x1000000>,
  472. <0x9400000 0x1000000>,
  473. <0xa400000 0x220000>,
  474. <0x800a000 0x3000>;
  475. reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
  476. interrupt-names = "periph_irq";
  477. interrupts = <GIC_SPI 326 IRQ_TYPE_LEVEL_HIGH>;
  478. qcom,ee = <0>;
  479. qcom,channel = <0>;
  480. #address-cells = <2>;
  481. #size-cells = <0>;
  482. interrupt-controller;
  483. #interrupt-cells = <4>;
  484. cell-index = <0>;
  485. };
  486. tsens0: thermal@10aa000 {
  487. compatible = "qcom,msm8998-tsens", "qcom,tsens-v2";
  488. reg = <0x10aa000 0x2000>;
  489. #qcom,sensors = <12>;
  490. #thermal-sensor-cells = <1>;
  491. };
  492. tsens1: thermal@10ad000 {
  493. compatible = "qcom,msm8998-tsens", "qcom,tsens-v2";
  494. reg = <0x10ad000 0x2000>;
  495. #qcom,sensors = <8>;
  496. #thermal-sensor-cells = <1>;
  497. };
  498. tcsr_mutex_regs: syscon@1f40000 {
  499. compatible = "syscon";
  500. reg = <0x1f40000 0x20000>;
  501. };
  502. apcs_glb: mailbox@9820000 {
  503. compatible = "qcom,msm8998-apcs-hmss-global";
  504. reg = <0x17911000 0x1000>;
  505. #mbox-cells = <1>;
  506. };
  507. blsp2_uart1: serial@c1b0000 {
  508. compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
  509. reg = <0xc1b0000 0x1000>;
  510. interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
  511. clocks = <&gcc GCC_BLSP2_UART2_APPS_CLK>,
  512. <&gcc GCC_BLSP2_AHB_CLK>;
  513. clock-names = "core", "iface";
  514. status = "disabled";
  515. };
  516. timer@17920000 {
  517. #address-cells = <1>;
  518. #size-cells = <1>;
  519. ranges;
  520. compatible = "arm,armv7-timer-mem";
  521. reg = <0x17920000 0x1000>;
  522. frame@17921000 {
  523. frame-number = <0>;
  524. interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
  525. <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
  526. reg = <0x17921000 0x1000>,
  527. <0x17922000 0x1000>;
  528. };
  529. frame@17923000 {
  530. frame-number = <1>;
  531. interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
  532. reg = <0x17923000 0x1000>;
  533. status = "disabled";
  534. };
  535. frame@17924000 {
  536. frame-number = <2>;
  537. interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
  538. reg = <0x17924000 0x1000>;
  539. status = "disabled";
  540. };
  541. frame@17925000 {
  542. frame-number = <3>;
  543. interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
  544. reg = <0x17925000 0x1000>;
  545. status = "disabled";
  546. };
  547. frame@17926000 {
  548. frame-number = <4>;
  549. interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
  550. reg = <0x17926000 0x1000>;
  551. status = "disabled";
  552. };
  553. frame@17927000 {
  554. frame-number = <5>;
  555. interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
  556. reg = <0x17927000 0x1000>;
  557. status = "disabled";
  558. };
  559. frame@17928000 {
  560. frame-number = <6>;
  561. interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
  562. reg = <0x17928000 0x1000>;
  563. status = "disabled";
  564. };
  565. };
  566. intc: interrupt-controller@17a00000 {
  567. compatible = "arm,gic-v3";
  568. reg = <0x17a00000 0x10000>, /* GICD */
  569. <0x17b00000 0x100000>; /* GICR * 8 */
  570. #interrupt-cells = <3>;
  571. #address-cells = <1>;
  572. #size-cells = <1>;
  573. ranges;
  574. interrupt-controller;
  575. #redistributor-regions = <1>;
  576. redistributor-stride = <0x0 0x20000>;
  577. interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
  578. };
  579. };
  580. };