stm32f7-pinctrl.dtsi 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436
  1. // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
  2. /*
  3. * Copyright (C) STMicroelectronics 2017 - All Rights Reserved
  4. * Author: Alexandre Torgue <alexandre.torgue@st.com> for STMicroelectronics.
  5. */
  6. #include <dt-bindings/pinctrl/stm32-pinfunc.h>
  7. #include <dt-bindings/mfd/stm32f7-rcc.h>
  8. / {
  9. soc {
  10. pinctrl: pinctrl@40020000 {
  11. #address-cells = <1>;
  12. #size-cells = <1>;
  13. ranges = <0 0x40020000 0x3000>;
  14. interrupt-parent = <&exti>;
  15. st,syscfg = <&syscfg 0x8>;
  16. gpioa: gpio@40020000 {
  17. gpio-controller;
  18. #gpio-cells = <2>;
  19. interrupt-controller;
  20. #interrupt-cells = <2>;
  21. reg = <0x0 0x400>;
  22. clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOA)>;
  23. st,bank-name = "GPIOA";
  24. };
  25. gpiob: gpio@40020400 {
  26. gpio-controller;
  27. #gpio-cells = <2>;
  28. interrupt-controller;
  29. #interrupt-cells = <2>;
  30. reg = <0x400 0x400>;
  31. clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOB)>;
  32. st,bank-name = "GPIOB";
  33. };
  34. gpioc: gpio@40020800 {
  35. gpio-controller;
  36. #gpio-cells = <2>;
  37. interrupt-controller;
  38. #interrupt-cells = <2>;
  39. reg = <0x800 0x400>;
  40. clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOC)>;
  41. st,bank-name = "GPIOC";
  42. };
  43. gpiod: gpio@40020c00 {
  44. gpio-controller;
  45. #gpio-cells = <2>;
  46. interrupt-controller;
  47. #interrupt-cells = <2>;
  48. reg = <0xc00 0x400>;
  49. clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOD)>;
  50. st,bank-name = "GPIOD";
  51. };
  52. gpioe: gpio@40021000 {
  53. gpio-controller;
  54. #gpio-cells = <2>;
  55. interrupt-controller;
  56. #interrupt-cells = <2>;
  57. reg = <0x1000 0x400>;
  58. clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOE)>;
  59. st,bank-name = "GPIOE";
  60. };
  61. gpiof: gpio@40021400 {
  62. gpio-controller;
  63. #gpio-cells = <2>;
  64. interrupt-controller;
  65. #interrupt-cells = <2>;
  66. reg = <0x1400 0x400>;
  67. clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOF)>;
  68. st,bank-name = "GPIOF";
  69. };
  70. gpiog: gpio@40021800 {
  71. gpio-controller;
  72. #gpio-cells = <2>;
  73. interrupt-controller;
  74. #interrupt-cells = <2>;
  75. reg = <0x1800 0x400>;
  76. clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOG)>;
  77. st,bank-name = "GPIOG";
  78. };
  79. gpioh: gpio@40021c00 {
  80. gpio-controller;
  81. #gpio-cells = <2>;
  82. interrupt-controller;
  83. #interrupt-cells = <2>;
  84. reg = <0x1c00 0x400>;
  85. clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOH)>;
  86. st,bank-name = "GPIOH";
  87. };
  88. gpioi: gpio@40022000 {
  89. gpio-controller;
  90. #gpio-cells = <2>;
  91. interrupt-controller;
  92. #interrupt-cells = <2>;
  93. reg = <0x2000 0x400>;
  94. clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOI)>;
  95. st,bank-name = "GPIOI";
  96. };
  97. gpioj: gpio@40022400 {
  98. gpio-controller;
  99. #gpio-cells = <2>;
  100. interrupt-controller;
  101. #interrupt-cells = <2>;
  102. reg = <0x2400 0x400>;
  103. clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOJ)>;
  104. st,bank-name = "GPIOJ";
  105. };
  106. gpiok: gpio@40022800 {
  107. gpio-controller;
  108. #gpio-cells = <2>;
  109. interrupt-controller;
  110. #interrupt-cells = <2>;
  111. reg = <0x2800 0x400>;
  112. clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOK)>;
  113. st,bank-name = "GPIOK";
  114. };
  115. cec_pins_a: cec-0 {
  116. pins {
  117. pinmux = <STM32_PINMUX('A', 15, AF4)>; /* HDMI CEC */
  118. slew-rate = <0>;
  119. drive-open-drain;
  120. bias-disable;
  121. };
  122. };
  123. usart1_pins_a: usart1-0 {
  124. pins1 {
  125. pinmux = <STM32_PINMUX('A', 9, AF7)>; /* USART1_TX */
  126. bias-disable;
  127. drive-push-pull;
  128. slew-rate = <0>;
  129. };
  130. pins2 {
  131. pinmux = <STM32_PINMUX('A', 10, AF7)>; /* USART1_RX */
  132. bias-disable;
  133. };
  134. };
  135. usart1_pins_b: usart1-1 {
  136. pins1 {
  137. pinmux = <STM32_PINMUX('A', 9, AF7)>; /* USART1_TX */
  138. bias-disable;
  139. drive-push-pull;
  140. slew-rate = <0>;
  141. };
  142. pins2 {
  143. pinmux = <STM32_PINMUX('B', 7, AF7)>; /* USART1_RX */
  144. bias-disable;
  145. };
  146. };
  147. i2c1_pins_b: i2c1-0 {
  148. pins {
  149. pinmux = <STM32_PINMUX('B', 9, AF4)>, /* I2C1 SDA */
  150. <STM32_PINMUX('B', 8, AF4)>; /* I2C1 SCL */
  151. bias-disable;
  152. drive-open-drain;
  153. slew-rate = <0>;
  154. };
  155. };
  156. i2c3_pins_a: i2c3-0 {
  157. pins {
  158. pinmux = <STM32_PINMUX('H', 8, AF4)>, /* I2C3_SDA */
  159. <STM32_PINMUX('H', 7, AF4)>; /* I2C3_SCL */
  160. bias-disable;
  161. drive-open-drain;
  162. slew-rate = <0>;
  163. };
  164. };
  165. usbotg_hs_pins_a: usbotg-hs-0 {
  166. pins {
  167. pinmux = <STM32_PINMUX('H', 4, AF10)>, /* OTG_HS_ULPI_NXT */
  168. <STM32_PINMUX('I', 11, AF10)>, /* OTG_HS_ULPI_DIR */
  169. <STM32_PINMUX('C', 0, AF10)>, /* OTG_HS_ULPI_STP */
  170. <STM32_PINMUX('A', 5, AF10)>, /* OTG_HS_ULPI_CK */
  171. <STM32_PINMUX('A', 3, AF10)>, /* OTG_HS_ULPI_D0 */
  172. <STM32_PINMUX('B', 0, AF10)>, /* OTG_HS_ULPI_D1 */
  173. <STM32_PINMUX('B', 1, AF10)>, /* OTG_HS_ULPI_D2 */
  174. <STM32_PINMUX('B', 10, AF10)>, /* OTG_HS_ULPI_D3 */
  175. <STM32_PINMUX('B', 11, AF10)>, /* OTG_HS_ULPI_D4 */
  176. <STM32_PINMUX('B', 12, AF10)>, /* OTG_HS_ULPI_D5 */
  177. <STM32_PINMUX('B', 13, AF10)>, /* OTG_HS_ULPI_D6 */
  178. <STM32_PINMUX('B', 5, AF10)>; /* OTG_HS_ULPI_D7 */
  179. bias-disable;
  180. drive-push-pull;
  181. slew-rate = <2>;
  182. };
  183. };
  184. usbotg_hs_pins_b: usbotg-hs-1 {
  185. pins {
  186. pinmux = <STM32_PINMUX('H', 4, AF10)>, /* OTG_HS_ULPI_NXT */
  187. <STM32_PINMUX('C', 2, AF10)>, /* OTG_HS_ULPI_DIR */
  188. <STM32_PINMUX('C', 0, AF10)>, /* OTG_HS_ULPI_STP */
  189. <STM32_PINMUX('A', 5, AF10)>, /* OTG_HS_ULPI_CK */
  190. <STM32_PINMUX('A', 3, AF10)>, /* OTG_HS_ULPI_D0 */
  191. <STM32_PINMUX('B', 0, AF10)>, /* OTG_HS_ULPI_D1 */
  192. <STM32_PINMUX('B', 1, AF10)>, /* OTG_HS_ULPI_D2 */
  193. <STM32_PINMUX('B', 10, AF10)>, /* OTG_HS_ULPI_D3 */
  194. <STM32_PINMUX('B', 11, AF10)>, /* OTG_HS_ULPI_D4 */
  195. <STM32_PINMUX('B', 12, AF10)>, /* OTG_HS_ULPI_D5 */
  196. <STM32_PINMUX('B', 13, AF10)>, /* OTG_HS_ULPI_D6 */
  197. <STM32_PINMUX('B', 5, AF10)>; /* OTG_HS_ULPI_D7 */
  198. bias-disable;
  199. drive-push-pull;
  200. slew-rate = <2>;
  201. };
  202. };
  203. usbotg_fs_pins_a: usbotg-fs-0 {
  204. pins {
  205. pinmux = <STM32_PINMUX('A', 10, AF10)>, /* OTG_FS_ID */
  206. <STM32_PINMUX('A', 11, AF10)>, /* OTG_FS_DM */
  207. <STM32_PINMUX('A', 12, AF10)>; /* OTG_FS_DP */
  208. bias-disable;
  209. drive-push-pull;
  210. slew-rate = <2>;
  211. };
  212. };
  213. sdio_pins_a: sdio-pins-a-0 {
  214. pins {
  215. pinmux = <STM32_PINMUX('C', 8, AF12)>, /* SDMMC1 D0 */
  216. <STM32_PINMUX('C', 9, AF12)>, /* SDMMC1 D1 */
  217. <STM32_PINMUX('C', 10, AF12)>, /* SDMMC1 D2 */
  218. <STM32_PINMUX('C', 11, AF12)>, /* SDMMC1 D3 */
  219. <STM32_PINMUX('C', 12, AF12)>, /* SDMMC1 CLK */
  220. <STM32_PINMUX('D', 2, AF12)>; /* SDMMC1 CMD */
  221. drive-push-pull;
  222. slew-rate = <2>;
  223. };
  224. };
  225. sdio_pins_od_a: sdio-pins-od-a-0 {
  226. pins1 {
  227. pinmux = <STM32_PINMUX('C', 8, AF12)>, /* SDMMC1 D0 */
  228. <STM32_PINMUX('C', 9, AF12)>, /* SDMMC1 D1 */
  229. <STM32_PINMUX('C', 10, AF12)>, /* SDMMC1 D2 */
  230. <STM32_PINMUX('C', 11, AF12)>, /* SDMMC1 D3 */
  231. <STM32_PINMUX('C', 12, AF12)>; /* SDMMC1 CLK */
  232. drive-push-pull;
  233. slew-rate = <2>;
  234. };
  235. pins2 {
  236. pinmux = <STM32_PINMUX('D', 2, AF12)>; /* SDMMC1 CMD */
  237. drive-open-drain;
  238. slew-rate = <2>;
  239. };
  240. };
  241. sdio_pins_sleep_a: sdio-pins-sleep-a-0 {
  242. pins {
  243. pinmux = <STM32_PINMUX('C', 8, ANALOG)>, /* SDMMC1 D0 */
  244. <STM32_PINMUX('C', 9, ANALOG)>, /* SDMMC1 D1 */
  245. <STM32_PINMUX('C', 10, ANALOG)>, /* SDMMC1 D2 */
  246. <STM32_PINMUX('C', 11, ANALOG)>, /* SDMMC1 D3 */
  247. <STM32_PINMUX('C', 12, ANALOG)>, /* SDMMC1 CLK */
  248. <STM32_PINMUX('D', 2, ANALOG)>; /* SDMMC1 CMD */
  249. };
  250. };
  251. sdio_pins_b: sdio-pins-b-0 {
  252. pins {
  253. pinmux = <STM32_PINMUX('G', 9, AF11)>, /* SDMMC2 D0 */
  254. <STM32_PINMUX('G', 10, AF11)>, /* SDMMC2 D1 */
  255. <STM32_PINMUX('B', 3, AF10)>, /* SDMMC2 D2 */
  256. <STM32_PINMUX('B', 4, AF10)>, /* SDMMC2 D3 */
  257. <STM32_PINMUX('D', 6, AF11)>, /* SDMMC2 CLK */
  258. <STM32_PINMUX('D', 7, AF11)>; /* SDMMC2 CMD */
  259. drive-push-pull;
  260. slew-rate = <2>;
  261. };
  262. };
  263. sdio_pins_od_b: sdio-pins-od-b-0 {
  264. pins1 {
  265. pinmux = <STM32_PINMUX('G', 9, AF11)>, /* SDMMC2 D0 */
  266. <STM32_PINMUX('G', 10, AF11)>, /* SDMMC2 D1 */
  267. <STM32_PINMUX('B', 3, AF10)>, /* SDMMC2 D2 */
  268. <STM32_PINMUX('B', 4, AF10)>, /* SDMMC2 D3 */
  269. <STM32_PINMUX('D', 6, AF11)>; /* SDMMC2 CLK */
  270. drive-push-pull;
  271. slew-rate = <2>;
  272. };
  273. pins2 {
  274. pinmux = <STM32_PINMUX('D', 7, AF11)>; /* SDMMC2 CMD */
  275. drive-open-drain;
  276. slew-rate = <2>;
  277. };
  278. };
  279. sdio_pins_sleep_b: sdio-pins-sleep-b-0 {
  280. pins {
  281. pinmux = <STM32_PINMUX('G', 9, ANALOG)>, /* SDMMC2 D0 */
  282. <STM32_PINMUX('G', 10, ANALOG)>, /* SDMMC2 D1 */
  283. <STM32_PINMUX('B', 3, ANALOG)>, /* SDMMC2 D2 */
  284. <STM32_PINMUX('B', 4, ANALOG)>, /* SDMMC2 D3 */
  285. <STM32_PINMUX('D', 6, ANALOG)>, /* SDMMC2 CLK */
  286. <STM32_PINMUX('D', 7, ANALOG)>; /* SDMMC2 CMD */
  287. };
  288. };
  289. can1_pins_a: can1-0 {
  290. pins1 {
  291. pinmux = <STM32_PINMUX('A', 12, AF9)>; /* CAN1_TX */
  292. };
  293. pins2 {
  294. pinmux = <STM32_PINMUX('A', 11, AF9)>; /* CAN1_RX */
  295. bias-pull-up;
  296. };
  297. };
  298. can1_pins_b: can1-1 {
  299. pins1 {
  300. pinmux = <STM32_PINMUX('B', 9, AF9)>; /* CAN1_TX */
  301. };
  302. pins2 {
  303. pinmux = <STM32_PINMUX('B', 8, AF9)>; /* CAN1_RX */
  304. bias-pull-up;
  305. };
  306. };
  307. can1_pins_c: can1-2 {
  308. pins1 {
  309. pinmux = <STM32_PINMUX('D', 1, AF9)>; /* CAN1_TX */
  310. };
  311. pins2 {
  312. pinmux = <STM32_PINMUX('D', 0, AF9)>; /* CAN1_RX */
  313. bias-pull-up;
  314. };
  315. };
  316. can1_pins_d: can1-3 {
  317. pins1 {
  318. pinmux = <STM32_PINMUX('H', 13, AF9)>; /* CAN1_TX */
  319. };
  320. pins2 {
  321. pinmux = <STM32_PINMUX('H', 14, AF9)>; /* CAN1_RX */
  322. bias-pull-up;
  323. };
  324. };
  325. can2_pins_a: can2-0 {
  326. pins1 {
  327. pinmux = <STM32_PINMUX('B', 6, AF9)>; /* CAN2_TX */
  328. };
  329. pins2 {
  330. pinmux = <STM32_PINMUX('B', 5, AF9)>; /* CAN2_RX */
  331. bias-pull-up;
  332. };
  333. };
  334. can2_pins_b: can2-1 {
  335. pins1 {
  336. pinmux = <STM32_PINMUX('B', 13, AF9)>; /* CAN2_TX */
  337. };
  338. pins2 {
  339. pinmux = <STM32_PINMUX('B', 12, AF9)>; /* CAN2_RX */
  340. bias-pull-up;
  341. };
  342. };
  343. can3_pins_a: can3-0 {
  344. pins1 {
  345. pinmux = <STM32_PINMUX('A', 15, AF11)>; /* CAN3_TX */
  346. };
  347. pins2 {
  348. pinmux = <STM32_PINMUX('A', 8, AF11)>; /* CAN3_RX */
  349. bias-pull-up;
  350. };
  351. };
  352. can3_pins_b: can3-1 {
  353. pins1 {
  354. pinmux = <STM32_PINMUX('B', 4, AF11)>; /* CAN3_TX */
  355. };
  356. pins2 {
  357. pinmux = <STM32_PINMUX('B', 3, AF11)>; /* CAN3_RX */
  358. bias-pull-up;
  359. };
  360. };
  361. ltdc_pins_a: ltdc-0 {
  362. pins {
  363. pinmux = <STM32_PINMUX('E', 4, AF14)>, /* LCD_B0 */
  364. <STM32_PINMUX('G',12, AF9)>, /* LCD_B4 */
  365. <STM32_PINMUX('I', 9, AF14)>, /* LCD_VSYNC */
  366. <STM32_PINMUX('I',10, AF14)>, /* LCD_HSYNC */
  367. <STM32_PINMUX('I',14, AF14)>, /* LCD_CLK */
  368. <STM32_PINMUX('I',15, AF14)>, /* LCD_R0 */
  369. <STM32_PINMUX('J', 0, AF14)>, /* LCD_R1 */
  370. <STM32_PINMUX('J', 1, AF14)>, /* LCD_R2 */
  371. <STM32_PINMUX('J', 2, AF14)>, /* LCD_R3 */
  372. <STM32_PINMUX('J', 3, AF14)>, /* LCD_R4 */
  373. <STM32_PINMUX('J', 4, AF14)>, /* LCD_R5 */
  374. <STM32_PINMUX('J', 5, AF14)>, /* LCD_R6 */
  375. <STM32_PINMUX('J', 6, AF14)>, /* LCD_R7 */
  376. <STM32_PINMUX('J', 7, AF14)>, /* LCD_G0 */
  377. <STM32_PINMUX('J', 8, AF14)>, /* LCD_G1 */
  378. <STM32_PINMUX('J', 9, AF14)>, /* LCD_G2 */
  379. <STM32_PINMUX('J',10, AF14)>, /* LCD_G3 */
  380. <STM32_PINMUX('J',11, AF14)>, /* LCD_G4 */
  381. <STM32_PINMUX('J',13, AF14)>, /* LCD_B1 */
  382. <STM32_PINMUX('J',14, AF14)>, /* LCD_B2 */
  383. <STM32_PINMUX('J',15, AF14)>, /* LCD_B3 */
  384. <STM32_PINMUX('K', 0, AF14)>, /* LCD_G5 */
  385. <STM32_PINMUX('K', 1, AF14)>, /* LCD_G6 */
  386. <STM32_PINMUX('K', 2, AF14)>, /* LCD_G7 */
  387. <STM32_PINMUX('K', 4, AF14)>, /* LCD_B5 */
  388. <STM32_PINMUX('K', 5, AF14)>, /* LCD_B6 */
  389. <STM32_PINMUX('K', 6, AF14)>, /* LCD_B7 */
  390. <STM32_PINMUX('K', 7, AF14)>; /* LCD_DE */
  391. slew-rate = <2>;
  392. };
  393. };
  394. };
  395. };
  396. };