stm32mp251.dtsi 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486
  1. // SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-3-Clause)
  2. /*
  3. * Copyright (C) 2023-2024, STMicroelectronics - All Rights Reserved
  4. * Author: Alexandre Torgue <alexandre.torgue@foss.st.com> for STMicroelectronics.
  5. */
  6. #include <dt-bindings/clock/stm32mp25-clks.h>
  7. #include <dt-bindings/interrupt-controller/arm-gic.h>
  8. #include <dt-bindings/reset/stm32mp25-resets.h>
  9. / {
  10. #address-cells = <2>;
  11. #size-cells = <2>;
  12. cpus {
  13. #address-cells = <1>;
  14. #size-cells = <0>;
  15. cpu0: cpu@0 {
  16. compatible = "arm,cortex-a35";
  17. device_type = "cpu";
  18. reg = <0>;
  19. enable-method = "psci";
  20. };
  21. };
  22. clocks {
  23. clk_hse: clk-hse {
  24. #clock-cells = <0>;
  25. compatible = "fixed-clock";
  26. clock-frequency = <48000000>;
  27. };
  28. clk_hsi: clk-hsi {
  29. #clock-cells = <0>;
  30. compatible = "fixed-clock";
  31. clock-frequency = <64000000>;
  32. };
  33. clk_lse: clk-lse {
  34. #clock-cells = <0>;
  35. compatible = "fixed-clock";
  36. clock-frequency = <32768>;
  37. };
  38. clk_lsi: clk-lsi {
  39. #clock-cells = <0>;
  40. compatible = "fixed-clock";
  41. clock-frequency = <32000>;
  42. };
  43. clk_msi: clk-msi {
  44. #clock-cells = <0>;
  45. compatible = "fixed-clock";
  46. clock-frequency = <16000000>;
  47. };
  48. };
  49. intc: interrupt-controller@4ac00000 {
  50. compatible = "arm,cortex-a7-gic";
  51. #interrupt-cells = <3>;
  52. #address-cells = <1>;
  53. interrupt-controller;
  54. reg = <0x0 0x4ac10000 0x0 0x1000>,
  55. <0x0 0x4ac20000 0x0 0x2000>,
  56. <0x0 0x4ac40000 0x0 0x2000>,
  57. <0x0 0x4ac60000 0x0 0x2000>;
  58. };
  59. timer {
  60. compatible = "arm,armv8-timer";
  61. interrupt-parent = <&intc>;
  62. interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
  63. <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
  64. <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
  65. <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
  66. always-on;
  67. };
  68. soc@0 {
  69. compatible = "simple-bus";
  70. #address-cells = <1>;
  71. #size-cells = <1>;
  72. interrupt-parent = <&intc>;
  73. ranges = <0x0 0x0 0x0 0x80000000>;
  74. rifsc: rifsc@42080000 {
  75. compatible = "st,stm32mp25-rifsc";
  76. reg = <0x42080000 0x1000>;
  77. #address-cells = <1>;
  78. #size-cells = <1>;
  79. usart2: serial@400e0000 {
  80. compatible = "st,stm32h7-uart";
  81. reg = <0x400e0000 0x400>;
  82. clocks = <&rcc CK_KER_USART2>;
  83. resets = <&rcc USART2_R>;
  84. status = "disabled";
  85. };
  86. usart3: serial@400f0000 {
  87. compatible = "st,stm32h7-uart";
  88. reg = <0x400f0000 0x400>;
  89. clocks = <&rcc CK_KER_USART3>;
  90. resets = <&rcc USART3_R>;
  91. status = "disabled";
  92. };
  93. uart4: serial@40100000 {
  94. compatible = "st,stm32h7-uart";
  95. reg = <0x40100000 0x400>;
  96. clocks = <&rcc CK_KER_UART4>;
  97. resets = <&rcc UART4_R>;
  98. status = "disabled";
  99. };
  100. uart5: serial@40110000 {
  101. compatible = "st,stm32h7-uart";
  102. reg = <0x40110000 0x400>;
  103. clocks = <&rcc CK_KER_UART5>;
  104. resets = <&rcc UART5_R>;
  105. status = "disabled";
  106. };
  107. i2c1: i2c@40120000 {
  108. compatible = "st,stm32mp25-i2c";
  109. reg = <0x40120000 0x400>;
  110. clocks = <&rcc CK_KER_I2C1>;
  111. resets = <&rcc I2C1_R>;
  112. status = "disabled";
  113. };
  114. i2c2: i2c@40130000 {
  115. compatible = "st,stm32mp25-i2c";
  116. reg = <0x40130000 0x400>;
  117. clocks = <&rcc CK_KER_I2C2>;
  118. resets = <&rcc I2C2_R>;
  119. status = "disabled";
  120. };
  121. i2c3: i2c@40140000 {
  122. compatible = "st,stm32mp25-i2c";
  123. reg = <0x40140000 0x400>;
  124. clocks = <&rcc CK_KER_I2C3>;
  125. resets = <&rcc I2C3_R>;
  126. status = "disabled";
  127. };
  128. i2c4: i2c@40150000 {
  129. compatible = "st,stm32mp25-i2c";
  130. reg = <0x40150000 0x400>;
  131. clocks = <&rcc CK_KER_I2C4>;
  132. resets = <&rcc I2C4_R>;
  133. status = "disabled";
  134. };
  135. i2c5: i2c@40160000 {
  136. compatible = "st,stm32mp25-i2c";
  137. reg = <0x40160000 0x400>;
  138. clocks = <&rcc CK_KER_I2C5>;
  139. resets = <&rcc I2C5_R>;
  140. status = "disabled";
  141. };
  142. i2c6: i2c@40170000 {
  143. compatible = "st,stm32mp25-i2c";
  144. reg = <0x40170000 0x400>;
  145. clocks = <&rcc CK_KER_I2C6>;
  146. resets = <&rcc I2C6_R>;
  147. status = "disabled";
  148. };
  149. i2c7: i2c@40180000 {
  150. compatible = "st,stm32mp25-i2c";
  151. reg = <0x40180000 0x400>;
  152. clocks = <&rcc CK_KER_I2C7>;
  153. resets = <&rcc I2C7_R>;
  154. status = "disabled";
  155. };
  156. usart6: serial@40220000 {
  157. compatible = "st,stm32h7-uart";
  158. reg = <0x40220000 0x400>;
  159. clocks = <&rcc CK_KER_USART6>;
  160. resets = <&rcc USART6_R>;
  161. status = "disabled";
  162. };
  163. uart9: serial@402c0000 {
  164. compatible = "st,stm32h7-uart";
  165. reg = <0x402c0000 0x400>;
  166. clocks = <&rcc CK_KER_UART9>;
  167. resets = <&rcc UART9_R>;
  168. status = "disabled";
  169. };
  170. usart1: serial@40330000 {
  171. compatible = "st,stm32h7-uart";
  172. reg = <0x40330000 0x400>;
  173. clocks = <&rcc CK_KER_USART1>;
  174. resets = <&rcc USART1_R>;
  175. status = "disabled";
  176. };
  177. uart7: serial@40370000 {
  178. compatible = "st,stm32h7-uart";
  179. reg = <0x40370000 0x400>;
  180. clocks = <&rcc CK_KER_UART7>;
  181. resets = <&rcc UART7_R>;
  182. status = "disabled";
  183. };
  184. uart8: serial@40380000 {
  185. compatible = "st,stm32h7-uart";
  186. reg = <0x40380000 0x400>;
  187. clocks = <&rcc CK_KER_UART8>;
  188. resets = <&rcc UART8_R>;
  189. status = "disabled";
  190. };
  191. i2c8: i2c@46040000 {
  192. compatible = "st,stm32mp25-i2c";
  193. reg = <0x46040000 0x400>;
  194. clocks = <&rcc CK_KER_I2C8>;
  195. resets = <&rcc I2C8_R>;
  196. status = "disabled";
  197. };
  198. sdmmc1: mmc@48220000 {
  199. compatible = "st,stm32mp25-sdmmc2", "arm,pl18x", "arm,primecell";
  200. arm,primecell-periphid = <0x00353180>;
  201. reg = <0x48220000 0x400>, <0x44230400 0x8>;
  202. clocks = <&rcc CK_KER_SDMMC1>;
  203. clock-names = "apb_pclk";
  204. resets = <&rcc SDMMC1_R>;
  205. cap-sd-highspeed;
  206. cap-mmc-highspeed;
  207. max-frequency = <120000000>;
  208. status = "disabled";
  209. };
  210. sdmmc2: mmc@48230000 {
  211. compatible = "st,stm32mp25-sdmmc2", "arm,pl18x", "arm,primecell";
  212. arm,primecell-periphid = <0x00353180>;
  213. reg = <0x48230000 0x400>, <0x44230800 0x8>;
  214. clocks = <&rcc CK_KER_SDMMC2>;
  215. clock-names = "apb_pclk";
  216. resets = <&rcc SDMMC2_R>;
  217. cap-sd-highspeed;
  218. cap-mmc-highspeed;
  219. max-frequency = <120000000>;
  220. status = "disabled";
  221. };
  222. };
  223. bsec: efuse@44000000 {
  224. compatible = "st,stm32mp25-bsec";
  225. reg = <0x44000000 0x400>;
  226. #address-cells = <1>;
  227. #size-cells = <1>;
  228. uid_otp: uid-otp@14 {
  229. reg = <0x14 0xc>;
  230. };
  231. part_number_otp: part-number-otp@24 {
  232. reg = <0x24 0x4>;
  233. };
  234. nand_otp: otp16@40 {
  235. reg = <0x40 0x4>;
  236. };
  237. lifecycle2_otp: otp18@48 {
  238. reg = <0x48 0x4>;
  239. };
  240. nand2_otp: otp20@50 {
  241. reg = <0x50 0x4>;
  242. };
  243. rev_otp@198 {
  244. reg = <0x198 0x4>;
  245. };
  246. package_otp: package-otp@1e8 {
  247. reg = <0x1e8 0x1>;
  248. };
  249. hconf1_otp: otp124@1f0 {
  250. reg = <0x1f0 0x4>;
  251. };
  252. pkh_otp: otp144@240 {
  253. reg = <0x240 0x20>;
  254. };
  255. oem_fip_enc_key: otp260@410 {
  256. reg = <0x410 0x20>;
  257. };
  258. };
  259. rcc: rcc@44200000 {
  260. compatible = "st,stm32mp25-rcc";
  261. reg = <0x44200000 0x10000>;
  262. #clock-cells = <1>;
  263. #reset-cells = <1>;
  264. };
  265. pwr: pwr@44210000 {
  266. compatible = "st,stm32mp25-pwr";
  267. reg = <0x44210000 0x400>;
  268. vddio1: vddio1 {
  269. regulator-name = "vddio1";
  270. };
  271. vddio2: vddio2 {
  272. regulator-name = "vddio2";
  273. };
  274. vddio3: vddio3 {
  275. regulator-name = "vddio3";
  276. };
  277. vddio4: vddio4 {
  278. regulator-name = "vddio4";
  279. };
  280. vddio: vddio {
  281. regulator-name = "vddio";
  282. };
  283. };
  284. syscfg: syscon@44230000 {
  285. compatible = "st,stm32mp25-syscfg", "syscon";
  286. reg = <0x44230000 0x10000>;
  287. };
  288. ddr: ddr@48040000 {
  289. compatible = "st,stm32mp2-ddr";
  290. reg = <0x48040000 0x10000>,
  291. <0x48c00000 0x400000>;
  292. status = "okay";
  293. };
  294. pinctrl: pinctrl@44240000 {
  295. #address-cells = <1>;
  296. #size-cells = <1>;
  297. compatible = "st,stm32mp257-pinctrl";
  298. ranges = <0 0x44240000 0xa0400>;
  299. gpioa: gpio@44240000 {
  300. gpio-controller;
  301. #gpio-cells = <2>;
  302. interrupt-controller;
  303. #interrupt-cells = <2>;
  304. reg = <0x0 0x400>;
  305. clocks = <&rcc CK_BUS_GPIOA>;
  306. st,bank-name = "GPIOA";
  307. status = "disabled";
  308. };
  309. gpiob: gpio@44250000 {
  310. gpio-controller;
  311. #gpio-cells = <2>;
  312. interrupt-controller;
  313. #interrupt-cells = <2>;
  314. reg = <0x10000 0x400>;
  315. clocks = <&rcc CK_BUS_GPIOB>;
  316. st,bank-name = "GPIOB";
  317. status = "disabled";
  318. };
  319. gpioc: gpio@44260000 {
  320. gpio-controller;
  321. #gpio-cells = <2>;
  322. interrupt-controller;
  323. #interrupt-cells = <2>;
  324. reg = <0x20000 0x400>;
  325. clocks = <&rcc CK_BUS_GPIOC>;
  326. st,bank-name = "GPIOC";
  327. status = "disabled";
  328. };
  329. gpiod: gpio@44270000 {
  330. gpio-controller;
  331. #gpio-cells = <2>;
  332. interrupt-controller;
  333. #interrupt-cells = <2>;
  334. reg = <0x30000 0x400>;
  335. clocks = <&rcc CK_BUS_GPIOD>;
  336. st,bank-name = "GPIOD";
  337. status = "disabled";
  338. };
  339. gpioe: gpio@44280000 {
  340. gpio-controller;
  341. #gpio-cells = <2>;
  342. interrupt-controller;
  343. #interrupt-cells = <2>;
  344. reg = <0x40000 0x400>;
  345. clocks = <&rcc CK_BUS_GPIOE>;
  346. st,bank-name = "GPIOE";
  347. status = "disabled";
  348. };
  349. gpiof: gpio@44290000 {
  350. gpio-controller;
  351. #gpio-cells = <2>;
  352. interrupt-controller;
  353. #interrupt-cells = <2>;
  354. reg = <0x50000 0x400>;
  355. clocks = <&rcc CK_BUS_GPIOF>;
  356. st,bank-name = "GPIOF";
  357. status = "disabled";
  358. };
  359. gpiog: gpio@442a0000 {
  360. gpio-controller;
  361. #gpio-cells = <2>;
  362. interrupt-controller;
  363. #interrupt-cells = <2>;
  364. reg = <0x60000 0x400>;
  365. clocks = <&rcc CK_BUS_GPIOG>;
  366. st,bank-name = "GPIOG";
  367. status = "disabled";
  368. };
  369. gpioh: gpio@442b0000 {
  370. gpio-controller;
  371. #gpio-cells = <2>;
  372. interrupt-controller;
  373. #interrupt-cells = <2>;
  374. reg = <0x70000 0x400>;
  375. clocks = <&rcc CK_BUS_GPIOH>;
  376. st,bank-name = "GPIOH";
  377. status = "disabled";
  378. };
  379. gpioi: gpio@442c0000 {
  380. gpio-controller;
  381. #gpio-cells = <2>;
  382. interrupt-controller;
  383. #interrupt-cells = <2>;
  384. reg = <0x80000 0x400>;
  385. clocks = <&rcc CK_BUS_GPIOI>;
  386. st,bank-name = "GPIOI";
  387. status = "disabled";
  388. };
  389. gpioj: gpio@442d0000 {
  390. gpio-controller;
  391. #gpio-cells = <2>;
  392. interrupt-controller;
  393. #interrupt-cells = <2>;
  394. reg = <0x90000 0x400>;
  395. clocks = <&rcc CK_BUS_GPIOJ>;
  396. st,bank-name = "GPIOJ";
  397. status = "disabled";
  398. };
  399. gpiok: gpio@442e0000 {
  400. gpio-controller;
  401. #gpio-cells = <2>;
  402. interrupt-controller;
  403. #interrupt-cells = <2>;
  404. reg = <0xa0000 0x400>;
  405. clocks = <&rcc CK_BUS_GPIOK>;
  406. st,bank-name = "GPIOK";
  407. status = "disabled";
  408. };
  409. };
  410. pinctrl_z: pinctrl@46200000 {
  411. #address-cells = <1>;
  412. #size-cells = <1>;
  413. compatible = "st,stm32mp257-z-pinctrl";
  414. ranges = <0 0x46200000 0x400>;
  415. gpioz: gpio@46200000 {
  416. gpio-controller;
  417. #gpio-cells = <2>;
  418. interrupt-controller;
  419. #interrupt-cells = <2>;
  420. reg = <0 0x400>;
  421. clocks = <&rcc CK_BUS_GPIOZ>;
  422. st,bank-name = "GPIOZ";
  423. st,bank-ioport = <11>;
  424. status = "disabled";
  425. };
  426. };
  427. };
  428. };