]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/char/istallion.c
[PATCH] bcm43xx: Drain TX status before starting IRQs
[linux-2.6-omap-h63xx.git] / drivers / char / istallion.c
index c74e5660a9b7e244607007b1af933665348d97e7..ffdf9df1a67a3cb92a48bd5ce53596a69bc4fde4 100644 (file)
@@ -26,7 +26,6 @@
 
 /*****************************************************************************/
 
-#include <linux/config.h>
 #include <linux/module.h>
 #include <linux/slab.h>
 #include <linux/interrupt.h>
@@ -282,7 +281,6 @@ static char *stli_brdnames[] = {
 
 /*****************************************************************************/
 
-#ifdef MODULE
 /*
  *     Define some string labels for arguments passed from the module
  *     load line. These allow for easy board definitions, and easy
@@ -381,8 +379,6 @@ MODULE_PARM_DESC(board2, "Board 2 config -> name[,ioaddr[,memaddr]");
 module_param_array(board3, charp, NULL, 0);
 MODULE_PARM_DESC(board3, "Board 3 config -> name[,ioaddr[,memaddr]");
 
-#endif
-
 /*
  *     Set up a default memory address table for EISA board probing.
  *     The default addresses are all bellow 1Mbyte, which has to be the
@@ -616,16 +612,6 @@ MODULE_DEVICE_TABLE(pci, istallion_pci_tbl);
 #define        MINOR2BRD(min)          (((min) & 0xc0) >> 6)
 #define        MINOR2PORT(min)         ((min) & 0x3f)
 
-/*
- *     Define a baud rate table that converts termios baud rate selector
- *     into the actual baud rate value. All baud rate calculations are based
- *     on the actual baud rate required.
- */
-static unsigned int    stli_baudrates[] = {
-       0, 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800,
-       9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600
-};
-
 /*****************************************************************************/
 
 /*
@@ -643,14 +629,8 @@ static unsigned int        stli_baudrates[] = {
  *     Prototype all functions in this driver!
  */
 
-#ifdef MODULE
-static void    stli_argbrds(void);
 static int     stli_parsebrd(stlconf_t *confp, char **argp);
-
-static unsigned long   stli_atol(char *str);
-#endif
-
-int            stli_init(void);
+static int     stli_init(void);
 static int     stli_open(struct tty_struct *tty, struct file *filp);
 static void    stli_close(struct tty_struct *tty, struct file *filp);
 static int     stli_write(struct tty_struct *tty, const unsigned char *buf, int count);
@@ -706,37 +686,37 @@ static stlibrd_t *stli_allocbrd(void);
 static void    stli_ecpinit(stlibrd_t *brdp);
 static void    stli_ecpenable(stlibrd_t *brdp);
 static void    stli_ecpdisable(stlibrd_t *brdp);
-static char    *stli_ecpgetmemptr(stlibrd_t *brdp, unsigned long offset, int line);
+static void __iomem *stli_ecpgetmemptr(stlibrd_t *brdp, unsigned long offset, int line);
 static void    stli_ecpreset(stlibrd_t *brdp);
 static void    stli_ecpintr(stlibrd_t *brdp);
 static void    stli_ecpeiinit(stlibrd_t *brdp);
 static void    stli_ecpeienable(stlibrd_t *brdp);
 static void    stli_ecpeidisable(stlibrd_t *brdp);
-static char    *stli_ecpeigetmemptr(stlibrd_t *brdp, unsigned long offset, int line);
+static void __iomem *stli_ecpeigetmemptr(stlibrd_t *brdp, unsigned long offset, int line);
 static void    stli_ecpeireset(stlibrd_t *brdp);
 static void    stli_ecpmcenable(stlibrd_t *brdp);
 static void    stli_ecpmcdisable(stlibrd_t *brdp);
-static char    *stli_ecpmcgetmemptr(stlibrd_t *brdp, unsigned long offset, int line);
+static void __iomem *stli_ecpmcgetmemptr(stlibrd_t *brdp, unsigned long offset, int line);
 static void    stli_ecpmcreset(stlibrd_t *brdp);
 static void    stli_ecppciinit(stlibrd_t *brdp);
-static char    *stli_ecppcigetmemptr(stlibrd_t *brdp, unsigned long offset, int line);
+static void __iomem *stli_ecppcigetmemptr(stlibrd_t *brdp, unsigned long offset, int line);
 static void    stli_ecppcireset(stlibrd_t *brdp);
 
 static void    stli_onbinit(stlibrd_t *brdp);
 static void    stli_onbenable(stlibrd_t *brdp);
 static void    stli_onbdisable(stlibrd_t *brdp);
-static char    *stli_onbgetmemptr(stlibrd_t *brdp, unsigned long offset, int line);
+static void __iomem *stli_onbgetmemptr(stlibrd_t *brdp, unsigned long offset, int line);
 static void    stli_onbreset(stlibrd_t *brdp);
 static void    stli_onbeinit(stlibrd_t *brdp);
 static void    stli_onbeenable(stlibrd_t *brdp);
 static void    stli_onbedisable(stlibrd_t *brdp);
-static char    *stli_onbegetmemptr(stlibrd_t *brdp, unsigned long offset, int line);
+static void __iomem *stli_onbegetmemptr(stlibrd_t *brdp, unsigned long offset, int line);
 static void    stli_onbereset(stlibrd_t *brdp);
 static void    stli_bbyinit(stlibrd_t *brdp);
-static char    *stli_bbygetmemptr(stlibrd_t *brdp, unsigned long offset, int line);
+static void __iomem *stli_bbygetmemptr(stlibrd_t *brdp, unsigned long offset, int line);
 static void    stli_bbyreset(stlibrd_t *brdp);
 static void    stli_stalinit(stlibrd_t *brdp);
-static char    *stli_stalgetmemptr(stlibrd_t *brdp, unsigned long offset, int line);
+static void __iomem *stli_stalgetmemptr(stlibrd_t *brdp, unsigned long offset, int line);
 static void    stli_stalreset(stlibrd_t *brdp);
 
 static stliport_t *stli_getport(int brdnr, int panelnr, int portnr);
@@ -758,7 +738,7 @@ static int  stli_initpcibrd(int brdtype, struct pci_dev *devp);
  *     will give access to the shared memory on the Stallion intelligent
  *     board. This is also a very useful debugging tool.
  */
-static struct file_operations  stli_fsiomem = {
+static const struct file_operations    stli_fsiomem = {
        .owner          = THIS_MODULE,
        .read           = stli_memread,
        .write          = stli_memwrite,
@@ -786,8 +766,6 @@ static int  stli_timeron;
 
 static struct class *istallion_class;
 
-#ifdef MODULE
-
 /*
  *     Loadable module initialization stuff.
  */
@@ -954,8 +932,6 @@ static int stli_parsebrd(stlconf_t *confp, char **argp)
        return(1);
 }
 
-#endif
-
 /*****************************************************************************/
 
 static int stli_open(struct tty_struct *tty, struct file *filp)
@@ -1590,7 +1566,7 @@ static void stli_flushchars(struct tty_struct *tty)
 
        len = MIN(len, cooksize);
        count = 0;
-       shbuf = (char *) EBRDGETMEMPTR(brdp, portp->txoffset);
+       shbuf = EBRDGETMEMPTR(brdp, portp->txoffset);
        buf = stli_txcookbuf;
 
        while (len > 0) {
@@ -2761,15 +2737,7 @@ static void stli_mkasyport(stliport_t *portp, asyport_t *pp, struct termios *tio
 /*
  *     Start of by setting the baud, char size, parity and stop bit info.
  */
-       pp->baudout = tiosp->c_cflag & CBAUD;
-       if (pp->baudout & CBAUDEX) {
-               pp->baudout &= ~CBAUDEX;
-               if ((pp->baudout < 1) || (pp->baudout > 4))
-                       tiosp->c_cflag &= ~CBAUDEX;
-               else
-                       pp->baudout += 15;
-       }
-       pp->baudout = stli_baudrates[pp->baudout];
+       pp->baudout = tty_get_baud_rate(portp->tty);
        if ((tiosp->c_cflag & CBAUD) == B38400) {
                if ((portp->flags & ASYNC_SPD_MASK) == ASYNC_SPD_HI)
                        pp->baudout = 57600;
@@ -2980,9 +2948,9 @@ static void stli_ecpdisable(stlibrd_t *brdp)
 
 /*****************************************************************************/
 
-static char *stli_ecpgetmemptr(stlibrd_t *brdp, unsigned long offset, int line)
+static void __iomem *stli_ecpgetmemptr(stlibrd_t *brdp, unsigned long offset, int line)
 {      
-       void *ptr;
+       void __iomem *ptr;
        unsigned char val;
 
        if (offset > brdp->memsize) {
@@ -3054,9 +3022,9 @@ static void stli_ecpeidisable(stlibrd_t *brdp)
 
 /*****************************************************************************/
 
-static char *stli_ecpeigetmemptr(stlibrd_t *brdp, unsigned long offset, int line)
+static void __iomem *stli_ecpeigetmemptr(stlibrd_t *brdp, unsigned long offset, int line)
 {      
-       void            *ptr;
+       void __iomem *ptr;
        unsigned char   val;
 
        if (offset > brdp->memsize) {
@@ -3106,9 +3074,9 @@ static void stli_ecpmcdisable(stlibrd_t *brdp)
 
 /*****************************************************************************/
 
-static char *stli_ecpmcgetmemptr(stlibrd_t *brdp, unsigned long offset, int line)
+static void __iomem *stli_ecpmcgetmemptr(stlibrd_t *brdp, unsigned long offset, int line)
 {      
-       void *ptr;
+       void __iomem *ptr;
        unsigned char val;
 
        if (offset > brdp->memsize) {
@@ -3151,9 +3119,9 @@ static void stli_ecppciinit(stlibrd_t *brdp)
 
 /*****************************************************************************/
 
-static char *stli_ecppcigetmemptr(stlibrd_t *brdp, unsigned long offset, int line)
+static void __iomem *stli_ecppcigetmemptr(stlibrd_t *brdp, unsigned long offset, int line)
 {      
-       void            *ptr;
+       void __iomem *ptr;
        unsigned char   val;
 
        if (offset > brdp->memsize) {
@@ -3217,9 +3185,9 @@ static void stli_onbdisable(stlibrd_t *brdp)
 
 /*****************************************************************************/
 
-static char *stli_onbgetmemptr(stlibrd_t *brdp, unsigned long offset, int line)
+static void __iomem *stli_onbgetmemptr(stlibrd_t *brdp, unsigned long offset, int line)
 {      
-       void    *ptr;
+       void __iomem *ptr;
 
        if (offset > brdp->memsize) {
                printk(KERN_ERR "STALLION: shared memory pointer=%x out of "
@@ -3282,9 +3250,9 @@ static void stli_onbedisable(stlibrd_t *brdp)
 
 /*****************************************************************************/
 
-static char *stli_onbegetmemptr(stlibrd_t *brdp, unsigned long offset, int line)
+static void __iomem *stli_onbegetmemptr(stlibrd_t *brdp, unsigned long offset, int line)
 {      
-       void *ptr;
+       void __iomem *ptr;
        unsigned char val;
 
        if (offset > brdp->memsize) {
@@ -3332,9 +3300,9 @@ static void stli_bbyinit(stlibrd_t *brdp)
 
 /*****************************************************************************/
 
-static char *stli_bbygetmemptr(stlibrd_t *brdp, unsigned long offset, int line)
+static void __iomem *stli_bbygetmemptr(stlibrd_t *brdp, unsigned long offset, int line)
 {      
-       void *ptr;
+       void __iomem *ptr;
        unsigned char val;
 
        BUG_ON(offset > brdp->memsize);
@@ -3369,7 +3337,7 @@ static void stli_stalinit(stlibrd_t *brdp)
 
 /*****************************************************************************/
 
-static char *stli_stalgetmemptr(stlibrd_t *brdp, unsigned long offset, int line)
+static void __iomem *stli_stalgetmemptr(stlibrd_t *brdp, unsigned long offset, int line)
 {      
        BUG_ON(offset > brdp->memsize);
        return brdp->membase + (offset % STAL_PAGESIZE);
@@ -3502,7 +3470,7 @@ static int stli_initecp(stlibrd_t *brdp)
  */
        EBRDENABLE(brdp);
        sigsp = (cdkecpsig_t __iomem *) EBRDGETMEMPTR(brdp, CDK_SIGADDR);
-       memcpy(&sig, sigsp, sizeof(cdkecpsig_t));
+       memcpy_fromio(&sig, sigsp, sizeof(cdkecpsig_t));
        EBRDDISABLE(brdp);
 
        if (sig.magic != cpu_to_le32(ECP_MAGIC))
@@ -3908,7 +3876,7 @@ static int stli_eisamemprobe(stlibrd_t *brdp)
                        continue;
 
                if (brdp->brdtype == BRD_ECPE) {
-                       ecpsigp = (cdkecpsig_t __iomem *) stli_ecpeigetmemptr(brdp,
+                       ecpsigp = stli_ecpeigetmemptr(brdp,
                                CDK_SIGADDR, __LINE__);
                        memcpy_fromio(&ecpsig, ecpsigp, sizeof(cdkecpsig_t));
                        if (ecpsig.magic == cpu_to_le32(ECP_MAGIC))
@@ -4216,7 +4184,7 @@ static int stli_initbrds(void)
 static ssize_t stli_memread(struct file *fp, char __user *buf, size_t count, loff_t *offp)
 {
        unsigned long flags;
-       void *memptr;
+       void __iomem *memptr;
        stlibrd_t *brdp;
        int brdnr, size, n;
        void *p;
@@ -4246,7 +4214,7 @@ static ssize_t stli_memread(struct file *fp, char __user *buf, size_t count, lof
        while (size > 0) {
                spin_lock_irqsave(&brd_lock, flags);
                EBRDENABLE(brdp);
-               memptr = (void *) EBRDGETMEMPTR(brdp, off);
+               memptr = EBRDGETMEMPTR(brdp, off);
                n = MIN(size, (brdp->pagesize - (((unsigned long) off) % brdp->pagesize)));
                n = MIN(n, PAGE_SIZE);
                memcpy_fromio(p, memptr, n);
@@ -4279,7 +4247,7 @@ out:
 static ssize_t stli_memwrite(struct file *fp, const char __user *buf, size_t count, loff_t *offp)
 {
        unsigned long flags;
-       void *memptr;
+       void __iomem *memptr;
        stlibrd_t *brdp;
        char __user *chbuf;
        int brdnr, size, n;
@@ -4319,7 +4287,7 @@ static ssize_t stli_memwrite(struct file *fp, const char __user *buf, size_t cou
                }
                spin_lock_irqsave(&brd_lock, flags);
                EBRDENABLE(brdp);
-               memptr = (void *) EBRDGETMEMPTR(brdp, off);
+               memptr = EBRDGETMEMPTR(brdp, off);
                memcpy_toio(memptr, p, n);
                EBRDDISABLE(brdp);
                spin_unlock_irqrestore(&brd_lock, flags);
@@ -4668,7 +4636,7 @@ static int stli_memioctl(struct inode *ip, struct file *fp, unsigned int cmd, un
        return rc;
 }
 
-static struct tty_operations stli_ops = {
+static const struct tty_operations stli_ops = {
        .open = stli_open,
        .close = stli_close,
        .write = stli_write,
@@ -4694,7 +4662,7 @@ static struct tty_operations stli_ops = {
 
 /*****************************************************************************/
 
-int __init stli_init(void)
+static int __init stli_init(void)
 {
        int i;
        printk(KERN_INFO "%s: version %s\n", stli_drvtitle, stli_drvversion);