提交 b9607e70 编写于 作者: S Stephen Warren 提交者: Albert ARIBAUD

tegra: add alternate UART1 funcmux entry

(In at least some configurations) Whistler uses UART1 on pingroups
UAA, UAB.
Signed-off-by: NStephen Warren <swarren@nvidia.com>
Signed-off-by: NTom Warren <twarren@nvidia.com>
上级 aa53c7f5
......@@ -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);
}
}
......
......@@ -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
......
......@@ -30,6 +30,7 @@ enum {
/* UART configs */
FUNCMUX_UART1_IRRX_IRTX = 0,
FUNCMUX_UART1_UAA_UAB,
FUNCMUX_UART2_IRDA = 0,
FUNCMUX_UART4_GMC = 0,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册