]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
staging: digi: Replace open-coded tty_wakeup()
authorPeter Hurley <peter@hurleysoftware.com>
Mon, 11 Jan 2016 06:40:50 +0000 (22:40 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 27 Jan 2016 23:01:42 +0000 (15:01 -0800)
The open-coded tty_wakeup()s are attempts to workaround fixed bugs
in the line discipline write_wakeup() method. Replace with tty_wakeup().

Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/dgap/dgap.c
drivers/staging/dgnc/dgnc_tty.c

index bad355100825d569834065a8b6e41aa3d0a2a44b..dfbae215aec3c92a00ad351ddb5f540442d26395 100644 (file)
@@ -1665,9 +1665,7 @@ static void dgap_input(struct channel_t *ch)
 }
 
 static void dgap_write_wakeup(struct board_t *bd, struct channel_t *ch,
-                             struct un_t *un, u32 mask,
-                             unsigned long *irq_flags1,
-                             unsigned long *irq_flags2)
+                             struct un_t *un, u32 mask)
 {
        if (!(un->un_flags & mask))
                return;
@@ -1677,17 +1675,7 @@ static void dgap_write_wakeup(struct board_t *bd, struct channel_t *ch,
        if (!(un->un_flags & UN_ISOPEN))
                return;
 
-       if ((un->un_tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) &&
-           un->un_tty->ldisc->ops->write_wakeup) {
-               spin_unlock_irqrestore(&ch->ch_lock, *irq_flags2);
-               spin_unlock_irqrestore(&bd->bd_lock, *irq_flags1);
-
-               (un->un_tty->ldisc->ops->write_wakeup)(un->un_tty);
-
-               spin_lock_irqsave(&bd->bd_lock, *irq_flags1);
-               spin_lock_irqsave(&ch->ch_lock, *irq_flags2);
-       }
-       wake_up_interruptible(&un->un_tty->write_wait);
+       tty_wakeup(un->un_tty);
        wake_up_interruptible(&un->un_flags_wait);
 }
 
@@ -1952,10 +1940,8 @@ static int dgap_event(struct board_t *bd)
                 * Process Transmit low.
                 */
                if (reason & IFTLW) {
-                       dgap_write_wakeup(bd, ch, &ch->ch_tun, UN_LOW,
-                                         &lock_flags, &lock_flags2);
-                       dgap_write_wakeup(bd, ch, &ch->ch_pun, UN_LOW,
-                                         &lock_flags, &lock_flags2);
+                       dgap_write_wakeup(bd, ch, &ch->ch_tun, UN_LOW);
+                       dgap_write_wakeup(bd, ch, &ch->ch_pun, UN_LOW);
                        if (ch->ch_flags & CH_WLOW) {
                                ch->ch_flags &= ~CH_WLOW;
                                wake_up_interruptible(&ch->ch_flags_wait);
@@ -1966,10 +1952,8 @@ static int dgap_event(struct board_t *bd)
                 * Process Transmit empty.
                 */
                if (reason & IFTEM) {
-                       dgap_write_wakeup(bd, ch, &ch->ch_tun, UN_EMPTY,
-                                         &lock_flags, &lock_flags2);
-                       dgap_write_wakeup(bd, ch, &ch->ch_pun, UN_EMPTY,
-                                         &lock_flags, &lock_flags2);
+                       dgap_write_wakeup(bd, ch, &ch->ch_tun, UN_EMPTY);
+                       dgap_write_wakeup(bd, ch, &ch->ch_pun, UN_EMPTY);
                        if (ch->ch_flags & CH_WEMPTY) {
                                ch->ch_flags &= ~CH_WEMPTY;
                                wake_up_interruptible(&ch->ch_flags_wait);
index b79eab084c023864389dc283aec9e703b72177e0..4a3d2c6f7eac934175c9a173e68222281825a61e 100644 (file)
@@ -933,14 +933,7 @@ void dgnc_wakeup_writes(struct channel_t *ch)
        }
 
        if (ch->ch_tun.un_flags & UN_ISOPEN) {
-               if ((ch->ch_tun.un_tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) &&
-                   ch->ch_tun.un_tty->ldisc->ops->write_wakeup) {
-                       spin_unlock_irqrestore(&ch->ch_lock, flags);
-                       ch->ch_tun.un_tty->ldisc->ops->write_wakeup(ch->ch_tun.un_tty);
-                       spin_lock_irqsave(&ch->ch_lock, flags);
-               }
-
-               wake_up_interruptible(&ch->ch_tun.un_tty->write_wait);
+               tty_wakeup(ch->ch_tun.un_tty);
 
                /*
                 * If unit is set to wait until empty, check to make sure
@@ -975,14 +968,7 @@ void dgnc_wakeup_writes(struct channel_t *ch)
        }
 
        if (ch->ch_pun.un_flags & UN_ISOPEN) {
-               if ((ch->ch_pun.un_tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) &&
-                   ch->ch_pun.un_tty->ldisc->ops->write_wakeup) {
-                       spin_unlock_irqrestore(&ch->ch_lock, flags);
-                       ch->ch_pun.un_tty->ldisc->ops->write_wakeup(ch->ch_pun.un_tty);
-                       spin_lock_irqsave(&ch->ch_lock, flags);
-               }
-
-               wake_up_interruptible(&ch->ch_pun.un_tty->write_wait);
+               tty_wakeup(ch->ch_pun.un_tty);
 
                /*
                 * If unit is set to wait until empty, check to make sure