qcom-msm8226.dtsi 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587
  1. // SPDX-License-Identifier: BSD-3-Clause
  2. /*
  3. * Copyright (c) 2020, The Linux Foundation. All rights reserved.
  4. */
  5. /dts-v1/;
  6. #include <dt-bindings/interrupt-controller/arm-gic.h>
  7. #include <dt-bindings/clock/qcom,gcc-msm8974.h>
  8. #include <dt-bindings/gpio/gpio.h>
  9. #include <dt-bindings/power/qcom-rpmpd.h>
  10. #include <dt-bindings/reset/qcom,gcc-msm8974.h>
  11. / {
  12. #address-cells = <1>;
  13. #size-cells = <1>;
  14. interrupt-parent = <&intc>;
  15. chosen { };
  16. memory@0 {
  17. device_type = "memory";
  18. reg = <0x0 0x0>;
  19. };
  20. clocks {
  21. xo_board: xo_board {
  22. compatible = "fixed-clock";
  23. #clock-cells = <0>;
  24. clock-frequency = <19200000>;
  25. };
  26. sleep_clk: sleep_clk {
  27. compatible = "fixed-clock";
  28. #clock-cells = <0>;
  29. clock-frequency = <32768>;
  30. };
  31. };
  32. firmware {
  33. scm {
  34. compatible = "qcom,scm-msm8226", "qcom,scm";
  35. clocks = <&gcc GCC_CE1_CLK>, <&gcc GCC_CE1_AXI_CLK>, <&gcc GCC_CE1_AHB_CLK>;
  36. clock-names = "core", "bus", "iface";
  37. };
  38. };
  39. reserved-memory {
  40. #address-cells = <1>;
  41. #size-cells = <1>;
  42. ranges;
  43. smem_region: smem@3000000 {
  44. reg = <0x3000000 0x100000>;
  45. no-map;
  46. };
  47. adsp_region: adsp@dc00000 {
  48. reg = <0x0dc00000 0x1900000>;
  49. no-map;
  50. };
  51. };
  52. smd {
  53. compatible = "qcom,smd";
  54. rpm {
  55. interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
  56. qcom,ipc = <&apcs 8 0>;
  57. qcom,smd-edge = <15>;
  58. rpm_requests: rpm-requests {
  59. compatible = "qcom,rpm-msm8226";
  60. qcom,smd-channels = "rpm_requests";
  61. rpmpd: power-controller {
  62. compatible = "qcom,msm8226-rpmpd";
  63. #power-domain-cells = <1>;
  64. operating-points-v2 = <&rpmpd_opp_table>;
  65. rpmpd_opp_table: opp-table {
  66. compatible = "operating-points-v2";
  67. rpmpd_opp_ret: opp1 {
  68. opp-level = <1>;
  69. };
  70. rpmpd_opp_svs_krait: opp2 {
  71. opp-level = <2>;
  72. };
  73. rpmpd_opp_svs_soc: opp3 {
  74. opp-level = <3>;
  75. };
  76. rpmpd_opp_nom: opp4 {
  77. opp-level = <4>;
  78. };
  79. rpmpd_opp_turbo: opp5 {
  80. opp-level = <5>;
  81. };
  82. rpmpd_opp_super_turbo: opp6 {
  83. opp-level = <6>;
  84. };
  85. };
  86. };
  87. };
  88. };
  89. };
  90. smem {
  91. compatible = "qcom,smem";
  92. memory-region = <&smem_region>;
  93. qcom,rpm-msg-ram = <&rpm_msg_ram>;
  94. hwlocks = <&tcsr_mutex 3>;
  95. };
  96. smp2p-adsp {
  97. compatible = "qcom,smp2p";
  98. qcom,smem = <443>, <429>;
  99. interrupt-parent = <&intc>;
  100. interrupts = <GIC_SPI 158 IRQ_TYPE_EDGE_RISING>;
  101. qcom,ipc = <&apcs 8 10>;
  102. qcom,local-pid = <0>;
  103. qcom,remote-pid = <2>;
  104. adsp_smp2p_out: master-kernel {
  105. qcom,entry-name = "master-kernel";
  106. #qcom,smem-state-cells = <1>;
  107. };
  108. adsp_smp2p_in: slave-kernel {
  109. qcom,entry-name = "slave-kernel";
  110. interrupt-controller;
  111. #interrupt-cells = <2>;
  112. };
  113. };
  114. soc: soc {
  115. compatible = "simple-bus";
  116. #address-cells = <1>;
  117. #size-cells = <1>;
  118. ranges;
  119. intc: interrupt-controller@f9000000 {
  120. compatible = "qcom,msm-qgic2";
  121. reg = <0xf9000000 0x1000>,
  122. <0xf9002000 0x1000>;
  123. interrupt-controller;
  124. #interrupt-cells = <3>;
  125. };
  126. apcs: syscon@f9011000 {
  127. compatible = "syscon";
  128. reg = <0xf9011000 0x1000>;
  129. };
  130. sdhc_1: mmc@f9824900 {
  131. compatible = "qcom,msm8226-sdhci", "qcom,sdhci-msm-v4";
  132. reg = <0xf9824900 0x11c>, <0xf9824000 0x800>;
  133. reg-names = "hc", "core";
  134. interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
  135. <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
  136. interrupt-names = "hc_irq", "pwr_irq";
  137. clocks = <&gcc GCC_SDCC1_AHB_CLK>,
  138. <&gcc GCC_SDCC1_APPS_CLK>,
  139. <&xo_board>;
  140. clock-names = "iface", "core", "xo";
  141. pinctrl-names = "default";
  142. pinctrl-0 = <&sdhc1_default_state>;
  143. status = "disabled";
  144. };
  145. sdhc_2: mmc@f98a4900 {
  146. compatible = "qcom,msm8226-sdhci", "qcom,sdhci-msm-v4";
  147. reg = <0xf98a4900 0x11c>, <0xf98a4000 0x800>;
  148. reg-names = "hc", "core";
  149. interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
  150. <GIC_SPI 221 IRQ_TYPE_LEVEL_HIGH>;
  151. interrupt-names = "hc_irq", "pwr_irq";
  152. clocks = <&gcc GCC_SDCC2_AHB_CLK>,
  153. <&gcc GCC_SDCC2_APPS_CLK>,
  154. <&xo_board>;
  155. clock-names = "iface", "core", "xo";
  156. pinctrl-names = "default";
  157. pinctrl-0 = <&sdhc2_default_state>;
  158. status = "disabled";
  159. };
  160. sdhc_3: mmc@f9864900 {
  161. compatible = "qcom,msm8226-sdhci", "qcom,sdhci-msm-v4";
  162. reg = <0xf9864900 0x11c>, <0xf9864000 0x800>;
  163. reg-names = "hc", "core";
  164. interrupts = <GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>,
  165. <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>;
  166. interrupt-names = "hc_irq", "pwr_irq";
  167. clocks = <&gcc GCC_SDCC3_AHB_CLK>,
  168. <&gcc GCC_SDCC3_APPS_CLK>,
  169. <&xo_board>;
  170. clock-names = "iface", "core", "xo";
  171. pinctrl-names = "default";
  172. pinctrl-0 = <&sdhc3_default_state>;
  173. status = "disabled";
  174. };
  175. blsp1_uart1: serial@f991d000 {
  176. compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
  177. reg = <0xf991d000 0x1000>;
  178. interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
  179. clocks = <&gcc GCC_BLSP1_UART1_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
  180. clock-names = "core", "iface";
  181. status = "disabled";
  182. };
  183. blsp1_uart3: serial@f991f000 {
  184. compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
  185. reg = <0xf991f000 0x1000>;
  186. interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
  187. clocks = <&gcc GCC_BLSP1_UART3_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
  188. clock-names = "core", "iface";
  189. status = "disabled";
  190. };
  191. blsp1_uart4: serial@f9920000 {
  192. compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
  193. reg = <0xf9920000 0x1000>;
  194. interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
  195. clocks = <&gcc GCC_BLSP1_UART4_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
  196. clock-names = "core", "iface";
  197. status = "disabled";
  198. };
  199. blsp1_i2c1: i2c@f9923000 {
  200. status = "disabled";
  201. compatible = "qcom,i2c-qup-v2.1.1";
  202. reg = <0xf9923000 0x1000>;
  203. interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
  204. clocks = <&gcc GCC_BLSP1_QUP1_I2C_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
  205. clock-names = "core", "iface";
  206. pinctrl-names = "default";
  207. pinctrl-0 = <&blsp1_i2c1_pins>;
  208. #address-cells = <1>;
  209. #size-cells = <0>;
  210. };
  211. blsp1_i2c2: i2c@f9924000 {
  212. status = "disabled";
  213. compatible = "qcom,i2c-qup-v2.1.1";
  214. reg = <0xf9924000 0x1000>;
  215. interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
  216. clocks = <&gcc GCC_BLSP1_QUP2_I2C_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
  217. clock-names = "core", "iface";
  218. pinctrl-names = "default";
  219. pinctrl-0 = <&blsp1_i2c2_pins>;
  220. #address-cells = <1>;
  221. #size-cells = <0>;
  222. };
  223. blsp1_i2c3: i2c@f9925000 {
  224. status = "disabled";
  225. compatible = "qcom,i2c-qup-v2.1.1";
  226. reg = <0xf9925000 0x1000>;
  227. interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
  228. clocks = <&gcc GCC_BLSP1_QUP3_I2C_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
  229. clock-names = "core", "iface";
  230. pinctrl-names = "default";
  231. pinctrl-0 = <&blsp1_i2c3_pins>;
  232. #address-cells = <1>;
  233. #size-cells = <0>;
  234. };
  235. blsp1_i2c4: i2c@f9926000 {
  236. status = "disabled";
  237. compatible = "qcom,i2c-qup-v2.1.1";
  238. reg = <0xf9926000 0x1000>;
  239. interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
  240. clocks = <&gcc GCC_BLSP1_QUP4_I2C_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
  241. clock-names = "core", "iface";
  242. pinctrl-names = "default";
  243. pinctrl-0 = <&blsp1_i2c4_pins>;
  244. #address-cells = <1>;
  245. #size-cells = <0>;
  246. };
  247. blsp1_i2c5: i2c@f9927000 {
  248. status = "disabled";
  249. compatible = "qcom,i2c-qup-v2.1.1";
  250. reg = <0xf9927000 0x1000>;
  251. interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
  252. clocks = <&gcc GCC_BLSP1_QUP5_I2C_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
  253. clock-names = "core", "iface";
  254. pinctrl-names = "default";
  255. pinctrl-0 = <&blsp1_i2c5_pins>;
  256. #address-cells = <1>;
  257. #size-cells = <0>;
  258. };
  259. usb: usb@f9a55000 {
  260. compatible = "qcom,ci-hdrc";
  261. reg = <0xf9a55000 0x200>,
  262. <0xf9a55200 0x200>;
  263. interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>;
  264. clocks = <&gcc GCC_USB_HS_AHB_CLK>,
  265. <&gcc GCC_USB_HS_SYSTEM_CLK>;
  266. clock-names = "iface", "core";
  267. assigned-clocks = <&gcc GCC_USB_HS_SYSTEM_CLK>;
  268. assigned-clock-rates = <75000000>;
  269. resets = <&gcc GCC_USB_HS_BCR>;
  270. reset-names = "core";
  271. phy_type = "ulpi";
  272. dr_mode = "otg";
  273. hnp-disable;
  274. srp-disable;
  275. adp-disable;
  276. ahb-burst-config = <0>;
  277. phy-names = "usb-phy";
  278. phys = <&usb_hs_phy>;
  279. status = "disabled";
  280. #reset-cells = <1>;
  281. ulpi {
  282. usb_hs_phy: phy {
  283. compatible = "qcom,usb-hs-phy-msm8226",
  284. "qcom,usb-hs-phy";
  285. #phy-cells = <0>;
  286. clocks = <&xo_board>, <&gcc GCC_USB2A_PHY_SLEEP_CLK>;
  287. clock-names = "ref", "sleep";
  288. resets = <&gcc GCC_USB2A_PHY_BCR>, <&usb 0>;
  289. reset-names = "phy", "por";
  290. qcom,init-seq = /bits/ 8 <0x0 0x44
  291. 0x1 0x68 0x2 0x24 0x3 0x13>;
  292. };
  293. };
  294. };
  295. gcc: clock-controller@fc400000 {
  296. compatible = "qcom,gcc-msm8226";
  297. reg = <0xfc400000 0x4000>;
  298. #clock-cells = <1>;
  299. #reset-cells = <1>;
  300. #power-domain-cells = <1>;
  301. };
  302. tlmm: pinctrl@fd510000 {
  303. compatible = "qcom,msm8226-pinctrl";
  304. reg = <0xfd510000 0x4000>;
  305. gpio-controller;
  306. #gpio-cells = <2>;
  307. gpio-ranges = <&tlmm 0 0 117>;
  308. interrupt-controller;
  309. #interrupt-cells = <2>;
  310. interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
  311. blsp1_i2c1_pins: blsp1-i2c1 {
  312. pins = "gpio2", "gpio3";
  313. function = "blsp_i2c1";
  314. drive-strength = <2>;
  315. bias-disable;
  316. };
  317. blsp1_i2c2_pins: blsp1-i2c2 {
  318. pins = "gpio6", "gpio7";
  319. function = "blsp_i2c2";
  320. drive-strength = <2>;
  321. bias-disable;
  322. };
  323. blsp1_i2c3_pins: blsp1-i2c3 {
  324. pins = "gpio10", "gpio11";
  325. function = "blsp_i2c3";
  326. drive-strength = <2>;
  327. bias-disable;
  328. };
  329. blsp1_i2c4_pins: blsp1-i2c4 {
  330. pins = "gpio14", "gpio15";
  331. function = "blsp_i2c4";
  332. drive-strength = <2>;
  333. bias-disable;
  334. };
  335. blsp1_i2c5_pins: blsp1-i2c5 {
  336. pins = "gpio18", "gpio19";
  337. function = "blsp_i2c5";
  338. drive-strength = <2>;
  339. bias-disable;
  340. };
  341. sdhc1_default_state: sdhc1-default-state {
  342. clk {
  343. pins = "sdc1_clk";
  344. drive-strength = <10>;
  345. bias-disable;
  346. };
  347. cmd-data {
  348. pins = "sdc1_cmd", "sdc1_data";
  349. drive-strength = <10>;
  350. bias-pull-up;
  351. };
  352. };
  353. sdhc2_default_state: sdhc2-default-state {
  354. clk {
  355. pins = "sdc2_clk";
  356. drive-strength = <10>;
  357. bias-disable;
  358. };
  359. cmd-data {
  360. pins = "sdc2_cmd", "sdc2_data";
  361. drive-strength = <10>;
  362. bias-pull-up;
  363. };
  364. };
  365. sdhc3_default_state: sdhc3-default-state {
  366. clk {
  367. pins = "gpio44";
  368. function = "sdc3";
  369. drive-strength = <8>;
  370. bias-disable;
  371. };
  372. cmd {
  373. pins = "gpio43";
  374. function = "sdc3";
  375. drive-strength = <8>;
  376. bias-pull-up;
  377. };
  378. data {
  379. pins = "gpio39", "gpio40", "gpio41", "gpio42";
  380. function = "sdc3";
  381. drive-strength = <8>;
  382. bias-pull-up;
  383. };
  384. };
  385. };
  386. restart@fc4ab000 {
  387. compatible = "qcom,pshold";
  388. reg = <0xfc4ab000 0x4>;
  389. };
  390. spmi_bus: spmi@fc4cf000 {
  391. compatible = "qcom,spmi-pmic-arb";
  392. reg-names = "core", "intr", "cnfg";
  393. reg = <0xfc4cf000 0x1000>,
  394. <0xfc4cb000 0x1000>,
  395. <0xfc4ca000 0x1000>;
  396. interrupt-names = "periph_irq";
  397. interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
  398. qcom,ee = <0>;
  399. qcom,channel = <0>;
  400. #address-cells = <2>;
  401. #size-cells = <0>;
  402. interrupt-controller;
  403. #interrupt-cells = <4>;
  404. };
  405. rng@f9bff000 {
  406. compatible = "qcom,prng";
  407. reg = <0xf9bff000 0x200>;
  408. clocks = <&gcc GCC_PRNG_AHB_CLK>;
  409. clock-names = "core";
  410. };
  411. timer@f9020000 {
  412. compatible = "arm,armv7-timer-mem";
  413. reg = <0xf9020000 0x1000>;
  414. #address-cells = <1>;
  415. #size-cells = <1>;
  416. ranges;
  417. frame@f9021000 {
  418. frame-number = <0>;
  419. interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
  420. <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
  421. reg = <0xf9021000 0x1000>,
  422. <0xf9022000 0x1000>;
  423. };
  424. frame@f9023000 {
  425. frame-number = <1>;
  426. interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
  427. reg = <0xf9023000 0x1000>;
  428. status = "disabled";
  429. };
  430. frame@f9024000 {
  431. frame-number = <2>;
  432. interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
  433. reg = <0xf9024000 0x1000>;
  434. status = "disabled";
  435. };
  436. frame@f9025000 {
  437. frame-number = <3>;
  438. interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
  439. reg = <0xf9025000 0x1000>;
  440. status = "disabled";
  441. };
  442. frame@f9026000 {
  443. frame-number = <4>;
  444. interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
  445. reg = <0xf9026000 0x1000>;
  446. status = "disabled";
  447. };
  448. frame@f9027000 {
  449. frame-number = <5>;
  450. interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
  451. reg = <0xf9027000 0x1000>;
  452. status = "disabled";
  453. };
  454. frame@f9028000 {
  455. frame-number = <6>;
  456. interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
  457. reg = <0xf9028000 0x1000>;
  458. status = "disabled";
  459. };
  460. };
  461. rpm_msg_ram: memory@fc428000 {
  462. compatible = "qcom,rpm-msg-ram";
  463. reg = <0xfc428000 0x4000>;
  464. };
  465. tcsr_mutex: hwlock@fd484000 {
  466. compatible = "qcom,msm8226-tcsr-mutex", "qcom,tcsr-mutex";
  467. reg = <0xfd484000 0x1000>;
  468. #hwlock-cells = <1>;
  469. };
  470. adsp: remoteproc@fe200000 {
  471. compatible = "qcom,msm8226-adsp-pil";
  472. reg = <0xfe200000 0x100>;
  473. interrupts-extended = <&intc GIC_SPI 162 IRQ_TYPE_EDGE_RISING>,
  474. <&adsp_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
  475. <&adsp_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
  476. <&adsp_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
  477. <&adsp_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
  478. interrupt-names = "wdog", "fatal", "ready", "handover", "stop-ack";
  479. power-domains = <&rpmpd MSM8226_VDDCX>;
  480. power-domain-names = "cx";
  481. clocks = <&xo_board>;
  482. clock-names = "xo";
  483. memory-region = <&adsp_region>;
  484. qcom,smem-states = <&adsp_smp2p_out 0>;
  485. qcom,smem-state-names = "stop";
  486. status = "disabled";
  487. smd-edge {
  488. interrupts = <GIC_SPI 156 IRQ_TYPE_EDGE_RISING>;
  489. qcom,ipc = <&apcs 8 8>;
  490. qcom,smd-edge = <1>;
  491. label = "lpass";
  492. };
  493. };
  494. };
  495. timer {
  496. compatible = "arm,armv7-timer";
  497. interrupts = <GIC_PPI 2
  498. (GIC_CPU_MASK_RAW(15) | IRQ_TYPE_LEVEL_LOW)>,
  499. <GIC_PPI 3
  500. (GIC_CPU_MASK_RAW(15) | IRQ_TYPE_LEVEL_LOW)>,
  501. <GIC_PPI 4
  502. (GIC_CPU_MASK_RAW(15) | IRQ_TYPE_LEVEL_LOW)>,
  503. <GIC_PPI 1
  504. (GIC_CPU_MASK_RAW(15) | IRQ_TYPE_LEVEL_LOW)>;
  505. };
  506. };