Commit a3f8d9d5 authored by Jiri Slaby's avatar Jiri Slaby Committed by Linus Torvalds

[PATCH] Char: istallion, remove the mess

- remove unneeded license text
- remove functions, that are implemented in kernel -- call them (strtoul,
  min, tolower)
- do not cast NULL
- there is no static table, throw away code, which takes care of it --
  find module param cards in that place instead.
Signed-off-by: default avatarJiri Slaby <jirislaby@gmail.com>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 845bead4
...@@ -14,14 +14,6 @@ ...@@ -14,14 +14,6 @@
* the Free Software Foundation; either version 2 of the License, or * the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/ */
/*****************************************************************************/ /*****************************************************************************/
...@@ -41,6 +33,7 @@ ...@@ -41,6 +33,7 @@
#include <linux/device.h> #include <linux/device.h>
#include <linux/wait.h> #include <linux/wait.h>
#include <linux/eisa.h> #include <linux/eisa.h>
#include <linux/ctype.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/uaccess.h> #include <asm/uaccess.h>
...@@ -61,21 +54,10 @@ ...@@ -61,21 +54,10 @@
#define BRD_BRUMBY4 2 #define BRD_BRUMBY4 2
#define BRD_ONBOARD2 3 #define BRD_ONBOARD2 3
#define BRD_ONBOARD 4 #define BRD_ONBOARD 4
#define BRD_BRUMBY8 5
#define BRD_BRUMBY16 6
#define BRD_ONBOARDE 7 #define BRD_ONBOARDE 7
#define BRD_ONBOARD32 9
#define BRD_ONBOARD2_32 10
#define BRD_ONBOARDRS 11
#define BRD_EASYIO 20
#define BRD_ECH 21
#define BRD_ECHMC 22
#define BRD_ECP 23 #define BRD_ECP 23
#define BRD_ECPE 24 #define BRD_ECPE 24
#define BRD_ECPMC 25 #define BRD_ECPMC 25
#define BRD_ECHPCI 26
#define BRD_ECH64PCI 27
#define BRD_EASYIOPCI 28
#define BRD_ECPPCI 29 #define BRD_ECPPCI 29
#define BRD_BRUMBY BRD_BRUMBY4 #define BRD_BRUMBY BRD_BRUMBY4
...@@ -128,11 +110,7 @@ typedef struct { ...@@ -128,11 +110,7 @@ typedef struct {
int irqtype; int irqtype;
} stlconf_t; } stlconf_t;
static stlconf_t stli_brdconf[] = { static int stli_nrbrds;
/*{ BRD_ECP, 0x2a0, 0, 0xcc000, 0, 0 },*/
};
static int stli_nrbrds = ARRAY_SIZE(stli_brdconf);
/* stli_lock must NOT be taken holding brd_lock */ /* stli_lock must NOT be taken holding brd_lock */
static spinlock_t stli_lock; /* TTY logic lock */ static spinlock_t stli_lock; /* TTY logic lock */
...@@ -257,18 +235,18 @@ static char *stli_brdnames[] = { ...@@ -257,18 +235,18 @@ static char *stli_brdnames[] = {
"Brumby", "Brumby",
"Brumby", "Brumby",
"ONboard-EI", "ONboard-EI",
(char *) NULL, NULL,
"ONboard", "ONboard",
"ONboard-MC", "ONboard-MC",
"ONboard-MC", "ONboard-MC",
(char *) NULL, NULL,
(char *) NULL, NULL,
(char *) NULL, NULL,
(char *) NULL, NULL,
(char *) NULL, NULL,
(char *) NULL, NULL,
(char *) NULL, NULL,
(char *) NULL, NULL,
"EasyIO", "EasyIO",
"EC8/32-AT", "EC8/32-AT",
"EC8/32-MC", "EC8/32-MC",
...@@ -402,9 +380,6 @@ static int stli_eisamempsize = ARRAY_SIZE(stli_eisamemprobeaddrs); ...@@ -402,9 +380,6 @@ static int stli_eisamempsize = ARRAY_SIZE(stli_eisamemprobeaddrs);
/* /*
* Define the Stallion PCI vendor and device IDs. * Define the Stallion PCI vendor and device IDs.
*/ */
#ifndef PCI_VENDOR_ID_STALLION
#define PCI_VENDOR_ID_STALLION 0x124d
#endif
#ifndef PCI_DEVICE_ID_ECRA #ifndef PCI_DEVICE_ID_ECRA
#define PCI_DEVICE_ID_ECRA 0x0004 #define PCI_DEVICE_ID_ECRA 0x0004
#endif #endif
...@@ -615,17 +590,6 @@ static struct pci_driver stli_pcidriver; ...@@ -615,17 +590,6 @@ static struct pci_driver stli_pcidriver;
/*****************************************************************************/ /*****************************************************************************/
/*
* Define some handy local macros...
*/
#undef MIN
#define MIN(a,b) (((a) <= (b)) ? (a) : (b))
#undef TOLOWER
#define TOLOWER(x) ((((x) >= 'A') && ((x) <= 'Z')) ? ((x) + 0x20) : (x))
/*****************************************************************************/
/* /*
* Prototype all functions in this driver! * Prototype all functions in this driver!
*/ */
...@@ -843,69 +807,6 @@ module_exit(istallion_module_exit); ...@@ -843,69 +807,6 @@ module_exit(istallion_module_exit);
/*****************************************************************************/ /*****************************************************************************/
/*
* Check for any arguments passed in on the module load command line.
*/
static void stli_argbrds(void)
{
stlconf_t conf;
stlibrd_t *brdp;
int i;
for (i = stli_nrbrds; i < ARRAY_SIZE(stli_brdsp); i++) {
memset(&conf, 0, sizeof(conf));
if (stli_parsebrd(&conf, stli_brdsp[i]) == 0)
continue;
if ((brdp = stli_allocbrd()) == NULL)
continue;
stli_nrbrds = i + 1;
brdp->brdnr = i;
brdp->brdtype = conf.brdtype;
brdp->iobase = conf.ioaddr1;
brdp->memaddr = conf.memaddr;
stli_brdinit(brdp);
}
}
/*****************************************************************************/
/*
* Convert an ascii string number into an unsigned long.
*/
static unsigned long stli_atol(char *str)
{
unsigned long val;
int base, c;
char *sp;
val = 0;
sp = str;
if ((*sp == '0') && (*(sp+1) == 'x')) {
base = 16;
sp += 2;
} else if (*sp == '0') {
base = 8;
sp++;
} else {
base = 10;
}
for (; (*sp != 0); sp++) {
c = (*sp > '9') ? (TOLOWER(*sp) - 'a' + 10) : (*sp - '0');
if ((c < 0) || (c >= base)) {
printk("STALLION: invalid argument %s\n", str);
val = 0;
break;
}
val = (val * base) + c;
}
return(val);
}
/*****************************************************************************/
/* /*
* Parse the supplied argument string, into the board conf struct. * Parse the supplied argument string, into the board conf struct.
*/ */
...@@ -919,7 +820,7 @@ static int stli_parsebrd(stlconf_t *confp, char **argp) ...@@ -919,7 +820,7 @@ static int stli_parsebrd(stlconf_t *confp, char **argp)
return 0; return 0;
for (sp = argp[0], i = 0; ((*sp != 0) && (i < 25)); sp++, i++) for (sp = argp[0], i = 0; ((*sp != 0) && (i < 25)); sp++, i++)
*sp = TOLOWER(*sp); *sp = tolower(*sp);
for (i = 0; i < ARRAY_SIZE(stli_brdstr); i++) { for (i = 0; i < ARRAY_SIZE(stli_brdstr); i++) {
if (strcmp(stli_brdstr[i].name, argp[0]) == 0) if (strcmp(stli_brdstr[i].name, argp[0]) == 0)
...@@ -932,9 +833,9 @@ static int stli_parsebrd(stlconf_t *confp, char **argp) ...@@ -932,9 +833,9 @@ static int stli_parsebrd(stlconf_t *confp, char **argp)
confp->brdtype = stli_brdstr[i].type; confp->brdtype = stli_brdstr[i].type;
if (argp[1] != NULL && *argp[1] != 0) if (argp[1] != NULL && *argp[1] != 0)
confp->ioaddr1 = stli_atol(argp[1]); confp->ioaddr1 = simple_strtoul(argp[1], NULL, 0);
if (argp[2] != NULL && *argp[2] != 0) if (argp[2] != NULL && *argp[2] != 0)
confp->memaddr = stli_atol(argp[2]); confp->memaddr = simple_strtoul(argp[2], NULL, 0);
return(1); return(1);
} }
...@@ -1451,12 +1352,12 @@ static int stli_write(struct tty_struct *tty, const unsigned char *buf, int coun ...@@ -1451,12 +1352,12 @@ static int stli_write(struct tty_struct *tty, const unsigned char *buf, int coun
stlen = len; stlen = len;
} }
len = MIN(len, count); len = min(len, (unsigned int)count);
count = 0; count = 0;
shbuf = (char __iomem *) EBRDGETMEMPTR(brdp, portp->txoffset); shbuf = (char __iomem *) EBRDGETMEMPTR(brdp, portp->txoffset);
while (len > 0) { while (len > 0) {
stlen = MIN(len, stlen); stlen = min(len, stlen);
memcpy_toio(shbuf + head, chbuf, stlen); memcpy_toio(shbuf + head, chbuf, stlen);
chbuf += stlen; chbuf += stlen;
len -= stlen; len -= stlen;
...@@ -1570,13 +1471,13 @@ static void stli_flushchars(struct tty_struct *tty) ...@@ -1570,13 +1471,13 @@ static void stli_flushchars(struct tty_struct *tty)
stlen = len; stlen = len;
} }
len = MIN(len, cooksize); len = min(len, cooksize);
count = 0; count = 0;
shbuf = EBRDGETMEMPTR(brdp, portp->txoffset); shbuf = EBRDGETMEMPTR(brdp, portp->txoffset);
buf = stli_txcookbuf; buf = stli_txcookbuf;
while (len > 0) { while (len > 0) {
stlen = MIN(len, stlen); stlen = min(len, stlen);
memcpy_toio(shbuf + head, buf, stlen); memcpy_toio(shbuf + head, buf, stlen);
buf += stlen; buf += stlen;
len -= stlen; len -= stlen;
...@@ -2412,7 +2313,7 @@ static void stli_read(stlibrd_t *brdp, stliport_t *portp) ...@@ -2412,7 +2313,7 @@ static void stli_read(stlibrd_t *brdp, stliport_t *portp)
while (len > 0) { while (len > 0) {
unsigned char *cptr; unsigned char *cptr;
stlen = MIN(len, stlen); stlen = min(len, stlen);
tty_prepare_flip_string(tty, &cptr, stlen); tty_prepare_flip_string(tty, &cptr, stlen);
memcpy_fromio(cptr, shbuf + tail, stlen); memcpy_fromio(cptr, shbuf + tail, stlen);
len -= stlen; len -= stlen;
...@@ -3394,7 +3295,6 @@ static int stli_initecp(stlibrd_t *brdp) ...@@ -3394,7 +3295,6 @@ static int stli_initecp(stlibrd_t *brdp)
*/ */
switch (brdp->brdtype) { switch (brdp->brdtype) {
case BRD_ECP: case BRD_ECP:
brdp->membase = (void *) brdp->memaddr;
brdp->memsize = ECP_MEMSIZE; brdp->memsize = ECP_MEMSIZE;
brdp->pagesize = ECP_ATPAGESIZE; brdp->pagesize = ECP_ATPAGESIZE;
brdp->init = stli_ecpinit; brdp->init = stli_ecpinit;
...@@ -3408,7 +3308,6 @@ static int stli_initecp(stlibrd_t *brdp) ...@@ -3408,7 +3308,6 @@ static int stli_initecp(stlibrd_t *brdp)
break; break;
case BRD_ECPE: case BRD_ECPE:
brdp->membase = (void *) brdp->memaddr;
brdp->memsize = ECP_MEMSIZE; brdp->memsize = ECP_MEMSIZE;
brdp->pagesize = ECP_EIPAGESIZE; brdp->pagesize = ECP_EIPAGESIZE;
brdp->init = stli_ecpeiinit; brdp->init = stli_ecpeiinit;
...@@ -3422,7 +3321,6 @@ static int stli_initecp(stlibrd_t *brdp) ...@@ -3422,7 +3321,6 @@ static int stli_initecp(stlibrd_t *brdp)
break; break;
case BRD_ECPMC: case BRD_ECPMC:
brdp->membase = (void *) brdp->memaddr;
brdp->memsize = ECP_MEMSIZE; brdp->memsize = ECP_MEMSIZE;
brdp->pagesize = ECP_MCPAGESIZE; brdp->pagesize = ECP_MCPAGESIZE;
brdp->init = NULL; brdp->init = NULL;
...@@ -3436,7 +3334,6 @@ static int stli_initecp(stlibrd_t *brdp) ...@@ -3436,7 +3334,6 @@ static int stli_initecp(stlibrd_t *brdp)
break; break;
case BRD_ECPPCI: case BRD_ECPPCI:
brdp->membase = (void *) brdp->memaddr;
brdp->memsize = ECP_PCIMEMSIZE; brdp->memsize = ECP_PCIMEMSIZE;
brdp->pagesize = ECP_PCIPAGESIZE; brdp->pagesize = ECP_PCIPAGESIZE;
brdp->init = stli_ecppciinit; brdp->init = stli_ecppciinit;
...@@ -3543,10 +3440,7 @@ static int stli_initonb(stlibrd_t *brdp) ...@@ -3543,10 +3440,7 @@ static int stli_initonb(stlibrd_t *brdp)
*/ */
switch (brdp->brdtype) { switch (brdp->brdtype) {
case BRD_ONBOARD: case BRD_ONBOARD:
case BRD_ONBOARD32:
case BRD_ONBOARD2: case BRD_ONBOARD2:
case BRD_ONBOARD2_32:
case BRD_ONBOARDRS:
brdp->memsize = ONB_MEMSIZE; brdp->memsize = ONB_MEMSIZE;
brdp->pagesize = ONB_ATPAGESIZE; brdp->pagesize = ONB_ATPAGESIZE;
brdp->init = stli_onbinit; brdp->init = stli_onbinit;
...@@ -3577,8 +3471,6 @@ static int stli_initonb(stlibrd_t *brdp) ...@@ -3577,8 +3471,6 @@ static int stli_initonb(stlibrd_t *brdp)
break; break;
case BRD_BRUMBY4: case BRD_BRUMBY4:
case BRD_BRUMBY8:
case BRD_BRUMBY16:
brdp->memsize = BBY_MEMSIZE; brdp->memsize = BBY_MEMSIZE;
brdp->pagesize = BBY_PAGESIZE; brdp->pagesize = BBY_PAGESIZE;
brdp->init = stli_bbyinit; brdp->init = stli_bbyinit;
...@@ -3795,22 +3687,10 @@ static int __devinit stli_brdinit(stlibrd_t *brdp) ...@@ -3795,22 +3687,10 @@ static int __devinit stli_brdinit(stlibrd_t *brdp)
case BRD_ONBOARD: case BRD_ONBOARD:
case BRD_ONBOARDE: case BRD_ONBOARDE:
case BRD_ONBOARD2: case BRD_ONBOARD2:
case BRD_ONBOARD32:
case BRD_ONBOARD2_32:
case BRD_ONBOARDRS:
case BRD_BRUMBY4: case BRD_BRUMBY4:
case BRD_BRUMBY8:
case BRD_BRUMBY16:
case BRD_STALLION: case BRD_STALLION:
stli_initonb(brdp); stli_initonb(brdp);
break; break;
case BRD_EASYIO:
case BRD_ECH:
case BRD_ECHMC:
case BRD_ECHPCI:
printk(KERN_ERR "STALLION: %s board type not supported in "
"this driver\n", stli_brdnames[brdp->brdtype]);
return -ENODEV;
default: default:
printk(KERN_ERR "STALLION: board=%d is unknown board " printk(KERN_ERR "STALLION: board=%d is unknown board "
"type=%d\n", brdp->brdnr, brdp->brdtype); "type=%d\n", brdp->brdnr, brdp->brdtype);
...@@ -4119,37 +3999,23 @@ static stlibrd_t *stli_allocbrd(void) ...@@ -4119,37 +3999,23 @@ static stlibrd_t *stli_allocbrd(void)
static int stli_initbrds(void) static int stli_initbrds(void)
{ {
stlibrd_t *brdp, *nxtbrdp; stlibrd_t *brdp, *nxtbrdp;
stlconf_t *confp; stlconf_t conf;
int i, j, retval; int i, j, retval;
if (stli_nrbrds > STL_MAXBRDS) { for (stli_nrbrds = 0; stli_nrbrds < ARRAY_SIZE(stli_brdsp);
printk(KERN_INFO "STALLION: too many boards in configuration " stli_nrbrds++) {
"table, truncating to %d\n", STL_MAXBRDS); memset(&conf, 0, sizeof(conf));
stli_nrbrds = STL_MAXBRDS; if (stli_parsebrd(&conf, stli_brdsp[stli_nrbrds]) == 0)
} continue;
/*
* Firstly scan the list of static boards configured. Allocate
* resources and initialize the boards as found. If this is a
* module then let the module args override static configuration.
*/
for (i = 0; (i < stli_nrbrds); i++) {
confp = &stli_brdconf[i];
stli_parsebrd(confp, stli_brdsp[i]);
if ((brdp = stli_allocbrd()) == NULL) if ((brdp = stli_allocbrd()) == NULL)
return -ENOMEM; continue;
brdp->brdnr = i; brdp->brdnr = stli_nrbrds;
brdp->brdtype = confp->brdtype; brdp->brdtype = conf.brdtype;
brdp->iobase = confp->ioaddr1; brdp->iobase = conf.ioaddr1;
brdp->memaddr = confp->memaddr; brdp->memaddr = conf.memaddr;
stli_brdinit(brdp); stli_brdinit(brdp);
} }
/*
* Static configuration table done, so now use dynamic methods to
* see if any more boards should be configured.
*/
stli_argbrds();
if (STLI_EISAPROBE) if (STLI_EISAPROBE)
stli_findeisabrds(); stli_findeisabrds();
...@@ -4225,7 +4091,7 @@ static ssize_t stli_memread(struct file *fp, char __user *buf, size_t count, lof ...@@ -4225,7 +4091,7 @@ static ssize_t stli_memread(struct file *fp, char __user *buf, size_t count, lof
if (off >= brdp->memsize || off + count < off) if (off >= brdp->memsize || off + count < off)
return 0; return 0;
size = MIN(count, (brdp->memsize - off)); size = min(count, (size_t)(brdp->memsize - off));
/* /*
* Copy the data a page at a time * Copy the data a page at a time
...@@ -4239,8 +4105,8 @@ static ssize_t stli_memread(struct file *fp, char __user *buf, size_t count, lof ...@@ -4239,8 +4105,8 @@ static ssize_t stli_memread(struct file *fp, char __user *buf, size_t count, lof
spin_lock_irqsave(&brd_lock, flags); spin_lock_irqsave(&brd_lock, flags);
EBRDENABLE(brdp); EBRDENABLE(brdp);
memptr = EBRDGETMEMPTR(brdp, off); memptr = EBRDGETMEMPTR(brdp, off);
n = MIN(size, (brdp->pagesize - (((unsigned long) off) % brdp->pagesize))); n = min(size, (int)(brdp->pagesize - (((unsigned long) off) % brdp->pagesize)));
n = MIN(n, PAGE_SIZE); n = min(n, (int)PAGE_SIZE);
memcpy_fromio(p, memptr, n); memcpy_fromio(p, memptr, n);
EBRDDISABLE(brdp); EBRDDISABLE(brdp);
spin_unlock_irqrestore(&brd_lock, flags); spin_unlock_irqrestore(&brd_lock, flags);
...@@ -4291,7 +4157,7 @@ static ssize_t stli_memwrite(struct file *fp, const char __user *buf, size_t cou ...@@ -4291,7 +4157,7 @@ static ssize_t stli_memwrite(struct file *fp, const char __user *buf, size_t cou
return 0; return 0;
chbuf = (char __user *) buf; chbuf = (char __user *) buf;
size = MIN(count, (brdp->memsize - off)); size = min(count, (size_t)(brdp->memsize - off));
/* /*
* Copy the data a page at a time * Copy the data a page at a time
...@@ -4302,8 +4168,8 @@ static ssize_t stli_memwrite(struct file *fp, const char __user *buf, size_t cou ...@@ -4302,8 +4168,8 @@ static ssize_t stli_memwrite(struct file *fp, const char __user *buf, size_t cou
return -ENOMEM; return -ENOMEM;
while (size > 0) { while (size > 0) {
n = MIN(size, (brdp->pagesize - (((unsigned long) off) % brdp->pagesize))); n = min(size, (int)(brdp->pagesize - (((unsigned long) off) % brdp->pagesize)));
n = MIN(n, PAGE_SIZE); n = min(n, (int)PAGE_SIZE);
if (copy_from_user(p, chbuf, n)) { if (copy_from_user(p, chbuf, n)) {
if (count == 0) if (count == 0)
count = -EFAULT; count = -EFAULT;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment