[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