Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 692aa190 authored by Chuah, Kim Tatt's avatar Chuah, Kim Tatt Committed by Greg Kroah-Hartman
Browse files

serial: 8250_mid: Read RX buffer on RX DMA timeout for DNV



In DNV, when RX DMA is used and number of bytes received is less than
transfer size, only RX DMA timeout interrupt is sent. When this happens,
read the RX buffer.

Signed-off-by: default avatarChuah, Kim Tatt <kim.tatt.chuah@intel.com>
Acked-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: default avatarHeikki Krogerus <heikki.krogerus@linux.intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent fd9e516d
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -96,6 +96,7 @@ static int tng_setup(struct mid8250 *mid, struct uart_port *p)
static int dnv_handle_irq(struct uart_port *p)
{
	struct mid8250 *mid = p->private_data;
	struct uart_8250_port *up = up_to_u8250p(p);
	unsigned int fisr = serial_port_in(p, INTEL_MID_UART_DNV_FISR);
	u32 status;
	int ret = IRQ_NONE;
@@ -103,9 +104,10 @@ static int dnv_handle_irq(struct uart_port *p)

	if (fisr & BIT(2)) {
		err = hsu_dma_get_status(&mid->dma_chip, 1, &status);
		if (err > 0)
		if (err > 0) {
			serial8250_rx_dma_flush(up);
			ret |= IRQ_HANDLED;
		else if (err == 0)
		} else if (err == 0)
			ret |= hsu_dma_do_irq(&mid->dma_chip, 1, status);
	}
	if (fisr & BIT(1)) {