tegra: add alternate UART1 funcmux entry

(In at least some configurations) Whistler uses UART1 on pingroups
UAA, UAB.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Tom Warren <twarren@nvidia.com>
This commit is contained in:
Stephen Warren 2012-05-14 13:13:45 +00:00 committed by Albert ARIBAUD
parent aa53c7f55f
commit b9607e7061
3 changed files with 26 additions and 2 deletions

View File

@ -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);
}
}

View File

@ -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

View File

@ -30,6 +30,7 @@ enum {
/* UART configs */
FUNCMUX_UART1_IRRX_IRTX = 0,
FUNCMUX_UART1_UAA_UAB,
FUNCMUX_UART2_IRDA = 0,
FUNCMUX_UART4_GMC = 0,