Merge tag 'please-pull-vm_unwrapped' of git://git.kernel.org/pub/scm/linux/kernel...
[firefly-linux-kernel-4.4.55.git] / drivers / tty / synclink_gt.c
index 9a0358a1e0dd43a37aa4a63bdf0a7b08182fd5f8..aa9eece35c3b922240249f10481733a20de0ad6a 100644 (file)
@@ -785,7 +785,7 @@ static void set_termios(struct tty_struct *tty, struct ktermios *old_termios)
        /* Handle transition to B0 status */
        if (old_termios->c_cflag & CBAUD &&
            !(tty->termios.c_cflag & CBAUD)) {
-               info->signals &= ~(SerialSignal_RTS + SerialSignal_DTR);
+               info->signals &= ~(SerialSignal_RTS | SerialSignal_DTR);
                spin_lock_irqsave(&info->lock,flags);
                set_signals(info);
                spin_unlock_irqrestore(&info->lock,flags);
@@ -1560,8 +1560,8 @@ static int hdlcdev_open(struct net_device *dev)
                return rc;
        }
 
-       /* assert DTR and RTS, apply hardware settings */
-       info->signals |= SerialSignal_RTS + SerialSignal_DTR;
+       /* assert RTS and DTR, apply hardware settings */
+       info->signals |= SerialSignal_RTS | SerialSignal_DTR;
        program_hw(info);
 
        /* enable network layer transmit */
@@ -1854,7 +1854,6 @@ static void hdlcdev_exit(struct slgt_info *info)
  */
 static void rx_async(struct slgt_info *info)
 {
-       struct tty_struct *tty = info->port.tty;
        struct mgsl_icount *icount = &info->icount;
        unsigned int start, end;
        unsigned char *p;
@@ -1915,8 +1914,8 @@ static void rx_async(struct slgt_info *info)
                        break;
        }
 
-       if (tty && chars)
-               tty_flip_buffer_push(tty);
+       if (chars)
+               tty_flip_buffer_push(&info->port);
 }
 
 /*
@@ -1958,8 +1957,6 @@ static void bh_handler(struct work_struct *work)
        struct slgt_info *info = container_of(work, struct slgt_info, task);
        int action;
 
-       if (!info)
-               return;
        info->bh_running = true;
 
        while((action = bh_action(info))) {
@@ -2491,7 +2488,7 @@ static void shutdown(struct slgt_info *info)
        slgt_irq_off(info, IRQ_ALL | IRQ_MASTER);
 
        if (!info->port.tty || info->port.tty->termios.c_cflag & HUPCL) {
-               info->signals &= ~(SerialSignal_DTR + SerialSignal_RTS);
+               info->signals &= ~(SerialSignal_RTS | SerialSignal_DTR);
                set_signals(info);
        }
 
@@ -2551,12 +2548,12 @@ static void change_params(struct slgt_info *info)
 
        cflag = info->port.tty->termios.c_cflag;
 
-       /* if B0 rate (hangup) specified then negate DTR and RTS */
-       /* otherwise assert DTR and RTS */
+       /* if B0 rate (hangup) specified then negate RTS and DTR */
+       /* otherwise assert RTS and DTR */
        if (cflag & CBAUD)
-               info->signals |= SerialSignal_RTS + SerialSignal_DTR;
+               info->signals |= SerialSignal_RTS | SerialSignal_DTR;
        else
-               info->signals &= ~(SerialSignal_RTS + SerialSignal_DTR);
+               info->signals &= ~(SerialSignal_RTS | SerialSignal_DTR);
 
        /* byte size and parity */
 
@@ -3259,9 +3256,9 @@ static void dtr_rts(struct tty_port *port, int on)
 
        spin_lock_irqsave(&info->lock,flags);
        if (on)
-               info->signals |= SerialSignal_RTS + SerialSignal_DTR;
+               info->signals |= SerialSignal_RTS | SerialSignal_DTR;
        else
-               info->signals &= ~(SerialSignal_RTS + SerialSignal_DTR);
+               info->signals &= ~(SerialSignal_RTS | SerialSignal_DTR);
        set_signals(info);
        spin_unlock_irqrestore(&info->lock,flags);
 }
@@ -4122,7 +4119,7 @@ static void reset_port(struct slgt_info *info)
        tx_stop(info);
        rx_stop(info);
 
-       info->signals &= ~(SerialSignal_DTR + SerialSignal_RTS);
+       info->signals &= ~(SerialSignal_RTS | SerialSignal_DTR);
        set_signals(info);
 
        slgt_irq_off(info, IRQ_ALL | IRQ_MASTER);
@@ -4549,8 +4546,8 @@ static void get_signals(struct slgt_info *info)
 {
        unsigned short status = rd_reg16(info, SSR);
 
-       /* clear all serial signals except DTR and RTS */
-       info->signals &= SerialSignal_DTR + SerialSignal_RTS;
+       /* clear all serial signals except RTS and DTR */
+       info->signals &= SerialSignal_RTS | SerialSignal_DTR;
 
        if (status & BIT3)
                info->signals |= SerialSignal_DSR;