[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: Jiri Slaby <jirislaby@gmail.com> Cc: Alan Cox <alan@lxorguk.ukuu.org.uk> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
committed by
Linus Torvalds
parent
845bead4c3
commit
a3f8d9d5e1
@@ -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 @@
|
|||||||
#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 @@
|
|||||||
#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 {
|
|||||||
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[] = {
|
|||||||
"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);
|
|||||||
/*
|
/*
|
||||||
* 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;
|
|||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
/*
|
|
||||||
* 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);
|
|||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
/*
|
|
||||||
* 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)
|
|||||||
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)
|
|||||||
|
|
||||||
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
|
|||||||
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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
*/
|
*/
|
||||||
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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
*/
|
*/
|
||||||
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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
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
|
|||||||
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
|
|||||||
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
|
|||||||
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
|
|||||||
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;
|
||||||
|
Reference in New Issue
Block a user