diff options
Diffstat (limited to 'drivers/tty/serial/omap-serial.c')
-rw-r--r-- | drivers/tty/serial/omap-serial.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c index d60e001cf60f..e1eaa66c047b 100644 --- a/drivers/tty/serial/omap-serial.c +++ b/drivers/tty/serial/omap-serial.c | |||
@@ -47,7 +47,7 @@ static struct uart_omap_port *ui[OMAP_MAX_HSUART_PORTS]; | |||
47 | 47 | ||
48 | /* Forward declaration of functions */ | 48 | /* Forward declaration of functions */ |
49 | static void uart_tx_dma_callback(int lch, u16 ch_status, void *data); | 49 | static void uart_tx_dma_callback(int lch, u16 ch_status, void *data); |
50 | static void serial_omap_rx_timeout(unsigned long uart_no); | 50 | static void serial_omap_rxdma_poll(unsigned long uart_no); |
51 | static int serial_omap_start_rxdma(struct uart_omap_port *up); | 51 | static int serial_omap_start_rxdma(struct uart_omap_port *up); |
52 | static void serial_omap_mdr1_errataset(struct uart_omap_port *up, u8 mdr1); | 52 | static void serial_omap_mdr1_errataset(struct uart_omap_port *up, u8 mdr1); |
53 | 53 | ||
@@ -542,7 +542,7 @@ static int serial_omap_startup(struct uart_port *port) | |||
542 | (dma_addr_t *)&(up->uart_dma.tx_buf_dma_phys), | 542 | (dma_addr_t *)&(up->uart_dma.tx_buf_dma_phys), |
543 | 0); | 543 | 0); |
544 | init_timer(&(up->uart_dma.rx_timer)); | 544 | init_timer(&(up->uart_dma.rx_timer)); |
545 | up->uart_dma.rx_timer.function = serial_omap_rx_timeout; | 545 | up->uart_dma.rx_timer.function = serial_omap_rxdma_poll; |
546 | up->uart_dma.rx_timer.data = up->pdev->id; | 546 | up->uart_dma.rx_timer.data = up->pdev->id; |
547 | /* Currently the buffer size is 4KB. Can increase it */ | 547 | /* Currently the buffer size is 4KB. Can increase it */ |
548 | up->uart_dma.rx_buf = dma_alloc_coherent(NULL, | 548 | up->uart_dma.rx_buf = dma_alloc_coherent(NULL, |
@@ -1160,7 +1160,7 @@ static int serial_omap_resume(struct device *dev) | |||
1160 | } | 1160 | } |
1161 | #endif | 1161 | #endif |
1162 | 1162 | ||
1163 | static void serial_omap_rx_timeout(unsigned long uart_no) | 1163 | static void serial_omap_rxdma_poll(unsigned long uart_no) |
1164 | { | 1164 | { |
1165 | struct uart_omap_port *up = ui[uart_no]; | 1165 | struct uart_omap_port *up = ui[uart_no]; |
1166 | unsigned int curr_dma_pos, curr_transmitted_size; | 1166 | unsigned int curr_dma_pos, curr_transmitted_size; |
@@ -1170,9 +1170,9 @@ static void serial_omap_rx_timeout(unsigned long uart_no) | |||
1170 | if ((curr_dma_pos == up->uart_dma.prev_rx_dma_pos) || | 1170 | if ((curr_dma_pos == up->uart_dma.prev_rx_dma_pos) || |
1171 | (curr_dma_pos == 0)) { | 1171 | (curr_dma_pos == 0)) { |
1172 | if (jiffies_to_msecs(jiffies - up->port_activity) < | 1172 | if (jiffies_to_msecs(jiffies - up->port_activity) < |
1173 | RX_TIMEOUT) { | 1173 | up->uart_dma.rx_timeout) { |
1174 | mod_timer(&up->uart_dma.rx_timer, jiffies + | 1174 | mod_timer(&up->uart_dma.rx_timer, jiffies + |
1175 | usecs_to_jiffies(up->uart_dma.rx_timeout)); | 1175 | usecs_to_jiffies(up->uart_dma.rx_poll_rate)); |
1176 | } else { | 1176 | } else { |
1177 | serial_omap_stop_rxdma(up); | 1177 | serial_omap_stop_rxdma(up); |
1178 | up->ier |= (UART_IER_RDI | UART_IER_RLSI); | 1178 | up->ier |= (UART_IER_RDI | UART_IER_RLSI); |
@@ -1201,7 +1201,7 @@ static void serial_omap_rx_timeout(unsigned long uart_no) | |||
1201 | } | 1201 | } |
1202 | } else { | 1202 | } else { |
1203 | mod_timer(&up->uart_dma.rx_timer, jiffies + | 1203 | mod_timer(&up->uart_dma.rx_timer, jiffies + |
1204 | usecs_to_jiffies(up->uart_dma.rx_timeout)); | 1204 | usecs_to_jiffies(up->uart_dma.rx_poll_rate)); |
1205 | } | 1205 | } |
1206 | up->port_activity = jiffies; | 1206 | up->port_activity = jiffies; |
1207 | } | 1207 | } |
@@ -1240,7 +1240,7 @@ static int serial_omap_start_rxdma(struct uart_omap_port *up) | |||
1240 | /* FIXME: Cache maintenance needed here? */ | 1240 | /* FIXME: Cache maintenance needed here? */ |
1241 | omap_start_dma(up->uart_dma.rx_dma_channel); | 1241 | omap_start_dma(up->uart_dma.rx_dma_channel); |
1242 | mod_timer(&up->uart_dma.rx_timer, jiffies + | 1242 | mod_timer(&up->uart_dma.rx_timer, jiffies + |
1243 | usecs_to_jiffies(up->uart_dma.rx_timeout)); | 1243 | usecs_to_jiffies(up->uart_dma.rx_poll_rate)); |
1244 | up->uart_dma.rx_dma_used = true; | 1244 | up->uart_dma.rx_dma_used = true; |
1245 | return ret; | 1245 | return ret; |
1246 | } | 1246 | } |
@@ -1376,6 +1376,7 @@ static int serial_omap_probe(struct platform_device *pdev) | |||
1376 | up->use_dma = 1; | 1376 | up->use_dma = 1; |
1377 | up->uart_dma.rx_buf_size = omap_up_info->dma_rx_buf_size; | 1377 | up->uart_dma.rx_buf_size = omap_up_info->dma_rx_buf_size; |
1378 | up->uart_dma.rx_timeout = omap_up_info->dma_rx_timeout; | 1378 | up->uart_dma.rx_timeout = omap_up_info->dma_rx_timeout; |
1379 | up->uart_dma.rx_poll_rate = omap_up_info->dma_rx_poll_rate; | ||
1379 | spin_lock_init(&(up->uart_dma.tx_lock)); | 1380 | spin_lock_init(&(up->uart_dma.tx_lock)); |
1380 | spin_lock_init(&(up->uart_dma.rx_lock)); | 1381 | spin_lock_init(&(up->uart_dma.rx_lock)); |
1381 | up->uart_dma.tx_dma_channel = OMAP_UART_DMA_CH_FREE; | 1382 | up->uart_dma.tx_dma_channel = OMAP_UART_DMA_CH_FREE; |