@ -101,6 +101,7 @@ static int ti_write(struct tty_struct *tty, struct usb_serial_port *port,
const unsigned char * data , int count ) ;
const unsigned char * data , int count ) ;
static int ti_write_room ( struct tty_struct * tty ) ;
static int ti_write_room ( struct tty_struct * tty ) ;
static int ti_chars_in_buffer ( struct tty_struct * tty ) ;
static int ti_chars_in_buffer ( struct tty_struct * tty ) ;
static bool ti_tx_empty ( struct usb_serial_port * port ) ;
static void ti_throttle ( struct tty_struct * tty ) ;
static void ti_throttle ( struct tty_struct * tty ) ;
static void ti_unthrottle ( struct tty_struct * tty ) ;
static void ti_unthrottle ( struct tty_struct * tty ) ;
static int ti_ioctl ( struct tty_struct * tty ,
static int ti_ioctl ( struct tty_struct * tty ,
@ -222,6 +223,7 @@ static struct usb_serial_driver ti_1port_device = {
. write = ti_write ,
. write = ti_write ,
. write_room = ti_write_room ,
. write_room = ti_write_room ,
. chars_in_buffer = ti_chars_in_buffer ,
. chars_in_buffer = ti_chars_in_buffer ,
. tx_empty = ti_tx_empty ,
. throttle = ti_throttle ,
. throttle = ti_throttle ,
. unthrottle = ti_unthrottle ,
. unthrottle = ti_unthrottle ,
. ioctl = ti_ioctl ,
. ioctl = ti_ioctl ,
@ -253,6 +255,7 @@ static struct usb_serial_driver ti_2port_device = {
. write = ti_write ,
. write = ti_write ,
. write_room = ti_write_room ,
. write_room = ti_write_room ,
. chars_in_buffer = ti_chars_in_buffer ,
. chars_in_buffer = ti_chars_in_buffer ,
. tx_empty = ti_tx_empty ,
. throttle = ti_throttle ,
. throttle = ti_throttle ,
. unthrottle = ti_unthrottle ,
. unthrottle = ti_unthrottle ,
. ioctl = ti_ioctl ,
. ioctl = ti_ioctl ,
@ -684,8 +687,6 @@ static int ti_chars_in_buffer(struct tty_struct *tty)
struct ti_port * tport = usb_get_serial_port_data ( port ) ;
struct ti_port * tport = usb_get_serial_port_data ( port ) ;
int chars = 0 ;
int chars = 0 ;
unsigned long flags ;
unsigned long flags ;
int ret ;
u8 lsr ;
if ( tport = = NULL )
if ( tport = = NULL )
return 0 ;
return 0 ;
@ -694,16 +695,22 @@ static int ti_chars_in_buffer(struct tty_struct *tty)
chars = kfifo_len ( & tport - > write_fifo ) ;
chars = kfifo_len ( & tport - > write_fifo ) ;
spin_unlock_irqrestore ( & tport - > tp_lock , flags ) ;
spin_unlock_irqrestore ( & tport - > tp_lock , flags ) ;
if ( ! chars ) {
ret = ti_get_lsr ( tport , & lsr ) ;
if ( ! ret & & ! ( lsr & TI_LSR_TX_EMPTY ) )
chars = 1 ;
}
dev_dbg ( & port - > dev , " %s - returns %d \n " , __func__ , chars ) ;
dev_dbg ( & port - > dev , " %s - returns %d \n " , __func__ , chars ) ;
return chars ;
return chars ;
}
}
static bool ti_tx_empty ( struct usb_serial_port * port )
{
struct ti_port * tport = usb_get_serial_port_data ( port ) ;
int ret ;
u8 lsr ;
ret = ti_get_lsr ( tport , & lsr ) ;
if ( ! ret & & ! ( lsr & TI_LSR_TX_EMPTY ) )
return false ;
return true ;
}
static void ti_throttle ( struct tty_struct * tty )
static void ti_throttle ( struct tty_struct * tty )
{
{