diff options
author | Alexander Kurz <akurz@blala.de> | 2017-06-08 20:41:35 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2017-06-13 09:27:14 +0200 |
commit | f3d0bf23329bb0f4f20189b82e87c839056e4299 (patch) | |
tree | 767049af2e5e57712c127bb93929b01019d0a83d /arch/arm/boards/technexion-wandboard | |
parent | 46078f8d9917164a148cd2ad156e7e061505f8d4 (diff) | |
download | barebox-f3d0bf23329bb0f4f20189b82e87c839056e4299.tar.gz barebox-f3d0bf23329bb0f4f20189b82e87c839056e4299.tar.xz |
ARM: i.MX6 Wandboard Quad: fix PBL UART MUX
Three variants of the Wandboard exist: WBSOLO, WBDUAL and WBQUAD.
For all variants, the external serial port is connected to UART1 via
PAD_CSI0_DATA10 (TX) and PAD_CSI0_DATA11 (RX). Unfortunately, the IOMUX
register adresses for this mux differ between i.MX6Q (WBQUAD) and others.
Make the UART IOMUX for PBL compatible for WBQUAD.
Signed-off-by: Alexander Kurz <akurz@blala.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/boards/technexion-wandboard')
-rw-r--r-- | arch/arm/boards/technexion-wandboard/lowlevel.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/arch/arm/boards/technexion-wandboard/lowlevel.c b/arch/arm/boards/technexion-wandboard/lowlevel.c index ff5ae6d510..9aae429d45 100644 --- a/arch/arm/boards/technexion-wandboard/lowlevel.c +++ b/arch/arm/boards/technexion-wandboard/lowlevel.c @@ -285,11 +285,25 @@ static unsigned long wandboard_dram_init(void) static void setup_uart(void) { + int cpu_type = __imx6_cpu_type(); void __iomem *iomuxbase = (void *)MX6_IOMUXC_BASE_ADDR; - /* mux the uart */ - writel(0x00000003, iomuxbase + 0x4c); - writel(0x00000000, iomuxbase + 0x8fc); + /* mux UART1 TX on PAD_CSI0_DATA10 */ + switch (cpu_type) { + case IMX6_CPUTYPE_IMX6S: + case IMX6_CPUTYPE_IMX6DL: + writel(0x00000003, iomuxbase + 0x4c); + writel(0x0001b0b1, iomuxbase + 0x360); + writel(0x00000000, iomuxbase + 0x8fc); + break; + case IMX6_CPUTYPE_IMX6Q: + writel(0x00000003, iomuxbase + 0x280); + writel(0x0001b0b1, iomuxbase + 0x650); + writel(0x00000001, iomuxbase + 0x920); + break; + default: + return; + } imx6_ungate_all_peripherals(); imx6_uart_setup((void *)MX6_UART1_BASE_ADDR); |