diff options
| -rw-r--r-- | drivers/tty/serial/imx.c | 18 |
1 files changed, 4 insertions, 14 deletions
diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c index 908178fc5a33..e309e8b0aaba 100644 --- a/drivers/tty/serial/imx.c +++ b/drivers/tty/serial/imx.c | |||
| @@ -132,6 +132,7 @@ | |||
| 132 | #define UCR4_OREN (1<<1) /* Receiver overrun interrupt enable */ | 132 | #define UCR4_OREN (1<<1) /* Receiver overrun interrupt enable */ |
| 133 | #define UCR4_DREN (1<<0) /* Recv data ready interrupt enable */ | 133 | #define UCR4_DREN (1<<0) /* Recv data ready interrupt enable */ |
| 134 | #define UFCR_RXTL_SHF 0 /* Receiver trigger level shift */ | 134 | #define UFCR_RXTL_SHF 0 /* Receiver trigger level shift */ |
| 135 | #define UFCR_DCEDTE (1<<6) /* DCE/DTE mode select */ | ||
| 135 | #define UFCR_RFDIV (7<<7) /* Reference freq divider mask */ | 136 | #define UFCR_RFDIV (7<<7) /* Reference freq divider mask */ |
| 136 | #define UFCR_RFDIV_REG(x) (((x) < 7 ? 6 - (x) : 6) << 7) | 137 | #define UFCR_RFDIV_REG(x) (((x) < 7 ? 6 - (x) : 6) << 7) |
| 137 | #define UFCR_TXTL_SHF 10 /* Transmitter trigger level shift */ | 138 | #define UFCR_TXTL_SHF 10 /* Transmitter trigger level shift */ |
| @@ -667,22 +668,11 @@ static void imx_break_ctl(struct uart_port *port, int break_state) | |||
| 667 | static int imx_setup_ufcr(struct imx_port *sport, unsigned int mode) | 668 | static int imx_setup_ufcr(struct imx_port *sport, unsigned int mode) |
| 668 | { | 669 | { |
| 669 | unsigned int val; | 670 | unsigned int val; |
| 670 | unsigned int ufcr_rfdiv; | ||
| 671 | |||
| 672 | /* set receiver / transmitter trigger level. | ||
| 673 | * RFDIV is set such way to satisfy requested uartclk value | ||
| 674 | */ | ||
| 675 | val = TXTL << 10 | RXTL; | ||
| 676 | ufcr_rfdiv = (clk_get_rate(sport->clk_per) + sport->port.uartclk / 2) | ||
| 677 | / sport->port.uartclk; | ||
| 678 | |||
| 679 | if(!ufcr_rfdiv) | ||
| 680 | ufcr_rfdiv = 1; | ||
| 681 | |||
| 682 | val |= UFCR_RFDIV_REG(ufcr_rfdiv); | ||
| 683 | 671 | ||
| 672 | /* set receiver / transmitter trigger level */ | ||
| 673 | val = readl(sport->port.membase + UFCR) & (UFCR_RFDIV | UFCR_DCEDTE); | ||
| 674 | val |= TXTL << UFCR_TXTL_SHF | RXTL; | ||
| 684 | writel(val, sport->port.membase + UFCR); | 675 | writel(val, sport->port.membase + UFCR); |
| 685 | |||
| 686 | return 0; | 676 | return 0; |
| 687 | } | 677 | } |
| 688 | 678 | ||
