git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git]
/
drivers
/
isdn
/
act2000
/
module.c
diff --git
a/drivers/isdn/act2000/module.c
b/drivers/isdn/act2000/module.c
index
6129c8e
..
e3e5c13
100644
(file)
--- a/
drivers/isdn/act2000/module.c
+++ b/
drivers/isdn/act2000/module.c
@@
-40,10
+40,10
@@
MODULE_PARM_DESC(act_bus, "BusType of first card, 1=ISA, 2=MCA, 3=PCMCIA, curren
MODULE_PARM_DESC(membase, "Base port address of first card");
MODULE_PARM_DESC(act_irq, "IRQ of first card");
MODULE_PARM_DESC(act_id, "ID-String of first card");
MODULE_PARM_DESC(membase, "Base port address of first card");
MODULE_PARM_DESC(act_irq, "IRQ of first card");
MODULE_PARM_DESC(act_id, "ID-String of first card");
-
MODULE_PARM(act_bus, "i"
);
-
MODULE_PARM(act_port, "i"
);
-
MODULE_PARM(act_irq, "i"
);
-
MODULE_PARM(act_id, "s"
);
+
module_param(act_bus, int, 0
);
+
module_param(act_port, int, 0
);
+
module_param(act_irq, int, 0
);
+
module_param(act_id, charp, 0
);
static int act2000_addcard(int, int, int, char *);
static int act2000_addcard(int, int, int, char *);
@@
-192,8
+192,11
@@
act2000_set_msn(act2000_card *card, char *eazmsn)
}
static void
}
static void
-act2000_transmit(struct
act2000_card *card
)
+act2000_transmit(struct
work_struct *work
)
{
{
+ struct act2000_card *card =
+ container_of(work, struct act2000_card, snd_tq);
+
switch (card->bus) {
case ACT2000_BUS_ISA:
act2000_isa_send(card);
switch (card->bus) {
case ACT2000_BUS_ISA:
act2000_isa_send(card);
@@
-207,8
+210,11
@@
act2000_transmit(struct act2000_card *card)
}
static void
}
static void
-act2000_receive(struct
act2000_card *card
)
+act2000_receive(struct
work_struct *work
)
{
{
+ struct act2000_card *card =
+ container_of(work, struct act2000_card, poll_tq);
+
switch (card->bus) {
case ACT2000_BUS_ISA:
act2000_isa_receive(card);
switch (card->bus) {
case ACT2000_BUS_ISA:
act2000_isa_receive(card);
@@
-227,7
+233,7
@@
act2000_poll(unsigned long data)
act2000_card * card = (act2000_card *)data;
unsigned long flags;
act2000_card * card = (act2000_card *)data;
unsigned long flags;
- act2000_receive(
card
);
+ act2000_receive(
&card->poll_tq
);
spin_lock_irqsave(&card->lock, flags);
mod_timer(&card->ptimer, jiffies+3);
spin_unlock_irqrestore(&card->lock, flags);
spin_lock_irqsave(&card->lock, flags);
mod_timer(&card->ptimer, jiffies+3);
spin_unlock_irqrestore(&card->lock, flags);
@@
-243,16
+249,18
@@
act2000_command(act2000_card * card, isdn_ctrl * c)
char tmp[17];
int ret;
unsigned long flags;
char tmp[17];
int ret;
unsigned long flags;
+ void __user *arg;
switch (c->command) {
case ISDN_CMD_IOCTL:
memcpy(&a, c->parm.num, sizeof(ulong));
switch (c->command) {
case ISDN_CMD_IOCTL:
memcpy(&a, c->parm.num, sizeof(ulong));
+ arg = (void __user *)a;
switch (c->arg) {
case ACT2000_IOCTL_LOADBOOT:
switch (card->bus) {
case ACT2000_BUS_ISA:
ret = act2000_isa_download(card,
switch (c->arg) {
case ACT2000_IOCTL_LOADBOOT:
switch (card->bus) {
case ACT2000_BUS_ISA:
ret = act2000_isa_download(card,
-
(act2000_ddef *)a
);
+
arg
);
if (!ret) {
card->flags |= ACT2000_FLAGS_LOADED;
if (!(card->flags & ACT2000_FLAGS_IVALID)) {
if (!ret) {
card->flags |= ACT2000_FLAGS_LOADED;
if (!(card->flags & ACT2000_FLAGS_IVALID)) {
@@
-278,7
+286,7
@@
act2000_command(act2000_card * card, isdn_ctrl * c)
actcapi_manufacturer_req_net(card);
return 0;
case ACT2000_IOCTL_SETMSN:
actcapi_manufacturer_req_net(card);
return 0;
case ACT2000_IOCTL_SETMSN:
- if (copy_from_user(tmp,
(char *)a
,
+ if (copy_from_user(tmp,
arg
,
sizeof(tmp)))
return -EFAULT;
if ((ret = act2000_set_msn(card, tmp)))
sizeof(tmp)))
return -EFAULT;
if ((ret = act2000_set_msn(card, tmp)))
@@
-287,7
+295,7
@@
act2000_command(act2000_card * card, isdn_ctrl * c)
return(actcapi_manufacturer_req_msn(card));
return 0;
case ACT2000_IOCTL_ADDCARD:
return(actcapi_manufacturer_req_msn(card));
return 0;
case ACT2000_IOCTL_ADDCARD:
- if (copy_from_user(&cdef,
(char *)a
,
+ if (copy_from_user(&cdef,
arg
,
sizeof(cdef)))
return -EFAULT;
if (act2000_addcard(cdef.bus, cdef.port, cdef.irq, cdef.id))
sizeof(cdef)))
return -EFAULT;
if (act2000_addcard(cdef.bus, cdef.port, cdef.irq, cdef.id))
@@
-463,18
+471,15
@@
act2000_sendbuf(act2000_card *card, int channel, int ack, struct sk_buff *skb)
/* Read the Status-replies from the Interface */
static int
/* Read the Status-replies from the Interface */
static int
-act2000_readstatus(u_char
* buf, int len, int user
, act2000_card * card)
+act2000_readstatus(u_char
__user * buf, int len
, act2000_card * card)
{
int count;
{
int count;
- u_char *p;
+ u_char
__user
*p;
for (p = buf, count = 0; count < len; p++, count++) {
if (card->status_buf_read == card->status_buf_write)
return count;
for (p = buf, count = 0; count < len; p++, count++) {
if (card->status_buf_read == card->status_buf_write)
return count;
- if (user)
- put_user(*card->status_buf_read++, p);
- else
- *p = *card->status_buf_read++;
+ put_user(*card->status_buf_read++, p);
if (card->status_buf_read > card->status_buf_end)
card->status_buf_read = card->status_buf;
}
if (card->status_buf_read > card->status_buf_end)
card->status_buf_read = card->status_buf;
}
@@
-514,7
+519,7
@@
if_command(isdn_ctrl * c)
}
static int
}
static int
-if_writecmd(const u_char
* buf, int len, int user
, int id, int channel)
+if_writecmd(const u_char
__user *buf, int len
, int id, int channel)
{
act2000_card *card = act2000_findcard(id);
{
act2000_card *card = act2000_findcard(id);
@@
-529,14
+534,14
@@
if_writecmd(const u_char * buf, int len, int user, int id, int channel)
}
static int
}
static int
-if_readstatus(u_char
* buf, int len, int user
, int id, int channel)
+if_readstatus(u_char
__user * buf, int len
, int id, int channel)
{
act2000_card *card = act2000_findcard(id);
if (card) {
if (!card->flags & ACT2000_FLAGS_RUNNING)
return -ENODEV;
{
act2000_card *card = act2000_findcard(id);
if (card) {
if (!card->flags & ACT2000_FLAGS_RUNNING)
return -ENODEV;
- return (act2000_readstatus(buf, len,
user,
card));
+ return (act2000_readstatus(buf, len, card));
}
printk(KERN_ERR
"act2000: if_readstatus called with invalid driverId!\n");
}
printk(KERN_ERR
"act2000: if_readstatus called with invalid driverId!\n");
@@
-568,20
+573,19
@@
act2000_alloccard(int bus, int port, int irq, char *id)
{
int i;
act2000_card *card;
{
int i;
act2000_card *card;
- if (!(card =
(act2000_card *) km
alloc(sizeof(act2000_card), GFP_KERNEL))) {
+ if (!(card =
kz
alloc(sizeof(act2000_card), GFP_KERNEL))) {
printk(KERN_WARNING
"act2000: (%s) Could not allocate card-struct.\n", id);
return;
}
printk(KERN_WARNING
"act2000: (%s) Could not allocate card-struct.\n", id);
return;
}
- memset((char *) card, 0, sizeof(act2000_card));
spin_lock_init(&card->lock);
spin_lock_init(&card->mnlock);
skb_queue_head_init(&card->sndq);
skb_queue_head_init(&card->rcvq);
skb_queue_head_init(&card->ackq);
spin_lock_init(&card->lock);
spin_lock_init(&card->mnlock);
skb_queue_head_init(&card->sndq);
skb_queue_head_init(&card->rcvq);
skb_queue_head_init(&card->ackq);
- INIT_WORK(&card->snd_tq,
(void *) (void *) act2000_transmit, card
);
- INIT_WORK(&card->rcv_tq,
(void *) (void *) actcapi_dispatch, card
);
- INIT_WORK(&card->poll_tq,
(void *) (void *) act2000_receive, card
);
+ INIT_WORK(&card->snd_tq,
act2000_transmit
);
+ INIT_WORK(&card->rcv_tq,
actcapi_dispatch
);
+ INIT_WORK(&card->poll_tq,
act2000_receive
);
init_timer(&card->ptimer);
card->interface.owner = THIS_MODULE;
card->interface.channels = ACT2000_BCH;
init_timer(&card->ptimer);
card->interface.owner = THIS_MODULE;
card->interface.channels = ACT2000_BCH;