]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/char/hvsi.c
[PATCH] ip2: use newer pci_get functions
[linux-2.6-omap-h63xx.git] / drivers / char / hvsi.c
index 56612a2dca6be14d2cf05d84552f6a1f2a1c538c..a89a95fb5e40fb76b766c8b50483bd435ac2bd5e 100644 (file)
@@ -311,7 +311,8 @@ static void hvsi_recv_control(struct hvsi_struct *hp, uint8_t *packet,
                                /* CD went away; no more connection */
                                pr_debug("hvsi%i: CD dropped\n", hp->index);
                                hp->mctrl &= TIOCM_CD;
-                               if (!(hp->tty->flags & CLOCAL))
+                               /* If userland hasn't done an open(2) yet, hp->tty is NULL. */
+                               if (hp->tty && !(hp->tty->flags & CLOCAL))
                                        *to_hangup = hp->tty;
                        }
                        break;
@@ -986,10 +987,7 @@ static void hvsi_write_worker(void *arg)
                start_j = 0;
 #endif /* DEBUG */
                wake_up_all(&hp->emptyq);
-               if (test_bit(TTY_DO_WRITE_WAKEUP, &hp->tty->flags)
-                               && hp->tty->ldisc.write_wakeup)
-                       hp->tty->ldisc.write_wakeup(hp->tty);
-               wake_up_interruptible(&hp->tty->write_wait);
+               tty_wakeup(hp->tty);
        }
 
 out:
@@ -1276,11 +1274,10 @@ static int __init hvsi_console_init(void)
                        vty != NULL;
                        vty = of_find_compatible_node(vty, "serial", "hvterm-protocol")) {
                struct hvsi_struct *hp;
-               uint32_t *vtermno;
-               uint32_t *irq;
+               const uint32_t *vtermno, *irq;
 
-               vtermno = (uint32_t *)get_property(vty, "reg", NULL);
-               irq = (uint32_t *)get_property(vty, "interrupts", NULL);
+               vtermno = get_property(vty, "reg", NULL);
+               irq = get_property(vty, "interrupts", NULL);
                if (!vtermno || !irq)
                        continue;
 
@@ -1299,7 +1296,7 @@ static int __init hvsi_console_init(void)
                hp->inbuf_end = hp->inbuf;
                hp->state = HVSI_CLOSED;
                hp->vtermno = *vtermno;
-               hp->virq = irq_create_mapping(NULL, irq[0], 0);
+               hp->virq = irq_create_mapping(NULL, irq[0]);
                if (hp->virq == NO_IRQ) {
                        printk(KERN_ERR "%s: couldn't create irq mapping for 0x%x\n",
                                __FUNCTION__, irq[0]);