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:
parent
aa53c7f55f
commit
b9607e7061
|
@ -101,6 +101,18 @@ int arch_cpu_init(void)
|
||||||
}
|
}
|
||||||
#endif
|
#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
|
* Set up the specified uarts
|
||||||
*
|
*
|
||||||
|
@ -120,7 +132,7 @@ static void setup_uarts(int uart_ids)
|
||||||
if (uart_ids & (1 << i)) {
|
if (uart_ids & (1 << i)) {
|
||||||
enum periph_id id = id_for_uart[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);
|
clock_ll_start_uart(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,11 +31,22 @@ int funcmux_select(enum periph_id id, int config)
|
||||||
|
|
||||||
switch (id) {
|
switch (id) {
|
||||||
case PERIPH_ID_UART1:
|
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_IRRX, PMUX_FUNC_UARTA);
|
||||||
pinmux_set_func(PINGRP_IRTX, PMUX_FUNC_UARTA);
|
pinmux_set_func(PINGRP_IRTX, PMUX_FUNC_UARTA);
|
||||||
pinmux_tristate_disable(PINGRP_IRRX);
|
pinmux_tristate_disable(PINGRP_IRRX);
|
||||||
pinmux_tristate_disable(PINGRP_IRTX);
|
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-
|
* Tegra appears to boot with function UARTA pre-
|
||||||
* selected on mux group SDB. If two mux groups are
|
* selected on mux group SDB. If two mux groups are
|
||||||
|
|
|
@ -30,6 +30,7 @@ enum {
|
||||||
|
|
||||||
/* UART configs */
|
/* UART configs */
|
||||||
FUNCMUX_UART1_IRRX_IRTX = 0,
|
FUNCMUX_UART1_IRRX_IRTX = 0,
|
||||||
|
FUNCMUX_UART1_UAA_UAB,
|
||||||
FUNCMUX_UART2_IRDA = 0,
|
FUNCMUX_UART2_IRDA = 0,
|
||||||
FUNCMUX_UART4_GMC = 0,
|
FUNCMUX_UART4_GMC = 0,
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue