qcom-msm8960.dtsi 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370
  1. // SPDX-License-Identifier: GPL-2.0
  2. /dts-v1/;
  3. #include <dt-bindings/interrupt-controller/arm-gic.h>
  4. #include <dt-bindings/clock/qcom,gcc-msm8960.h>
  5. #include <dt-bindings/clock/qcom,lcc-msm8960.h>
  6. #include <dt-bindings/mfd/qcom-rpm.h>
  7. #include <dt-bindings/soc/qcom,gsbi.h>
  8. / {
  9. #address-cells = <1>;
  10. #size-cells = <1>;
  11. model = "Qualcomm MSM8960";
  12. compatible = "qcom,msm8960";
  13. interrupt-parent = <&intc>;
  14. cpus {
  15. #address-cells = <1>;
  16. #size-cells = <0>;
  17. interrupts = <1 14 0x304>;
  18. cpu@0 {
  19. compatible = "qcom,krait";
  20. enable-method = "qcom,kpss-acc-v1";
  21. device_type = "cpu";
  22. reg = <0>;
  23. next-level-cache = <&L2>;
  24. qcom,acc = <&acc0>;
  25. qcom,saw = <&saw0>;
  26. };
  27. cpu@1 {
  28. compatible = "qcom,krait";
  29. enable-method = "qcom,kpss-acc-v1";
  30. device_type = "cpu";
  31. reg = <1>;
  32. next-level-cache = <&L2>;
  33. qcom,acc = <&acc1>;
  34. qcom,saw = <&saw1>;
  35. };
  36. L2: l2-cache {
  37. compatible = "cache";
  38. cache-level = <2>;
  39. };
  40. };
  41. memory {
  42. device_type = "memory";
  43. reg = <0x0 0x0>;
  44. };
  45. cpu-pmu {
  46. compatible = "qcom,krait-pmu";
  47. interrupts = <1 10 0x304>;
  48. qcom,no-pc-write;
  49. };
  50. clocks {
  51. cxo_board: cxo_board {
  52. compatible = "fixed-clock";
  53. #clock-cells = <0>;
  54. clock-frequency = <19200000>;
  55. clock-output-names = "cxo_board";
  56. };
  57. pxo_board: pxo_board {
  58. compatible = "fixed-clock";
  59. #clock-cells = <0>;
  60. clock-frequency = <27000000>;
  61. clock-output-names = "pxo_board";
  62. };
  63. sleep_clk {
  64. compatible = "fixed-clock";
  65. #clock-cells = <0>;
  66. clock-frequency = <32768>;
  67. clock-output-names = "sleep_clk";
  68. };
  69. };
  70. /* Temporary fixed regulator */
  71. vsdcc_fixed: vsdcc-regulator {
  72. compatible = "regulator-fixed";
  73. regulator-name = "SDCC Power";
  74. regulator-min-microvolt = <2700000>;
  75. regulator-max-microvolt = <2700000>;
  76. regulator-always-on;
  77. };
  78. soc: soc {
  79. #address-cells = <1>;
  80. #size-cells = <1>;
  81. ranges;
  82. compatible = "simple-bus";
  83. intc: interrupt-controller@2000000 {
  84. compatible = "qcom,msm-qgic2";
  85. interrupt-controller;
  86. #interrupt-cells = <3>;
  87. reg = <0x02000000 0x1000>,
  88. <0x02002000 0x1000>;
  89. };
  90. timer@200a000 {
  91. compatible = "qcom,kpss-timer",
  92. "qcom,kpss-wdt-msm8960", "qcom,msm-timer";
  93. interrupts = <1 1 0x301>,
  94. <1 2 0x301>,
  95. <1 3 0x301>;
  96. reg = <0x0200a000 0x100>;
  97. clock-frequency = <27000000>,
  98. <32768>;
  99. cpu-offset = <0x80000>;
  100. };
  101. msmgpio: pinctrl@800000 {
  102. compatible = "qcom,msm8960-pinctrl";
  103. gpio-controller;
  104. gpio-ranges = <&msmgpio 0 0 152>;
  105. #gpio-cells = <2>;
  106. interrupts = <0 16 0x4>;
  107. interrupt-controller;
  108. #interrupt-cells = <2>;
  109. reg = <0x800000 0x4000>;
  110. };
  111. gcc: clock-controller@900000 {
  112. compatible = "qcom,gcc-msm8960";
  113. #clock-cells = <1>;
  114. #power-domain-cells = <1>;
  115. #reset-cells = <1>;
  116. reg = <0x900000 0x4000>;
  117. clocks = <&cxo_board>,
  118. <&pxo_board>,
  119. <&lcc PLL4>;
  120. clock-names = "cxo", "pxo", "pll4";
  121. };
  122. lcc: clock-controller@28000000 {
  123. compatible = "qcom,lcc-msm8960";
  124. reg = <0x28000000 0x1000>;
  125. #clock-cells = <1>;
  126. #reset-cells = <1>;
  127. clocks = <&pxo_board>,
  128. <&gcc PLL4_VOTE>,
  129. <0>,
  130. <0>, <0>,
  131. <0>, <0>,
  132. <0>;
  133. clock-names = "pxo",
  134. "pll4_vote",
  135. "mi2s_codec_clk",
  136. "codec_i2s_mic_codec_clk",
  137. "spare_i2s_mic_codec_clk",
  138. "codec_i2s_spkr_codec_clk",
  139. "spare_i2s_spkr_codec_clk",
  140. "pcm_codec_clk";
  141. };
  142. clock-controller@4000000 {
  143. compatible = "qcom,mmcc-msm8960";
  144. reg = <0x4000000 0x1000>;
  145. #clock-cells = <1>;
  146. #power-domain-cells = <1>;
  147. #reset-cells = <1>;
  148. clocks = <&pxo_board>,
  149. <&gcc PLL3>,
  150. <&gcc PLL8_VOTE>,
  151. <0>,
  152. <0>,
  153. <0>,
  154. <0>,
  155. <0>;
  156. clock-names = "pxo",
  157. "pll3",
  158. "pll8_vote",
  159. "dsi1pll",
  160. "dsi1pllbyte",
  161. "dsi2pll",
  162. "dsi2pllbyte",
  163. "hdmipll";
  164. };
  165. l2cc: clock-controller@2011000 {
  166. compatible = "qcom,kpss-gcc", "syscon";
  167. reg = <0x2011000 0x1000>;
  168. };
  169. rpm: rpm@108000 {
  170. compatible = "qcom,rpm-msm8960";
  171. reg = <0x108000 0x1000>;
  172. qcom,ipc = <&l2cc 0x8 2>;
  173. interrupts = <GIC_SPI 19 IRQ_TYPE_EDGE_RISING>,
  174. <GIC_SPI 21 IRQ_TYPE_EDGE_RISING>,
  175. <GIC_SPI 22 IRQ_TYPE_EDGE_RISING>;
  176. interrupt-names = "ack", "err", "wakeup";
  177. regulators {
  178. compatible = "qcom,rpm-pm8921-regulators";
  179. };
  180. };
  181. acc0: clock-controller@2088000 {
  182. compatible = "qcom,kpss-acc-v1";
  183. reg = <0x02088000 0x1000>, <0x02008000 0x1000>;
  184. };
  185. acc1: clock-controller@2098000 {
  186. compatible = "qcom,kpss-acc-v1";
  187. reg = <0x02098000 0x1000>, <0x02008000 0x1000>;
  188. };
  189. saw0: regulator@2089000 {
  190. compatible = "qcom,saw2";
  191. reg = <0x02089000 0x1000>, <0x02009000 0x1000>;
  192. regulator;
  193. };
  194. saw1: regulator@2099000 {
  195. compatible = "qcom,saw2";
  196. reg = <0x02099000 0x1000>, <0x02009000 0x1000>;
  197. regulator;
  198. };
  199. gsbi5: gsbi@16400000 {
  200. compatible = "qcom,gsbi-v1.0.0";
  201. cell-index = <5>;
  202. reg = <0x16400000 0x100>;
  203. clocks = <&gcc GSBI5_H_CLK>;
  204. clock-names = "iface";
  205. #address-cells = <1>;
  206. #size-cells = <1>;
  207. ranges;
  208. syscon-tcsr = <&tcsr>;
  209. gsbi5_serial: serial@16440000 {
  210. compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm";
  211. reg = <0x16440000 0x1000>,
  212. <0x16400000 0x1000>;
  213. interrupts = <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>;
  214. clocks = <&gcc GSBI5_UART_CLK>, <&gcc GSBI5_H_CLK>;
  215. clock-names = "core", "iface";
  216. status = "disabled";
  217. };
  218. };
  219. qcom,ssbi@500000 {
  220. compatible = "qcom,ssbi";
  221. reg = <0x500000 0x1000>;
  222. qcom,controller-type = "pmic-arbiter";
  223. pmicintc: pmic@0 {
  224. compatible = "qcom,pm8921";
  225. interrupt-parent = <&msmgpio>;
  226. interrupts = <104 8>;
  227. #interrupt-cells = <2>;
  228. interrupt-controller;
  229. #address-cells = <1>;
  230. #size-cells = <0>;
  231. pwrkey@1c {
  232. compatible = "qcom,pm8921-pwrkey";
  233. reg = <0x1c>;
  234. interrupt-parent = <&pmicintc>;
  235. interrupts = <50 1>, <51 1>;
  236. debounce = <15625>;
  237. pull-up;
  238. };
  239. keypad@148 {
  240. compatible = "qcom,pm8921-keypad";
  241. reg = <0x148>;
  242. interrupt-parent = <&pmicintc>;
  243. interrupts = <74 1>, <75 1>;
  244. debounce = <15>;
  245. scan-delay = <32>;
  246. row-hold = <91500>;
  247. };
  248. rtc@11d {
  249. compatible = "qcom,pm8921-rtc";
  250. interrupt-parent = <&pmicintc>;
  251. interrupts = <39 1>;
  252. reg = <0x11d>;
  253. allow-set-time;
  254. };
  255. };
  256. };
  257. rng@1a500000 {
  258. compatible = "qcom,prng";
  259. reg = <0x1a500000 0x200>;
  260. clocks = <&gcc PRNG_CLK>;
  261. clock-names = "core";
  262. };
  263. amba {
  264. compatible = "simple-bus";
  265. #address-cells = <1>;
  266. #size-cells = <1>;
  267. ranges;
  268. sdcc1: mmc@12400000 {
  269. status = "disabled";
  270. compatible = "arm,pl18x", "arm,primecell";
  271. arm,primecell-periphid = <0x00051180>;
  272. reg = <0x12400000 0x8000>;
  273. interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>;
  274. interrupt-names = "cmd_irq";
  275. clocks = <&gcc SDC1_CLK>, <&gcc SDC1_H_CLK>;
  276. clock-names = "mclk", "apb_pclk";
  277. bus-width = <8>;
  278. max-frequency = <96000000>;
  279. non-removable;
  280. cap-sd-highspeed;
  281. cap-mmc-highspeed;
  282. vmmc-supply = <&vsdcc_fixed>;
  283. };
  284. sdcc3: mmc@12180000 {
  285. compatible = "arm,pl18x", "arm,primecell";
  286. arm,primecell-periphid = <0x00051180>;
  287. status = "disabled";
  288. reg = <0x12180000 0x8000>;
  289. interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
  290. interrupt-names = "cmd_irq";
  291. clocks = <&gcc SDC3_CLK>, <&gcc SDC3_H_CLK>;
  292. clock-names = "mclk", "apb_pclk";
  293. bus-width = <4>;
  294. cap-sd-highspeed;
  295. cap-mmc-highspeed;
  296. max-frequency = <192000000>;
  297. no-1-8-v;
  298. vmmc-supply = <&vsdcc_fixed>;
  299. };
  300. };
  301. tcsr: syscon@1a400000 {
  302. compatible = "qcom,tcsr-msm8960", "syscon";
  303. reg = <0x1a400000 0x100>;
  304. };
  305. gsbi1: gsbi@16000000 {
  306. compatible = "qcom,gsbi-v1.0.0";
  307. cell-index = <1>;
  308. reg = <0x16000000 0x100>;
  309. clocks = <&gcc GSBI1_H_CLK>;
  310. clock-names = "iface";
  311. #address-cells = <1>;
  312. #size-cells = <1>;
  313. ranges;
  314. gsbi1_spi: spi@16080000 {
  315. compatible = "qcom,spi-qup-v1.1.1";
  316. #address-cells = <1>;
  317. #size-cells = <0>;
  318. reg = <0x16080000 0x1000>;
  319. interrupts = <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>;
  320. spi-max-frequency = <24000000>;
  321. cs-gpios = <&msmgpio 8 0>;
  322. clocks = <&gcc GSBI1_QUP_CLK>, <&gcc GSBI1_H_CLK>;
  323. clock-names = "core", "iface";
  324. status = "disabled";
  325. };
  326. };
  327. };
  328. };