msm8996.dtsi 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463
  1. /* Copyright (c) 2014-2015, The Linux Foundation. All rights reserved.
  2. *
  3. * This program is free software; you can redistribute it and/or modify
  4. * it under the terms of the GNU General Public License version 2 and
  5. * only version 2 as published by the Free Software Foundation.
  6. *
  7. * This program is distributed in the hope that it will be useful,
  8. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. * GNU General Public License for more details.
  11. */
  12. #include <dt-bindings/interrupt-controller/arm-gic.h>
  13. #include <dt-bindings/clock/qcom,gcc-msm8996.h>
  14. #include <dt-bindings/clock/qcom,mmcc-msm8996.h>
  15. / {
  16. model = "Qualcomm Technologies, Inc. MSM8996";
  17. interrupt-parent = <&intc>;
  18. #address-cells = <2>;
  19. #size-cells = <2>;
  20. chosen { };
  21. memory {
  22. device_type = "memory";
  23. /* We expect the bootloader to fill in the reg */
  24. reg = <0 0 0 0>;
  25. };
  26. cpus {
  27. #address-cells = <2>;
  28. #size-cells = <0>;
  29. CPU0: cpu@0 {
  30. device_type = "cpu";
  31. compatible = "qcom,kryo";
  32. reg = <0x0 0x0>;
  33. enable-method = "psci";
  34. next-level-cache = <&L2_0>;
  35. L2_0: l2-cache {
  36. compatible = "cache";
  37. cache-level = <2>;
  38. };
  39. };
  40. CPU1: cpu@1 {
  41. device_type = "cpu";
  42. compatible = "qcom,kryo";
  43. reg = <0x0 0x1>;
  44. enable-method = "psci";
  45. next-level-cache = <&L2_0>;
  46. };
  47. CPU2: cpu@100 {
  48. device_type = "cpu";
  49. compatible = "qcom,kryo";
  50. reg = <0x0 0x100>;
  51. enable-method = "psci";
  52. next-level-cache = <&L2_1>;
  53. L2_1: l2-cache {
  54. compatible = "cache";
  55. cache-level = <2>;
  56. };
  57. };
  58. CPU3: cpu@101 {
  59. device_type = "cpu";
  60. compatible = "qcom,kryo";
  61. reg = <0x0 0x101>;
  62. enable-method = "psci";
  63. next-level-cache = <&L2_1>;
  64. };
  65. cpu-map {
  66. cluster0 {
  67. core0 {
  68. cpu = <&CPU0>;
  69. };
  70. core1 {
  71. cpu = <&CPU1>;
  72. };
  73. };
  74. cluster1 {
  75. core0 {
  76. cpu = <&CPU2>;
  77. };
  78. core1 {
  79. cpu = <&CPU3>;
  80. };
  81. };
  82. };
  83. };
  84. thermal-zones {
  85. cpu-thermal0 {
  86. polling-delay-passive = <250>;
  87. polling-delay = <1000>;
  88. thermal-sensors = <&tsens0 3>;
  89. trips {
  90. cpu_alert0: trip0 {
  91. temperature = <75000>;
  92. hysteresis = <2000>;
  93. type = "passive";
  94. };
  95. cpu_crit0: trip1 {
  96. temperature = <110000>;
  97. hysteresis = <2000>;
  98. type = "critical";
  99. };
  100. };
  101. };
  102. cpu-thermal1 {
  103. polling-delay-passive = <250>;
  104. polling-delay = <1000>;
  105. thermal-sensors = <&tsens0 5>;
  106. trips {
  107. cpu_alert1: trip0 {
  108. temperature = <75000>;
  109. hysteresis = <2000>;
  110. type = "passive";
  111. };
  112. cpu_crit1: trip1 {
  113. temperature = <110000>;
  114. hysteresis = <2000>;
  115. type = "critical";
  116. };
  117. };
  118. };
  119. cpu-thermal2 {
  120. polling-delay-passive = <250>;
  121. polling-delay = <1000>;
  122. thermal-sensors = <&tsens0 8>;
  123. trips {
  124. cpu_alert2: trip0 {
  125. temperature = <75000>;
  126. hysteresis = <2000>;
  127. type = "passive";
  128. };
  129. cpu_crit2: trip1 {
  130. temperature = <110000>;
  131. hysteresis = <2000>;
  132. type = "critical";
  133. };
  134. };
  135. };
  136. cpu-thermal3 {
  137. polling-delay-passive = <250>;
  138. polling-delay = <1000>;
  139. thermal-sensors = <&tsens0 10>;
  140. trips {
  141. cpu_alert3: trip0 {
  142. temperature = <75000>;
  143. hysteresis = <2000>;
  144. type = "passive";
  145. };
  146. cpu_crit3: trip1 {
  147. temperature = <110000>;
  148. hysteresis = <2000>;
  149. type = "critical";
  150. };
  151. };
  152. };
  153. };
  154. timer {
  155. compatible = "arm,armv8-timer";
  156. interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
  157. <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
  158. <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
  159. <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
  160. };
  161. clocks {
  162. xo_board {
  163. compatible = "fixed-clock";
  164. #clock-cells = <0>;
  165. clock-frequency = <19200000>;
  166. clock-output-names = "xo_board";
  167. };
  168. sleep_clk {
  169. compatible = "fixed-clock";
  170. #clock-cells = <0>;
  171. clock-frequency = <32764>;
  172. clock-output-names = "sleep_clk";
  173. };
  174. };
  175. psci {
  176. compatible = "arm,psci-1.0";
  177. method = "smc";
  178. };
  179. soc: soc {
  180. #address-cells = <1>;
  181. #size-cells = <1>;
  182. ranges = <0 0 0 0xffffffff>;
  183. compatible = "simple-bus";
  184. intc: interrupt-controller@9bc0000 {
  185. compatible = "arm,gic-v3";
  186. #interrupt-cells = <3>;
  187. interrupt-controller;
  188. #redistributor-regions = <1>;
  189. redistributor-stride = <0x0 0x40000>;
  190. reg = <0x09bc0000 0x10000>,
  191. <0x09c00000 0x100000>;
  192. interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
  193. };
  194. gcc: clock-controller@300000 {
  195. compatible = "qcom,gcc-msm8996";
  196. #clock-cells = <1>;
  197. #reset-cells = <1>;
  198. #power-domain-cells = <1>;
  199. reg = <0x300000 0x90000>;
  200. };
  201. blsp1_spi0: spi@07575000 {
  202. compatible = "qcom,spi-qup-v2.2.1";
  203. reg = <0x07575000 0x600>;
  204. interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
  205. clocks = <&gcc GCC_BLSP1_QUP1_SPI_APPS_CLK>,
  206. <&gcc GCC_BLSP1_AHB_CLK>;
  207. clock-names = "core", "iface";
  208. pinctrl-names = "default", "sleep";
  209. pinctrl-0 = <&blsp1_spi0_default>;
  210. pinctrl-1 = <&blsp1_spi0_sleep>;
  211. #address-cells = <1>;
  212. #size-cells = <0>;
  213. status = "disabled";
  214. };
  215. blsp2_i2c0: i2c@075b5000 {
  216. compatible = "qcom,i2c-qup-v2.2.1";
  217. reg = <0x075b5000 0x1000>;
  218. interrupts = <GIC_SPI 101 0>;
  219. clocks = <&gcc GCC_BLSP2_AHB_CLK>,
  220. <&gcc GCC_BLSP2_QUP1_I2C_APPS_CLK>;
  221. clock-names = "iface", "core";
  222. pinctrl-names = "default", "sleep";
  223. pinctrl-0 = <&blsp2_i2c0_default>;
  224. pinctrl-1 = <&blsp2_i2c0_sleep>;
  225. #address-cells = <1>;
  226. #size-cells = <0>;
  227. status = "disabled";
  228. };
  229. tsens0: thermal-sensor@4a8000 {
  230. compatible = "qcom,msm8996-tsens";
  231. reg = <0x4a8000 0x2000>;
  232. #thermal-sensor-cells = <1>;
  233. };
  234. blsp2_uart1: serial@75b0000 {
  235. compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
  236. reg = <0x75b0000 0x1000>;
  237. interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
  238. clocks = <&gcc GCC_BLSP2_UART2_APPS_CLK>,
  239. <&gcc GCC_BLSP2_AHB_CLK>;
  240. clock-names = "core", "iface";
  241. status = "disabled";
  242. };
  243. blsp2_i2c1: i2c@075b6000 {
  244. compatible = "qcom,i2c-qup-v2.2.1";
  245. reg = <0x075b6000 0x1000>;
  246. interrupts = <GIC_SPI 102 0>;
  247. clocks = <&gcc GCC_BLSP2_AHB_CLK>,
  248. <&gcc GCC_BLSP2_QUP2_I2C_APPS_CLK>;
  249. clock-names = "iface", "core";
  250. pinctrl-names = "default", "sleep";
  251. pinctrl-0 = <&blsp2_i2c1_default>;
  252. pinctrl-1 = <&blsp2_i2c1_sleep>;
  253. #address-cells = <1>;
  254. #size-cells = <0>;
  255. status = "disabled";
  256. };
  257. blsp2_uart2: serial@75b1000 {
  258. compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
  259. reg = <0x075b1000 0x1000>;
  260. interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>;
  261. clocks = <&gcc GCC_BLSP2_UART3_APPS_CLK>,
  262. <&gcc GCC_BLSP2_AHB_CLK>;
  263. clock-names = "core", "iface";
  264. status = "disabled";
  265. };
  266. blsp1_i2c2: i2c@07577000 {
  267. compatible = "qcom,i2c-qup-v2.2.1";
  268. reg = <0x07577000 0x1000>;
  269. interrupts = <GIC_SPI 97 0>;
  270. clocks = <&gcc GCC_BLSP1_AHB_CLK>,
  271. <&gcc GCC_BLSP1_QUP3_I2C_APPS_CLK>;
  272. clock-names = "iface", "core";
  273. pinctrl-names = "default", "sleep";
  274. pinctrl-0 = <&blsp1_i2c2_default>;
  275. pinctrl-1 = <&blsp1_i2c2_sleep>;
  276. #address-cells = <1>;
  277. #size-cells = <0>;
  278. status = "disabled";
  279. };
  280. blsp2_spi5: spi@075ba000{
  281. compatible = "qcom,spi-qup-v2.2.1";
  282. reg = <0x075ba000 0x600>;
  283. interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
  284. clocks = <&gcc GCC_BLSP2_QUP6_SPI_APPS_CLK>,
  285. <&gcc GCC_BLSP2_AHB_CLK>;
  286. clock-names = "core", "iface";
  287. pinctrl-names = "default", "sleep";
  288. pinctrl-0 = <&blsp2_spi5_default>;
  289. pinctrl-1 = <&blsp2_spi5_sleep>;
  290. #address-cells = <1>;
  291. #size-cells = <0>;
  292. status = "disabled";
  293. };
  294. sdhc2: sdhci@74a4900 {
  295. status = "disabled";
  296. compatible = "qcom,sdhci-msm-v4";
  297. reg = <0x74a4900 0x314>, <0x74a4000 0x800>;
  298. reg-names = "hc_mem", "core_mem";
  299. interrupts = <0 125 0>, <0 221 0>;
  300. interrupt-names = "hc_irq", "pwr_irq";
  301. clock-names = "iface", "core";
  302. clocks = <&gcc GCC_SDCC2_AHB_CLK>,
  303. <&gcc GCC_SDCC2_APPS_CLK>;
  304. bus-width = <4>;
  305. };
  306. msmgpio: pinctrl@1010000 {
  307. compatible = "qcom,msm8996-pinctrl";
  308. reg = <0x01010000 0x300000>;
  309. interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
  310. gpio-controller;
  311. #gpio-cells = <2>;
  312. interrupt-controller;
  313. #interrupt-cells = <2>;
  314. };
  315. timer@09840000 {
  316. #address-cells = <1>;
  317. #size-cells = <1>;
  318. ranges;
  319. compatible = "arm,armv7-timer-mem";
  320. reg = <0x09840000 0x1000>;
  321. clock-frequency = <19200000>;
  322. frame@9850000 {
  323. frame-number = <0>;
  324. interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>,
  325. <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
  326. reg = <0x09850000 0x1000>,
  327. <0x09860000 0x1000>;
  328. };
  329. frame@9870000 {
  330. frame-number = <1>;
  331. interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
  332. reg = <0x09870000 0x1000>;
  333. status = "disabled";
  334. };
  335. frame@9880000 {
  336. frame-number = <2>;
  337. interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
  338. reg = <0x09880000 0x1000>;
  339. status = "disabled";
  340. };
  341. frame@9890000 {
  342. frame-number = <3>;
  343. interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
  344. reg = <0x09890000 0x1000>;
  345. status = "disabled";
  346. };
  347. frame@98a0000 {
  348. frame-number = <4>;
  349. interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
  350. reg = <0x098a0000 0x1000>;
  351. status = "disabled";
  352. };
  353. frame@98b0000 {
  354. frame-number = <5>;
  355. interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
  356. reg = <0x098b0000 0x1000>;
  357. status = "disabled";
  358. };
  359. frame@98c0000 {
  360. frame-number = <6>;
  361. interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
  362. reg = <0x098c0000 0x1000>;
  363. status = "disabled";
  364. };
  365. };
  366. spmi_bus: qcom,spmi@400f000 {
  367. compatible = "qcom,spmi-pmic-arb";
  368. reg = <0x400f000 0x1000>,
  369. <0x4400000 0x800000>,
  370. <0x4c00000 0x800000>,
  371. <0x5800000 0x200000>,
  372. <0x400a000 0x002100>;
  373. reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
  374. interrupt-names = "periph_irq";
  375. interrupts = <GIC_SPI 326 IRQ_TYPE_LEVEL_HIGH>;
  376. qcom,ee = <0>;
  377. qcom,channel = <0>;
  378. #address-cells = <2>;
  379. #size-cells = <0>;
  380. interrupt-controller;
  381. #interrupt-cells = <4>;
  382. };
  383. mmcc: clock-controller@8c0000 {
  384. compatible = "qcom,mmcc-msm8996";
  385. #clock-cells = <1>;
  386. #reset-cells = <1>;
  387. #power-domain-cells = <1>;
  388. reg = <0x8c0000 0x40000>;
  389. assigned-clocks = <&mmcc MMPLL9_PLL>,
  390. <&mmcc MMPLL1_PLL>,
  391. <&mmcc MMPLL3_PLL>,
  392. <&mmcc MMPLL4_PLL>,
  393. <&mmcc MMPLL5_PLL>;
  394. assigned-clock-rates = <624000000>,
  395. <810000000>,
  396. <980000000>,
  397. <960000000>,
  398. <825000000>;
  399. };
  400. };
  401. };
  402. #include "msm8996-pins.dtsi"