[U-Boot] [PATCH 1/3] tegra2: Fix conflicting pinmux for UARTA
Simon Glass
sjg at chromium.org
Mon Jan 9 20:35:09 CET 2012
On Fri, Jan 6, 2012 at 2:14 PM, Stephen Warren <swarren at 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 <swarren at nvidia.com>
Tested on Seaboard.
Acked-by: Simon Glass <sjg at chromium.org>
Tested-by: Simon Glass <sjg at 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
>
More information about the U-Boot
mailing list