synclink series: switch to int put_char method
PATCH 1/1 synclink series: switch to int put_char method
Signed-off-by Alan Cox <[email protected]>
drivers/char/synclink.c +6 -5
@@ -2029,10 +2029,11 @@* * Return Value: None */ -static void mgsl_put_char (struct tty_struct *tty,unsigned char ch) +static int mgsl_put_char (struct tty_struct *tty,unsigned char ch) {struct mgsl_struct *info = (struct mgsl_struct *)tty->driver_data;unsigned long flags; +int ret;if ( debug_level >=DEBUG_LEVEL_INFO ) { printk( "%s(%d):mgsl_put_char(%d) on %s\n",
@@ -2040,23 +2041,23 @@ }if (mgsl_paranoia_check (info, tty->name,"mgsl_put_char" )) -return ; +return 0 ;if (!tty || !info->xmit_buf) -return ; +return 0 ;spin_lock_irqsave (&info->irq_spinlock,flags);if ( (info->params.mode ==MGSL_MODE_ASYNC ) || !info->tx_active ) { -if (info->xmit_cnt <SERIAL_XMIT_SIZE -1 ) { info->xmit_buf[info->xmit_head++] = ch; info->xmit_head &=SERIAL_XMIT_SIZE -1 ; info->xmit_cnt++; + ret =1 ; } } -spin_unlock_irqrestore (&info->irq_spinlock,flags); +return ret; }/* end of mgsl_put_char() */
drivers/char/synclink_gt.c +9 -5
@@ -151,7 +151,7 @@static void set_termios (struct tty_struct *tty,struct ktermios *old_termios);static int write (struct tty_struct *tty,const unsigned char *buf,int count); -static void put_char (struct tty_struct *tty,unsigned char ch); +static int put_char (struct tty_struct *tty,unsigned char ch);static void send_xchar (struct tty_struct *tty,char ch);static void wait_until_sent (struct tty_struct *tty,int timeout);static int write_room (struct tty_struct *tty);
@@ -913,20 +913,24 @@return ret; } -static void put_char (struct tty_struct *tty,unsigned char ch) +static int put_char (struct tty_struct *tty,unsigned char ch) {struct slgt_info *info = tty->driver_data;unsigned long flags; +int ret;if (sanity_check (info, tty->name,"put_char" )) -return ; +return 0 ;DBGINFO (("%s put_char(%d)\n" , info->device_name, ch));if (!info->tx_buf) -return ; +return 0 ;spin_lock_irqsave (&info->lock,flags); -if (!info->tx_active && (info->tx_count < info->max_frame_size)) +if (!info->tx_active && (info->tx_count < info->max_frame_size)) { info->tx_buf[info->tx_count++] = ch; + ret =1 ; + }spin_unlock_irqrestore (&info->lock,flags); +return ret; }static void send_xchar (struct tty_struct *tty,char ch)
drivers/char/synclinkmp.c +7 -4
@@ -519,7 +519,7 @@static void set_termios (struct tty_struct *tty,struct ktermios *old_termios);static int write (struct tty_struct *tty,const unsigned char *buf,int count); -static void put_char (struct tty_struct *tty,unsigned char ch); +static int put_char (struct tty_struct *tty,unsigned char ch);static void send_xchar (struct tty_struct *tty,char ch);static void wait_until_sent (struct tty_struct *tty,int timeout);static int write_room (struct tty_struct *tty);
@@ -1045,10 +1045,11 @@/* Add a character to the transmit buffer. */ -static void put_char (struct tty_struct *tty,unsigned char ch) +static int put_char (struct tty_struct *tty,unsigned char ch) {SLMP_INFO *info = (SLMP_INFO *)tty->driver_data;unsigned long flags; +int ret =0 ;if ( debug_level >=DEBUG_LEVEL_INFO ) { printk( "%s(%d):%s put_char(%d)\n",
@@ -1056,10 +1057,10 @@ }if (sanity_check (info, tty->name,"put_char" )) -return ; +return 0 ;if (!info->tx_buf) -return ; +return 0 ;spin_lock_irqsave (&info->lock,flags);
@@ -1071,10 +1072,12 @@if (info->tx_put >= info->max_frame_size) info->tx_put -= info->max_frame_size; info->tx_count++; + ret =1 ; } }spin_unlock_irqrestore (&info->lock,flags); +return ret; }/* Send a high-priority XON/XOFF character