On Fri, Jan 6, 2012 at 2:14 PM, Stephen Warren <swar...@nvidia.com> wrote: > Tegra appears to boot with function UARTA pre-selected on mux > group SDB. If two mux groups are both set to the same function, > it's unclear which group's pins drive the RX signals into the > HW module. For UARTA, SDB certainly overrides group IRTX in > practice. To solve this, configure some alternative function on > SDB to avoid the conflict. Also, tri-state the group to avoid > driving any signal onto it until we know what's connected. > > Signed-off-by: Stephen Warren <swar...@nvidia.com>
Tested on Seaboard. Acked-by: Simon Glass <s...@chromium.org> Tested-by: Simon Glass <s...@chromium.org> > --- > arch/arm/cpu/armv7/tegra2/funcmux.c | 12 ++++++++++++ > 1 files changed, 12 insertions(+), 0 deletions(-) > > diff --git a/arch/arm/cpu/armv7/tegra2/funcmux.c > b/arch/arm/cpu/armv7/tegra2/funcmux.c > index 0878f51..140f8a7 100644 > --- a/arch/arm/cpu/armv7/tegra2/funcmux.c > +++ b/arch/arm/cpu/armv7/tegra2/funcmux.c > @@ -37,6 +37,18 @@ int funcmux_select(enum periph_id id, int config) > pinmux_set_func(PINGRP_IRTX, PMUX_FUNC_UARTA); > pinmux_tristate_disable(PINGRP_IRRX); > pinmux_tristate_disable(PINGRP_IRTX); > + /* > + * Tegra appears to boot with function UARTA pre-selected on > + * mux group SDB. If two mux groups are both set to the same > + * function, it's unclear which group's pins drive the RX > + * signals into the HW module. For UARTA, SDB certainly > + * overrides group IRTX in practice. To solve this, configure > + * some alternative function on SDB to avoid the conflict. > Also, > + * tri-state the group to avoid driving any signal onto it > until > + * we know what's connected. > + */ > + pinmux_tristate_enable(PINGRP_SDB); > + pinmux_set_func(PINGRP_SDB, PMUX_FUNC_SDIO3); > break; > > case PERIPH_ID_UART2: > -- > 1.7.0.4 > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot