• Pali Rohár's avatar
    serial: mvebu-uart: fix tx lost characters at power off · 54ca955b
    Pali Rohár authored
    Commit c685af11 ("serial: mvebu-uart: fix tx lost characters") fixed tx
    lost characters at low baud rates but started causing tx lost characters
    when kernel is going to power off or reboot.
    
    TX_EMP tells us when transmit queue is empty therefore all characters were
    transmitted. TX_RDY tells us when CPU can send a new character.
    
    Therefore we need to use different check prior transmitting new character
    and different check after all characters were sent.
    
    This patch splits polling code into two functions: wait_for_xmitr() which
    waits for TX_RDY and wait_for_xmite() which waits for TX_EMP.
    
    When rebooting A3720 platform without this patch on UART is print only:
    [   42.699�
    
    And with this patch on UART is full output:
    [   39.530216] reboot: Restarting system
    
    Fixes: c685af11 ("serial: mvebu-uart: fix tx lost characters")
    Signed-off-by: default avatarPali Rohár <pali@kernel.org>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20201223191931.18343-1-pali@kernel.orgSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    54ca955b
mvebu-uart.c 24.8 KB