drivers: serial: Don't condition uart_irq_rx_ready on irq enabled

The function uart_irq_rx_ready() should return true if there is data in
the receive buffer, regardless of whether the irq is enabled. Fix the
mcux and rv32m1 shim drivers to implement this behavior correctly.

Prior to this change:
- irq_rx_full() checks if RX data is available
- irq_rx_ready() checks if RX data is available and interrupts are
  enabled

After this change:
- irq_rx_full() checks if RX data is available
- irq_rx_ready() renamed to irq_rx_pending() to avoid confusion with the
  API ready() function
- API ready() implementation switched to use irq_rx_full()

Signed-off-by: Maureen Helm <maureen.helm@nxp.com>
This commit is contained in:
Maureen Helm 2021-02-01 12:34:28 -06:00 committed by Anas Nashif
commit 53b08ecbfd
6 changed files with 18 additions and 18 deletions

View file

@ -174,7 +174,7 @@ static int mcux_lpuart_irq_rx_full(const struct device *dev)
return (flags & kLPUART_RxDataRegFullFlag) != 0U;
}
static int mcux_lpuart_irq_rx_ready(const struct device *dev)
static int mcux_lpuart_irq_rx_pending(const struct device *dev)
{
const struct mcux_lpuart_config *config = dev->config;
uint32_t mask = kLPUART_RxDataRegFullInterruptEnable;
@ -206,7 +206,7 @@ static void mcux_lpuart_irq_err_disable(const struct device *dev)
static int mcux_lpuart_irq_is_pending(const struct device *dev)
{
return (mcux_lpuart_irq_tx_ready(dev)
|| mcux_lpuart_irq_rx_ready(dev));
|| mcux_lpuart_irq_rx_pending(dev));
}
static int mcux_lpuart_irq_update(const struct device *dev)
@ -388,7 +388,7 @@ static const struct uart_driver_api mcux_lpuart_driver_api = {
.irq_tx_ready = mcux_lpuart_irq_tx_ready,
.irq_rx_enable = mcux_lpuart_irq_rx_enable,
.irq_rx_disable = mcux_lpuart_irq_rx_disable,
.irq_rx_ready = mcux_lpuart_irq_rx_ready,
.irq_rx_ready = mcux_lpuart_irq_rx_full,
.irq_err_enable = mcux_lpuart_irq_err_enable,
.irq_err_disable = mcux_lpuart_irq_err_disable,
.irq_is_pending = mcux_lpuart_irq_is_pending,