From 605ed2a3f35e5cf8136442e9d90b6e15e75cb91a Mon Sep 17 00:00:00 2001 From: Anthony Felice Date: Thu, 29 May 2014 15:26:59 -0400 Subject: ARM: gic: Remove __cpuinit attribute from gic_enable_ppi() The gic_enable_ppi() function is used with the global timer when resuming from STOP mode on the Vybrid Tower. With the __cpuinit attribute set, the gic_enable_ppi() function would have already been freed once the kernel finishes loading, causing a kernel oops when attempting to resume from STOP mode. Signed-off-by: Anthony Felice --- arch/arm/common/gic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm/common/gic.c b/arch/arm/common/gic.c index ab8c07d48a26..a03e56eeecb7 100644 --- a/arch/arm/common/gic.c +++ b/arch/arm/common/gic.c @@ -376,7 +376,7 @@ void __cpuinit gic_secondary_init(unsigned int gic_nr) gic_cpu_init(&gic_data[gic_nr]); } -void __cpuinit gic_enable_ppi(unsigned int irq) +void gic_enable_ppi(unsigned int irq) { unsigned long flags; -- cgit v1.2.3 From 5c893c6f86a8a668609f311a60238c30a2d2edd5 Mon Sep 17 00:00:00 2001 From: Anthony Felice Date: Thu, 29 May 2014 16:12:44 -0400 Subject: iomux-mvf: Add UART0-5 pinmux definitions. Signed-off-by: Anthony Felice --- arch/arm/plat-mxc/include/mach/iomux-mvf.h | 85 +++++++++++++++++++++++++----- 1 file changed, 72 insertions(+), 13 deletions(-) diff --git a/arch/arm/plat-mxc/include/mach/iomux-mvf.h b/arch/arm/plat-mxc/include/mach/iomux-mvf.h index 449a43914507..71adc9ba1a94 100644 --- a/arch/arm/plat-mxc/include/mach/iomux-mvf.h +++ b/arch/arm/plat-mxc/include/mach/iomux-mvf.h @@ -305,7 +305,15 @@ typedef enum iomux_config { #define MVF600_PAD133_PTE28_DCU0_B7 \ IOMUX_PAD(0x0214, 0x0214, 1, 0x0000, 0, MVF600_DCU_PAD_CTRL) -/*UART1*/ +/* UART0: PTB10, PTB11 – ALT1 */ +#define MVF600_PAD32_PTB10_UART0_TX \ + IOMUX_PAD(0x0080, 0x0080, 1, 0x0000, 0, \ + MVF600_UART_PAD_CTRL | PAD_CTL_OBE_ENABLE) +#define MVF600_PAD33_PTB11_UART0_RX \ + IOMUX_PAD(0x0084, 0x0084, 1, 0x0000, 0, \ + MVF600_UART_PAD_CTRL | PAD_CTL_IBE_ENABLE) + +/* UART1: PTB4, PTB5 – ALT2 */ #define MVF600_PAD26_PTB4_UART1_TX \ IOMUX_PAD(0x0068, 0x0068, 2, 0x0380, 0, \ MVF600_UART_PAD_CTRL | PAD_CTL_OBE_ENABLE) @@ -313,25 +321,76 @@ typedef enum iomux_config { IOMUX_PAD(0x006C, 0x006C, 2, 0x037C, 0, \ MVF600_UART_PAD_CTRL | PAD_CTL_IBE_ENABLE) -#define MVF600_PAD32_PTB10_UART0_TX \ - IOMUX_PAD(0x0080, 0x0080, 1, 0x0000, 0, \ +/* UART1: PTC2, PTC3 – ALT2 */ +#define MVF600_PAD47_PTC2_UART1_TX \ + IOMUX_PAD(0x00bc, 0x00bc, 2, 0x0380, 1, \ MVF600_UART_PAD_CTRL | PAD_CTL_OBE_ENABLE) -#define MVF600_PAD33_PTB11_UART0_RX \ - IOMUX_PAD(0x0084, 0x0084, 1, 0x0000, 0, \ +#define MVF600_PAD48_PTC3_UART1_RX \ + IOMUX_PAD(0x00c0, 0x00co, 2, 0x037C, 1, \ + MVF600_UART_PAD_CTRL | PAD_CTL_IBE_ENABLE) + +/* UART1: PTB23, PTB24 – ALT2 */ +#define MVF600_PAD93_PTB23_UART1_TX \ + IOMUX_PAD(0x0174, 0x0174, 2, 0x0380, 2, \ + MVF600_UART_PAD_CTRL | PAD_CTL_OBE_ENABLE) +#define MVF600_PAD94_PTB24_UART1_RX \ + IOMUX_PAD(0x0178, 0x0178, 2, 0x037C, 2, \ + MVF600_UART_PAD_CTRL | PAD_CTL_IBE_ENABLE) + +/* UART2: PTB6, PTB7 – ALT7 */ +#define MVF600_PAD28_PTB6_UART2_TX \ + IOMUX_PAD( 0x0070, 0x0070, 7, 0x038C, 0, \ + MVF600_UART_PAD_CTRL | PAD_CTL_OBE_ENABLE) +#define MVF600_PAD29_PTB7_UART2_RX \ + IOMUX_PAD( 0x0074, 0x0074, 7, 0x0388, 0, \ + MVF600_UART_PAD_CTRL | PAD_CTL_IBE_ENABLE) + +/* UART2: PTD23, PTD22 – ALT6 */ +#define MVF600_PAD71_PTD23_UART2_TX \ + IOMUX_PAD(0x011C, 0x011C, 6, 0x038C, 1, \ + MVF600_UART_PAD_CTRL | PAD_CTL_OBE_ENABLE) +#define MVF600_PAD72_PTD22_UART2_RX \ + IOMUX_PAD(0x0120, 0x0120, 6, 0x0388, 1, \ + MVF600_UART_PAD_CTRL | PAD_CTL_IBE_ENABLE) + +/* UART2: PTD0, PTD1 – ALT2 */ +#define MVF600_PAD79_PTD0_UART2_TX \ + IOMUX_PAD(0x013C, 0x013C, 2, 0x038C, 2, \ + MVF600_UART_PAD_CTRL | PAD_CTL_OBE_ENABLE) +#define MVF600_PAD80_PTD1_UART2_RX \ + IOMUX_PAD(0x0140, 0x0140, 2, 0x0388, 2, \ + MVF600_UART_PAD_CTRL | PAD_CTL_IBE_ENABLE) + +/* UART3: PTA20, PTA21 – ALT6 */ +#define MVF600_PAD10_PTA20_UART3_TX \ + IOMUX_PAD( 0x0028, 0x0028, 6, 0x0394, 0, \ + MVF600_UART_PAD_CTRL | PAD_CTL_OBE_ENABLE) +#define MVF600_PAD11_PTA21_UART3_RX \ + IOMUX_PAD( 0x002c, 0x002c, 6, 0x0390, 0, \ + MVF600_UART_PAD_CTRL | PAD_CTL_IBE_ENABLE) + +/* UART3: PTA30, PTA31 – ALT7 */ +#define MVF600_PAD20_PTA30_UART3_TX \ + IOMUX_PAD( 0x0050, 0x0050, 7, 0x0394, 1, \ + MVF600_UART_PAD_CTRL | PAD_CTL_OBE_ENABLE) +#define MVF600_PAD21_PTA31_UART3_RX \ + IOMUX_PAD( 0x0054, 0x0054, 7, 0x0390, 1, \ MVF600_UART_PAD_CTRL | PAD_CTL_IBE_ENABLE) -#define MVF600_PAD28_PTB6_UART2_TX \ - IOMUX_PAD(0x0070, 0x0070, 7, 0x038C, 0, \ +/* UART4: PTA28, PTA29 – ALT4 */ +#define MVF600_PAD18_PTA28_UART4_TX \ + IOMUX_PAD( 0x0048, 0x0048, 4, 0x0000, 0, \ MVF600_UART_PAD_CTRL | PAD_CTL_OBE_ENABLE) -#define MVF600_PAD29_PTB7_UART2_RX \ - IOMUX_PAD(0x0074, 0x0074, 7, 0x0388, 0, \ +#define MVF600_PAD19_PTA29_UART4_RX \ + IOMUX_PAD( 0x004c, 0x004c, 4, 0x0000, 0, \ MVF600_UART_PAD_CTRL | PAD_CTL_IBE_ENABLE) -#define MVF600_PAD10_PTA20_UART3_TX \ - IOMUX_PAD(0x0028, 0x0028, 6, 0x0394, 0, \ +/* UART5: PTC14, PTC15 – ALT4 */ +#define MVF600_PAD59_PTC14_UART5_TX \ + IOMUX_PAD( 0x00ec, 0x00ec, 4, 0x0000, 0, \ MVF600_UART_PAD_CTRL | PAD_CTL_OBE_ENABLE) -#define MVF600_PAD11_PTA21_UART3_RX \ - IOMUX_PAD(0x002C, 0x002C, 6, 0x0390, 0, \ +#define MVF600_PAD60_PTC15_UART5_RX \ + IOMUX_PAD( 0x00f0, 0x00f0, 4, 0x0000, 0, \ MVF600_UART_PAD_CTRL | PAD_CTL_IBE_ENABLE) /* FlexTimer channel pin */ -- cgit v1.2.3 From f2453fae2ffaaa41233a42497732be9ef263746e Mon Sep 17 00:00:00 2001 From: Gordon Smith Date: Thu, 29 May 2014 16:50:33 -0400 Subject: serial/mvf.c: Fix DMA channel deallocation. Signed-off-by: Anthony Felice --- drivers/tty/serial/mvf.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/tty/serial/mvf.c b/drivers/tty/serial/mvf.c index 0ea0181cd455..af7c2c91489d 100644 --- a/drivers/tty/serial/mvf.c +++ b/drivers/tty/serial/mvf.c @@ -797,7 +797,7 @@ imx_set_termios(struct uart_port *port, struct ktermios *termios, brfa = ((sport->port.uartclk - (16 * sbr * baud)) * 2)/baud; bdh &= ~MXC_UARTBDH_SBR_MASK; - bdh |= (sbr >> 8) & 0x1F; + bdh |= (sbr >> 8) & MXC_UARTBDH_SBR_MASK; cr4 &= ~MXC_UARTCR4_BRFA_MASK; brfa &= MXC_UARTCR4_BRFA_MASK; @@ -1259,6 +1259,7 @@ static int serial_imx_probe(struct platform_device *pdev) if (pdata && (pdata->flags & IMXUART_EDMA)) { sport->enable_dma = 1; + sport->dma_tx_ch = -1; printk("IMX UART EDMA enabled\n"); } if (pdata && (pdata->flags & IMXUART_FIFO)) -- cgit v1.2.3 From 62d8d94a83ffbd5e1c8e99ffefc84811a3947ec9 Mon Sep 17 00:00:00 2001 From: Anthony Felice Date: Thu, 29 May 2014 17:19:44 -0400 Subject: twr_vf600: Enable EDMA in UART Configuration Issues reported in commit aed6c4fe5 have now been fixed. Signed-off-by: Anthony Felice --- arch/arm/mach-mvf/board-twr-vf700.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/arm/mach-mvf/board-twr-vf700.c b/arch/arm/mach-mvf/board-twr-vf700.c index 576233588dde..3c19b1c70ec9 100644 --- a/arch/arm/mach-mvf/board-twr-vf700.c +++ b/arch/arm/mach-mvf/board-twr-vf700.c @@ -249,13 +249,13 @@ static struct platform_device mvf_twr_audio_device = { }; static struct imxuart_platform_data mvf_uart1_pdata = { - .flags = IMXUART_FIFO, + .flags = IMXUART_FIFO | IMXUART_EDMA, .dma_req_rx = DMA_MUX03_UART1_RX, .dma_req_tx = DMA_MUX03_UART1_TX, }; static struct imxuart_platform_data mvf_uart0_pdata = { - .flags = IMXUART_FIFO, + .flags = IMXUART_FIFO | IMXUART_EDMA, .dma_req_rx = DMA_MUX03_UART0_RX, .dma_req_tx = DMA_MUX03_UART0_TX, }; -- cgit v1.2.3