stm32mp131.dtsi 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540
  1. // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
  2. /*
  3. * Copyright (C) STMicroelectronics 2021 - All Rights Reserved
  4. * Author: Alexandre Torgue <[email protected]> for STMicroelectronics.
  5. */
  6. #include <dt-bindings/interrupt-controller/arm-gic.h>
  7. #include <dt-bindings/clock/stm32mp13-clks.h>
  8. #include <dt-bindings/reset/stm32mp13-resets.h>
  9. / {
  10. #address-cells = <1>;
  11. #size-cells = <1>;
  12. cpus {
  13. #address-cells = <1>;
  14. #size-cells = <0>;
  15. cpu0: cpu@0 {
  16. compatible = "arm,cortex-a7";
  17. device_type = "cpu";
  18. reg = <0>;
  19. };
  20. };
  21. arm-pmu {
  22. compatible = "arm,cortex-a7-pmu";
  23. interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
  24. interrupt-affinity = <&cpu0>;
  25. interrupt-parent = <&intc>;
  26. };
  27. firmware {
  28. optee {
  29. method = "smc";
  30. compatible = "linaro,optee-tz";
  31. };
  32. scmi: scmi {
  33. compatible = "linaro,scmi-optee";
  34. #address-cells = <1>;
  35. #size-cells = <0>;
  36. linaro,optee-channel-id = <0>;
  37. shmem = <&scmi_shm>;
  38. scmi_clk: protocol@14 {
  39. reg = <0x14>;
  40. #clock-cells = <1>;
  41. };
  42. scmi_reset: protocol@16 {
  43. reg = <0x16>;
  44. #reset-cells = <1>;
  45. };
  46. };
  47. };
  48. intc: interrupt-controller@a0021000 {
  49. compatible = "arm,cortex-a7-gic";
  50. #interrupt-cells = <3>;
  51. interrupt-controller;
  52. reg = <0xa0021000 0x1000>,
  53. <0xa0022000 0x2000>;
  54. };
  55. psci {
  56. compatible = "arm,psci-1.0";
  57. method = "smc";
  58. };
  59. timer {
  60. compatible = "arm,armv7-timer";
  61. interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
  62. <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
  63. <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
  64. <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>;
  65. interrupt-parent = <&intc>;
  66. always-on;
  67. };
  68. soc {
  69. compatible = "simple-bus";
  70. #address-cells = <1>;
  71. #size-cells = <1>;
  72. interrupt-parent = <&intc>;
  73. ranges;
  74. scmi_sram: sram@2ffff000 {
  75. compatible = "mmio-sram";
  76. reg = <0x2ffff000 0x1000>;
  77. #address-cells = <1>;
  78. #size-cells = <1>;
  79. ranges = <0 0x2ffff000 0x1000>;
  80. scmi_shm: scmi-sram@0 {
  81. compatible = "arm,scmi-shmem";
  82. reg = <0 0x80>;
  83. };
  84. };
  85. spi2: spi@4000b000 {
  86. compatible = "st,stm32h7-spi";
  87. reg = <0x4000b000 0x400>;
  88. interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
  89. clocks = <&rcc SPI2_K>;
  90. resets = <&rcc SPI2_R>;
  91. #address-cells = <1>;
  92. #size-cells = <0>;
  93. dmas = <&dmamux1 39 0x400 0x01>,
  94. <&dmamux1 40 0x400 0x01>;
  95. dma-names = "rx", "tx";
  96. status = "disabled";
  97. };
  98. spi3: spi@4000c000 {
  99. compatible = "st,stm32h7-spi";
  100. reg = <0x4000c000 0x400>;
  101. interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
  102. clocks = <&rcc SPI3_K>;
  103. resets = <&rcc SPI3_R>;
  104. #address-cells = <1>;
  105. #size-cells = <0>;
  106. dmas = <&dmamux1 61 0x400 0x01>,
  107. <&dmamux1 62 0x400 0x01>;
  108. dma-names = "rx", "tx";
  109. status = "disabled";
  110. };
  111. uart4: serial@40010000 {
  112. compatible = "st,stm32h7-uart";
  113. reg = <0x40010000 0x400>;
  114. interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
  115. clocks = <&rcc UART4_K>;
  116. resets = <&rcc UART4_R>;
  117. status = "disabled";
  118. };
  119. i2c1: i2c@40012000 {
  120. compatible = "st,stm32mp13-i2c";
  121. reg = <0x40012000 0x400>;
  122. interrupt-names = "event", "error";
  123. interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>,
  124. <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
  125. clocks = <&rcc I2C1_K>;
  126. resets = <&rcc I2C1_R>;
  127. #address-cells = <1>;
  128. #size-cells = <0>;
  129. dmas = <&dmamux1 33 0x400 0x1>,
  130. <&dmamux1 34 0x400 0x1>;
  131. dma-names = "rx", "tx";
  132. st,syscfg-fmp = <&syscfg 0x4 0x1>;
  133. i2c-analog-filter;
  134. status = "disabled";
  135. };
  136. i2c2: i2c@40013000 {
  137. compatible = "st,stm32mp13-i2c";
  138. reg = <0x40013000 0x400>;
  139. interrupt-names = "event", "error";
  140. interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>,
  141. <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
  142. clocks = <&rcc I2C2_K>;
  143. resets = <&rcc I2C2_R>;
  144. #address-cells = <1>;
  145. #size-cells = <0>;
  146. dmas = <&dmamux1 35 0x400 0x1>,
  147. <&dmamux1 36 0x400 0x1>;
  148. dma-names = "rx", "tx";
  149. st,syscfg-fmp = <&syscfg 0x4 0x2>;
  150. i2c-analog-filter;
  151. status = "disabled";
  152. };
  153. spi1: spi@44004000 {
  154. compatible = "st,stm32h7-spi";
  155. reg = <0x44004000 0x400>;
  156. interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
  157. clocks = <&rcc SPI1_K>;
  158. resets = <&rcc SPI1_R>;
  159. #address-cells = <1>;
  160. #size-cells = <0>;
  161. dmas = <&dmamux1 37 0x400 0x01>,
  162. <&dmamux1 38 0x400 0x01>;
  163. dma-names = "rx", "tx";
  164. status = "disabled";
  165. };
  166. dma1: dma-controller@48000000 {
  167. compatible = "st,stm32-dma";
  168. reg = <0x48000000 0x400>;
  169. interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
  170. <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
  171. <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>,
  172. <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>,
  173. <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>,
  174. <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
  175. <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>,
  176. <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
  177. clocks = <&rcc DMA1>;
  178. resets = <&rcc DMA1_R>;
  179. #dma-cells = <4>;
  180. st,mem2mem;
  181. dma-requests = <8>;
  182. };
  183. dma2: dma-controller@48001000 {
  184. compatible = "st,stm32-dma";
  185. reg = <0x48001000 0x400>;
  186. interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>,
  187. <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>,
  188. <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>,
  189. <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>,
  190. <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>,
  191. <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
  192. <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
  193. <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
  194. clocks = <&rcc DMA2>;
  195. resets = <&rcc DMA2_R>;
  196. #dma-cells = <4>;
  197. st,mem2mem;
  198. dma-requests = <8>;
  199. };
  200. dmamux1: dma-router@48002000 {
  201. compatible = "st,stm32h7-dmamux";
  202. reg = <0x48002000 0x40>;
  203. clocks = <&rcc DMAMUX1>;
  204. resets = <&rcc DMAMUX1_R>;
  205. #dma-cells = <3>;
  206. dma-masters = <&dma1 &dma2>;
  207. dma-requests = <128>;
  208. dma-channels = <16>;
  209. };
  210. spi4: spi@4c002000 {
  211. compatible = "st,stm32h7-spi";
  212. reg = <0x4c002000 0x400>;
  213. interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
  214. clocks = <&rcc SPI4_K>;
  215. resets = <&rcc SPI4_R>;
  216. #address-cells = <1>;
  217. #size-cells = <0>;
  218. dmas = <&dmamux1 83 0x400 0x01>,
  219. <&dmamux1 84 0x400 0x01>;
  220. dma-names = "rx", "tx";
  221. status = "disabled";
  222. };
  223. spi5: spi@4c003000 {
  224. compatible = "st,stm32h7-spi";
  225. reg = <0x4c003000 0x400>;
  226. interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
  227. clocks = <&rcc SPI5_K>;
  228. resets = <&rcc SPI5_R>;
  229. #address-cells = <1>;
  230. #size-cells = <0>;
  231. dmas = <&dmamux1 85 0x400 0x01>,
  232. <&dmamux1 86 0x400 0x01>;
  233. dma-names = "rx", "tx";
  234. status = "disabled";
  235. };
  236. i2c3: i2c@4c004000 {
  237. compatible = "st,stm32mp13-i2c";
  238. reg = <0x4c004000 0x400>;
  239. interrupt-names = "event", "error";
  240. interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>,
  241. <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
  242. clocks = <&rcc I2C3_K>;
  243. resets = <&rcc I2C3_R>;
  244. #address-cells = <1>;
  245. #size-cells = <0>;
  246. dmas = <&dmamux1 73 0x400 0x1>,
  247. <&dmamux1 74 0x400 0x1>;
  248. dma-names = "rx", "tx";
  249. st,syscfg-fmp = <&syscfg 0x4 0x4>;
  250. i2c-analog-filter;
  251. status = "disabled";
  252. };
  253. i2c4: i2c@4c005000 {
  254. compatible = "st,stm32mp13-i2c";
  255. reg = <0x4c005000 0x400>;
  256. interrupt-names = "event", "error";
  257. interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>,
  258. <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
  259. clocks = <&rcc I2C4_K>;
  260. resets = <&rcc I2C4_R>;
  261. #address-cells = <1>;
  262. #size-cells = <0>;
  263. dmas = <&dmamux1 75 0x400 0x1>,
  264. <&dmamux1 76 0x400 0x1>;
  265. dma-names = "rx", "tx";
  266. st,syscfg-fmp = <&syscfg 0x4 0x8>;
  267. i2c-analog-filter;
  268. status = "disabled";
  269. };
  270. i2c5: i2c@4c006000 {
  271. compatible = "st,stm32mp13-i2c";
  272. reg = <0x4c006000 0x400>;
  273. interrupt-names = "event", "error";
  274. interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>,
  275. <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>;
  276. clocks = <&rcc I2C5_K>;
  277. resets = <&rcc I2C5_R>;
  278. #address-cells = <1>;
  279. #size-cells = <0>;
  280. dmas = <&dmamux1 115 0x400 0x1>,
  281. <&dmamux1 116 0x400 0x1>;
  282. dma-names = "rx", "tx";
  283. st,syscfg-fmp = <&syscfg 0x4 0x10>;
  284. i2c-analog-filter;
  285. status = "disabled";
  286. };
  287. rcc: rcc@50000000 {
  288. compatible = "st,stm32mp13-rcc", "syscon";
  289. reg = <0x50000000 0x1000>;
  290. #clock-cells = <1>;
  291. #reset-cells = <1>;
  292. clock-names = "hse", "hsi", "csi", "lse", "lsi";
  293. clocks = <&scmi_clk CK_SCMI_HSE>,
  294. <&scmi_clk CK_SCMI_HSI>,
  295. <&scmi_clk CK_SCMI_CSI>,
  296. <&scmi_clk CK_SCMI_LSE>,
  297. <&scmi_clk CK_SCMI_LSI>;
  298. };
  299. exti: interrupt-controller@5000d000 {
  300. compatible = "st,stm32mp13-exti", "syscon";
  301. interrupt-controller;
  302. #interrupt-cells = <2>;
  303. reg = <0x5000d000 0x400>;
  304. };
  305. syscfg: syscon@50020000 {
  306. compatible = "st,stm32mp157-syscfg", "syscon";
  307. reg = <0x50020000 0x400>;
  308. clocks = <&rcc SYSCFG>;
  309. };
  310. mdma: dma-controller@58000000 {
  311. compatible = "st,stm32h7-mdma";
  312. reg = <0x58000000 0x1000>;
  313. interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
  314. clocks = <&rcc MDMA>;
  315. #dma-cells = <5>;
  316. dma-channels = <32>;
  317. dma-requests = <48>;
  318. };
  319. sdmmc1: mmc@58005000 {
  320. compatible = "st,stm32-sdmmc2", "arm,pl18x", "arm,primecell";
  321. arm,primecell-periphid = <0x20253180>;
  322. reg = <0x58005000 0x1000>, <0x58006000 0x1000>;
  323. interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
  324. interrupt-names = "cmd_irq";
  325. clocks = <&rcc SDMMC1_K>;
  326. clock-names = "apb_pclk";
  327. resets = <&rcc SDMMC1_R>;
  328. cap-sd-highspeed;
  329. cap-mmc-highspeed;
  330. max-frequency = <130000000>;
  331. status = "disabled";
  332. };
  333. sdmmc2: mmc@58007000 {
  334. compatible = "st,stm32-sdmmc2", "arm,pl18x", "arm,primecell";
  335. arm,primecell-periphid = <0x20253180>;
  336. reg = <0x58007000 0x1000>, <0x58008000 0x1000>;
  337. interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
  338. interrupt-names = "cmd_irq";
  339. clocks = <&rcc SDMMC2_K>;
  340. clock-names = "apb_pclk";
  341. resets = <&rcc SDMMC2_R>;
  342. cap-sd-highspeed;
  343. cap-mmc-highspeed;
  344. max-frequency = <130000000>;
  345. status = "disabled";
  346. };
  347. iwdg2: watchdog@5a002000 {
  348. compatible = "st,stm32mp1-iwdg";
  349. reg = <0x5a002000 0x400>;
  350. clocks = <&rcc IWDG2>, <&scmi_clk CK_SCMI_LSI>;
  351. clock-names = "pclk", "lsi";
  352. status = "disabled";
  353. };
  354. rtc: rtc@5c004000 {
  355. compatible = "st,stm32mp1-rtc";
  356. reg = <0x5c004000 0x400>;
  357. interrupts-extended = <&exti 19 IRQ_TYPE_LEVEL_HIGH>;
  358. clocks = <&scmi_clk CK_SCMI_RTCAPB>,
  359. <&scmi_clk CK_SCMI_RTC>;
  360. clock-names = "pclk", "rtc_ck";
  361. status = "disabled";
  362. };
  363. bsec: efuse@5c005000 {
  364. compatible = "st,stm32mp15-bsec";
  365. reg = <0x5c005000 0x400>;
  366. #address-cells = <1>;
  367. #size-cells = <1>;
  368. part_number_otp: part_number_otp@4 {
  369. reg = <0x4 0x2>;
  370. bits = <0 12>;
  371. };
  372. ts_cal1: calib@5c {
  373. reg = <0x5c 0x2>;
  374. };
  375. ts_cal2: calib@5e {
  376. reg = <0x5e 0x2>;
  377. };
  378. };
  379. /*
  380. * Break node order to solve dependency probe issue between
  381. * pinctrl and exti.
  382. */
  383. pinctrl: pinctrl@50002000 {
  384. #address-cells = <1>;
  385. #size-cells = <1>;
  386. compatible = "st,stm32mp135-pinctrl";
  387. ranges = <0 0x50002000 0x8400>;
  388. interrupt-parent = <&exti>;
  389. st,syscfg = <&exti 0x60 0xff>;
  390. pins-are-numbered;
  391. gpioa: gpio@50002000 {
  392. gpio-controller;
  393. #gpio-cells = <2>;
  394. interrupt-controller;
  395. #interrupt-cells = <2>;
  396. reg = <0x0 0x400>;
  397. clocks = <&rcc GPIOA>;
  398. st,bank-name = "GPIOA";
  399. ngpios = <16>;
  400. gpio-ranges = <&pinctrl 0 0 16>;
  401. };
  402. gpiob: gpio@50003000 {
  403. gpio-controller;
  404. #gpio-cells = <2>;
  405. interrupt-controller;
  406. #interrupt-cells = <2>;
  407. reg = <0x1000 0x400>;
  408. clocks = <&rcc GPIOB>;
  409. st,bank-name = "GPIOB";
  410. ngpios = <16>;
  411. gpio-ranges = <&pinctrl 0 16 16>;
  412. };
  413. gpioc: gpio@50004000 {
  414. gpio-controller;
  415. #gpio-cells = <2>;
  416. interrupt-controller;
  417. #interrupt-cells = <2>;
  418. reg = <0x2000 0x400>;
  419. clocks = <&rcc GPIOC>;
  420. st,bank-name = "GPIOC";
  421. ngpios = <16>;
  422. gpio-ranges = <&pinctrl 0 32 16>;
  423. };
  424. gpiod: gpio@50005000 {
  425. gpio-controller;
  426. #gpio-cells = <2>;
  427. interrupt-controller;
  428. #interrupt-cells = <2>;
  429. reg = <0x3000 0x400>;
  430. clocks = <&rcc GPIOD>;
  431. st,bank-name = "GPIOD";
  432. ngpios = <16>;
  433. gpio-ranges = <&pinctrl 0 48 16>;
  434. };
  435. gpioe: gpio@50006000 {
  436. gpio-controller;
  437. #gpio-cells = <2>;
  438. interrupt-controller;
  439. #interrupt-cells = <2>;
  440. reg = <0x4000 0x400>;
  441. clocks = <&rcc GPIOE>;
  442. st,bank-name = "GPIOE";
  443. ngpios = <16>;
  444. gpio-ranges = <&pinctrl 0 64 16>;
  445. };
  446. gpiof: gpio@50007000 {
  447. gpio-controller;
  448. #gpio-cells = <2>;
  449. interrupt-controller;
  450. #interrupt-cells = <2>;
  451. reg = <0x5000 0x400>;
  452. clocks = <&rcc GPIOF>;
  453. st,bank-name = "GPIOF";
  454. ngpios = <16>;
  455. gpio-ranges = <&pinctrl 0 80 16>;
  456. };
  457. gpiog: gpio@50008000 {
  458. gpio-controller;
  459. #gpio-cells = <2>;
  460. interrupt-controller;
  461. #interrupt-cells = <2>;
  462. reg = <0x6000 0x400>;
  463. clocks = <&rcc GPIOG>;
  464. st,bank-name = "GPIOG";
  465. ngpios = <16>;
  466. gpio-ranges = <&pinctrl 0 96 16>;
  467. };
  468. gpioh: gpio@50009000 {
  469. gpio-controller;
  470. #gpio-cells = <2>;
  471. interrupt-controller;
  472. #interrupt-cells = <2>;
  473. reg = <0x7000 0x400>;
  474. clocks = <&rcc GPIOH>;
  475. st,bank-name = "GPIOH";
  476. ngpios = <15>;
  477. gpio-ranges = <&pinctrl 0 112 15>;
  478. };
  479. gpioi: gpio@5000a000 {
  480. gpio-controller;
  481. #gpio-cells = <2>;
  482. interrupt-controller;
  483. #interrupt-cells = <2>;
  484. reg = <0x8000 0x400>;
  485. clocks = <&rcc GPIOI>;
  486. st,bank-name = "GPIOI";
  487. ngpios = <8>;
  488. gpio-ranges = <&pinctrl 0 128 8>;
  489. };
  490. };
  491. };
  492. };