diff options
Diffstat (limited to 'drivers/serial/imx.c')
| -rw-r--r-- | drivers/serial/imx.c | 11 | 
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/serial/imx.c b/drivers/serial/imx.c index e579d7a1807..eacb588a934 100644 --- a/drivers/serial/imx.c +++ b/drivers/serial/imx.c @@ -46,6 +46,7 @@  #include <linux/clk.h>  #include <linux/delay.h>  #include <linux/rational.h> +#include <linux/slab.h>  #include <asm/io.h>  #include <asm/irq.h> @@ -119,7 +120,8 @@  #define  MX2_UCR3_RXDMUXSEL	 (1<<2)  /* RXD Muxed Input Select, on mx2/mx3 */  #define  UCR3_INVT  	 (1<<1)  /* Inverted Infrared transmission */  #define  UCR3_BPEN  	 (1<<0)  /* Preset registers enable */ -#define  UCR4_CTSTL_32   (32<<10) /* CTS trigger level (32 chars) */ +#define  UCR4_CTSTL_SHF  10      /* CTS trigger level shift */ +#define  UCR4_CTSTL_MASK 0x3F    /* CTS trigger is 6 bits wide */  #define  UCR4_INVR  	 (1<<9)  /* Inverted infrared reception */  #define  UCR4_ENIRI 	 (1<<8)  /* Serial infrared interrupt enable */  #define  UCR4_WKEN  	 (1<<7)  /* Wake interrupt enable */ @@ -590,6 +592,9 @@ static int imx_setup_ufcr(struct imx_port *sport, unsigned int mode)  	return 0;  } +/* half the RX buffer size */ +#define CTSTL 16 +  static int imx_startup(struct uart_port *port)  {  	struct imx_port *sport = (struct imx_port *)port; @@ -606,6 +611,10 @@ static int imx_startup(struct uart_port *port)  	if (USE_IRDA(sport))  		temp |= UCR4_IRSC; +	/* set the trigger level for CTS */ +	temp &= ~(UCR4_CTSTL_MASK<<  UCR4_CTSTL_SHF); +	temp |= CTSTL<<  UCR4_CTSTL_SHF; +  	writel(temp & ~UCR4_DREN, sport->port.membase + UCR4);  	if (USE_IRDA(sport)) {  |