Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid
[cascardo/linux.git] / drivers / tty / tty_port.c
index dbcca30..c3f9d93 100644 (file)
@@ -204,7 +204,8 @@ static void tty_port_shutdown(struct tty_port *port, struct tty_struct *tty)
        if (port->console)
                goto out;
 
-       if (test_and_clear_bit(ASYNCB_INITIALIZED, &port->flags)) {
+       if (tty_port_initialized(port)) {
+               tty_port_set_initialized(port, 0);
                /*
                 * Drop DTR/RTS if HUPCL is set. This causes any attached
                 * modem to hang up the line.
@@ -236,12 +237,12 @@ void tty_port_hangup(struct tty_port *port)
 
        spin_lock_irqsave(&port->lock, flags);
        port->count = 0;
-       port->flags &= ~ASYNC_NORMAL_ACTIVE;
        tty = port->tty;
        if (tty)
                set_bit(TTY_IO_ERROR, &tty->flags);
        port->tty = NULL;
        spin_unlock_irqrestore(&port->lock, flags);
+       tty_port_set_active(port, 0);
        tty_port_shutdown(port, tty);
        tty_kref_put(tty);
        wake_up_interruptible(&port->open_wait);
@@ -364,15 +365,15 @@ int tty_port_block_til_ready(struct tty_port *port,
 
        /* if non-blocking mode is set we can pass directly to open unless
           the port has just hung up or is in another error state */
-       if (tty->flags & (1 << TTY_IO_ERROR)) {
-               port->flags |= ASYNC_NORMAL_ACTIVE;
+       if (tty_io_error(tty)) {
+               tty_port_set_active(port, 1);
                return 0;
        }
        if (filp->f_flags & O_NONBLOCK) {
                /* Indicate we are open */
                if (C_BAUD(tty))
                        tty_port_raise_dtr_rts(port);
-               port->flags |= ASYNC_NORMAL_ACTIVE;
+               tty_port_set_active(port, 1);
                return 0;
        }
 
@@ -393,13 +394,13 @@ int tty_port_block_til_ready(struct tty_port *port,
 
        while (1) {
                /* Indicate we are open */
-               if (C_BAUD(tty) && test_bit(ASYNCB_INITIALIZED, &port->flags))
+               if (C_BAUD(tty) && tty_port_initialized(port))
                        tty_port_raise_dtr_rts(port);
 
                prepare_to_wait(&port->open_wait, &wait, TASK_INTERRUPTIBLE);
                /* Check for a hangup or uninitialised port.
                                                        Return accordingly */
-               if (tty_hung_up_p(filp) || !(port->flags & ASYNC_INITIALIZED)) {
+               if (tty_hung_up_p(filp) || !tty_port_initialized(port)) {
                        if (port->flags & ASYNC_HUP_NOTIFY)
                                retval = -EAGAIN;
                        else
@@ -430,9 +431,9 @@ int tty_port_block_til_ready(struct tty_port *port,
        if (!tty_hung_up_p(filp))
                port->count++;
        port->blocked_open--;
-       if (retval == 0)
-               port->flags |= ASYNC_NORMAL_ACTIVE;
        spin_unlock_irqrestore(&port->lock, flags);
+       if (retval == 0)
+               tty_port_set_active(port, 1);
        return retval;
 }
 EXPORT_SYMBOL(tty_port_block_til_ready);
@@ -480,7 +481,7 @@ int tty_port_close_start(struct tty_port *port,
 
        tty->closing = 1;
 
-       if (test_bit(ASYNCB_INITIALIZED, &port->flags)) {
+       if (tty_port_initialized(port)) {
                /* Don't block on a stalled port, just pull the chain */
                if (tty->flow_stopped)
                        tty_driver_flush_buffer(tty);
@@ -514,8 +515,8 @@ void tty_port_close_end(struct tty_port *port, struct tty_struct *tty)
                spin_lock_irqsave(&port->lock, flags);
                wake_up_interruptible(&port->open_wait);
        }
-       port->flags &= ~ASYNC_NORMAL_ACTIVE;
        spin_unlock_irqrestore(&port->lock, flags);
+       tty_port_set_active(port, 0);
 }
 EXPORT_SYMBOL(tty_port_close_end);
 
@@ -578,7 +579,7 @@ int tty_port_open(struct tty_port *port, struct tty_struct *tty,
 
        mutex_lock(&port->mutex);
 
-       if (!test_bit(ASYNCB_INITIALIZED, &port->flags)) {
+       if (!tty_port_initialized(port)) {
                clear_bit(TTY_IO_ERROR, &tty->flags);
                if (port->ops->activate) {
                        int retval = port->ops->activate(port, tty);
@@ -587,7 +588,7 @@ int tty_port_open(struct tty_port *port, struct tty_struct *tty,
                                return retval;
                        }
                }
-               set_bit(ASYNCB_INITIALIZED, &port->flags);
+               tty_port_set_initialized(port, 1);
        }
        mutex_unlock(&port->mutex);
        return tty_port_block_til_ready(port, tty, filp);