summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mainboard/google/nyan/mainboard.c11
-rw-r--r--src/mainboard/google/nyan_big/mainboard.c11
-rw-r--r--src/mainboard/google/nyan_blaze/mainboard.c11
-rw-r--r--src/soc/nvidia/tegra/apbmisc.c8
-rw-r--r--src/soc/nvidia/tegra/apbmisc.h6
-rw-r--r--src/soc/nvidia/tegra/gpio.c2
-rw-r--r--src/soc/nvidia/tegra124/bootblock.c6
7 files changed, 35 insertions, 20 deletions
diff --git a/src/mainboard/google/nyan/mainboard.c b/src/mainboard/google/nyan/mainboard.c
index 2aff9d6cf0..15eff8ecd5 100644
--- a/src/mainboard/google/nyan/mainboard.c
+++ b/src/mainboard/google/nyan/mainboard.c
@@ -94,8 +94,6 @@ static void setup_pinmux(void)
// TODO(hungte) Revice pinmux setup, make nice little SoC functions for
// every single logical thing instead of dumping a wall of code below.
uint32_t pin_up = PINMUX_PULL_UP | PINMUX_INPUT_ENABLE,
- pin_up3 = (PINMUX_PULL_UP | PINMUX_INPUT_ENABLE |
- PINMUX_TRISTATE),
pin_down = PINMUX_PULL_DOWN | PINMUX_INPUT_ENABLE,
pin_none = PINMUX_PULL_NONE | PINMUX_INPUT_ENABLE;
@@ -113,7 +111,7 @@ static void setup_pinmux(void)
pinmux_set_config(PINMUX_SDMMC3_DAT3_INDEX,
PINMUX_SDMMC3_DAT3_FUNC_SDMMC3 | pin_up);
pinmux_set_config(PINMUX_SDMMC3_CLK_LB_IN_INDEX,
- PINMUX_SDMMC3_CLK_LB_IN_FUNC_SDMMC3 | pin_up3);
+ PINMUX_SDMMC3_CLK_LB_IN_FUNC_SDMMC3 | pin_up);
pinmux_set_config(PINMUX_SDMMC3_CLK_LB_OUT_INDEX,
PINMUX_SDMMC3_CLK_LB_OUT_FUNC_SDMMC3 | pin_down);
@@ -155,8 +153,7 @@ static void setup_pinmux(void)
/* I2S1 */
pinmux_set_config(PINMUX_DAP2_DIN_INDEX,
- PINMUX_DAP2_DIN_FUNC_I2S1 | PINMUX_TRISTATE |
- PINMUX_INPUT_ENABLE);
+ PINMUX_DAP2_DIN_FUNC_I2S1 | PINMUX_INPUT_ENABLE);
pinmux_set_config(PINMUX_DAP2_DOUT_INDEX,
PINMUX_DAP2_DOUT_FUNC_I2S1 | PINMUX_INPUT_ENABLE);
pinmux_set_config(PINMUX_DAP2_FS_INDEX,
@@ -167,6 +164,10 @@ static void setup_pinmux(void)
/* PWM1 */
pinmux_set_config(PINMUX_GPIO_PH1_INDEX,
PINMUX_GPIO_PH1_FUNC_PWM1 | PINMUX_PULL_NONE);
+
+ /* DP HPD */
+ pinmux_set_config(PINMUX_DP_HPD_INDEX,
+ PINMUX_DP_HPD_FUNC_DP | PINMUX_INPUT_ENABLE);
}
static void setup_kernel_info(void)
diff --git a/src/mainboard/google/nyan_big/mainboard.c b/src/mainboard/google/nyan_big/mainboard.c
index f2199d680e..0539d849bd 100644
--- a/src/mainboard/google/nyan_big/mainboard.c
+++ b/src/mainboard/google/nyan_big/mainboard.c
@@ -94,8 +94,6 @@ static void setup_pinmux(void)
// TODO(hungte) Revice pinmux setup, make nice little SoC functions for
// every single logical thing instead of dumping a wall of code below.
uint32_t pin_up = PINMUX_PULL_UP | PINMUX_INPUT_ENABLE,
- pin_up3 = (PINMUX_PULL_UP | PINMUX_INPUT_ENABLE |
- PINMUX_TRISTATE),
pin_down = PINMUX_PULL_DOWN | PINMUX_INPUT_ENABLE,
pin_none = PINMUX_PULL_NONE | PINMUX_INPUT_ENABLE;
@@ -113,7 +111,7 @@ static void setup_pinmux(void)
pinmux_set_config(PINMUX_SDMMC3_DAT3_INDEX,
PINMUX_SDMMC3_DAT3_FUNC_SDMMC3 | pin_up);
pinmux_set_config(PINMUX_SDMMC3_CLK_LB_IN_INDEX,
- PINMUX_SDMMC3_CLK_LB_IN_FUNC_SDMMC3 | pin_up3);
+ PINMUX_SDMMC3_CLK_LB_IN_FUNC_SDMMC3 | pin_up);
pinmux_set_config(PINMUX_SDMMC3_CLK_LB_OUT_INDEX,
PINMUX_SDMMC3_CLK_LB_OUT_FUNC_SDMMC3 | pin_down);
@@ -155,8 +153,7 @@ static void setup_pinmux(void)
/* I2S1 */
pinmux_set_config(PINMUX_DAP2_DIN_INDEX,
- PINMUX_DAP2_DIN_FUNC_I2S1 | PINMUX_TRISTATE |
- PINMUX_INPUT_ENABLE);
+ PINMUX_DAP2_DIN_FUNC_I2S1 | PINMUX_INPUT_ENABLE);
pinmux_set_config(PINMUX_DAP2_DOUT_INDEX,
PINMUX_DAP2_DOUT_FUNC_I2S1 | PINMUX_INPUT_ENABLE);
pinmux_set_config(PINMUX_DAP2_FS_INDEX,
@@ -167,6 +164,10 @@ static void setup_pinmux(void)
/* PWM1 */
pinmux_set_config(PINMUX_GPIO_PH1_INDEX,
PINMUX_GPIO_PH1_FUNC_PWM1 | PINMUX_PULL_NONE);
+
+ /* DP HPD */
+ pinmux_set_config(PINMUX_DP_HPD_INDEX,
+ PINMUX_DP_HPD_FUNC_DP | PINMUX_INPUT_ENABLE);
}
static void setup_kernel_info(void)
diff --git a/src/mainboard/google/nyan_blaze/mainboard.c b/src/mainboard/google/nyan_blaze/mainboard.c
index 7ca7b5377b..8717a87df5 100644
--- a/src/mainboard/google/nyan_blaze/mainboard.c
+++ b/src/mainboard/google/nyan_blaze/mainboard.c
@@ -94,8 +94,6 @@ static void setup_pinmux(void)
// TODO(hungte) Revice pinmux setup, make nice little SoC functions for
// every single logical thing instead of dumping a wall of code below.
uint32_t pin_up = PINMUX_PULL_UP | PINMUX_INPUT_ENABLE,
- pin_up3 = (PINMUX_PULL_UP | PINMUX_INPUT_ENABLE |
- PINMUX_TRISTATE),
pin_down = PINMUX_PULL_DOWN | PINMUX_INPUT_ENABLE,
pin_none = PINMUX_PULL_NONE | PINMUX_INPUT_ENABLE;
@@ -113,7 +111,7 @@ static void setup_pinmux(void)
pinmux_set_config(PINMUX_SDMMC3_DAT3_INDEX,
PINMUX_SDMMC3_DAT3_FUNC_SDMMC3 | pin_up);
pinmux_set_config(PINMUX_SDMMC3_CLK_LB_IN_INDEX,
- PINMUX_SDMMC3_CLK_LB_IN_FUNC_SDMMC3 | pin_up3);
+ PINMUX_SDMMC3_CLK_LB_IN_FUNC_SDMMC3 | pin_up);
pinmux_set_config(PINMUX_SDMMC3_CLK_LB_OUT_INDEX,
PINMUX_SDMMC3_CLK_LB_OUT_FUNC_SDMMC3 | pin_down);
@@ -155,8 +153,7 @@ static void setup_pinmux(void)
/* I2S1 */
pinmux_set_config(PINMUX_DAP2_DIN_INDEX,
- PINMUX_DAP2_DIN_FUNC_I2S1 | PINMUX_TRISTATE |
- PINMUX_INPUT_ENABLE);
+ PINMUX_DAP2_DIN_FUNC_I2S1 | PINMUX_INPUT_ENABLE);
pinmux_set_config(PINMUX_DAP2_DOUT_INDEX,
PINMUX_DAP2_DOUT_FUNC_I2S1 | PINMUX_INPUT_ENABLE);
pinmux_set_config(PINMUX_DAP2_FS_INDEX,
@@ -167,6 +164,10 @@ static void setup_pinmux(void)
/* PWM1 */
pinmux_set_config(PINMUX_GPIO_PH1_INDEX,
PINMUX_GPIO_PH1_FUNC_PWM1 | PINMUX_PULL_NONE);
+
+ /* DP HPD */
+ pinmux_set_config(PINMUX_DP_HPD_INDEX,
+ PINMUX_DP_HPD_FUNC_DP | PINMUX_INPUT_ENABLE);
}
static void setup_kernel_info(void)
diff --git a/src/soc/nvidia/tegra/apbmisc.c b/src/soc/nvidia/tegra/apbmisc.c
index fea10b5dbe..5983d546d2 100644
--- a/src/soc/nvidia/tegra/apbmisc.c
+++ b/src/soc/nvidia/tegra/apbmisc.c
@@ -22,8 +22,14 @@
#include "apbmisc.h"
+static struct apbmisc *misc = (struct apbmisc *)TEGRA_APB_MISC_BASE;
+
void enable_jtag(void)
{
- struct apbmisc *misc = (struct apbmisc *)TEGRA_APB_MISC_BASE;
write32(PP_CONFIG_CTL_JTAG, &misc->pp_config_ctl);
}
+
+void clamp_tristate_inputs(void)
+{
+ write32(PP_PINMUX_CLAMP_INPUTS, &misc->pp_pinmux_global);
+}
diff --git a/src/soc/nvidia/tegra/apbmisc.h b/src/soc/nvidia/tegra/apbmisc.h
index 805d0bf18b..2f1811a1dd 100644
--- a/src/soc/nvidia/tegra/apbmisc.h
+++ b/src/soc/nvidia/tegra/apbmisc.h
@@ -25,11 +25,17 @@
struct apbmisc {
u32 reserved0[9]; /* ABP_MISC_PP_ offsets 00-20 */
u32 pp_config_ctl; /* _CONFIG_CTL_0, offset 24 */
+ u32 reserved1[6]; /* APB_MISC_PP_ offsets 28-3C */
+ u32 pp_pinmux_global; /* _PINMUX_GLOBAL_0, offset 40 */
};
#define PP_CONFIG_CTL_TBE (1 << 7)
#define PP_CONFIG_CTL_JTAG (1 << 6)
+#define PP_PINMUX_CLAMP_INPUTS (1 << 0)
+
+
void enable_jtag(void);
+void clamp_tristate_inputs(void);
#endif /* __SOC_NVIDIA_TEGRA_APBMISC_H__ */
diff --git a/src/soc/nvidia/tegra/gpio.c b/src/soc/nvidia/tegra/gpio.c
index ac0fc3f986..b10cded12d 100644
--- a/src/soc/nvidia/tegra/gpio.c
+++ b/src/soc/nvidia/tegra/gpio.c
@@ -29,7 +29,7 @@
void __gpio_input(gpio_t gpio, u32 pull)
{
- u32 pinmux_config = PINMUX_INPUT_ENABLE | PINMUX_TRISTATE | pull;
+ u32 pinmux_config = PINMUX_INPUT_ENABLE | pull;
gpio_set_int_enable(gpio, 0);
gpio_set_out_enable(gpio, 0);
diff --git a/src/soc/nvidia/tegra124/bootblock.c b/src/soc/nvidia/tegra124/bootblock.c
index 6acd5ad4d6..2857a90ace 100644
--- a/src/soc/nvidia/tegra124/bootblock.c
+++ b/src/soc/nvidia/tegra124/bootblock.c
@@ -31,6 +31,9 @@ void main(void)
{
void *entry;
+ // enable pinmux clamp inputs
+ clamp_tristate_inputs();
+
// enable JTAG at the earliest stage
enable_jtag();
@@ -40,13 +43,11 @@ void main(void)
pinmux_set_config(PINMUX_KB_ROW9_INDEX, PINMUX_KB_ROW9_FUNC_UA3);
// Serial in, tristate_on.
pinmux_set_config(PINMUX_KB_ROW10_INDEX, PINMUX_KB_ROW10_FUNC_UA3 |
- PINMUX_TRISTATE |
PINMUX_PULL_UP |
PINMUX_INPUT_ENABLE);
// Mux some pins away from uart A.
pinmux_set_config(PINMUX_UART2_CTS_N_INDEX,
PINMUX_UART2_CTS_N_FUNC_UB3 |
- PINMUX_TRISTATE |
PINMUX_INPUT_ENABLE);
pinmux_set_config(PINMUX_UART2_RTS_N_INDEX,
PINMUX_UART2_RTS_N_FUNC_UB3);
@@ -66,7 +67,6 @@ void main(void)
PINMUX_CPU_PWR_REQ_FUNC_CPU);
pinmux_set_config(PINMUX_PWR_INT_N_INDEX,
PINMUX_PWR_INT_N_FUNC_PMICINTR |
- PINMUX_TRISTATE |
PINMUX_INPUT_ENABLE);
power_enable_cpu_rail();