pinmux.c 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323
  1. /*
  2. * Copyright (c) 2013-2014, NVIDIA CORPORATION. All rights reserved.
  3. *
  4. * SPDX-License-Identifier: GPL-2.0+
  5. */
  6. #include <common.h>
  7. #include <asm/io.h>
  8. #include <asm/arch/pinmux.h>
  9. #define PIN(pin, f0, f1, f2, f3) \
  10. { \
  11. .funcs = { \
  12. PMUX_FUNC_##f0, \
  13. PMUX_FUNC_##f1, \
  14. PMUX_FUNC_##f2, \
  15. PMUX_FUNC_##f3, \
  16. }, \
  17. }
  18. #define PIN_RESERVED {}
  19. static const struct pmux_pingrp_desc tegra124_pingroups[] = {
  20. /* pin, f0, f1, f2, f3 */
  21. /* Offset 0x3000 */
  22. PIN(ULPI_DATA0_PO1, SPI3, HSI, UARTA, ULPI),
  23. PIN(ULPI_DATA1_PO2, SPI3, HSI, UARTA, ULPI),
  24. PIN(ULPI_DATA2_PO3, SPI3, HSI, UARTA, ULPI),
  25. PIN(ULPI_DATA3_PO4, SPI3, HSI, UARTA, ULPI),
  26. PIN(ULPI_DATA4_PO5, SPI2, HSI, UARTA, ULPI),
  27. PIN(ULPI_DATA5_PO6, SPI2, HSI, UARTA, ULPI),
  28. PIN(ULPI_DATA6_PO7, SPI2, HSI, UARTA, ULPI),
  29. PIN(ULPI_DATA7_PO0, SPI2, HSI, UARTA, ULPI),
  30. PIN(ULPI_CLK_PY0, SPI1, SPI5, UARTD, ULPI),
  31. PIN(ULPI_DIR_PY1, SPI1, SPI5, UARTD, ULPI),
  32. PIN(ULPI_NXT_PY2, SPI1, SPI5, UARTD, ULPI),
  33. PIN(ULPI_STP_PY3, SPI1, SPI5, UARTD, ULPI),
  34. PIN(DAP3_FS_PP0, I2S2, SPI5, DISPLAYA, DISPLAYB),
  35. PIN(DAP3_DIN_PP1, I2S2, SPI5, DISPLAYA, DISPLAYB),
  36. PIN(DAP3_DOUT_PP2, I2S2, SPI5, DISPLAYA, RSVD4),
  37. PIN(DAP3_SCLK_PP3, I2S2, SPI5, RSVD3, DISPLAYB),
  38. PIN(PV0, RSVD1, RSVD2, RSVD3, RSVD4),
  39. PIN(PV1, RSVD1, RSVD2, RSVD3, RSVD4),
  40. PIN(SDMMC1_CLK_PZ0, SDMMC1, CLK12, RSVD3, RSVD4),
  41. PIN(SDMMC1_CMD_PZ1, SDMMC1, SPDIF, SPI4, UARTA),
  42. PIN(SDMMC1_DAT3_PY4, SDMMC1, SPDIF, SPI4, UARTA),
  43. PIN(SDMMC1_DAT2_PY5, SDMMC1, PWM0, SPI4, UARTA),
  44. PIN(SDMMC1_DAT1_PY6, SDMMC1, PWM1, SPI4, UARTA),
  45. PIN(SDMMC1_DAT0_PY7, SDMMC1, RSVD2, SPI4, UARTA),
  46. PIN_RESERVED,
  47. PIN_RESERVED,
  48. /* Offset 0x3068 */
  49. PIN(CLK2_OUT_PW5, EXTPERIPH2, RSVD2, RSVD3, RSVD4),
  50. PIN(CLK2_REQ_PCC5, DAP, RSVD2, RSVD3, RSVD4),
  51. PIN_RESERVED,
  52. PIN_RESERVED,
  53. PIN_RESERVED,
  54. PIN_RESERVED,
  55. PIN_RESERVED,
  56. PIN_RESERVED,
  57. PIN_RESERVED,
  58. PIN_RESERVED,
  59. PIN_RESERVED,
  60. PIN_RESERVED,
  61. PIN_RESERVED,
  62. PIN_RESERVED,
  63. PIN_RESERVED,
  64. PIN_RESERVED,
  65. PIN_RESERVED,
  66. PIN_RESERVED,
  67. PIN_RESERVED,
  68. PIN_RESERVED,
  69. PIN_RESERVED,
  70. PIN_RESERVED,
  71. PIN_RESERVED,
  72. PIN_RESERVED,
  73. PIN_RESERVED,
  74. PIN_RESERVED,
  75. PIN_RESERVED,
  76. PIN_RESERVED,
  77. PIN_RESERVED,
  78. PIN_RESERVED,
  79. PIN_RESERVED,
  80. PIN_RESERVED,
  81. PIN_RESERVED,
  82. PIN_RESERVED,
  83. PIN_RESERVED,
  84. PIN_RESERVED,
  85. PIN_RESERVED,
  86. PIN_RESERVED,
  87. PIN_RESERVED,
  88. PIN_RESERVED,
  89. PIN_RESERVED,
  90. PIN_RESERVED,
  91. /* Offset 0x3110 */
  92. PIN(HDMI_INT_PN7, RSVD1, RSVD2, RSVD3, RSVD4),
  93. PIN(DDC_SCL_PV4, I2C4, RSVD2, RSVD3, RSVD4),
  94. PIN(DDC_SDA_PV5, I2C4, RSVD2, RSVD3, RSVD4),
  95. PIN_RESERVED,
  96. PIN_RESERVED,
  97. PIN_RESERVED,
  98. PIN_RESERVED,
  99. PIN_RESERVED,
  100. PIN_RESERVED,
  101. PIN_RESERVED,
  102. PIN_RESERVED,
  103. PIN_RESERVED,
  104. PIN_RESERVED,
  105. PIN_RESERVED,
  106. PIN_RESERVED,
  107. PIN_RESERVED,
  108. PIN_RESERVED,
  109. PIN_RESERVED,
  110. PIN_RESERVED,
  111. PIN_RESERVED,
  112. PIN_RESERVED,
  113. /* Offset 0x3164 */
  114. PIN(UART2_RXD_PC3, IRDA, SPDIF, UARTA, SPI4),
  115. PIN(UART2_TXD_PC2, IRDA, SPDIF, UARTA, SPI4),
  116. PIN(UART2_RTS_N_PJ6, UARTA, UARTB, GMI, SPI4),
  117. PIN(UART2_CTS_N_PJ5, UARTA, UARTB, GMI, SPI4),
  118. PIN(UART3_TXD_PW6, UARTC, RSVD2, GMI, SPI4),
  119. PIN(UART3_RXD_PW7, UARTC, RSVD2, GMI, SPI4),
  120. PIN(UART3_CTS_N_PA1, UARTC, SDMMC1, DTV, GMI),
  121. PIN(UART3_RTS_N_PC0, UARTC, PWM0, DTV, GMI),
  122. PIN(PU0, OWR, UARTA, GMI, RSVD4),
  123. PIN(PU1, RSVD1, UARTA, GMI, RSVD4),
  124. PIN(PU2, RSVD1, UARTA, GMI, RSVD4),
  125. PIN(PU3, PWM0, UARTA, GMI, DISPLAYB),
  126. PIN(PU4, PWM1, UARTA, GMI, DISPLAYB),
  127. PIN(PU5, PWM2, UARTA, GMI, DISPLAYB),
  128. PIN(PU6, PWM3, UARTA, RSVD3, GMI),
  129. PIN(GEN1_I2C_SDA_PC5, I2C1, RSVD2, RSVD3, RSVD4),
  130. PIN(GEN1_I2C_SCL_PC4, I2C1, RSVD2, RSVD3, RSVD4),
  131. PIN(DAP4_FS_PP4, I2S3, GMI, DTV, RSVD4),
  132. PIN(DAP4_DIN_PP5, I2S3, GMI, RSVD3, RSVD4),
  133. PIN(DAP4_DOUT_PP6, I2S3, GMI, DTV, RSVD4),
  134. PIN(DAP4_SCLK_PP7, I2S3, GMI, RSVD3, RSVD4),
  135. PIN(CLK3_OUT_PEE0, EXTPERIPH3, RSVD2, RSVD3, RSVD4),
  136. PIN(CLK3_REQ_PEE1, DEV3, RSVD2, RSVD3, RSVD4),
  137. PIN(PC7, RSVD1, RSVD2, GMI, GMI_ALT),
  138. PIN(PI5, SDMMC2, RSVD2, GMI, RSVD4),
  139. PIN(PI7, RSVD1, TRACE, GMI, DTV),
  140. PIN(PK0, RSVD1, SDMMC3, GMI, SOC),
  141. PIN(PK1, SDMMC2, TRACE, GMI, RSVD4),
  142. PIN(PJ0, RSVD1, RSVD2, GMI, USB),
  143. PIN(PJ2, RSVD1, RSVD2, GMI, SOC),
  144. PIN(PK3, SDMMC2, TRACE, GMI, CCLA),
  145. PIN(PK4, SDMMC2, RSVD2, GMI, GMI_ALT),
  146. PIN(PK2, RSVD1, RSVD2, GMI, RSVD4),
  147. PIN(PI3, RSVD1, RSVD2, GMI, SPI4),
  148. PIN(PI6, RSVD1, RSVD2, GMI, SDMMC2),
  149. PIN(PG0, RSVD1, RSVD2, GMI, RSVD4),
  150. PIN(PG1, RSVD1, RSVD2, GMI, RSVD4),
  151. PIN(PG2, RSVD1, TRACE, GMI, RSVD4),
  152. PIN(PG3, RSVD1, TRACE, GMI, RSVD4),
  153. PIN(PG4, RSVD1, TMDS, GMI, SPI4),
  154. PIN(PG5, RSVD1, RSVD2, GMI, SPI4),
  155. PIN(PG6, RSVD1, RSVD2, GMI, SPI4),
  156. PIN(PG7, RSVD1, RSVD2, GMI, SPI4),
  157. PIN(PH0, PWM0, TRACE, GMI, DTV),
  158. PIN(PH1, PWM1, TMDS, GMI, DISPLAYA),
  159. PIN(PH2, PWM2, TMDS, GMI, CLDVFS),
  160. PIN(PH3, PWM3, SPI4, GMI, CLDVFS),
  161. PIN(PH4, SDMMC2, RSVD2, GMI, RSVD4),
  162. PIN(PH5, SDMMC2, RSVD2, GMI, RSVD4),
  163. PIN(PH6, SDMMC2, TRACE, GMI, DTV),
  164. PIN(PH7, SDMMC2, TRACE, GMI, DTV),
  165. PIN(PJ7, UARTD, RSVD2, GMI, GMI_ALT),
  166. PIN(PB0, UARTD, RSVD2, GMI, RSVD4),
  167. PIN(PB1, UARTD, RSVD2, GMI, RSVD4),
  168. PIN(PK7, UARTD, RSVD2, GMI, RSVD4),
  169. PIN(PI0, RSVD1, RSVD2, GMI, RSVD4),
  170. PIN(PI1, RSVD1, RSVD2, GMI, RSVD4),
  171. PIN(PI2, SDMMC2, TRACE, GMI, RSVD4),
  172. PIN(PI4, SPI4, TRACE, GMI, DISPLAYA),
  173. PIN(GEN2_I2C_SCL_PT5, I2C2, RSVD2, GMI, RSVD4),
  174. PIN(GEN2_I2C_SDA_PT6, I2C2, RSVD2, GMI, RSVD4),
  175. PIN(SDMMC4_CLK_PCC4, SDMMC4, RSVD2, GMI, RSVD4),
  176. PIN(SDMMC4_CMD_PT7, SDMMC4, RSVD2, GMI, RSVD4),
  177. PIN(SDMMC4_DAT0_PAA0, SDMMC4, SPI3, GMI, RSVD4),
  178. PIN(SDMMC4_DAT1_PAA1, SDMMC4, SPI3, GMI, RSVD4),
  179. PIN(SDMMC4_DAT2_PAA2, SDMMC4, SPI3, GMI, RSVD4),
  180. PIN(SDMMC4_DAT3_PAA3, SDMMC4, SPI3, GMI, RSVD4),
  181. PIN(SDMMC4_DAT4_PAA4, SDMMC4, SPI3, GMI, RSVD4),
  182. PIN(SDMMC4_DAT5_PAA5, SDMMC4, SPI3, RSVD3, RSVD4),
  183. PIN(SDMMC4_DAT6_PAA6, SDMMC4, SPI3, GMI, RSVD4),
  184. PIN(SDMMC4_DAT7_PAA7, SDMMC4, RSVD2, GMI, RSVD4),
  185. PIN_RESERVED,
  186. /* Offset 0x3284 */
  187. PIN(CAM_MCLK_PCC0, VI, VI_ALT1, VI_ALT3, SDMMC2),
  188. PIN(PCC1, I2S4, RSVD2, RSVD3, SDMMC2),
  189. PIN(PBB0, VGP6, VIMCLK2, SDMMC2, VIMCLK2_ALT),
  190. PIN(CAM_I2C_SCL_PBB1, VGP1, I2C3, RSVD3, SDMMC2),
  191. PIN(CAM_I2C_SDA_PBB2, VGP2, I2C3, RSVD3, SDMMC2),
  192. PIN(PBB3, VGP3, DISPLAYA, DISPLAYB, SDMMC2),
  193. PIN(PBB4, VGP4, DISPLAYA, DISPLAYB, SDMMC2),
  194. PIN(PBB5, VGP5, DISPLAYA, RSVD3, SDMMC2),
  195. PIN(PBB6, I2S4, RSVD2, DISPLAYB, SDMMC2),
  196. PIN(PBB7, I2S4, RSVD2, RSVD3, SDMMC2),
  197. PIN(PCC2, I2S4, RSVD2, SDMMC3, SDMMC2),
  198. PIN(JTAG_RTCK, RTCK, RSVD2, RSVD3, RSVD4),
  199. PIN(PWR_I2C_SCL_PZ6, I2CPWR, RSVD2, RSVD3, RSVD4),
  200. PIN(PWR_I2C_SDA_PZ7, I2CPWR, RSVD2, RSVD3, RSVD4),
  201. PIN(KB_ROW0_PR0, KBC, RSVD2, RSVD3, RSVD4),
  202. PIN(KB_ROW1_PR1, KBC, RSVD2, RSVD3, RSVD4),
  203. PIN(KB_ROW2_PR2, KBC, RSVD2, RSVD3, RSVD4),
  204. PIN(KB_ROW3_PR3, KBC, DISPLAYA, SYS, DISPLAYB),
  205. PIN(KB_ROW4_PR4, KBC, DISPLAYA, RSVD3, DISPLAYB),
  206. PIN(KB_ROW5_PR5, KBC, DISPLAYA, RSVD3, DISPLAYB),
  207. PIN(KB_ROW6_PR6, KBC, DISPLAYA, DISPLAYA_ALT, DISPLAYB),
  208. PIN(KB_ROW7_PR7, KBC, RSVD2, CLDVFS, UARTA),
  209. PIN(KB_ROW8_PS0, KBC, RSVD2, CLDVFS, UARTA),
  210. PIN(KB_ROW9_PS1, KBC, RSVD2, RSVD3, UARTA),
  211. PIN(KB_ROW10_PS2, KBC, RSVD2, RSVD3, UARTA),
  212. PIN(KB_ROW11_PS3, KBC, RSVD2, RSVD3, IRDA),
  213. PIN(KB_ROW12_PS4, KBC, RSVD2, RSVD3, IRDA),
  214. PIN(KB_ROW13_PS5, KBC, RSVD2, SPI2, RSVD4),
  215. PIN(KB_ROW14_PS6, KBC, RSVD2, SPI2, RSVD4),
  216. PIN(KB_ROW15_PS7, KBC, SOC, RSVD3, RSVD4),
  217. PIN(KB_COL0_PQ0, KBC, RSVD2, SPI2, RSVD4),
  218. PIN(KB_COL1_PQ1, KBC, RSVD2, SPI2, RSVD4),
  219. PIN(KB_COL2_PQ2, KBC, RSVD2, SPI2, RSVD4),
  220. PIN(KB_COL3_PQ3, KBC, DISPLAYA, PWM2, UARTA),
  221. PIN(KB_COL4_PQ4, KBC, OWR, SDMMC3, UARTA),
  222. PIN(KB_COL5_PQ5, KBC, RSVD2, SDMMC3, RSVD4),
  223. PIN(KB_COL6_PQ6, KBC, RSVD2, SPI2, UARTD),
  224. PIN(KB_COL7_PQ7, KBC, RSVD2, SPI2, UARTD),
  225. PIN(CLK_32K_OUT_PA0, BLINK, SOC, RSVD3, RSVD4),
  226. PIN_RESERVED,
  227. /* Offset 0x3324 */
  228. PIN(CORE_PWR_REQ, PWRON, RSVD2, RSVD3, RSVD4),
  229. PIN(CPU_PWR_REQ, CPU, RSVD2, RSVD3, RSVD4),
  230. PIN(PWR_INT_N, PMI, RSVD2, RSVD3, RSVD4),
  231. PIN(CLK_32K_IN, CLK, RSVD2, RSVD3, RSVD4),
  232. PIN(OWR, OWR, RSVD2, RSVD3, RSVD4),
  233. PIN(DAP1_FS_PN0, I2S0, HDA, GMI, RSVD4),
  234. PIN(DAP1_DIN_PN1, I2S0, HDA, GMI, RSVD4),
  235. PIN(DAP1_DOUT_PN2, I2S0, HDA, GMI, SATA),
  236. PIN(DAP1_SCLK_PN3, I2S0, HDA, GMI, RSVD4),
  237. PIN(DAP_MCLK1_REQ_PEE2, DAP, DAP1, SATA, RSVD4),
  238. PIN(DAP_MCLK1_PW4, EXTPERIPH1, DAP2, RSVD3, RSVD4),
  239. PIN(SPDIF_IN_PK6, SPDIF, RSVD2, RSVD3, I2C3),
  240. PIN(SPDIF_OUT_PK5, SPDIF, RSVD2, RSVD3, I2C3),
  241. PIN(DAP2_FS_PA2, I2S1, HDA, GMI, RSVD4),
  242. PIN(DAP2_DIN_PA4, I2S1, HDA, GMI, RSVD4),
  243. PIN(DAP2_DOUT_PA5, I2S1, HDA, GMI, RSVD4),
  244. PIN(DAP2_SCLK_PA3, I2S1, HDA, GMI, RSVD4),
  245. PIN(DVFS_PWM_PX0, SPI6, CLDVFS, GMI, RSVD4),
  246. PIN(GPIO_X1_AUD_PX1, SPI6, RSVD2, GMI, RSVD4),
  247. PIN(GPIO_X3_AUD_PX3, SPI6, SPI1, GMI, RSVD4),
  248. PIN(DVFS_CLK_PX2, SPI6, CLDVFS, GMI, RSVD4),
  249. PIN(GPIO_X4_AUD_PX4, GMI, SPI1, SPI2, DAP2),
  250. PIN(GPIO_X5_AUD_PX5, GMI, SPI1, SPI2, RSVD4),
  251. PIN(GPIO_X6_AUD_PX6, SPI6, SPI1, SPI2, GMI),
  252. PIN(GPIO_X7_AUD_PX7, RSVD1, SPI1, SPI2, RSVD4),
  253. PIN_RESERVED,
  254. PIN_RESERVED,
  255. /* Offset 0x3390 */
  256. PIN(SDMMC3_CLK_PA6, SDMMC3, RSVD2, RSVD3, SPI3),
  257. PIN(SDMMC3_CMD_PA7, SDMMC3, PWM3, UARTA, SPI3),
  258. PIN(SDMMC3_DAT0_PB7, SDMMC3, RSVD2, RSVD3, SPI3),
  259. PIN(SDMMC3_DAT1_PB6, SDMMC3, PWM2, UARTA, SPI3),
  260. PIN(SDMMC3_DAT2_PB5, SDMMC3, PWM1, DISPLAYA, SPI3),
  261. PIN(SDMMC3_DAT3_PB4, SDMMC3, PWM0, DISPLAYB, SPI3),
  262. PIN_RESERVED,
  263. PIN_RESERVED,
  264. PIN_RESERVED,
  265. PIN_RESERVED,
  266. PIN_RESERVED,
  267. /* Offset 0x33bc */
  268. PIN(PEX_L0_RST_N_PDD1, PE0, RSVD2, RSVD3, RSVD4),
  269. PIN(PEX_L0_CLKREQ_N_PDD2, PE0, RSVD2, RSVD3, RSVD4),
  270. PIN(PEX_WAKE_N_PDD3, PE, RSVD2, RSVD3, RSVD4),
  271. PIN_RESERVED,
  272. /* Offset 0x33cc */
  273. PIN(PEX_L1_RST_N_PDD5, PE1, RSVD2, RSVD3, RSVD4),
  274. PIN(PEX_L1_CLKREQ_N_PDD6, PE1, RSVD2, RSVD3, RSVD4),
  275. PIN_RESERVED,
  276. PIN_RESERVED,
  277. PIN_RESERVED,
  278. /* Offset 0x33e0 */
  279. PIN(HDMI_CEC_PEE3, CEC, RSVD2, RSVD3, RSVD4),
  280. PIN(SDMMC1_WP_N_PV3, SDMMC1, CLK12, SPI4, UARTA),
  281. PIN(SDMMC3_CD_N_PV2, SDMMC3, OWR, RSVD3, RSVD4),
  282. PIN(GPIO_W2_AUD_PW2, SPI6, RSVD2, SPI2, I2C1),
  283. PIN(GPIO_W3_AUD_PW3, SPI6, SPI1, SPI2, I2C1),
  284. PIN(USB_VBUS_EN0_PN4, USB, RSVD2, RSVD3, RSVD4),
  285. PIN(USB_VBUS_EN1_PN5, USB, RSVD2, RSVD3, RSVD4),
  286. PIN(SDMMC3_CLK_LB_IN_PEE5, SDMMC3, RSVD2, RSVD3, RSVD4),
  287. PIN(SDMMC3_CLK_LB_OUT_PEE4, SDMMC3, RSVD2, RSVD3, RSVD4),
  288. PIN(GMI_CLK_LB, SDMMC2, RSVD2, GMI, RSVD4),
  289. PIN(RESET_OUT_N, RSVD1, RSVD2, RSVD3, RESET_OUT_N),
  290. PIN(KB_ROW16_PT0, KBC, RSVD2, RSVD3, UARTC),
  291. PIN(KB_ROW17_PT1, KBC, RSVD2, RSVD3, UARTC),
  292. PIN(USB_VBUS_EN2_PFF1, USB, RSVD2, RSVD3, RSVD4),
  293. PIN(PFF2, SATA, RSVD2, RSVD3, RSVD4),
  294. PIN_RESERVED,
  295. PIN_RESERVED,
  296. PIN_RESERVED,
  297. PIN_RESERVED,
  298. PIN_RESERVED,
  299. /* Offset 0x3430 */
  300. PIN(DP_HPD_PFF0, DP, RSVD2, RSVD3, RSVD4),
  301. };
  302. const struct pmux_pingrp_desc *tegra_soc_pingroups = tegra124_pingroups;
  303. #define MIPIPADCTRL_GRP(grp, f0, f1) \
  304. { \
  305. .funcs = { \
  306. PMUX_FUNC_##f0, \
  307. PMUX_FUNC_##f1, \
  308. }, \
  309. }
  310. #define MIPIPADCTRL_RESERVED {}
  311. static const struct pmux_mipipadctrlgrp_desc tegra124_mipipadctrl_groups[] = {
  312. /* pin, f0, f1 */
  313. /* Offset 0x820 */
  314. MIPIPADCTRL_GRP(DSI_B, CSI, DSI_B),
  315. };
  316. const struct pmux_mipipadctrlgrp_desc *tegra_soc_mipipadctrl_groups = tegra124_mipipadctrl_groups;