diff options
Diffstat (limited to 'drivers/char/synclink_gt.c')
-rw-r--r-- | drivers/char/synclink_gt.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/char/synclink_gt.c b/drivers/char/synclink_gt.c index 1a11717b1adc..430f5bc0ae30 100644 --- a/drivers/char/synclink_gt.c +++ b/drivers/char/synclink_gt.c | |||
@@ -151,7 +151,7 @@ static void hangup(struct tty_struct *tty); | |||
151 | static void set_termios(struct tty_struct *tty, struct ktermios *old_termios); | 151 | static void set_termios(struct tty_struct *tty, struct ktermios *old_termios); |
152 | 152 | ||
153 | static int write(struct tty_struct *tty, const unsigned char *buf, int count); | 153 | static int write(struct tty_struct *tty, const unsigned char *buf, int count); |
154 | static void put_char(struct tty_struct *tty, unsigned char ch); | 154 | static int put_char(struct tty_struct *tty, unsigned char ch); |
155 | static void send_xchar(struct tty_struct *tty, char ch); | 155 | static void send_xchar(struct tty_struct *tty, char ch); |
156 | static void wait_until_sent(struct tty_struct *tty, int timeout); | 156 | static void wait_until_sent(struct tty_struct *tty, int timeout); |
157 | static int write_room(struct tty_struct *tty); | 157 | static int write_room(struct tty_struct *tty); |
@@ -912,20 +912,24 @@ cleanup: | |||
912 | return ret; | 912 | return ret; |
913 | } | 913 | } |
914 | 914 | ||
915 | static void put_char(struct tty_struct *tty, unsigned char ch) | 915 | static int put_char(struct tty_struct *tty, unsigned char ch) |
916 | { | 916 | { |
917 | struct slgt_info *info = tty->driver_data; | 917 | struct slgt_info *info = tty->driver_data; |
918 | unsigned long flags; | 918 | unsigned long flags; |
919 | int ret; | ||
919 | 920 | ||
920 | if (sanity_check(info, tty->name, "put_char")) | 921 | if (sanity_check(info, tty->name, "put_char")) |
921 | return; | 922 | return 0; |
922 | DBGINFO(("%s put_char(%d)\n", info->device_name, ch)); | 923 | DBGINFO(("%s put_char(%d)\n", info->device_name, ch)); |
923 | if (!info->tx_buf) | 924 | if (!info->tx_buf) |
924 | return; | 925 | return 0; |
925 | spin_lock_irqsave(&info->lock,flags); | 926 | spin_lock_irqsave(&info->lock,flags); |
926 | if (!info->tx_active && (info->tx_count < info->max_frame_size)) | 927 | if (!info->tx_active && (info->tx_count < info->max_frame_size)) { |
927 | info->tx_buf[info->tx_count++] = ch; | 928 | info->tx_buf[info->tx_count++] = ch; |
929 | ret = 1; | ||
930 | } | ||
928 | spin_unlock_irqrestore(&info->lock,flags); | 931 | spin_unlock_irqrestore(&info->lock,flags); |
932 | return ret; | ||
929 | } | 933 | } |
930 | 934 | ||
931 | static void send_xchar(struct tty_struct *tty, char ch) | 935 | static void send_xchar(struct tty_struct *tty, char ch) |