|
@@ -1353,7 +1353,7 @@ static void serial8250_start_tx(struct uart_port *port)
|
|
|
struct uart_8250_port *up = up_to_u8250p(port);
|
|
|
|
|
|
serial8250_rpm_get_tx(up);
|
|
|
- if (up->dma && !serial8250_tx_dma(up)) {
|
|
|
+ if (up->dma && !up->dma->tx_dma(up)) {
|
|
|
return;
|
|
|
} else if (!(up->ier & UART_IER_THRI)) {
|
|
|
up->ier |= UART_IER_THRI;
|
|
@@ -1591,7 +1591,7 @@ int serial8250_handle_irq(struct uart_port *port, unsigned int iir)
|
|
|
|
|
|
if (status & (UART_LSR_DR | UART_LSR_BI)) {
|
|
|
if (up->dma)
|
|
|
- dma_err = serial8250_rx_dma(up, iir);
|
|
|
+ dma_err = up->dma->rx_dma(up, iir);
|
|
|
|
|
|
if (!up->dma || dma_err)
|
|
|
status = serial8250_rx_chars(up, status);
|
|
@@ -3627,8 +3627,13 @@ int serial8250_register_8250_port(struct uart_8250_port *up)
|
|
|
uart->dl_read = up->dl_read;
|
|
|
if (up->dl_write)
|
|
|
uart->dl_write = up->dl_write;
|
|
|
- if (up->dma)
|
|
|
+ if (up->dma) {
|
|
|
uart->dma = up->dma;
|
|
|
+ if (!uart->dma->tx_dma)
|
|
|
+ uart->dma->tx_dma = serial8250_tx_dma;
|
|
|
+ if (!uart->dma->rx_dma)
|
|
|
+ uart->dma->rx_dma = serial8250_rx_dma;
|
|
|
+ }
|
|
|
|
|
|
if (serial8250_isa_config != NULL)
|
|
|
serial8250_isa_config(0, &uart->port,
|