lkml.org 
[lkml]   [2019]   [Dec]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 053/125] serial: max310x: Fix tx_empty() callback
    Date
    From: Alexander Shiyan <shc_work@mail.ru>

    [ Upstream commit a8da3c7873ea57acb8f9cea58c0af477522965aa ]

    Function max310x_tx_empty() accesses the IRQSTS register, which is
    cleared by IC when reading, so if there is an interrupt status, we
    will lose it. This patch implement the transmitter check only by
    the current FIFO level.

    Signed-off-by: Alexander Shiyan <shc_work@mail.ru>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/tty/serial/max310x.c | 7 ++-----
    1 file changed, 2 insertions(+), 5 deletions(-)

    diff --git a/drivers/tty/serial/max310x.c b/drivers/tty/serial/max310x.c
    index bacc7e284c0c1..80ab672d61cc4 100644
    --- a/drivers/tty/serial/max310x.c
    +++ b/drivers/tty/serial/max310x.c
    @@ -769,12 +769,9 @@ static void max310x_start_tx(struct uart_port *port)

    static unsigned int max310x_tx_empty(struct uart_port *port)
    {
    - unsigned int lvl, sts;
    + u8 lvl = max310x_port_read(port, MAX310X_TXFIFOLVL_REG);

    - lvl = max310x_port_read(port, MAX310X_TXFIFOLVL_REG);
    - sts = max310x_port_read(port, MAX310X_IRQSTS_REG);
    -
    - return ((sts & MAX310X_IRQ_TXEMPTY_BIT) && !lvl) ? TIOCSER_TEMT : 0;
    + return lvl ? 0 : TIOCSER_TEMT;
    }

    static unsigned int max310x_get_mctrl(struct uart_port *port)
    --
    2.20.1


    \
     
     \ /
      Last update: 2019-12-04 19:18    [W:4.683 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site