NVIDIA: SAUCE: tty/serial: amba-pl011: Fix DMA hang with RTS and CTS enabled
BugLink: https://bugs.launchpad.net/bugs/2080908 Function pl011_throttle_rx calls function pl011_stop_rx() to disable RX data transfer. This also disables the RX DMA by clearing RXDMAE bit of DMACR register. To unthrottle RX when DMA is used, function pl011_unthrottle_rx() is expected to set RXDMAE bit again to enable RX DMA. Set RXDMAE in DMACR register while unthrottling RX if RX DMA was in use. http://nvbugs/4701188 Signed-off-by: Kartik <kkartik@nvidia.com> Tested-by: Petlozu Pravareshwar <petlozup@nvidia.com> Reviewed-by: Petlozu Pravareshwar <petlozup@nvidia.com> Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com> Acked-by: Noah Wager <noah.wager@canonical.com> Acked-by: Jacob Martin <jacob.martin@canonical.com> Signed-off-by: Noah Wager <noah.wager@canonical.com>
This commit is contained in:
@@ -1940,6 +1940,11 @@ static void pl011_unthrottle_rx(struct uart_port *port)
|
||||
} else {
|
||||
if (uap->vendor->eord_interrupt)
|
||||
pl011_write(NV_UART011_EORDIM, uap, REG_NV_MIM);
|
||||
|
||||
if (uap->using_rx_dma) {
|
||||
uap->dmacr |= UART011_RXDMAE;
|
||||
pl011_write(uap->dmacr, uap, REG_DMACR);
|
||||
}
|
||||
}
|
||||
|
||||
pl011_write(uap->im, uap, REG_IMSC);
|
||||
|
||||
Reference in New Issue
Block a user