]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/char/istallion.c
[PATCH] rt2x00: Remove radio check from rt2x00lib_toggle_rx
[linux-2.6-omap-h63xx.git] / drivers / char / istallion.c
index a1755186f7b45d2a3f0b1de53ac7b1e56c917544..3c66f402f9d7b177bc42687ce08711184e45bc3a 100644 (file)
@@ -1753,9 +1753,6 @@ static void stli_settermios(struct tty_struct *tty, struct ktermios *old)
                return;
 
        tiosp = tty->termios;
-       if ((tiosp->c_cflag == old->c_cflag) &&
-           (tiosp->c_iflag == old->c_iflag))
-               return;
 
        stli_mkasyport(portp, &aport, tiosp);
        stli_cmdwait(brdp, portp, A_SETPORT, &aport, sizeof(asyport_t), 0);
@@ -2166,14 +2163,10 @@ static void __stli_sendcmd(struct stlibrd *brdp, struct stliport *portp, unsigne
        cdkhdr_t __iomem *hdrp;
        cdkctrl_t __iomem *cp;
        unsigned char __iomem *bits;
-       unsigned long flags;
-
-       spin_lock_irqsave(&brd_lock, flags);
 
        if (test_bit(ST_CMDING, &portp->state)) {
                printk(KERN_ERR "STALLION: command already busy, cmd=%x!\n",
                                (int) cmd);
-               spin_unlock_irqrestore(&brd_lock, flags);
                return;
        }
 
@@ -2194,7 +2187,6 @@ static void __stli_sendcmd(struct stlibrd *brdp, struct stliport *portp, unsigne
        writeb(readb(bits) | portp->portbit, bits);
        set_bit(ST_CMDING, &portp->state);
        EBRDDISABLE(brdp);
-       spin_unlock_irqrestore(&brd_lock, flags);
 }
 
 static void stli_sendcmd(struct stlibrd *brdp, struct stliport *portp, unsigned long cmd, void *arg, int size, int copyback)
@@ -2424,7 +2416,6 @@ static int stli_hostcmd(struct stlibrd *brdp, struct stliport *portp)
                        if (tty != NULL) {
                                tty_wakeup(tty);
                                EBRDENABLE(brdp);
-                               wake_up_interruptible(&tty->write_wait);
                        }
                }
 
@@ -2545,8 +2536,7 @@ static void stli_poll(unsigned long arg)
        struct stlibrd *brdp;
        unsigned int brdnr;
 
-       stli_timerlist.expires = STLI_TIMEOUT;
-       add_timer(&stli_timerlist);
+       mod_timer(&stli_timerlist, STLI_TIMEOUT);
 
 /*
  *     Check each board and do any servicing required.
@@ -3220,13 +3210,13 @@ static int stli_initecp(struct stlibrd *brdp)
                goto err;
        }
 
+       brdp->iosize = ECP_IOSIZE;
+
        if (!request_region(brdp->iobase, brdp->iosize, "istallion")) {
                retval = -EIO;
                goto err;
        }
 
-       brdp->iosize = ECP_IOSIZE;
-
 /*
  *     Based on the specific board type setup the common vars to access
  *     and enable shared memory. Set all board specific information now
@@ -3610,8 +3600,7 @@ stli_donestartup:
 
        if (! stli_timeron) {
                stli_timeron++;
-               stli_timerlist.expires = STLI_TIMEOUT;
-               add_timer(&stli_timerlist);
+               mod_timer(&stli_timerlist, STLI_TIMEOUT);
        }
 
        return rc;
@@ -3846,6 +3835,10 @@ static int stli_findeisabrds(void)
 
                stli_brds[brdp->brdnr] = brdp;
                found++;
+
+               for (i = 0; i < brdp->nrports; i++)
+                       tty_register_device(stli_serial,
+                                       brdp->brdnr * STL_MAXPORTS + i, NULL);
        }
 
        return found;
@@ -3872,6 +3865,7 @@ static int __devinit stli_pciprobe(struct pci_dev *pdev,
                const struct pci_device_id *ent)
 {
        struct stlibrd *brdp;
+       unsigned int i;
        int brdnr, retval = -EIO;
 
        retval = pci_enable_device(pdev);
@@ -3912,6 +3906,10 @@ static int __devinit stli_pciprobe(struct pci_dev *pdev,
        brdp->enable = NULL;
        brdp->disable = NULL;
 
+       for (i = 0; i < brdp->nrports; i++)
+               tty_register_device(stli_serial, brdp->brdnr * STL_MAXPORTS + i,
+                               &pdev->dev);
+
        return 0;
 err_null:
        stli_brds[brdp->brdnr] = NULL;
@@ -3992,6 +3990,10 @@ static int stli_initbrds(void)
                }
                stli_brds[brdp->brdnr] = brdp;
                found++;
+
+               for (i = 0; i < brdp->nrports; i++)
+                       tty_register_device(stli_serial,
+                                       brdp->brdnr * STL_MAXPORTS + i, NULL);
        }
 
        retval = stli_findeisabrds();
@@ -4596,7 +4598,7 @@ static int __init istallion_module_init(void)
        stli_serial->type = TTY_DRIVER_TYPE_SERIAL;
        stli_serial->subtype = SERIAL_TYPE_NORMAL;
        stli_serial->init_termios = stli_deftermios;
-       stli_serial->flags = TTY_DRIVER_REAL_RAW;
+       stli_serial->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV;
        tty_set_operations(stli_serial, &stli_ops);
 
        retval = tty_register_driver(stli_serial);