tegra: Add I2C support to funcmux
Add support to funcmux for selecting I2C functions and programming the pinmux appropriately. Signed-off-by: Simon Glass <sjg@chromium.org> Signed-off-by: Tom Warren <twarren@nvidia.com>
This commit is contained in:
parent
2faf1863de
commit
8a1133c607
|
@ -66,6 +66,46 @@ int funcmux_select(enum periph_id id, int config)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PERIPH_ID_DVC_I2C:
|
||||||
|
/* there is only one selection, pinmux_config is ignored */
|
||||||
|
if (config == FUNCMUX_DVC_I2CP) {
|
||||||
|
pinmux_set_func(PINGRP_I2CP, PMUX_FUNC_I2C);
|
||||||
|
pinmux_tristate_disable(PINGRP_I2CP);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PERIPH_ID_I2C1:
|
||||||
|
/* support pinmux_config of 0 for now, */
|
||||||
|
if (config == FUNCMUX_I2C1_RM) {
|
||||||
|
pinmux_set_func(PINGRP_RM, PMUX_FUNC_I2C);
|
||||||
|
pinmux_tristate_disable(PINGRP_RM);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PERIPH_ID_I2C2: /* I2C2 */
|
||||||
|
switch (config) {
|
||||||
|
case FUNCMUX_I2C2_DDC: /* DDC pin group, select I2C2 */
|
||||||
|
pinmux_set_func(PINGRP_DDC, PMUX_FUNC_I2C2);
|
||||||
|
/* PTA to HDMI */
|
||||||
|
pinmux_set_func(PINGRP_PTA, PMUX_FUNC_HDMI);
|
||||||
|
pinmux_tristate_disable(PINGRP_DDC);
|
||||||
|
break;
|
||||||
|
case FUNCMUX_I2C2_PTA: /* PTA pin group, select I2C2 */
|
||||||
|
pinmux_set_func(PINGRP_PTA, PMUX_FUNC_I2C2);
|
||||||
|
/* set DDC_SEL to RSVDx (RSVD2 works for now) */
|
||||||
|
pinmux_set_func(PINGRP_DDC, PMUX_FUNC_RSVD2);
|
||||||
|
pinmux_tristate_disable(PINGRP_PTA);
|
||||||
|
bad_config = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PERIPH_ID_I2C3: /* I2C3 */
|
||||||
|
/* support pinmux_config of 0 for now */
|
||||||
|
if (config == FUNCMUX_I2C3_DTF) {
|
||||||
|
pinmux_set_func(PINGRP_DTF, PMUX_FUNC_I2C3);
|
||||||
|
pinmux_tristate_disable(PINGRP_DTF);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
debug("%s: invalid periph_id %d", __func__, id);
|
debug("%s: invalid periph_id %d", __func__, id);
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
@ -32,6 +32,13 @@ enum {
|
||||||
FUNCMUX_UART1_IRRX_IRTX = 0,
|
FUNCMUX_UART1_IRRX_IRTX = 0,
|
||||||
FUNCMUX_UART2_IRDA = 0,
|
FUNCMUX_UART2_IRDA = 0,
|
||||||
FUNCMUX_UART4_GMC = 0,
|
FUNCMUX_UART4_GMC = 0,
|
||||||
|
|
||||||
|
/* I2C configs */
|
||||||
|
FUNCMUX_DVC_I2CP = 0,
|
||||||
|
FUNCMUX_I2C1_RM = 0,
|
||||||
|
FUNCMUX_I2C2_DDC = 0,
|
||||||
|
FUNCMUX_I2C2_PTA,
|
||||||
|
FUNCMUX_I2C3_DTF = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue