[U-Boot] [PATCH 1/2] tegra: add alternate UART1 funcmux entry

Lucas Stach dev at lynxeye.de
Tue May 15 17:07:12 CEST 2012


Hello Stephen,

this patch looks reasonable. I also need to change the pingroup config
for UARTA on the Colibri T20 board and came up with a similar approach,
but I will rebase my work on top of this.

As I'm not in the position to give anything more official, I just wanted
to give this patch a public +1 to show that I'm in favour of this
change.

-- Lucas
Am Montag, den 14.05.2012, 17:13 -0600 schrieb Stephen Warren:
> From: Stephen Warren <swarren at nvidia.com>
> 
> (In at least some configurations) Whistler uses UART1 on pingroups
> UAA, UAB.
> 
> Signed-off-by: Stephen Warren <swarren at nvidia.com>
> ---
>  arch/arm/cpu/armv7/tegra2/board.c          |   14 +++++++++++++-
>  arch/arm/cpu/armv7/tegra2/funcmux.c        |   13 ++++++++++++-
>  arch/arm/include/asm/arch-tegra2/funcmux.h |    1 +
>  3 files changed, 26 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm/cpu/armv7/tegra2/board.c b/arch/arm/cpu/armv7/tegra2/board.c
> index a50b1b9..629ad5d 100644
> --- a/arch/arm/cpu/armv7/tegra2/board.c
> +++ b/arch/arm/cpu/armv7/tegra2/board.c
> @@ -101,6 +101,18 @@ int arch_cpu_init(void)
>  }
>  #endif
>  
> +static int uart_configs[] = {
> +#ifdef CONFIG_TEGRA2_UARTA_UAA_UAB
> +	FUNCMUX_UART1_UAA_UAB,
> +#else
> +	FUNCMUX_UART1_IRRX_IRTX,
> +#endif
> +	FUNCMUX_UART2_IRDA,
> +	-1,
> +	FUNCMUX_UART4_GMC,
> +	-1,
> +};
> +
>  /**
>   * Set up the specified uarts
>   *
> @@ -120,7 +132,7 @@ static void setup_uarts(int uart_ids)
>  		if (uart_ids & (1 << i)) {
>  			enum periph_id id = id_for_uart[i];
>  
> -			funcmux_select(id, FUNCMUX_DEFAULT);
> +			funcmux_select(id, uart_configs[i]);
>  			clock_ll_start_uart(id);
>  		}
>  	}
> diff --git a/arch/arm/cpu/armv7/tegra2/funcmux.c b/arch/arm/cpu/armv7/tegra2/funcmux.c
> index 0ef7753..e2d1273 100644
> --- a/arch/arm/cpu/armv7/tegra2/funcmux.c
> +++ b/arch/arm/cpu/armv7/tegra2/funcmux.c
> @@ -31,11 +31,22 @@ int funcmux_select(enum periph_id id, int config)
>  
>  	switch (id) {
>  	case PERIPH_ID_UART1:
> -		if (config == FUNCMUX_UART1_IRRX_IRTX) {
> +		switch (config) {
> +		case FUNCMUX_UART1_IRRX_IRTX:
>  			pinmux_set_func(PINGRP_IRRX, PMUX_FUNC_UARTA);
>  			pinmux_set_func(PINGRP_IRTX, PMUX_FUNC_UARTA);
>  			pinmux_tristate_disable(PINGRP_IRRX);
>  			pinmux_tristate_disable(PINGRP_IRTX);
> +			break;
> +		case FUNCMUX_UART1_UAA_UAB:
> +			pinmux_set_func(PINGRP_UAA, PMUX_FUNC_UARTA);
> +			pinmux_set_func(PINGRP_UAB, PMUX_FUNC_UARTA);
> +			pinmux_tristate_disable(PINGRP_UAA);
> +			pinmux_tristate_disable(PINGRP_UAB);
> +			bad_config = 0;
> +			break;
> +		}
> +		if (!bad_config) {
>  			/*
>  			 * Tegra appears to boot with function UARTA pre-
>  			 * selected on mux group SDB. If two mux groups are
> diff --git a/arch/arm/include/asm/arch-tegra2/funcmux.h b/arch/arm/include/asm/arch-tegra2/funcmux.h
> index ae73c72..b455122 100644
> --- a/arch/arm/include/asm/arch-tegra2/funcmux.h
> +++ b/arch/arm/include/asm/arch-tegra2/funcmux.h
> @@ -30,6 +30,7 @@ enum {
>  
>  	/* UART configs */
>  	FUNCMUX_UART1_IRRX_IRTX = 0,
> +	FUNCMUX_UART1_UAA_UAB,
>  	FUNCMUX_UART2_IRDA = 0,
>  	FUNCMUX_UART4_GMC = 0,
>  




More information about the U-Boot mailing list