OSDN Git Service

USB: serial: f81232: add tx_empty function
authorJi-Ze Hong (Peter Hong) <hpeter@gmail.com>
Thu, 30 Jan 2020 05:47:48 +0000 (13:47 +0800)
committerJohan Hovold <johan@kernel.org>
Tue, 25 Feb 2020 11:30:02 +0000 (12:30 +0100)
Add tx_empty() function for F81232. Without this, console redirection will
get garbage data.

Signed-off-by: Ji-Ze Hong (Peter Hong) <hpeter+linux_kernel@gmail.com>
Signed-off-by: Johan Hovold <johan@kernel.org>
drivers/usb/serial/f81232.c

index c07d376..793d0b3 100644 (file)
@@ -685,6 +685,20 @@ static void f81232_dtr_rts(struct usb_serial_port *port, int on)
                f81232_set_mctrl(port, 0, TIOCM_DTR | TIOCM_RTS);
 }
 
+static bool f81232_tx_empty(struct usb_serial_port *port)
+{
+       int status;
+       u8 tmp;
+
+       status = f81232_get_register(port, LINE_STATUS_REGISTER, &tmp);
+       if (!status) {
+               if ((tmp & UART_LSR_TEMT) != UART_LSR_TEMT)
+                       return false;
+       }
+
+       return true;
+}
+
 static int f81232_carrier_raised(struct usb_serial_port *port)
 {
        u8 msr;
@@ -820,6 +834,7 @@ static struct usb_serial_driver f81232_device = {
        .tiocmget =             f81232_tiocmget,
        .tiocmset =             f81232_tiocmset,
        .tiocmiwait =           usb_serial_generic_tiocmiwait,
+       .tx_empty =             f81232_tx_empty,
        .process_read_urb =     f81232_process_read_urb,
        .read_int_callback =    f81232_read_int_callback,
        .port_probe =           f81232_port_probe,