Merge branch 'devicetree/next' of git://git.secretlab.ca/git/linux-2.6
[pandora-kernel.git] / drivers / tty / hvc / hvc_console.c
index e1aaf4f..7430bc3 100644 (file)
@@ -388,7 +388,7 @@ static void hvc_close(struct tty_struct *tty, struct file * filp)
                 * there is no buffered data otherwise sleeps on a wait queue
                 * waking periodically to check chars_in_buffer().
                 */
-               tty_wait_until_sent(tty, HVC_CLOSE_WAIT);
+               tty_wait_until_sent_from_close(tty, HVC_CLOSE_WAIT);
        } else {
                if (hp->count < 0)
                        printk(KERN_ERR "hvc_close %X: oops, count is %d\n",
@@ -852,7 +852,7 @@ struct hvc_struct *hvc_alloc(uint32_t vtermno, int data,
         * find index to use:
         * see if this vterm id matches one registered for console.
         */
-       for (i=0; i < MAX_NR_HVC_CONSOLES; i++)
+       for (i = 0; i < MAX_NR_HVC_CONSOLES; i++)
                if (vtermnos[i] == hp->vtermno &&
                    cons_ops[i] == hp->ops)
                        break;
@@ -862,9 +862,13 @@ struct hvc_struct *hvc_alloc(uint32_t vtermno, int data,
                i = ++last_hvc;
 
        hp->index = i;
+       hvc_console.index = i;
+       vtermnos[i] = vtermno;
+       cons_ops[i] = ops;
 
        list_add_tail(&(hp->next), &hvc_structs);
        spin_unlock(&hvc_structs_lock);
+       register_console(&hvc_console);
 
        return hp;
 }
@@ -875,6 +879,7 @@ int hvc_remove(struct hvc_struct *hp)
        unsigned long flags;
        struct tty_struct *tty;
 
+       unregister_console(&hvc_console);
        spin_lock_irqsave(&hp->lock, flags);
        tty = tty_kref_get(hp->tty);