stm32mp131.dtsi 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582
  1. // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
  2. /*
  3. * Copyright (C) 2022-2024, STMicroelectronics - All Rights Reserved
  4. * Author: Alexandre Torgue <alexandre.torgue@foss.st.com> for STMicroelectronics.
  5. */
  6. #include <dt-bindings/clock/stm32mp13-clks.h>
  7. #include <dt-bindings/interrupt-controller/arm-gic.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. clocks = <&rcc CK_MPU>;
  20. clock-names = "cpu";
  21. nvmem-cells = <&part_number_otp>;
  22. nvmem-cell-names = "part_number";
  23. };
  24. };
  25. clocks {
  26. clk_csi: clk-csi {
  27. #clock-cells = <0>;
  28. compatible = "fixed-clock";
  29. clock-frequency = <4000000>;
  30. };
  31. clk_hse: clk-hse {
  32. #clock-cells = <0>;
  33. compatible = "fixed-clock";
  34. clock-frequency = <24000000>;
  35. };
  36. clk_hsi: clk-hsi {
  37. #clock-cells = <0>;
  38. compatible = "fixed-clock";
  39. clock-frequency = <64000000>;
  40. };
  41. clk_lse: clk-lse {
  42. #clock-cells = <0>;
  43. compatible = "fixed-clock";
  44. clock-frequency = <32768>;
  45. };
  46. clk_lsi: clk-lsi {
  47. #clock-cells = <0>;
  48. compatible = "fixed-clock";
  49. clock-frequency = <32000>;
  50. };
  51. };
  52. intc: interrupt-controller@a0021000 {
  53. compatible = "arm,cortex-a7-gic";
  54. #interrupt-cells = <3>;
  55. interrupt-controller;
  56. reg = <0xa0021000 0x1000>,
  57. <0xa0022000 0x2000>;
  58. };
  59. psci {
  60. compatible = "arm,psci-1.0";
  61. method = "smc";
  62. };
  63. soc {
  64. compatible = "simple-bus";
  65. #address-cells = <1>;
  66. #size-cells = <1>;
  67. interrupt-parent = <&intc>;
  68. ranges;
  69. usart3: serial@4000f000 {
  70. compatible = "st,stm32h7-uart";
  71. reg = <0x4000f000 0x400>;
  72. interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
  73. clocks = <&rcc USART3_K>;
  74. resets = <&rcc USART3_R>;
  75. status = "disabled";
  76. };
  77. uart4: serial@40010000 {
  78. compatible = "st,stm32h7-uart";
  79. reg = <0x40010000 0x400>;
  80. interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
  81. clocks = <&rcc UART4_K>;
  82. resets = <&rcc UART4_R>;
  83. status = "disabled";
  84. };
  85. uart5: serial@40011000 {
  86. compatible = "st,stm32h7-uart";
  87. reg = <0x40011000 0x400>;
  88. interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
  89. clocks = <&rcc UART5_K>;
  90. resets = <&rcc UART5_R>;
  91. status = "disabled";
  92. };
  93. uart7: serial@40018000 {
  94. compatible = "st,stm32h7-uart";
  95. reg = <0x40018000 0x400>;
  96. interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
  97. clocks = <&rcc UART7_K>;
  98. resets = <&rcc UART7_R>;
  99. status = "disabled";
  100. };
  101. uart8: serial@40019000 {
  102. compatible = "st,stm32h7-uart";
  103. reg = <0x40019000 0x400>;
  104. interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
  105. clocks = <&rcc UART8_K>;
  106. resets = <&rcc UART8_R>;
  107. status = "disabled";
  108. };
  109. usart6: serial@44003000 {
  110. compatible = "st,stm32h7-uart";
  111. reg = <0x44003000 0x400>;
  112. interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
  113. clocks = <&rcc USART6_K>;
  114. resets = <&rcc USART6_R>;
  115. status = "disabled";
  116. };
  117. usbotg_hs: usb-otg@49000000 {
  118. compatible = "st,stm32mp15-hsotg", "snps,dwc2";
  119. reg = <0x49000000 0x40000>;
  120. clocks = <&rcc USBO_K>;
  121. clock-names = "otg";
  122. resets = <&rcc USBO_R>;
  123. reset-names = "dwc2";
  124. interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
  125. g-rx-fifo-size = <512>;
  126. g-np-tx-fifo-size = <32>;
  127. g-tx-fifo-size = <256 16 16 16 16 16 16 16>;
  128. dr_mode = "otg";
  129. usb33d-supply = <&usb33>;
  130. status = "disabled";
  131. };
  132. usart1: serial@4c000000 {
  133. compatible = "st,stm32h7-uart";
  134. reg = <0x4c000000 0x400>;
  135. interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
  136. clocks = <&rcc USART1_K>;
  137. resets = <&rcc USART1_R>;
  138. status = "disabled";
  139. };
  140. usart2: serial@4c001000 {
  141. compatible = "st,stm32h7-uart";
  142. reg = <0x4c001000 0x400>;
  143. interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
  144. clocks = <&rcc USART2_K>;
  145. resets = <&rcc USART2_R>;
  146. status = "disabled";
  147. };
  148. i2c3: i2c@4c004000 {
  149. compatible = "st,stm32mp13-i2c";
  150. reg = <0x4c004000 0x400>;
  151. interrupt-names = "event", "error";
  152. interrupts-extended = <&exti 23 IRQ_TYPE_LEVEL_HIGH>,
  153. <&intc GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
  154. clocks = <&rcc I2C3_K>;
  155. resets = <&rcc I2C3_R>;
  156. #address-cells = <1>;
  157. #size-cells = <0>;
  158. st,syscfg-fmp = <&syscfg 0x4 0x4>;
  159. i2c-analog-filter;
  160. status = "disabled";
  161. };
  162. i2c4: i2c@4c005000 {
  163. compatible = "st,stm32mp13-i2c";
  164. reg = <0x4c005000 0x400>;
  165. interrupt-names = "event", "error";
  166. interrupts-extended = <&exti 24 IRQ_TYPE_LEVEL_HIGH>,
  167. <&intc GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
  168. clocks = <&rcc I2C4_K>;
  169. resets = <&rcc I2C4_R>;
  170. #address-cells = <1>;
  171. #size-cells = <0>;
  172. st,syscfg-fmp = <&syscfg 0x4 0x8>;
  173. i2c-analog-filter;
  174. status = "disabled";
  175. };
  176. i2c5: i2c@4c006000 {
  177. compatible = "st,stm32mp13-i2c";
  178. reg = <0x4c006000 0x400>;
  179. interrupt-names = "event", "error";
  180. interrupts-extended = <&exti 25 IRQ_TYPE_LEVEL_HIGH>,
  181. <&intc GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>;
  182. clocks = <&rcc I2C5_K>;
  183. resets = <&rcc I2C5_R>;
  184. #address-cells = <1>;
  185. #size-cells = <0>;
  186. st,syscfg-fmp = <&syscfg 0x4 0x10>;
  187. i2c-analog-filter;
  188. status = "disabled";
  189. };
  190. rcc: rcc@50000000 {
  191. compatible = "st,stm32mp13-rcc", "syscon";
  192. reg = <0x50000000 0x1000>;
  193. #address-cells = <1>;
  194. #size-cells = <0>;
  195. #clock-cells = <1>;
  196. #reset-cells = <1>;
  197. interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
  198. secure-interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
  199. secure-interrupt-names = "wakeup";
  200. };
  201. pwr_regulators: pwr@50001000 {
  202. compatible = "st,stm32mp1,pwr-reg";
  203. reg = <0x50001000 0x10>;
  204. reg11: reg11 {
  205. regulator-name = "reg11";
  206. regulator-min-microvolt = <1100000>;
  207. regulator-max-microvolt = <1100000>;
  208. };
  209. reg18: reg18 {
  210. regulator-name = "reg18";
  211. regulator-min-microvolt = <1800000>;
  212. regulator-max-microvolt = <1800000>;
  213. };
  214. usb33: usb33 {
  215. regulator-name = "usb33";
  216. regulator-min-microvolt = <3300000>;
  217. regulator-max-microvolt = <3300000>;
  218. };
  219. };
  220. exti: interrupt-controller@5000d000 {
  221. compatible = "st,stm32mp13-exti", "syscon";
  222. interrupt-controller;
  223. #interrupt-cells = <2>;
  224. reg = <0x5000d000 0x400>;
  225. };
  226. syscfg: syscon@50020000 {
  227. compatible = "st,stm32mp157-syscfg", "syscon";
  228. reg = <0x50020000 0x400>;
  229. clocks = <&rcc SYSCFG>;
  230. };
  231. hash: hash@54003000 {
  232. compatible = "st,stm32mp13-hash";
  233. reg = <0x54003000 0x400>;
  234. clocks = <&rcc HASH1>;
  235. resets = <&rcc HASH1_R>;
  236. status = "disabled";
  237. };
  238. rng: rng@54004000 {
  239. compatible = "st,stm32mp13-rng";
  240. reg = <0x54004000 0x400>;
  241. clocks = <&rcc RNG1_K>;
  242. resets = <&rcc RNG1_R>;
  243. status = "disabled";
  244. };
  245. fmc: memory-controller@58002000 {
  246. compatible = "st,stm32mp1-fmc2-ebi";
  247. reg = <0x58002000 0x1000>;
  248. ranges = <0 0 0x60000000 0x04000000>, /* EBI CS 1 */
  249. <1 0 0x64000000 0x04000000>, /* EBI CS 2 */
  250. <2 0 0x68000000 0x04000000>, /* EBI CS 3 */
  251. <3 0 0x6c000000 0x04000000>, /* EBI CS 4 */
  252. <4 0 0x80000000 0x10000000>; /* NAND */
  253. #address-cells = <2>;
  254. #size-cells = <1>;
  255. clocks = <&rcc FMC_K>;
  256. resets = <&rcc FMC_R>;
  257. status = "disabled";
  258. nand-controller@4,0 {
  259. compatible = "st,stm32mp1-fmc2-nfc";
  260. reg = <4 0x00000000 0x1000>,
  261. <4 0x08010000 0x1000>,
  262. <4 0x08020000 0x1000>,
  263. <4 0x01000000 0x1000>,
  264. <4 0x09010000 0x1000>,
  265. <4 0x09020000 0x1000>;
  266. #address-cells = <1>;
  267. #size-cells = <0>;
  268. interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
  269. status = "disabled";
  270. };
  271. };
  272. qspi: spi@58003000 {
  273. compatible = "st,stm32f469-qspi";
  274. reg = <0x58003000 0x1000>, <0x70000000 0x10000000>;
  275. reg-names = "qspi", "qspi_mm";
  276. interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
  277. clocks = <&rcc QSPI_K>;
  278. resets = <&rcc QSPI_R>;
  279. status = "disabled";
  280. };
  281. sdmmc1: mmc@58005000 {
  282. compatible = "st,stm32-sdmmc2", "arm,pl18x", "arm,primecell";
  283. arm,primecell-periphid = <0x20253180>;
  284. reg = <0x58005000 0x1000>, <0x58006000 0x1000>;
  285. clocks = <&rcc SDMMC1_K>;
  286. clock-names = "apb_pclk";
  287. resets = <&rcc SDMMC1_R>;
  288. cap-sd-highspeed;
  289. cap-mmc-highspeed;
  290. max-frequency = <130000000>;
  291. status = "disabled";
  292. };
  293. sdmmc2: mmc@58007000 {
  294. compatible = "st,stm32-sdmmc2", "arm,pl18x", "arm,primecell";
  295. arm,primecell-periphid = <0x20253180>;
  296. reg = <0x58007000 0x1000>, <0x58008000 0x1000>;
  297. clocks = <&rcc SDMMC2_K>;
  298. clock-names = "apb_pclk";
  299. resets = <&rcc SDMMC2_R>;
  300. cap-sd-highspeed;
  301. cap-mmc-highspeed;
  302. max-frequency = <130000000>;
  303. status = "disabled";
  304. };
  305. usbh_ohci: usb@5800c000 {
  306. compatible = "generic-ohci";
  307. reg = <0x5800c000 0x1000>;
  308. clocks = <&rcc USBH>;
  309. resets = <&rcc USBH_R>;
  310. interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
  311. status = "disabled";
  312. };
  313. usbh_ehci: usb@5800d000 {
  314. compatible = "generic-ehci";
  315. reg = <0x5800d000 0x1000>;
  316. clocks = <&rcc USBH>;
  317. resets = <&rcc USBH_R>;
  318. interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
  319. companion = <&usbh_ohci>;
  320. status = "disabled";
  321. };
  322. iwdg2: watchdog@5a002000 {
  323. compatible = "st,stm32mp1-iwdg";
  324. reg = <0x5a002000 0x400>;
  325. clocks = <&rcc IWDG2>, <&rcc CK_LSI>;
  326. clock-names = "pclk", "lsi";
  327. status = "disabled";
  328. };
  329. ddr: ddr@5a003000 {
  330. compatible = "st,stm32mp13-ddr";
  331. reg = <0x5a003000 0x550>, <0x5a004000 0x234>;
  332. clocks = <&rcc AXIDCG>,
  333. <&rcc DDRC1>,
  334. <&rcc DDRPHYC>,
  335. <&rcc DDRCAPB>,
  336. <&rcc DDRPHYCAPB>;
  337. clock-names = "axidcg",
  338. "ddrc1",
  339. "ddrphyc",
  340. "ddrcapb",
  341. "ddrphycapb";
  342. };
  343. usbphyc: usbphyc@5a006000 {
  344. #address-cells = <1>;
  345. #size-cells = <0>;
  346. #clock-cells = <0>;
  347. compatible = "st,stm32mp1-usbphyc";
  348. reg = <0x5a006000 0x1000>;
  349. clocks = <&rcc USBPHY_K>;
  350. resets = <&rcc USBPHY_R>;
  351. vdda1v1-supply = <&reg11>;
  352. vdda1v8-supply = <&reg18>;
  353. status = "disabled";
  354. usbphyc_port0: usb-phy@0 {
  355. #phy-cells = <0>;
  356. reg = <0>;
  357. };
  358. usbphyc_port1: usb-phy@1 {
  359. #phy-cells = <1>;
  360. reg = <1>;
  361. };
  362. };
  363. iwdg1: watchdog@5c003000 {
  364. compatible = "st,stm32mp1-iwdg";
  365. reg = <0x5c003000 0x400>;
  366. interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
  367. clocks = <&rcc IWDG1>, <&rcc CK_LSI>;
  368. clock-names = "pclk", "lsi";
  369. status = "disabled";
  370. };
  371. bsec: efuse@5c005000 {
  372. compatible = "st,stm32mp13-bsec";
  373. reg = <0x5c005000 0x400>;
  374. #address-cells = <1>;
  375. #size-cells = <1>;
  376. cfg0_otp: cfg0-otp@0 {
  377. reg = <0x0 0x2>;
  378. };
  379. part_number_otp: part-number-otp@4 {
  380. reg = <0x4 0x2>;
  381. };
  382. monotonic_otp: monotonic-otp@10 {
  383. reg = <0x10 0x4>;
  384. };
  385. nand_otp: cfg9-otp@24 {
  386. reg = <0x24 0x4>;
  387. };
  388. nand2_otp: cfg10-otp@28 {
  389. reg = <0x28 0x4>;
  390. };
  391. uid_otp: uid-otp@34 {
  392. reg = <0x34 0xc>;
  393. };
  394. hw2_otp: hw2-otp@48 {
  395. reg = <0x48 0x4>;
  396. };
  397. ts_cal1: calib@5c {
  398. reg = <0x5c 0x2>;
  399. };
  400. ts_cal2: calib@5e {
  401. reg = <0x5e 0x2>;
  402. };
  403. pkh_otp: pkh-otp@60 {
  404. reg = <0x60 0x20>;
  405. };
  406. mac_addr: mac@e4 {
  407. reg = <0xe4 0xc>;
  408. st,non-secure-otp;
  409. };
  410. oem_enc_key: oem-enc-key@170 {
  411. reg = <0x170 0x10>;
  412. };
  413. };
  414. /*
  415. * Break node order to solve dependency probe issue between
  416. * pinctrl and exti.
  417. */
  418. pinctrl: pinctrl@50002000 {
  419. #address-cells = <1>;
  420. #size-cells = <1>;
  421. compatible = "st,stm32mp135-pinctrl";
  422. ranges = <0 0x50002000 0x8400>;
  423. interrupt-parent = <&exti>;
  424. st,syscfg = <&exti 0x60 0xff>;
  425. gpioa: gpio@50002000 {
  426. gpio-controller;
  427. #gpio-cells = <2>;
  428. interrupt-controller;
  429. #interrupt-cells = <2>;
  430. reg = <0x0 0x400>;
  431. clocks = <&rcc GPIOA>;
  432. st,bank-name = "GPIOA";
  433. ngpios = <16>;
  434. gpio-ranges = <&pinctrl 0 0 16>;
  435. };
  436. gpiob: gpio@50003000 {
  437. gpio-controller;
  438. #gpio-cells = <2>;
  439. interrupt-controller;
  440. #interrupt-cells = <2>;
  441. reg = <0x1000 0x400>;
  442. clocks = <&rcc GPIOB>;
  443. st,bank-name = "GPIOB";
  444. ngpios = <16>;
  445. gpio-ranges = <&pinctrl 0 16 16>;
  446. };
  447. gpioc: gpio@50004000 {
  448. gpio-controller;
  449. #gpio-cells = <2>;
  450. interrupt-controller;
  451. #interrupt-cells = <2>;
  452. reg = <0x2000 0x400>;
  453. clocks = <&rcc GPIOC>;
  454. st,bank-name = "GPIOC";
  455. ngpios = <16>;
  456. gpio-ranges = <&pinctrl 0 32 16>;
  457. };
  458. gpiod: gpio@50005000 {
  459. gpio-controller;
  460. #gpio-cells = <2>;
  461. interrupt-controller;
  462. #interrupt-cells = <2>;
  463. reg = <0x3000 0x400>;
  464. clocks = <&rcc GPIOD>;
  465. st,bank-name = "GPIOD";
  466. ngpios = <16>;
  467. gpio-ranges = <&pinctrl 0 48 16>;
  468. };
  469. gpioe: gpio@50006000 {
  470. gpio-controller;
  471. #gpio-cells = <2>;
  472. interrupt-controller;
  473. #interrupt-cells = <2>;
  474. reg = <0x4000 0x400>;
  475. clocks = <&rcc GPIOE>;
  476. st,bank-name = "GPIOE";
  477. ngpios = <16>;
  478. gpio-ranges = <&pinctrl 0 64 16>;
  479. };
  480. gpiof: gpio@50007000 {
  481. gpio-controller;
  482. #gpio-cells = <2>;
  483. interrupt-controller;
  484. #interrupt-cells = <2>;
  485. reg = <0x5000 0x400>;
  486. clocks = <&rcc GPIOF>;
  487. st,bank-name = "GPIOF";
  488. ngpios = <16>;
  489. gpio-ranges = <&pinctrl 0 80 16>;
  490. };
  491. gpiog: gpio@50008000 {
  492. gpio-controller;
  493. #gpio-cells = <2>;
  494. interrupt-controller;
  495. #interrupt-cells = <2>;
  496. reg = <0x6000 0x400>;
  497. clocks = <&rcc GPIOG>;
  498. st,bank-name = "GPIOG";
  499. ngpios = <16>;
  500. gpio-ranges = <&pinctrl 0 96 16>;
  501. };
  502. gpioh: gpio@50009000 {
  503. gpio-controller;
  504. #gpio-cells = <2>;
  505. interrupt-controller;
  506. #interrupt-cells = <2>;
  507. reg = <0x7000 0x400>;
  508. clocks = <&rcc GPIOH>;
  509. st,bank-name = "GPIOH";
  510. ngpios = <15>;
  511. gpio-ranges = <&pinctrl 0 112 15>;
  512. };
  513. gpioi: gpio@5000a000 {
  514. gpio-controller;
  515. #gpio-cells = <2>;
  516. interrupt-controller;
  517. #interrupt-cells = <2>;
  518. reg = <0x8000 0x400>;
  519. clocks = <&rcc GPIOI>;
  520. st,bank-name = "GPIOI";
  521. ngpios = <8>;
  522. gpio-ranges = <&pinctrl 0 128 8>;
  523. };
  524. };
  525. };
  526. };