2 * Copyright (c) 2011 The Chromium OS Authors.
4 * SPDX-License-Identifier: GPL-2.0+
7 /* Tegra20 pin multiplexing functions */
11 #include <asm/arch/pinmux.h>
14 * This defines the order of the pin mux control bits in the registers. For
15 * some reason there is no correspendence between the tristate, pin mux and
16 * pullup/pulldown registers.
19 /* 0: APB_MISC_PP_PIN_MUX_CTL_A_0 */
38 /* 16: APB_MISC_PP_PIN_MUX_CTL_B_0 */
57 /* 32: APB_MISC_PP_PIN_MUX_CTL_C_0 */
76 /* 48: APB_MISC_PP_PIN_MUX_CTL_D_0 */
95 /* 64: APB_MISC_PP_PIN_MUX_CTL_E_0 */
114 /* 80: APB_MISC_PP_PIN_MUX_CTL_F_0 */
133 /* 96: APB_MISC_PP_PIN_MUX_CTL_G_0 */
156 * And this defines the order of the pullup/pulldown controls which are again
157 * in a different order
160 /* 0: APB_MISC_PP_PULLUPDOWN_REG_A_0 */
179 /* 16: APB_MISC_PP_PULLUPDOWN_REG_B_0 */
197 /* 32: APB_MISC_PP_PULLUPDOWN_REG_C_0 */
216 /* 48: APB_MISC_PP_PULLUPDOWN_REG_D_0 */
235 /* 64: APB_MISC_PP_PULLUPDOWN_REG_E_0 */
257 /* Convenient macro for defining pin group properties */
258 #define PINALL(pg_name, vdd, f0, f1, f2, f3, f_safe, mux, pupd) \
270 /* A normal pin group where the mux name and pull-up name match */
271 #define PIN(pg_name, vdd, f0, f1, f2, f3, f_safe) \
272 PINALL(pg_name, vdd, f0, f1, f2, f3, f_safe, \
273 MUXCTL_ ## pg_name, PUCTL_ ## pg_name)
275 /* A pin group where the pull-up name doesn't have a 1-1 mapping */
276 #define PINP(pg_name, vdd, f0, f1, f2, f3, f_safe, pupd) \
277 PINALL(pg_name, vdd, f0, f1, f2, f3, f_safe, \
278 MUXCTL_ ## pg_name, PUCTL_ ## pupd)
280 /* A pin group number which is not used */
281 #define PIN_RESERVED \
282 PIN(NONE, NONE, RSVD, RSVD, RSVD, RSVD, RSVD)
284 #define PMUX_FUNC_RSVD PMUX_FUNC_RSVD1
286 static const struct tegra_pingroup_desc tegra20_pingroups[] = {
287 PIN(ATA, NAND, IDE, NAND, GMI, RSVD, IDE),
288 PIN(ATB, NAND, IDE, NAND, GMI, SDIO4, IDE),
289 PIN(ATC, NAND, IDE, NAND, GMI, SDIO4, IDE),
290 PIN(ATD, NAND, IDE, NAND, GMI, SDIO4, IDE),
291 PIN(CDEV1, AUDIO, OSC, PLLA_OUT, PLLM_OUT1, AUDIO_SYNC, OSC),
292 PIN(CDEV2, AUDIO, OSC, AHB_CLK, APB_CLK, PLLP_OUT4, OSC),
293 PIN(CSUS, VI, PLLC_OUT1, PLLP_OUT2, PLLP_OUT3, VI_SENSOR_CLK,
295 PIN(DAP1, AUDIO, DAP1, RSVD, GMI, SDIO2, DAP1),
297 PIN(DAP2, AUDIO, DAP2, TWC, RSVD, GMI, DAP2),
298 PIN(DAP3, BB, DAP3, RSVD, RSVD, RSVD, DAP3),
299 PIN(DAP4, UART, DAP4, RSVD, GMI, RSVD, DAP4),
300 PIN(DTA, VI, RSVD, SDIO2, VI, RSVD, RSVD4),
301 PIN(DTB, VI, RSVD, RSVD, VI, SPI1, RSVD1),
302 PIN(DTC, VI, RSVD, RSVD, VI, RSVD, RSVD1),
303 PIN(DTD, VI, RSVD, SDIO2, VI, RSVD, RSVD1),
304 PIN(DTE, VI, RSVD, RSVD, VI, SPI1, RSVD1),
306 PINP(GPU, UART, PWM, UARTA, GMI, RSVD, RSVD4,
308 PIN(GPV, SD, PCIE, RSVD, RSVD, RSVD, PCIE),
309 PIN(I2CP, SYS, I2C, RSVD, RSVD, RSVD, RSVD4),
310 PIN(IRTX, UART, UARTA, UARTB, GMI, SPI4, UARTB),
311 PIN(IRRX, UART, UARTA, UARTB, GMI, SPI4, UARTB),
312 PIN(KBCB, SYS, KBC, NAND, SDIO2, MIO, KBC),
313 PIN(KBCA, SYS, KBC, NAND, SDIO2, EMC_TEST0_DLL, KBC),
314 PINP(PMC, SYS, PWR_ON, PWR_INTR, RSVD, RSVD, PWR_ON, NONE),
316 PIN(PTA, NAND, I2C2, HDMI, GMI, RSVD, RSVD4),
317 PIN(RM, UART, I2C, RSVD, RSVD, RSVD, RSVD4),
318 PIN(KBCE, SYS, KBC, NAND, OWR, RSVD, KBC),
319 PIN(KBCF, SYS, KBC, NAND, TRACE, MIO, KBC),
320 PIN(GMA, NAND, UARTE, SPI3, GMI, SDIO4, SPI3),
321 PIN(GMC, NAND, UARTD, SPI4, GMI, SFLASH, SPI4),
322 PIN(SDMMC1, BB, SDIO1, RSVD, UARTE, UARTA, RSVD2),
323 PIN(OWC, SYS, OWR, RSVD, RSVD, RSVD, OWR),
325 PIN(GME, NAND, RSVD, DAP5, GMI, SDIO4, GMI),
326 PIN(SDC, SD, PWM, TWC, SDIO3, SPI3, TWC),
327 PIN(SDD, SD, UARTA, PWM, SDIO3, SPI3, PWM),
329 PINP(SLXA, SD, PCIE, SPI4, SDIO3, SPI2, PCIE, CRTP),
330 PIN(SLXC, SD, SPDIF, SPI4, SDIO3, SPI2, SPI4),
331 PIN(SLXD, SD, SPDIF, SPI4, SDIO3, SPI2, SPI4),
332 PIN(SLXK, SD, PCIE, SPI4, SDIO3, SPI2, PCIE),
334 PIN(SPDI, AUDIO, SPDIF, RSVD, I2C, SDIO2, RSVD2),
335 PIN(SPDO, AUDIO, SPDIF, RSVD, I2C, SDIO2, RSVD2),
336 PIN(SPIA, AUDIO, SPI1, SPI2, SPI3, GMI, GMI),
337 PIN(SPIB, AUDIO, SPI1, SPI2, SPI3, GMI, GMI),
338 PIN(SPIC, AUDIO, SPI1, SPI2, SPI3, GMI, GMI),
339 PIN(SPID, AUDIO, SPI2, SPI1, SPI2_ALT, GMI, GMI),
340 PIN(SPIE, AUDIO, SPI2, SPI1, SPI2_ALT, GMI, GMI),
341 PIN(SPIF, AUDIO, SPI3, SPI1, SPI2, RSVD, RSVD4),
343 PIN(SPIG, AUDIO, SPI3, SPI2, SPI2_ALT, I2C, SPI2_ALT),
344 PIN(SPIH, AUDIO, SPI3, SPI2, SPI2_ALT, I2C, SPI2_ALT),
345 PIN(UAA, BB, SPI3, MIPI_HS, UARTA, ULPI, MIPI_HS),
346 PIN(UAB, BB, SPI2, MIPI_HS, UARTA, ULPI, MIPI_HS),
347 PIN(UAC, BB, OWR, RSVD, RSVD, RSVD, RSVD4),
348 PIN(UAD, UART, UARTB, SPDIF, UARTA, SPI4, SPDIF),
349 PIN(UCA, UART, UARTC, RSVD, GMI, RSVD, RSVD4),
350 PIN(UCB, UART, UARTC, PWM, GMI, RSVD, RSVD4),
353 PIN(ATE, NAND, IDE, NAND, GMI, RSVD, IDE),
354 PIN(KBCC, SYS, KBC, NAND, TRACE, EMC_TEST1_DLL, KBC),
357 PIN(GMB, NAND, IDE, NAND, GMI, GMI_INT, GMI),
358 PIN(GMD, NAND, RSVD, NAND, GMI, SFLASH, GMI),
359 PIN(DDC, LCD, I2C2, RSVD, RSVD, RSVD, RSVD4),
362 PINP(LD0, LCD, DISPA, DISPB, XIO, RSVD, RSVD4, LD17),
363 PINP(LD1, LCD, DISPA, DISPB, XIO, RSVD, RSVD4, LD17),
364 PINP(LD2, LCD, DISPA, DISPB, XIO, RSVD, RSVD4, LD17),
365 PINP(LD3, LCD, DISPA, DISPB, XIO, RSVD, RSVD4, LD17),
366 PINP(LD4, LCD, DISPA, DISPB, XIO, RSVD, RSVD4, LD17),
367 PINP(LD5, LCD, DISPA, DISPB, XIO, RSVD, RSVD4, LD17),
368 PINP(LD6, LCD, DISPA, DISPB, XIO, RSVD, RSVD4, LD17),
369 PINP(LD7, LCD, DISPA, DISPB, XIO, RSVD, RSVD4, LD17),
371 PINP(LD8, LCD, DISPA, DISPB, XIO, RSVD, RSVD4, LD17),
372 PINP(LD9, LCD, DISPA, DISPB, XIO, RSVD, RSVD4, LD17),
373 PINP(LD10, LCD, DISPA, DISPB, XIO, RSVD, RSVD4, LD17),
374 PINP(LD11, LCD, DISPA, DISPB, XIO, RSVD, RSVD4, LD17),
375 PINP(LD12, LCD, DISPA, DISPB, XIO, RSVD, RSVD4, LD17),
376 PINP(LD13, LCD, DISPA, DISPB, XIO, RSVD, RSVD4, LD17),
377 PINP(LD14, LCD, DISPA, DISPB, XIO, RSVD, RSVD4, LD17),
378 PINP(LD15, LCD, DISPA, DISPB, XIO, RSVD, RSVD4, LD17),
380 PINP(LD16, LCD, DISPA, DISPB, XIO, RSVD, RSVD4, LD17),
381 PINP(LD17, LCD, DISPA, DISPB, RSVD, RSVD, RSVD4, LD17),
382 PINP(LHP0, LCD, DISPA, DISPB, RSVD, RSVD, RSVD4, LD21_20),
383 PINP(LHP1, LCD, DISPA, DISPB, RSVD, RSVD, RSVD4, LD19_18),
384 PINP(LHP2, LCD, DISPA, DISPB, RSVD, RSVD, RSVD4, LD19_18),
385 PINP(LVP0, LCD, DISPA, DISPB, RSVD, RSVD, RSVD4, LC),
386 PINP(LVP1, LCD, DISPA, DISPB, RSVD, RSVD, RSVD4, LD21_20),
387 PINP(HDINT, LCD, HDMI, RSVD, RSVD, RSVD, HDMI , LC),
389 PINP(LM0, LCD, DISPA, DISPB, SPI3, RSVD, RSVD4, LC),
390 PINP(LM1, LCD, DISPA, DISPB, RSVD, CRT, RSVD3, LC),
391 PINP(LVS, LCD, DISPA, DISPB, XIO, RSVD, RSVD4, LC),
392 PINP(LSC0, LCD, DISPA, DISPB, XIO, RSVD, RSVD4, LC),
393 PINP(LSC1, LCD, DISPA, DISPB, SPI3, HDMI, DISPA, LS),
394 PINP(LSCK, LCD, DISPA, DISPB, SPI3, HDMI, DISPA, LS),
395 PINP(LDC, LCD, DISPA, DISPB, RSVD, RSVD, RSVD4, LS),
396 PINP(LCSN, LCD, DISPA, DISPB, SPI3, RSVD, RSVD4, LS),
399 PINP(LSPI, LCD, DISPA, DISPB, XIO, HDMI, DISPA, LC),
400 PINP(LSDA, LCD, DISPA, DISPB, SPI3, HDMI, DISPA, LS),
401 PINP(LSDI, LCD, DISPA, DISPB, SPI3, RSVD, DISPA, LS),
402 PINP(LPW0, LCD, DISPA, DISPB, SPI3, HDMI, DISPA, LS),
403 PINP(LPW1, LCD, DISPA, DISPB, RSVD, RSVD, RSVD4, LS),
404 PINP(LPW2, LCD, DISPA, DISPB, SPI3, HDMI, DISPA, LS),
405 PINP(LDI, LCD, DISPA, DISPB, RSVD, RSVD, RSVD4, LD23_22),
406 PINP(LHS, LCD, DISPA, DISPB, XIO, RSVD, RSVD4, LC),
408 PINP(LPP, LCD, DISPA, DISPB, RSVD, RSVD, RSVD4, LD23_22),
410 PIN(KBCD, SYS, KBC, NAND, SDIO2, MIO, KBC),
411 PIN(GPU7, SYS, RTCK, RSVD, RSVD, RSVD, RTCK),
412 PIN(DTF, VI, I2C3, RSVD, VI, RSVD, RSVD4),
413 PIN(UDA, BB, SPI1, RSVD, UARTD, ULPI, RSVD2),
414 PIN(CRTP, LCD, CRT, RSVD, RSVD, RSVD, RSVD),
415 PINP(SDB, SD, UARTA, PWM, SDIO3, SPI2, PWM, NONE),
417 /* these pin groups only have pullup and pull down control */
418 PINALL(CK32, SYS, RSVD, RSVD, RSVD, RSVD, RSVD, MUXCTL_NONE,
420 PINALL(DDRC, DDR, RSVD, RSVD, RSVD, RSVD, RSVD, MUXCTL_NONE,
422 PINALL(PMCA, SYS, RSVD, RSVD, RSVD, RSVD, RSVD, MUXCTL_NONE,
424 PINALL(PMCB, SYS, RSVD, RSVD, RSVD, RSVD, RSVD, MUXCTL_NONE,
426 PINALL(PMCC, SYS, RSVD, RSVD, RSVD, RSVD, RSVD, MUXCTL_NONE,
428 PINALL(PMCD, SYS, RSVD, RSVD, RSVD, RSVD, RSVD, MUXCTL_NONE,
430 PINALL(PMCE, SYS, RSVD, RSVD, RSVD, RSVD, RSVD, MUXCTL_NONE,
432 PINALL(XM2C, DDR, RSVD, RSVD, RSVD, RSVD, RSVD, MUXCTL_NONE,
434 PINALL(XM2D, DDR, RSVD, RSVD, RSVD, RSVD, RSVD, MUXCTL_NONE,
437 const struct tegra_pingroup_desc *tegra_soc_pingroups = tegra20_pingroups;