stm32f746.dtsi 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592
  1. /*
  2. * Copyright 2015 - Maxime Coquelin <[email protected]>
  3. *
  4. * This file is dual-licensed: you can use it either under the terms
  5. * of the GPL or the X11 license, at your option. Note that this dual
  6. * licensing only applies to this file, and not this project as a
  7. * whole.
  8. *
  9. * a) This file is free software; you can redistribute it and/or
  10. * modify it under the terms of the GNU General Public License as
  11. * published by the Free Software Foundation; either version 2 of the
  12. * License, or (at your option) any later version.
  13. *
  14. * This file is distributed in the hope that it will be useful,
  15. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  17. * GNU General Public License for more details.
  18. *
  19. * Or, alternatively,
  20. *
  21. * b) Permission is hereby granted, free of charge, to any person
  22. * obtaining a copy of this software and associated documentation
  23. * files (the "Software"), to deal in the Software without
  24. * restriction, including without limitation the rights to use,
  25. * copy, modify, merge, publish, distribute, sublicense, and/or
  26. * sell copies of the Software, and to permit persons to whom the
  27. * Software is furnished to do so, subject to the following
  28. * conditions:
  29. *
  30. * The above copyright notice and this permission notice shall be
  31. * included in all copies or substantial portions of the Software.
  32. *
  33. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  34. * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
  35. * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  36. * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
  37. * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
  38. * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  39. * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  40. * OTHER DEALINGS IN THE SOFTWARE.
  41. */
  42. #include "armv7-m.dtsi"
  43. #include <dt-bindings/clock/stm32fx-clock.h>
  44. #include <dt-bindings/mfd/stm32f7-rcc.h>
  45. / {
  46. #address-cells = <1>;
  47. #size-cells = <1>;
  48. clocks {
  49. clk_hse: clk-hse {
  50. #clock-cells = <0>;
  51. compatible = "fixed-clock";
  52. clock-frequency = <0>;
  53. };
  54. clk-lse {
  55. #clock-cells = <0>;
  56. compatible = "fixed-clock";
  57. clock-frequency = <32768>;
  58. };
  59. clk-lsi {
  60. #clock-cells = <0>;
  61. compatible = "fixed-clock";
  62. clock-frequency = <32000>;
  63. };
  64. clk_i2s_ckin: clk-i2s-ckin {
  65. #clock-cells = <0>;
  66. compatible = "fixed-clock";
  67. clock-frequency = <48000000>;
  68. };
  69. };
  70. soc {
  71. timers2: timers@40000000 {
  72. #address-cells = <1>;
  73. #size-cells = <0>;
  74. compatible = "st,stm32-timers";
  75. reg = <0x40000000 0x400>;
  76. clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM2)>;
  77. clock-names = "int";
  78. status = "disabled";
  79. pwm {
  80. compatible = "st,stm32-pwm";
  81. #pwm-cells = <3>;
  82. status = "disabled";
  83. };
  84. timer@1 {
  85. compatible = "st,stm32-timer-trigger";
  86. reg = <1>;
  87. status = "disabled";
  88. };
  89. };
  90. timers3: timers@40000400 {
  91. #address-cells = <1>;
  92. #size-cells = <0>;
  93. compatible = "st,stm32-timers";
  94. reg = <0x40000400 0x400>;
  95. clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM3)>;
  96. clock-names = "int";
  97. status = "disabled";
  98. pwm {
  99. compatible = "st,stm32-pwm";
  100. #pwm-cells = <3>;
  101. status = "disabled";
  102. };
  103. timer@2 {
  104. compatible = "st,stm32-timer-trigger";
  105. reg = <2>;
  106. status = "disabled";
  107. };
  108. };
  109. timers4: timers@40000800 {
  110. #address-cells = <1>;
  111. #size-cells = <0>;
  112. compatible = "st,stm32-timers";
  113. reg = <0x40000800 0x400>;
  114. clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM4)>;
  115. clock-names = "int";
  116. status = "disabled";
  117. pwm {
  118. compatible = "st,stm32-pwm";
  119. #pwm-cells = <3>;
  120. status = "disabled";
  121. };
  122. timer@3 {
  123. compatible = "st,stm32-timer-trigger";
  124. reg = <3>;
  125. status = "disabled";
  126. };
  127. };
  128. timers5: timers@40000c00 {
  129. #address-cells = <1>;
  130. #size-cells = <0>;
  131. compatible = "st,stm32-timers";
  132. reg = <0x40000C00 0x400>;
  133. clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM5)>;
  134. clock-names = "int";
  135. status = "disabled";
  136. pwm {
  137. compatible = "st,stm32-pwm";
  138. #pwm-cells = <3>;
  139. status = "disabled";
  140. };
  141. timer@4 {
  142. compatible = "st,stm32-timer-trigger";
  143. reg = <4>;
  144. status = "disabled";
  145. };
  146. };
  147. timers6: timers@40001000 {
  148. #address-cells = <1>;
  149. #size-cells = <0>;
  150. compatible = "st,stm32-timers";
  151. reg = <0x40001000 0x400>;
  152. clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM6)>;
  153. clock-names = "int";
  154. status = "disabled";
  155. timer@5 {
  156. compatible = "st,stm32-timer-trigger";
  157. reg = <5>;
  158. status = "disabled";
  159. };
  160. };
  161. timers7: timers@40001400 {
  162. #address-cells = <1>;
  163. #size-cells = <0>;
  164. compatible = "st,stm32-timers";
  165. reg = <0x40001400 0x400>;
  166. clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM7)>;
  167. clock-names = "int";
  168. status = "disabled";
  169. timer@6 {
  170. compatible = "st,stm32-timer-trigger";
  171. reg = <6>;
  172. status = "disabled";
  173. };
  174. };
  175. timers12: timers@40001800 {
  176. #address-cells = <1>;
  177. #size-cells = <0>;
  178. compatible = "st,stm32-timers";
  179. reg = <0x40001800 0x400>;
  180. clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM12)>;
  181. clock-names = "int";
  182. status = "disabled";
  183. pwm {
  184. compatible = "st,stm32-pwm";
  185. #pwm-cells = <3>;
  186. status = "disabled";
  187. };
  188. timer@11 {
  189. compatible = "st,stm32-timer-trigger";
  190. reg = <11>;
  191. status = "disabled";
  192. };
  193. };
  194. timers13: timers@40001c00 {
  195. compatible = "st,stm32-timers";
  196. reg = <0x40001C00 0x400>;
  197. clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM13)>;
  198. clock-names = "int";
  199. status = "disabled";
  200. pwm {
  201. compatible = "st,stm32-pwm";
  202. #pwm-cells = <3>;
  203. status = "disabled";
  204. };
  205. };
  206. timers14: timers@40002000 {
  207. compatible = "st,stm32-timers";
  208. reg = <0x40002000 0x400>;
  209. clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM14)>;
  210. clock-names = "int";
  211. status = "disabled";
  212. pwm {
  213. compatible = "st,stm32-pwm";
  214. #pwm-cells = <3>;
  215. status = "disabled";
  216. };
  217. };
  218. rtc: rtc@40002800 {
  219. compatible = "st,stm32-rtc";
  220. reg = <0x40002800 0x400>;
  221. clocks = <&rcc 1 CLK_RTC>;
  222. assigned-clocks = <&rcc 1 CLK_RTC>;
  223. assigned-clock-parents = <&rcc 1 CLK_LSE>;
  224. interrupt-parent = <&exti>;
  225. interrupts = <17 1>;
  226. st,syscfg = <&pwrcfg 0x00 0x100>;
  227. status = "disabled";
  228. };
  229. usart2: serial@40004400 {
  230. compatible = "st,stm32f7-uart";
  231. reg = <0x40004400 0x400>;
  232. interrupts = <38>;
  233. clocks = <&rcc 1 CLK_USART2>;
  234. status = "disabled";
  235. };
  236. usart3: serial@40004800 {
  237. compatible = "st,stm32f7-uart";
  238. reg = <0x40004800 0x400>;
  239. interrupts = <39>;
  240. clocks = <&rcc 1 CLK_USART3>;
  241. status = "disabled";
  242. };
  243. usart4: serial@40004c00 {
  244. compatible = "st,stm32f7-uart";
  245. reg = <0x40004c00 0x400>;
  246. interrupts = <52>;
  247. clocks = <&rcc 1 CLK_UART4>;
  248. status = "disabled";
  249. };
  250. usart5: serial@40005000 {
  251. compatible = "st,stm32f7-uart";
  252. reg = <0x40005000 0x400>;
  253. interrupts = <53>;
  254. clocks = <&rcc 1 CLK_UART5>;
  255. status = "disabled";
  256. };
  257. i2c1: i2c@40005400 {
  258. compatible = "st,stm32f7-i2c";
  259. reg = <0x40005400 0x400>;
  260. interrupts = <31>,
  261. <32>;
  262. resets = <&rcc STM32F7_APB1_RESET(I2C1)>;
  263. clocks = <&rcc 1 CLK_I2C1>;
  264. #address-cells = <1>;
  265. #size-cells = <0>;
  266. status = "disabled";
  267. };
  268. i2c2: i2c@40005800 {
  269. compatible = "st,stm32f7-i2c";
  270. reg = <0x40005800 0x400>;
  271. interrupts = <33>,
  272. <34>;
  273. resets = <&rcc STM32F7_APB1_RESET(I2C2)>;
  274. clocks = <&rcc 1 CLK_I2C2>;
  275. #address-cells = <1>;
  276. #size-cells = <0>;
  277. status = "disabled";
  278. };
  279. i2c3: i2c@40005c00 {
  280. compatible = "st,stm32f7-i2c";
  281. reg = <0x40005c00 0x400>;
  282. interrupts = <72>,
  283. <73>;
  284. resets = <&rcc STM32F7_APB1_RESET(I2C3)>;
  285. clocks = <&rcc 1 CLK_I2C3>;
  286. #address-cells = <1>;
  287. #size-cells = <0>;
  288. status = "disabled";
  289. };
  290. i2c4: i2c@40006000 {
  291. compatible = "st,stm32f7-i2c";
  292. reg = <0x40006000 0x400>;
  293. interrupts = <95>,
  294. <96>;
  295. resets = <&rcc STM32F7_APB1_RESET(I2C4)>;
  296. clocks = <&rcc 1 CLK_I2C4>;
  297. #address-cells = <1>;
  298. #size-cells = <0>;
  299. status = "disabled";
  300. };
  301. cec: cec@40006c00 {
  302. compatible = "st,stm32-cec";
  303. reg = <0x40006C00 0x400>;
  304. interrupts = <94>;
  305. clocks = <&rcc 0 STM32F7_APB1_CLOCK(CEC)>, <&rcc 1 CLK_HDMI_CEC>;
  306. clock-names = "cec", "hdmi-cec";
  307. status = "disabled";
  308. };
  309. usart7: serial@40007800 {
  310. compatible = "st,stm32f7-uart";
  311. reg = <0x40007800 0x400>;
  312. interrupts = <82>;
  313. clocks = <&rcc 1 CLK_UART7>;
  314. status = "disabled";
  315. };
  316. usart8: serial@40007c00 {
  317. compatible = "st,stm32f7-uart";
  318. reg = <0x40007c00 0x400>;
  319. interrupts = <83>;
  320. clocks = <&rcc 1 CLK_UART8>;
  321. status = "disabled";
  322. };
  323. timers1: timers@40010000 {
  324. #address-cells = <1>;
  325. #size-cells = <0>;
  326. compatible = "st,stm32-timers";
  327. reg = <0x40010000 0x400>;
  328. clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM1)>;
  329. clock-names = "int";
  330. status = "disabled";
  331. pwm {
  332. compatible = "st,stm32-pwm";
  333. #pwm-cells = <3>;
  334. status = "disabled";
  335. };
  336. timer@0 {
  337. compatible = "st,stm32-timer-trigger";
  338. reg = <0>;
  339. status = "disabled";
  340. };
  341. };
  342. timers8: timers@40010400 {
  343. #address-cells = <1>;
  344. #size-cells = <0>;
  345. compatible = "st,stm32-timers";
  346. reg = <0x40010400 0x400>;
  347. clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM8)>;
  348. clock-names = "int";
  349. status = "disabled";
  350. pwm {
  351. compatible = "st,stm32-pwm";
  352. #pwm-cells = <3>;
  353. status = "disabled";
  354. };
  355. timer@7 {
  356. compatible = "st,stm32-timer-trigger";
  357. reg = <7>;
  358. status = "disabled";
  359. };
  360. };
  361. usart1: serial@40011000 {
  362. compatible = "st,stm32f7-uart";
  363. reg = <0x40011000 0x400>;
  364. interrupts = <37>;
  365. clocks = <&rcc 1 CLK_USART1>;
  366. status = "disabled";
  367. };
  368. usart6: serial@40011400 {
  369. compatible = "st,stm32f7-uart";
  370. reg = <0x40011400 0x400>;
  371. interrupts = <71>;
  372. clocks = <&rcc 1 CLK_USART6>;
  373. status = "disabled";
  374. };
  375. sdio2: mmc@40011c00 {
  376. compatible = "arm,pl180", "arm,primecell";
  377. arm,primecell-periphid = <0x00880180>;
  378. reg = <0x40011c00 0x400>;
  379. clocks = <&rcc 0 STM32F7_APB2_CLOCK(SDMMC2)>;
  380. clock-names = "apb_pclk";
  381. interrupts = <103>;
  382. max-frequency = <48000000>;
  383. status = "disabled";
  384. };
  385. sdio1: mmc@40012c00 {
  386. compatible = "arm,pl180", "arm,primecell";
  387. arm,primecell-periphid = <0x00880180>;
  388. reg = <0x40012c00 0x400>;
  389. clocks = <&rcc 0 STM32F7_APB2_CLOCK(SDMMC1)>;
  390. clock-names = "apb_pclk";
  391. interrupts = <49>;
  392. max-frequency = <48000000>;
  393. status = "disabled";
  394. };
  395. syscfg: syscon@40013800 {
  396. compatible = "st,stm32-syscfg", "syscon";
  397. reg = <0x40013800 0x400>;
  398. };
  399. exti: interrupt-controller@40013c00 {
  400. compatible = "st,stm32-exti";
  401. interrupt-controller;
  402. #interrupt-cells = <2>;
  403. reg = <0x40013C00 0x400>;
  404. interrupts = <1>, <2>, <3>, <6>, <7>, <8>, <9>, <10>, <23>, <40>, <41>, <42>, <62>, <76>;
  405. };
  406. timers9: timers@40014000 {
  407. #address-cells = <1>;
  408. #size-cells = <0>;
  409. compatible = "st,stm32-timers";
  410. reg = <0x40014000 0x400>;
  411. clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM9)>;
  412. clock-names = "int";
  413. status = "disabled";
  414. pwm {
  415. compatible = "st,stm32-pwm";
  416. #pwm-cells = <3>;
  417. status = "disabled";
  418. };
  419. timer@8 {
  420. compatible = "st,stm32-timer-trigger";
  421. reg = <8>;
  422. status = "disabled";
  423. };
  424. };
  425. timers10: timers@40014400 {
  426. compatible = "st,stm32-timers";
  427. reg = <0x40014400 0x400>;
  428. clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM10)>;
  429. clock-names = "int";
  430. status = "disabled";
  431. pwm {
  432. compatible = "st,stm32-pwm";
  433. #pwm-cells = <3>;
  434. status = "disabled";
  435. };
  436. };
  437. timers11: timers@40014800 {
  438. compatible = "st,stm32-timers";
  439. reg = <0x40014800 0x400>;
  440. clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM11)>;
  441. clock-names = "int";
  442. status = "disabled";
  443. pwm {
  444. compatible = "st,stm32-pwm";
  445. #pwm-cells = <3>;
  446. status = "disabled";
  447. };
  448. };
  449. pwrcfg: power-config@40007000 {
  450. compatible = "st,stm32-power-config", "syscon";
  451. reg = <0x40007000 0x400>;
  452. };
  453. crc: crc@40023000 {
  454. compatible = "st,stm32f7-crc";
  455. reg = <0x40023000 0x400>;
  456. clocks = <&rcc 0 12>;
  457. status = "disabled";
  458. };
  459. rcc: rcc@40023800 {
  460. #reset-cells = <1>;
  461. #clock-cells = <2>;
  462. compatible = "st,stm32f746-rcc", "st,stm32-rcc";
  463. reg = <0x40023800 0x400>;
  464. clocks = <&clk_hse>, <&clk_i2s_ckin>;
  465. st,syscfg = <&pwrcfg>;
  466. assigned-clocks = <&rcc 1 CLK_HSE_RTC>;
  467. assigned-clock-rates = <1000000>;
  468. };
  469. dma1: dma-controller@40026000 {
  470. compatible = "st,stm32-dma";
  471. reg = <0x40026000 0x400>;
  472. interrupts = <11>,
  473. <12>,
  474. <13>,
  475. <14>,
  476. <15>,
  477. <16>,
  478. <17>,
  479. <47>;
  480. clocks = <&rcc 0 STM32F7_AHB1_CLOCK(DMA1)>;
  481. #dma-cells = <4>;
  482. status = "disabled";
  483. };
  484. dma2: dma-controller@40026400 {
  485. compatible = "st,stm32-dma";
  486. reg = <0x40026400 0x400>;
  487. interrupts = <56>,
  488. <57>,
  489. <58>,
  490. <59>,
  491. <60>,
  492. <68>,
  493. <69>,
  494. <70>;
  495. clocks = <&rcc 0 STM32F7_AHB1_CLOCK(DMA2)>;
  496. #dma-cells = <4>;
  497. st,mem2mem;
  498. status = "disabled";
  499. };
  500. usbotg_hs: usb@40040000 {
  501. compatible = "st,stm32f7-hsotg";
  502. reg = <0x40040000 0x40000>;
  503. interrupts = <77>;
  504. clocks = <&rcc 0 STM32F7_AHB1_CLOCK(OTGHS)>;
  505. clock-names = "otg";
  506. g-rx-fifo-size = <256>;
  507. g-np-tx-fifo-size = <32>;
  508. g-tx-fifo-size = <128 128 64 64 64 64 32 32>;
  509. status = "disabled";
  510. };
  511. usbotg_fs: usb@50000000 {
  512. compatible = "st,stm32f4x9-fsotg";
  513. reg = <0x50000000 0x40000>;
  514. interrupts = <67>;
  515. clocks = <&rcc 0 STM32F7_AHB2_CLOCK(OTGFS)>;
  516. clock-names = "otg";
  517. status = "disabled";
  518. };
  519. };
  520. };
  521. &systick {
  522. clocks = <&rcc 1 0>;
  523. status = "okay";
  524. };