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 <swar...@nvidia.com> > > (In at least some configurations) Whistler uses UART1 on pingroups > UAA, UAB. > > Signed-off-by: Stephen Warren <swar...@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, > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot