diff options
Diffstat (limited to 'arch/arm')
| -rw-r--r-- | arch/arm/cpu/tegra114-common/pinmux.c | 214 | ||||
| -rw-r--r-- | arch/arm/include/asm/arch-tegra114/pinmux.h | 146 | 
2 files changed, 163 insertions, 197 deletions
| diff --git a/arch/arm/cpu/tegra114-common/pinmux.c b/arch/arm/cpu/tegra114-common/pinmux.c index 52b3ec47a..27b5f694f 100644 --- a/arch/arm/cpu/tegra114-common/pinmux.c +++ b/arch/arm/cpu/tegra114-common/pinmux.c @@ -37,6 +37,7 @@ struct tegra_pingroup_desc {  #define PMUX_OD_SHIFT		6  #define PMUX_LOCK_SHIFT		7  #define PMUX_IO_RESET_SHIFT	8 +#define PMUX_RCV_SEL_SHIFT	9  /* Convenient macro for defining pin group properties */  #define PIN(pg_name, vdd, f0, f1, f2, f3, iod)	\ @@ -58,6 +59,10 @@ struct tegra_pingroup_desc {  #define PINO(pg_name, vdd, f0, f1, f2, f3) \  	PIN(pg_name, vdd, f0, f1, f2, f3, OUTPUT) +/* A pin group number which is not used */ +#define PIN_RESERVED \ +	PIN(NONE, NONE, INVALID, INVALID, INVALID, INVALID, NONE) +  const struct tegra_pingroup_desc tegra_soc_pingroups[PINGRP_COUNT] = {  	/*	NAME	  VDD	   f0		f1	   f2	    f3  */  	PINI(ULPI_DATA0,  BB,	   SPI3,       HSI,	   UARTA,   ULPI), @@ -84,71 +89,71 @@ const struct tegra_pingroup_desc tegra_soc_pingroups[PINGRP_COUNT] = {  	PINI(SDMMC1_DAT2, SDMMC1,  SDMMC1,     PWM0,       SPI4,    UARTA),  	PINI(SDMMC1_DAT1, SDMMC1,  SDMMC1,     PWM1,       SPI4,    UARTA),  	PINI(SDMMC1_DAT0, SDMMC1,  SDMMC1,     RSVD2,      SPI4,    UARTA), -	PINI(GPIO_PV2,    BB,      RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINI(GPIO_PV3,    BB,      RSVD1,      RSVD2,      RSVD3,   RSVD4), +	PIN_RESERVED,	/* Reserved by t114: 0x3060 - 0x3064 */ +	PIN_RESERVED,  	PINI(CLK2_OUT,    SDMMC1,  EXTPERIPH2, RSVD2,      RSVD3,   RSVD4),  	PINI(CLK2_REQ,    SDMMC1,  DAP,        RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_PWR1,    LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_PWR2,    LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_SDIN,    LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_SDOUT,   LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_WR_N,    LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_CS0_N,   LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_DC0,     LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_SCK,     LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_PWR0,    LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_PCLK,    LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_DE,      LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_HSYNC,   LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_VSYNC,   LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_D0,      LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_D1,      LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_D2,      LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_D3,      LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_D4,      LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_D5,      LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_D6,      LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_D7,      LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_D8,      LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_D9,      LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_D10,     LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_D11,     LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_D12,     LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_D13,     LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_D14,     LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_D15,     LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_D16,     LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_D17,     LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_D18,     LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_D19,     LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_D20,     LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_D21,     LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_D22,     LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_D23,     LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_CS1_N,   LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_M1,      LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINO(LCD_DC1,     LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), +	PIN_RESERVED,	/* Reserved by t114: 0x3070 - 0x310c */ +	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,  	PINI(HDMI_INT,    LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4),  	PINI(DDC_SCL,     LCD,     I2C4,       RSVD2,      RSVD3,   RSVD4),  	PINI(DDC_SDA,     LCD,     I2C4,       RSVD2,      RSVD3,   RSVD4), -	PINI(CRT_HSYNC,   LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINI(CRT_VSYNC,   LCD,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINI(VI_D0,       VI,      RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINI(VI_D1,       VI,      RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINI(VI_D2,       VI,      RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINI(VI_D3,       VI,      RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINI(VI_D4,       VI,      RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINI(VI_D5,       VI,      RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINI(VI_D6,       VI,      RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINI(VI_D7,       VI,      RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINI(VI_D8,       VI,      RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINI(VI_D9,       VI,      RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINI(VI_D10,      VI,      RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINI(VI_D11,      VI,      RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINI(VI_PCLK,     VI,      RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINI(VI_MCLK,     VI,      RSVD1,      RSVD3,      RSVD3,   RSVD4), -	PINI(VI_VSYNC,    VI,      RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINI(VI_HSYNC,    VI,      RSVD1,      RSVD2,      RSVD3,   RSVD4), +	PIN_RESERVED,	/* Reserved by t114: 0x311c - 0x3160 */ +	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,  	PINI(UART2_RXD,   UART,    UARTB,      SPDIF,      UARTA,   SPI4),  	PINI(UART2_TXD,   UART,    UARTB,      SPDIF,      UARTA,   SPI4),  	PINI(UART2_RTS_N, UART,    UARTA,      UARTB,      RSVD3,   SPI4), @@ -220,7 +225,7 @@ const struct tegra_pingroup_desc tegra_soc_pingroups[PINGRP_COUNT] = {  	PINI(SDMMC4_DAT5, SDMMC4,  SDMMC4,     SPI3,       GMI,     RSVD4),  	PINI(SDMMC4_DAT6, SDMMC4,  SDMMC4,     SPI3,       GMI,     RSVD4),  	PINI(SDMMC4_DAT7, SDMMC4,  SDMMC4,     RSVD2,      GMI,     RSVD4), -	PINI(SDMMC4_RST_N, SDMMC4, RSVD1,      RSVD2,      RSVD3,   SDMMC4), +	PIN_RESERVED,	/* Reserved by t114: 0x3280 */  	PINI(CAM_MCLK,    CAM,     VI,         VI_ALT1,    VI_ALT2, RSVD4),  	PINI(GPIO_PCC1,   CAM,     I2S4,       RSVD2,      RSVD3,   RSVD4),  	PINI(GPIO_PBB0,   CAM,     I2S4,       VI,         VI_ALT1, VI_ALT3), @@ -246,11 +251,11 @@ const struct tegra_pingroup_desc tegra_soc_pingroups[PINGRP_COUNT] = {  	PINI(KB_ROW8,     SYS,     KBC,        RSVD2,      RSVD3,   UARTA),  	PINI(KB_ROW9,     SYS,     KBC,        RSVD2,      RSVD3,   UARTA),  	PINI(KB_ROW10,    SYS,     KBC,        RSVD2,      RSVD3,   UARTA), -	PINI(KB_ROW11,    SYS,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINI(KB_ROW12,    SYS,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINI(KB_ROW13,    SYS,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINI(KB_ROW14,    SYS,     RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINI(KB_ROW15,    SYS,     RSVD1,      RSVD2,      RSVD3,   RSVD4), +	PIN_RESERVED,	/* Reserved by t114: 0x32e8 - 0x32f8 */ +	PIN_RESERVED, +	PIN_RESERVED, +	PIN_RESERVED, +	PIN_RESERVED,  	PINI(KB_COL0,     SYS,     KBC,        USB,        SPI2,    EMC_DLL),  	PINI(KB_COL1,     SYS,     KBC,        RSVD2,      SPI2,    EMC_DLL),  	PINI(KB_COL2,     SYS,     KBC,        RSVD2,      SPI2,    RSVD4), @@ -278,36 +283,46 @@ const struct tegra_pingroup_desc tegra_soc_pingroups[PINGRP_COUNT] = {  	PINI(DAP2_DIN,    AUDIO,   I2S1,       HDA,        RSVD3,   RSVD4),  	PINI(DAP2_DOUT,   AUDIO,   I2S1,       HDA,        RSVD3,   RSVD4),  	PINI(DAP2_SCLK,   AUDIO,   I2S1,       HDA,        RSVD3,   RSVD4), -	PINI(SPI2_MOSI,   AUDIO,   SPI6,       CLDVFS,     RSVD3,   RSVD4), -	PINI(SPI2_MISO,   AUDIO,   SPI6,       RSVD2,      RSVD3,   RSVD4), -	PINI(SPI2_CS0_N,  AUDIO,   SPI6,       SPI1,       RSVD3,   RSVD4), -	PINI(SPI2_SCK,    AUDIO,   SPI6,       CLDVFS,     RSVD3,   RSVD4), -	PINI(SPI1_MOSI,   AUDIO,   RSVD1,      SPI1,       SPI2,    DAP2), -	PINI(SPI1_SCK,    AUDIO,   RSVD1,      SPI1,       SPI2,    RSVD4), -	PINI(SPI1_CS0_N,  AUDIO,   SPI6,       SPI1,       SPI2,    RSVD4), -	PINI(SPI1_MISO,   AUDIO,   RSVD1,      SPI1,       SPI2,    RSVD4), -	PINI(SPI2_CS1_N,  AUDIO,   RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINI(SPI2_CS2_N,  AUDIO,   RSVD1,      RSVD2,      RSVD3,   RSVD4), +	PINI(DVFS_PWM,    AUDIO,   SPI6,       CLDVFS,     RSVD3,   RSVD4), +	PINI(GPIO_X1_AUD, AUDIO,   SPI6,       RSVD2,      RSVD3,   RSVD4), +	PINI(GPIO_X3_AUD, AUDIO,   SPI6,       SPI1,       RSVD3,   RSVD4), +	PINI(DVFS_CLK,    AUDIO,   SPI6,       CLDVFS,     RSVD3,   RSVD4), +	PINI(GPIO_X4_AUD, AUDIO,   RSVD1,      SPI1,       SPI2,    DAP2), +	PINI(GPIO_X5_AUD, AUDIO,   RSVD1,      SPI1,       SPI2,    RSVD4), +	PINI(GPIO_X6_AUD, AUDIO,   SPI6,       SPI1,       SPI2,    RSVD4), +	PINI(GPIO_X7_AUD, AUDIO,   RSVD1,      SPI1,       SPI2,    RSVD4), +	PIN_RESERVED,   /* Reserved by t114: 0x3388 - 0x338c */ +	PIN_RESERVED,  	PINI(SDMMC3_CLK,  SDMMC3,  SDMMC3,     RSVD2,      RSVD3,   SPI3),  	PINI(SDMMC3_CMD,  SDMMC3,  SDMMC3,     PWM3,       UARTA,   SPI3),  	PINI(SDMMC3_DAT0, SDMMC3,  SDMMC3,     RSVD2,      RSVD3,   SPI3),  	PINI(SDMMC3_DAT1, SDMMC3,  SDMMC3,     PWM2,       UARTA,   SPI3),  	PINI(SDMMC3_DAT2, SDMMC3,  SDMMC3,     PWM1,       DISPA,   SPI3),  	PINI(SDMMC3_DAT3, SDMMC3,  SDMMC3,     PWM0,       DISPB,   SPI3), -	PINI(SDMMC3_DAT4, SDMMC3,  RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINI(SDMMC3_DAT5, SDMMC3,  RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINI(SDMMC3_DAT6, SDMMC3,  RSVD1,      RSVD2,      RSVD3,   RSVD4), -	PINI(SDMMC3_DAT7, SDMMC3,  RSVD1,      RSVD2,      RSVD3,   RSVD4), +	PIN_RESERVED,   /* Reserved by t114: 0x33a8 - 0x33dc */ +	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,  	PINI(HDMI_CEC,    SYS,     CEC,        SDMMC3,     RSVD3,   SOC),  	PINI(SDMMC1_WP_N, SDMMC1,  SDMMC1,     CLK12,      SPI4,    UARTA), -	PINI(SDMMC3_CD_N, SDMMC3,  SDMMC3,     OWR,        RSVD3,   RSVD4), -	PINI(SPI1_CS1_N,  AUDIO,   SPI6,       RSVD2,      SPI2,    I2C1), -	PINI(SPI1_CS2_N,  AUDIO,   SPI6,       SPI1,       SPI2,    I2C1), -	PINI(USB_VBUS_EN0, SYS,    USB,        RSVD2,      RSVD3,   RSVD4), -	PINI(USB_VBUS_EN1, SYS,    USB,        RSVD2,      RSVD3,   RSVD4), +	PINI(SDMMC3_CD_N, SYS,  SDMMC3,     OWR,        RSVD3,   RSVD4), +	PINI(GPIO_W2_AUD, AUDIO,   SPI6,       RSVD2,      SPI2,    I2C1), +	PINI(GPIO_W3_AUD, AUDIO,   SPI6,       SPI1,       SPI2,    I2C1), +	PINI(USB_VBUS_EN0, LCD,    USB,        RSVD2,      RSVD3,   RSVD4), +	PINI(USB_VBUS_EN1, LCD,    USB,        RSVD2,      RSVD3,   RSVD4),  	PINI(SDMMC3_CLK_LB_IN,  SDMMC3, SDMMC3, RSVD2,     RSVD3,   RSVD4), -	PINO(SDMMC3_CLK_LB_OUT, SDMMC3, SDMMC3, RSVD2,     RSVD3,   RSVD4), -	PINO(NAND_GMI_CLK_LB,   GMI,    SDMMC2, NAND,      GMI,     RSVD4), +	PINI(SDMMC3_CLK_LB_OUT, SDMMC3, SDMMC3, RSVD2,     RSVD3,   RSVD4), +	PIN_RESERVED,	/* Reserved by t114: 0x3404 */  	PINO(RESET_OUT_N, SYS,     RSVD1,      RSVD2,      RSVD3, RESET_OUT_N),  }; @@ -484,6 +499,30 @@ static int pinmux_set_ioreset(enum pmux_pingrp pin,  	return 0;  } +static int pinmux_set_rcv_sel(enum pmux_pingrp pin, +				enum pmux_pin_rcv_sel rcv_sel) +{ +	struct pmux_tri_ctlr *pmt = +			(struct pmux_tri_ctlr *)NV_PA_APB_MISC_BASE; +	u32 *pin_rcv_sel = &pmt->pmt_ctl[pin]; +	u32 reg; + +	/* Error check on pin and rcv_sel */ +	assert(pmux_pingrp_isvalid(pin)); +	assert(pmux_pin_rcv_sel_isvalid(rcv_sel)); + +	if (rcv_sel == PMUX_PIN_RCV_SEL_DEFAULT) +		return 0; + +	reg = readl(pin_rcv_sel); +	reg &= ~(0x1 << PMUX_RCV_SEL_SHIFT); +	if (rcv_sel == PMUX_PIN_RCV_SEL_HIGH) +		reg |= (0x1 << PMUX_RCV_SEL_SHIFT); +	writel(reg, pin_rcv_sel); + +	return 0; +} +  void pinmux_config_pingroup(struct pingroup_config *config)  {  	enum pmux_pingrp pin = config->pingroup; @@ -495,6 +534,7 @@ void pinmux_config_pingroup(struct pingroup_config *config)  	pinmux_set_lock(pin, config->lock);  	pinmux_set_od(pin, config->od);  	pinmux_set_ioreset(pin, config->ioreset); +	pinmux_set_rcv_sel(pin, config->rcv_sel);  }  void pinmux_config_table(struct pingroup_config *config, int len) diff --git a/arch/arm/include/asm/arch-tegra114/pinmux.h b/arch/arm/include/asm/arch-tegra114/pinmux.h index fd2293039..53905cb8e 100644 --- a/arch/arm/include/asm/arch-tegra114/pinmux.h +++ b/arch/arm/include/asm/arch-tegra114/pinmux.h @@ -50,72 +50,12 @@ enum pmux_pingrp {  	PINGRP_SDMMC1_DAT2,  	PINGRP_SDMMC1_DAT1,  	PINGRP_SDMMC1_DAT0, -	PINGRP_GPIO_PV2, -	PINGRP_GPIO_PV3, -	PINGRP_CLK2_OUT, +	PINGRP_CLK2_OUT = PINGRP_SDMMC1_DAT0 + 3,  	PINGRP_CLK2_REQ, -	PINGRP_LCD_PWR1, -	PINGRP_LCD_PWR2, -	PINGRP_LCD_SDIN, -	PINGRP_LCD_SDOUT, -	PINGRP_LCD_WR_N, -	PINGRP_LCD_CS0_N, -	PINGRP_LCD_DC0, -	PINGRP_LCD_SCK, -	PINGRP_LCD_PWR0, -	PINGRP_LCD_PCLK, -	PINGRP_LCD_DE, -	PINGRP_LCD_HSYNC, -	PINGRP_LCD_VSYNC, -	PINGRP_LCD_D0, -	PINGRP_LCD_D1, -	PINGRP_LCD_D2, -	PINGRP_LCD_D3, -	PINGRP_LCD_D4, -	PINGRP_LCD_D5, -	PINGRP_LCD_D6, -	PINGRP_LCD_D7, -	PINGRP_LCD_D8, -	PINGRP_LCD_D9, -	PINGRP_LCD_D10, -	PINGRP_LCD_D11, -	PINGRP_LCD_D12, -	PINGRP_LCD_D13, -	PINGRP_LCD_D14, -	PINGRP_LCD_D15, -	PINGRP_LCD_D16, -	PINGRP_LCD_D17, -	PINGRP_LCD_D18, -	PINGRP_LCD_D19, -	PINGRP_LCD_D20, -	PINGRP_LCD_D21, -	PINGRP_LCD_D22, -	PINGRP_LCD_D23, -	PINGRP_LCD_CS1_N, -	PINGRP_LCD_M1, -	PINGRP_LCD_DC1, -	PINGRP_HDMI_INT, +	PINGRP_HDMI_INT = PINGRP_CLK2_REQ + 41,  	PINGRP_DDC_SCL,  	PINGRP_DDC_SDA, -	PINGRP_CRT_HSYNC, -	PINGRP_CRT_VSYNC, -	PINGRP_VI_D0, -	PINGRP_VI_D1, -	PINGRP_VI_D2, -	PINGRP_VI_D3, -	PINGRP_VI_D4, -	PINGRP_VI_D5, -	PINGRP_VI_D6, -	PINGRP_VI_D7, -	PINGRP_VI_D8, -	PINGRP_VI_D9, -	PINGRP_VI_D10, -	PINGRP_VI_D11, -	PINGRP_VI_PCLK, -	PINGRP_VI_MCLK, -	PINGRP_VI_VSYNC, -	PINGRP_VI_HSYNC, -	PINGRP_UART2_RXD, +	PINGRP_UART2_RXD = PINGRP_DDC_SDA + 19,  	PINGRP_UART2_TXD,  	PINGRP_UART2_RTS_N,  	PINGRP_UART2_CTS_N, @@ -186,8 +126,7 @@ enum pmux_pingrp {  	PINGRP_SDMMC4_DAT5,  	PINGRP_SDMMC4_DAT6,  	PINGRP_SDMMC4_DAT7, -	PINGRP_SDMMC4_RST_N, -	PINGRP_CAM_MCLK, +	PINGRP_CAM_MCLK = PINGRP_SDMMC4_DAT7 + 2,  	PINGRP_GPIO_PCC1,  	PINGRP_GPIO_PBB0,  	PINGRP_CAM_I2C_SCL, @@ -212,12 +151,7 @@ enum pmux_pingrp {  	PINGRP_KB_ROW8,  	PINGRP_KB_ROW9,  	PINGRP_KB_ROW10, -	PINGRP_KB_ROW11, -	PINGRP_KB_ROW12, -	PINGRP_KB_ROW13, -	PINGRP_KB_ROW14, -	PINGRP_KB_ROW15, -	PINGRP_KB_COL0, +	PINGRP_KB_COL0 = PINGRP_KB_ROW10 + 6,  	PINGRP_KB_COL1,  	PINGRP_KB_COL2,  	PINGRP_KB_COL3, @@ -244,47 +178,30 @@ enum pmux_pingrp {  	PINGRP_DAP2_DIN,  	PINGRP_DAP2_DOUT,  	PINGRP_DAP2_SCLK, -	PINGRP_SPI2_MOSI, -	PINGRP_SPI2_MISO, -	PINGRP_SPI2_CS0_N, -	PINGRP_SPI2_SCK, -	PINGRP_SPI1_MOSI, -	PINGRP_SPI1_SCK, -	PINGRP_SPI1_CS0_N, -	PINGRP_SPI1_MISO, -	PINGRP_SPI2_CS1_N, -	PINGRP_SPI2_CS2_N, -	PINGRP_SDMMC3_CLK, +	PINGRP_DVFS_PWM, +	PINGRP_GPIO_X1_AUD, +	PINGRP_GPIO_X3_AUD, +	PINGRP_DVFS_CLK, +	PINGRP_GPIO_X4_AUD, +	PINGRP_GPIO_X5_AUD, +	PINGRP_GPIO_X6_AUD, +	PINGRP_GPIO_X7_AUD, +	PINGRP_SDMMC3_CLK = PINGRP_GPIO_X7_AUD + 3,  	PINGRP_SDMMC3_CMD,  	PINGRP_SDMMC3_DAT0,  	PINGRP_SDMMC3_DAT1,  	PINGRP_SDMMC3_DAT2,  	PINGRP_SDMMC3_DAT3, -	PINGRP_SDMMC3_DAT4, -	PINGRP_SDMMC3_DAT5, -	PINGRP_SDMMC3_DAT6, -	PINGRP_SDMMC3_DAT7, -	PINGRP_PEX_L0_PRSNT_N, -	PINGRP_PEX_L0_RST_N, -	PINGRP_PEX_L0_CLKREQ_N, -	PINGRP_PEX_WAKE_N, -	PINGRP_PEX_L1_PRSNT_N, -	PINGRP_PEX_L1_RST_N, -	PINGRP_PEX_L1_CLKREQ_N, -	PINGRP_PEX_L2_PRSNT_N, -	PINGRP_PEX_L2_RST_N, -	PINGRP_PEX_L2_CLKREQ_N, -	PINGRP_HDMI_CEC,	/* offset 0x33e0 */ +	PINGRP_HDMI_CEC = PINGRP_SDMMC3_DAT3 + 15, /* offset 0x33e0 */  	PINGRP_SDMMC1_WP_N,  	PINGRP_SDMMC3_CD_N, -	PINGRP_SPI1_CS1_N, -	PINGRP_SPI1_CS2_N, -	PINGRP_USB_VBUS_EN0,    /* offset 0x33f4 */ +	PINGRP_GPIO_W2_AUD, +	PINGRP_GPIO_W3_AUD, +	PINGRP_USB_VBUS_EN0,	/* offset 0x33f4 */  	PINGRP_USB_VBUS_EN1,  	PINGRP_SDMMC3_CLK_LB_IN,  	PINGRP_SDMMC3_CLK_LB_OUT, -	PINGRP_NAND_GMI_CLK_LB, -	PINGRP_RESET_OUT_N, +	PINGRP_RESET_OUT_N = PINGRP_SDMMC3_CLK_LB_OUT + 2,  	PINGRP_COUNT,  }; @@ -304,23 +221,16 @@ enum pdrive_pingrp {  	PDRIVE_PINGROUP_DAP3,  	PDRIVE_PINGROUP_DAP4,  	PDRIVE_PINGROUP_DBG, -	PDRIVE_PINGROUP_LCD1, -	PDRIVE_PINGROUP_LCD2, -	PDRIVE_PINGROUP_SDIO2,  	PDRIVE_PINGROUP_SDIO3,  	PDRIVE_PINGROUP_SPI,  	PDRIVE_PINGROUP_UAA,  	PDRIVE_PINGROUP_UAB,  	PDRIVE_PINGROUP_UART2,  	PDRIVE_PINGROUP_UART3, -	PDRIVE_PINGROUP_VI1 = 24,       /* offset 0x8c8 */  	PDRIVE_PINGROUP_SDIO1 = 33,     /* offset 0x8ec */  	PDRIVE_PINGROUP_CRT = 36,       /* offset 0x8f8 */  	PDRIVE_PINGROUP_DDC,  	PDRIVE_PINGROUP_GMA, -	PDRIVE_PINGROUP_GMB, -	PDRIVE_PINGROUP_GMC, -	PDRIVE_PINGROUP_GMD,  	PDRIVE_PINGROUP_GME,  	PDRIVE_PINGROUP_GMF,  	PDRIVE_PINGROUP_GMG, @@ -401,6 +311,7 @@ enum pmux_func {  	PMUX_FUNC_VI,  	PMUX_FUNC_VI_SENSOR_CLK,  	PMUX_FUNC_XIO, +	/* End of Tegra2 MUX selectors */  	PMUX_FUNC_BLINK,  	PMUX_FUNC_CEC,  	PMUX_FUNC_CLK12, @@ -444,7 +355,7 @@ enum pmux_func {  	PMUX_FUNC_VGP4,  	PMUX_FUNC_VGP5,  	PMUX_FUNC_VGP6, - +	/* End of Tegra3 MUX selectors */  	PMUX_FUNC_USB,  	PMUX_FUNC_SOC,  	PMUX_FUNC_CPU, @@ -453,10 +364,12 @@ enum pmux_func {  	PMUX_FUNC_PMI,  	PMUX_FUNC_CLDVFS,  	PMUX_FUNC_RESET_OUT_N, +	/* End of Tegra114 MUX selectors */  	PMUX_FUNC_SAFE,  	PMUX_FUNC_MAX, +	PMUX_FUNC_INVALID = 0x4000,  	PMUX_FUNC_RSVD1 = 0x8000,  	PMUX_FUNC_RSVD2 = 0x8001,  	PMUX_FUNC_RSVD3 = 0x8002, @@ -492,6 +405,7 @@ enum pmux_tristate {  enum pmux_pin_io {  	PMUX_PIN_OUTPUT = 0,  	PMUX_PIN_INPUT = 1, +	PMUX_PIN_NONE,  };  /* return 1 if a pin_io_is in range */  #define pmux_pin_io_isvalid(io) (((io) >= PMUX_PIN_OUTPUT) && \ @@ -525,6 +439,16 @@ enum pmux_pin_ioreset {  				(((ioreset) >= PMUX_PIN_IO_RESET_DEFAULT) && \  				((ioreset) <= PMUX_PIN_IO_RESET_ENABLE)) +enum pmux_pin_rcv_sel { +	PMUX_PIN_RCV_SEL_DEFAULT = 0, +	PMUX_PIN_RCV_SEL_NORMAL, +	PMUX_PIN_RCV_SEL_HIGH, +}; +/* return 1 if a pin_rcv_sel_is in range */ +#define pmux_pin_rcv_sel_isvalid(rcv_sel) \ +				(((rcv_sel) >= PMUX_PIN_RCV_SEL_DEFAULT) && \ +				((rcv_sel) <= PMUX_PIN_RCV_SEL_HIGH)) +  /* Available power domains used by pin groups */  enum pmux_vddio {  	PMUX_VDDIO_BB = 0, @@ -581,6 +505,8 @@ struct pingroup_config {  	enum pmux_pin_lock lock;	/* lock enable/disable PMUX_PIN...  */  	enum pmux_pin_od od;		/* open-drain or push-pull driver  */  	enum pmux_pin_ioreset ioreset;	/* input/output reset PMUX_PIN...  */ +	enum pmux_pin_rcv_sel rcv_sel;	/* select between High and Normal  */ +					/* VIL/VIH receivers */  };  /* Set a pin group to tristate */ |