| // SPDX-License-Identifier: GPL-2.0+ |
| /* |
| * Copyright (c) 2013-2014, NVIDIA CORPORATION. All rights reserved. |
| */ |
| |
| #include <asm/io.h> |
| #include <asm/arch/pinmux.h> |
| |
| #define PIN(pin, f0, f1, f2, f3) \ |
| { \ |
| .funcs = { \ |
| PMUX_FUNC_##f0, \ |
| PMUX_FUNC_##f1, \ |
| PMUX_FUNC_##f2, \ |
| PMUX_FUNC_##f3, \ |
| }, \ |
| } |
| |
| #define PIN_RESERVED {} |
| |
| static const struct pmux_pingrp_desc tegra124_pingroups[] = { |
| /* pin, f0, f1, f2, f3 */ |
| /* Offset 0x3000 */ |
| PIN(ULPI_DATA0_PO1, SPI3, HSI, UARTA, ULPI), |
| PIN(ULPI_DATA1_PO2, SPI3, HSI, UARTA, ULPI), |
| PIN(ULPI_DATA2_PO3, SPI3, HSI, UARTA, ULPI), |
| PIN(ULPI_DATA3_PO4, SPI3, HSI, UARTA, ULPI), |
| PIN(ULPI_DATA4_PO5, SPI2, HSI, UARTA, ULPI), |
| PIN(ULPI_DATA5_PO6, SPI2, HSI, UARTA, ULPI), |
| PIN(ULPI_DATA6_PO7, SPI2, HSI, UARTA, ULPI), |
| PIN(ULPI_DATA7_PO0, SPI2, HSI, UARTA, ULPI), |
| PIN(ULPI_CLK_PY0, SPI1, SPI5, UARTD, ULPI), |
| PIN(ULPI_DIR_PY1, SPI1, SPI5, UARTD, ULPI), |
| PIN(ULPI_NXT_PY2, SPI1, SPI5, UARTD, ULPI), |
| PIN(ULPI_STP_PY3, SPI1, SPI5, UARTD, ULPI), |
| PIN(DAP3_FS_PP0, I2S2, SPI5, DISPLAYA, DISPLAYB), |
| PIN(DAP3_DIN_PP1, I2S2, SPI5, DISPLAYA, DISPLAYB), |
| PIN(DAP3_DOUT_PP2, I2S2, SPI5, DISPLAYA, RSVD4), |
| PIN(DAP3_SCLK_PP3, I2S2, SPI5, RSVD3, DISPLAYB), |
| PIN(PV0, RSVD1, RSVD2, RSVD3, RSVD4), |
| PIN(PV1, RSVD1, RSVD2, RSVD3, RSVD4), |
| PIN(SDMMC1_CLK_PZ0, SDMMC1, CLK12, RSVD3, RSVD4), |
| PIN(SDMMC1_CMD_PZ1, SDMMC1, SPDIF, SPI4, UARTA), |
| PIN(SDMMC1_DAT3_PY4, SDMMC1, SPDIF, SPI4, UARTA), |
| PIN(SDMMC1_DAT2_PY5, SDMMC1, PWM0, SPI4, UARTA), |
| PIN(SDMMC1_DAT1_PY6, SDMMC1, PWM1, SPI4, UARTA), |
| PIN(SDMMC1_DAT0_PY7, SDMMC1, RSVD2, SPI4, UARTA), |
| PIN_RESERVED, |
| PIN_RESERVED, |
| /* Offset 0x3068 */ |
| PIN(CLK2_OUT_PW5, EXTPERIPH2, RSVD2, RSVD3, RSVD4), |
| PIN(CLK2_REQ_PCC5, DAP, RSVD2, RSVD3, RSVD4), |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| /* Offset 0x3110 */ |
| PIN(HDMI_INT_PN7, RSVD1, RSVD2, RSVD3, RSVD4), |
| PIN(DDC_SCL_PV4, I2C4, RSVD2, RSVD3, RSVD4), |
| PIN(DDC_SDA_PV5, I2C4, RSVD2, RSVD3, RSVD4), |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| /* Offset 0x3164 */ |
| PIN(UART2_RXD_PC3, IRDA, SPDIF, UARTA, SPI4), |
| PIN(UART2_TXD_PC2, IRDA, SPDIF, UARTA, SPI4), |
| PIN(UART2_RTS_N_PJ6, UARTA, UARTB, GMI, SPI4), |
| PIN(UART2_CTS_N_PJ5, UARTA, UARTB, GMI, SPI4), |
| PIN(UART3_TXD_PW6, UARTC, RSVD2, GMI, SPI4), |
| PIN(UART3_RXD_PW7, UARTC, RSVD2, GMI, SPI4), |
| PIN(UART3_CTS_N_PA1, UARTC, SDMMC1, DTV, GMI), |
| PIN(UART3_RTS_N_PC0, UARTC, PWM0, DTV, GMI), |
| PIN(PU0, OWR, UARTA, GMI, RSVD4), |
| PIN(PU1, RSVD1, UARTA, GMI, RSVD4), |
| PIN(PU2, RSVD1, UARTA, GMI, RSVD4), |
| PIN(PU3, PWM0, UARTA, GMI, DISPLAYB), |
| PIN(PU4, PWM1, UARTA, GMI, DISPLAYB), |
| PIN(PU5, PWM2, UARTA, GMI, DISPLAYB), |
| PIN(PU6, PWM3, UARTA, RSVD3, GMI), |
| PIN(GEN1_I2C_SDA_PC5, I2C1, RSVD2, RSVD3, RSVD4), |
| PIN(GEN1_I2C_SCL_PC4, I2C1, RSVD2, RSVD3, RSVD4), |
| PIN(DAP4_FS_PP4, I2S3, GMI, DTV, RSVD4), |
| PIN(DAP4_DIN_PP5, I2S3, GMI, RSVD3, RSVD4), |
| PIN(DAP4_DOUT_PP6, I2S3, GMI, DTV, RSVD4), |
| PIN(DAP4_SCLK_PP7, I2S3, GMI, RSVD3, RSVD4), |
| PIN(CLK3_OUT_PEE0, EXTPERIPH3, RSVD2, RSVD3, RSVD4), |
| PIN(CLK3_REQ_PEE1, DEV3, RSVD2, RSVD3, RSVD4), |
| PIN(PC7, RSVD1, RSVD2, GMI, GMI_ALT), |
| PIN(PI5, SDMMC2, RSVD2, GMI, RSVD4), |
| PIN(PI7, RSVD1, TRACE, GMI, DTV), |
| PIN(PK0, RSVD1, SDMMC3, GMI, SOC), |
| PIN(PK1, SDMMC2, TRACE, GMI, RSVD4), |
| PIN(PJ0, RSVD1, RSVD2, GMI, USB), |
| PIN(PJ2, RSVD1, RSVD2, GMI, SOC), |
| PIN(PK3, SDMMC2, TRACE, GMI, CCLA), |
| PIN(PK4, SDMMC2, RSVD2, GMI, GMI_ALT), |
| PIN(PK2, RSVD1, RSVD2, GMI, RSVD4), |
| PIN(PI3, RSVD1, RSVD2, GMI, SPI4), |
| PIN(PI6, RSVD1, RSVD2, GMI, SDMMC2), |
| PIN(PG0, RSVD1, RSVD2, GMI, RSVD4), |
| PIN(PG1, RSVD1, RSVD2, GMI, RSVD4), |
| PIN(PG2, RSVD1, TRACE, GMI, RSVD4), |
| PIN(PG3, RSVD1, TRACE, GMI, RSVD4), |
| PIN(PG4, RSVD1, TMDS, GMI, SPI4), |
| PIN(PG5, RSVD1, RSVD2, GMI, SPI4), |
| PIN(PG6, RSVD1, RSVD2, GMI, SPI4), |
| PIN(PG7, RSVD1, RSVD2, GMI, SPI4), |
| PIN(PH0, PWM0, TRACE, GMI, DTV), |
| PIN(PH1, PWM1, TMDS, GMI, DISPLAYA), |
| PIN(PH2, PWM2, TMDS, GMI, CLDVFS), |
| PIN(PH3, PWM3, SPI4, GMI, CLDVFS), |
| PIN(PH4, SDMMC2, RSVD2, GMI, RSVD4), |
| PIN(PH5, SDMMC2, RSVD2, GMI, RSVD4), |
| PIN(PH6, SDMMC2, TRACE, GMI, DTV), |
| PIN(PH7, SDMMC2, TRACE, GMI, DTV), |
| PIN(PJ7, UARTD, RSVD2, GMI, GMI_ALT), |
| PIN(PB0, UARTD, RSVD2, GMI, RSVD4), |
| PIN(PB1, UARTD, RSVD2, GMI, RSVD4), |
| PIN(PK7, UARTD, RSVD2, GMI, RSVD4), |
| PIN(PI0, RSVD1, RSVD2, GMI, RSVD4), |
| PIN(PI1, RSVD1, RSVD2, GMI, RSVD4), |
| PIN(PI2, SDMMC2, TRACE, GMI, RSVD4), |
| PIN(PI4, SPI4, TRACE, GMI, DISPLAYA), |
| PIN(GEN2_I2C_SCL_PT5, I2C2, RSVD2, GMI, RSVD4), |
| PIN(GEN2_I2C_SDA_PT6, I2C2, RSVD2, GMI, RSVD4), |
| PIN(SDMMC4_CLK_PCC4, SDMMC4, RSVD2, GMI, RSVD4), |
| PIN(SDMMC4_CMD_PT7, SDMMC4, RSVD2, GMI, RSVD4), |
| PIN(SDMMC4_DAT0_PAA0, SDMMC4, SPI3, GMI, RSVD4), |
| PIN(SDMMC4_DAT1_PAA1, SDMMC4, SPI3, GMI, RSVD4), |
| PIN(SDMMC4_DAT2_PAA2, SDMMC4, SPI3, GMI, RSVD4), |
| PIN(SDMMC4_DAT3_PAA3, SDMMC4, SPI3, GMI, RSVD4), |
| PIN(SDMMC4_DAT4_PAA4, SDMMC4, SPI3, GMI, RSVD4), |
| PIN(SDMMC4_DAT5_PAA5, SDMMC4, SPI3, RSVD3, RSVD4), |
| PIN(SDMMC4_DAT6_PAA6, SDMMC4, SPI3, GMI, RSVD4), |
| PIN(SDMMC4_DAT7_PAA7, SDMMC4, RSVD2, GMI, RSVD4), |
| PIN_RESERVED, |
| /* Offset 0x3284 */ |
| PIN(CAM_MCLK_PCC0, VI, VI_ALT1, VI_ALT3, SDMMC2), |
| PIN(PCC1, I2S4, RSVD2, RSVD3, SDMMC2), |
| PIN(PBB0, VGP6, VIMCLK2, SDMMC2, VIMCLK2_ALT), |
| PIN(CAM_I2C_SCL_PBB1, VGP1, I2C3, RSVD3, SDMMC2), |
| PIN(CAM_I2C_SDA_PBB2, VGP2, I2C3, RSVD3, SDMMC2), |
| PIN(PBB3, VGP3, DISPLAYA, DISPLAYB, SDMMC2), |
| PIN(PBB4, VGP4, DISPLAYA, DISPLAYB, SDMMC2), |
| PIN(PBB5, VGP5, DISPLAYA, RSVD3, SDMMC2), |
| PIN(PBB6, I2S4, RSVD2, DISPLAYB, SDMMC2), |
| PIN(PBB7, I2S4, RSVD2, RSVD3, SDMMC2), |
| PIN(PCC2, I2S4, RSVD2, SDMMC3, SDMMC2), |
| PIN(JTAG_RTCK, RTCK, RSVD2, RSVD3, RSVD4), |
| PIN(PWR_I2C_SCL_PZ6, I2CPWR, RSVD2, RSVD3, RSVD4), |
| PIN(PWR_I2C_SDA_PZ7, I2CPWR, RSVD2, RSVD3, RSVD4), |
| PIN(KB_ROW0_PR0, KBC, RSVD2, RSVD3, RSVD4), |
| PIN(KB_ROW1_PR1, KBC, RSVD2, RSVD3, RSVD4), |
| PIN(KB_ROW2_PR2, KBC, RSVD2, RSVD3, RSVD4), |
| PIN(KB_ROW3_PR3, KBC, DISPLAYA, SYS, DISPLAYB), |
| PIN(KB_ROW4_PR4, KBC, DISPLAYA, RSVD3, DISPLAYB), |
| PIN(KB_ROW5_PR5, KBC, DISPLAYA, RSVD3, DISPLAYB), |
| PIN(KB_ROW6_PR6, KBC, DISPLAYA, DISPLAYA_ALT, DISPLAYB), |
| PIN(KB_ROW7_PR7, KBC, RSVD2, CLDVFS, UARTA), |
| PIN(KB_ROW8_PS0, KBC, RSVD2, CLDVFS, UARTA), |
| PIN(KB_ROW9_PS1, KBC, RSVD2, RSVD3, UARTA), |
| PIN(KB_ROW10_PS2, KBC, RSVD2, RSVD3, UARTA), |
| PIN(KB_ROW11_PS3, KBC, RSVD2, RSVD3, IRDA), |
| PIN(KB_ROW12_PS4, KBC, RSVD2, RSVD3, IRDA), |
| PIN(KB_ROW13_PS5, KBC, RSVD2, SPI2, RSVD4), |
| PIN(KB_ROW14_PS6, KBC, RSVD2, SPI2, RSVD4), |
| PIN(KB_ROW15_PS7, KBC, SOC, RSVD3, RSVD4), |
| PIN(KB_COL0_PQ0, KBC, RSVD2, SPI2, RSVD4), |
| PIN(KB_COL1_PQ1, KBC, RSVD2, SPI2, RSVD4), |
| PIN(KB_COL2_PQ2, KBC, RSVD2, SPI2, RSVD4), |
| PIN(KB_COL3_PQ3, KBC, DISPLAYA, PWM2, UARTA), |
| PIN(KB_COL4_PQ4, KBC, OWR, SDMMC3, UARTA), |
| PIN(KB_COL5_PQ5, KBC, RSVD2, SDMMC3, RSVD4), |
| PIN(KB_COL6_PQ6, KBC, RSVD2, SPI2, UARTD), |
| PIN(KB_COL7_PQ7, KBC, RSVD2, SPI2, UARTD), |
| PIN(CLK_32K_OUT_PA0, BLINK, SOC, RSVD3, RSVD4), |
| PIN_RESERVED, |
| /* Offset 0x3324 */ |
| PIN(CORE_PWR_REQ, PWRON, RSVD2, RSVD3, RSVD4), |
| PIN(CPU_PWR_REQ, CPU, RSVD2, RSVD3, RSVD4), |
| PIN(PWR_INT_N, PMI, RSVD2, RSVD3, RSVD4), |
| PIN(CLK_32K_IN, CLK, RSVD2, RSVD3, RSVD4), |
| PIN(OWR, OWR, RSVD2, RSVD3, RSVD4), |
| PIN(DAP1_FS_PN0, I2S0, HDA, GMI, RSVD4), |
| PIN(DAP1_DIN_PN1, I2S0, HDA, GMI, RSVD4), |
| PIN(DAP1_DOUT_PN2, I2S0, HDA, GMI, SATA), |
| PIN(DAP1_SCLK_PN3, I2S0, HDA, GMI, RSVD4), |
| PIN(DAP_MCLK1_REQ_PEE2, DAP, DAP1, SATA, RSVD4), |
| PIN(DAP_MCLK1_PW4, EXTPERIPH1, DAP2, RSVD3, RSVD4), |
| PIN(SPDIF_IN_PK6, SPDIF, RSVD2, RSVD3, I2C3), |
| PIN(SPDIF_OUT_PK5, SPDIF, RSVD2, RSVD3, I2C3), |
| PIN(DAP2_FS_PA2, I2S1, HDA, GMI, RSVD4), |
| PIN(DAP2_DIN_PA4, I2S1, HDA, GMI, RSVD4), |
| PIN(DAP2_DOUT_PA5, I2S1, HDA, GMI, RSVD4), |
| PIN(DAP2_SCLK_PA3, I2S1, HDA, GMI, RSVD4), |
| PIN(DVFS_PWM_PX0, SPI6, CLDVFS, GMI, RSVD4), |
| PIN(GPIO_X1_AUD_PX1, SPI6, RSVD2, GMI, RSVD4), |
| PIN(GPIO_X3_AUD_PX3, SPI6, SPI1, GMI, RSVD4), |
| PIN(DVFS_CLK_PX2, SPI6, CLDVFS, GMI, RSVD4), |
| PIN(GPIO_X4_AUD_PX4, GMI, SPI1, SPI2, DAP2), |
| PIN(GPIO_X5_AUD_PX5, GMI, SPI1, SPI2, RSVD4), |
| PIN(GPIO_X6_AUD_PX6, SPI6, SPI1, SPI2, GMI), |
| PIN(GPIO_X7_AUD_PX7, RSVD1, SPI1, SPI2, RSVD4), |
| PIN_RESERVED, |
| PIN_RESERVED, |
| /* Offset 0x3390 */ |
| PIN(SDMMC3_CLK_PA6, SDMMC3, RSVD2, RSVD3, SPI3), |
| PIN(SDMMC3_CMD_PA7, SDMMC3, PWM3, UARTA, SPI3), |
| PIN(SDMMC3_DAT0_PB7, SDMMC3, RSVD2, RSVD3, SPI3), |
| PIN(SDMMC3_DAT1_PB6, SDMMC3, PWM2, UARTA, SPI3), |
| PIN(SDMMC3_DAT2_PB5, SDMMC3, PWM1, DISPLAYA, SPI3), |
| PIN(SDMMC3_DAT3_PB4, SDMMC3, PWM0, DISPLAYB, SPI3), |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| /* Offset 0x33bc */ |
| PIN(PEX_L0_RST_N_PDD1, PE0, RSVD2, RSVD3, RSVD4), |
| PIN(PEX_L0_CLKREQ_N_PDD2, PE0, RSVD2, RSVD3, RSVD4), |
| PIN(PEX_WAKE_N_PDD3, PE, RSVD2, RSVD3, RSVD4), |
| PIN_RESERVED, |
| /* Offset 0x33cc */ |
| PIN(PEX_L1_RST_N_PDD5, PE1, RSVD2, RSVD3, RSVD4), |
| PIN(PEX_L1_CLKREQ_N_PDD6, PE1, RSVD2, RSVD3, RSVD4), |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| /* Offset 0x33e0 */ |
| PIN(HDMI_CEC_PEE3, CEC, RSVD2, RSVD3, RSVD4), |
| PIN(SDMMC1_WP_N_PV3, SDMMC1, CLK12, SPI4, UARTA), |
| PIN(SDMMC3_CD_N_PV2, SDMMC3, OWR, RSVD3, RSVD4), |
| PIN(GPIO_W2_AUD_PW2, SPI6, RSVD2, SPI2, I2C1), |
| PIN(GPIO_W3_AUD_PW3, SPI6, SPI1, SPI2, I2C1), |
| PIN(USB_VBUS_EN0_PN4, USB, RSVD2, RSVD3, RSVD4), |
| PIN(USB_VBUS_EN1_PN5, USB, RSVD2, RSVD3, RSVD4), |
| PIN(SDMMC3_CLK_LB_IN_PEE5, SDMMC3, RSVD2, RSVD3, RSVD4), |
| PIN(SDMMC3_CLK_LB_OUT_PEE4, SDMMC3, RSVD2, RSVD3, RSVD4), |
| PIN(GMI_CLK_LB, SDMMC2, RSVD2, GMI, RSVD4), |
| PIN(RESET_OUT_N, RSVD1, RSVD2, RSVD3, RESET_OUT_N), |
| PIN(KB_ROW16_PT0, KBC, RSVD2, RSVD3, UARTC), |
| PIN(KB_ROW17_PT1, KBC, RSVD2, RSVD3, UARTC), |
| PIN(USB_VBUS_EN2_PFF1, USB, RSVD2, RSVD3, RSVD4), |
| PIN(PFF2, SATA, RSVD2, RSVD3, RSVD4), |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| PIN_RESERVED, |
| /* Offset 0x3430 */ |
| PIN(DP_HPD_PFF0, DP, RSVD2, RSVD3, RSVD4), |
| }; |
| const struct pmux_pingrp_desc *tegra_soc_pingroups = tegra124_pingroups; |
| |
| #define MIPIPADCTRL_GRP(grp, f0, f1) \ |
| { \ |
| .funcs = { \ |
| PMUX_FUNC_##f0, \ |
| PMUX_FUNC_##f1, \ |
| }, \ |
| } |
| |
| #define MIPIPADCTRL_RESERVED {} |
| |
| static const struct pmux_mipipadctrlgrp_desc tegra124_mipipadctrl_groups[] = { |
| /* pin, f0, f1 */ |
| /* Offset 0x820 */ |
| MIPIPADCTRL_GRP(DSI_B, CSI, DSI_B), |
| }; |
| const struct pmux_mipipadctrlgrp_desc *tegra_soc_mipipadctrl_groups = tegra124_mipipadctrl_groups; |