diff options
| -rw-r--r-- | drivers/bluetooth/bluecard_cs.c | 15 | ||||
| -rw-r--r-- | drivers/bluetooth/bt3c_cs.c | 17 | ||||
| -rw-r--r-- | drivers/bluetooth/btuart_cs.c | 16 | ||||
| -rw-r--r-- | drivers/bluetooth/dtl1_cs.c | 16 | ||||
| -rw-r--r-- | drivers/ide/legacy/ide-cs.c | 15 | ||||
| -rw-r--r-- | drivers/isdn/hardware/avm/avm_cs.c | 21 | ||||
| -rw-r--r-- | drivers/isdn/hisax/avma1_cs.c | 18 | ||||
| -rw-r--r-- | drivers/isdn/hisax/elsa_cs.c | 16 | ||||
| -rw-r--r-- | drivers/isdn/hisax/sedlbauer_cs.c | 16 | ||||
| -rw-r--r-- | drivers/parport/parport_cs.c | 15 | ||||
| -rw-r--r-- | drivers/telephony/ixj_pcmcia.c | 16 |
11 files changed, 58 insertions, 123 deletions
diff --git a/drivers/bluetooth/bluecard_cs.c b/drivers/bluetooth/bluecard_cs.c index 10dc1e6704b4..fee12e3828cf 100644 --- a/drivers/bluetooth/bluecard_cs.c +++ b/drivers/bluetooth/bluecard_cs.c @@ -90,7 +90,7 @@ typedef struct bluecard_info_t { void bluecard_config(dev_link_t *link); -void bluecard_release(u_long arg); +void bluecard_release(dev_link_t *link); int bluecard_event(event_t event, int priority, event_callback_args_t *args); static dev_info_t dev_info = "bluecard_cs"; @@ -838,9 +838,6 @@ dev_link_t *bluecard_attach(void) link = &info->link; link->priv = info; - init_timer(&link->release); - link->release.function = &bluecard_release; - link->release.data = (u_long)link; link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; link->io.NumPorts1 = 8; link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT; @@ -897,9 +894,8 @@ void bluecard_detach(dev_link_t *link) if (*linkp == NULL) return; - del_timer(&link->release); if (link->state & DEV_CONFIG) - bluecard_release((u_long)link); + bluecard_release(link); if (link->handle) { ret = CardServices(DeregisterClient, link->handle); @@ -1004,13 +1000,12 @@ cs_failed: cs_error(link->handle, last_fn, last_ret); failed: - bluecard_release((u_long)link); + bluecard_release(link); } -void bluecard_release(u_long arg) +void bluecard_release(dev_link_t *link) { - dev_link_t *link = (dev_link_t *)arg; bluecard_info_t *info = link->priv; if (link->state & DEV_PRESENT) @@ -1036,7 +1031,7 @@ int bluecard_event(event_t event, int priority, event_callback_args_t *args) link->state &= ~DEV_PRESENT; if (link->state & DEV_CONFIG) { bluecard_close(info); - mod_timer(&link->release, jiffies + HZ / 20); + bluecard_release(link); } break; case CS_EVENT_CARD_INSERTION: diff --git a/drivers/bluetooth/bt3c_cs.c b/drivers/bluetooth/bt3c_cs.c index fcf4c16ba2dc..b5a8135f9808 100644 --- a/drivers/bluetooth/bt3c_cs.c +++ b/drivers/bluetooth/bt3c_cs.c @@ -30,7 +30,6 @@ #include <linux/slab.h> #include <linux/types.h> #include <linux/sched.h> -#include <linux/timer.h> #include <linux/errno.h> #include <linux/ptrace.h> #include <linux/ioport.h> @@ -94,7 +93,7 @@ typedef struct bt3c_info_t { void bt3c_config(dev_link_t *link); -void bt3c_release(u_long arg); +void bt3c_release(dev_link_t *link); int bt3c_event(event_t event, int priority, event_callback_args_t *args); static dev_info_t dev_info = "bt3c_cs"; @@ -585,9 +584,6 @@ dev_link_t *bt3c_attach(void) link = &info->link; link->priv = info; - init_timer(&link->release); - link->release.function = &bt3c_release; - link->release.data = (u_long)link; link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; link->io.NumPorts1 = 8; link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT; @@ -644,10 +640,8 @@ void bt3c_detach(dev_link_t *link) if (*linkp == NULL) return; - del_timer(&link->release); - if (link->state & DEV_CONFIG) - bt3c_release((u_long)link); + bt3c_release(link); if (link->handle) { ret = CardServices(DeregisterClient, link->handle); @@ -790,13 +784,12 @@ cs_failed: cs_error(link->handle, last_fn, last_ret); failed: - bt3c_release((u_long)link); + bt3c_release(link); } -void bt3c_release(u_long arg) +void bt3c_release(dev_link_t *link) { - dev_link_t *link = (dev_link_t *)arg; bt3c_info_t *info = link->priv; if (link->state & DEV_PRESENT) @@ -822,7 +815,7 @@ int bt3c_event(event_t event, int priority, event_callback_args_t *args) link->state &= ~DEV_PRESENT; if (link->state & DEV_CONFIG) { bt3c_close(info); - mod_timer(&link->release, jiffies + HZ / 20); + bt3c_release(link); } break; case CS_EVENT_CARD_INSERTION: diff --git a/drivers/bluetooth/btuart_cs.c b/drivers/bluetooth/btuart_cs.c index 3bdb0dc71d7f..8fb7b29fdc3d 100644 --- a/drivers/bluetooth/btuart_cs.c +++ b/drivers/bluetooth/btuart_cs.c @@ -28,7 +28,6 @@ #include <linux/slab.h> #include <linux/types.h> #include <linux/sched.h> -#include <linux/timer.h> #include <linux/errno.h> #include <linux/ptrace.h> #include <linux/ioport.h> @@ -92,7 +91,7 @@ typedef struct btuart_info_t { void btuart_config(dev_link_t *link); -void btuart_release(u_long arg); +void btuart_release(dev_link_t *link); int btuart_event(event_t event, int priority, event_callback_args_t *args); static dev_info_t dev_info = "btuart_cs"; @@ -592,9 +591,6 @@ dev_link_t *btuart_attach(void) link = &info->link; link->priv = info; - init_timer(&link->release); - link->release.function = &btuart_release; - link->release.data = (u_long)link; link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; link->io.NumPorts1 = 8; link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT; @@ -651,9 +647,8 @@ void btuart_detach(dev_link_t *link) if (*linkp == NULL) return; - del_timer(&link->release); if (link->state & DEV_CONFIG) - btuart_release((u_long)link); + btuart_release(link); if (link->handle) { ret = CardServices(DeregisterClient, link->handle); @@ -797,13 +792,12 @@ cs_failed: cs_error(link->handle, last_fn, last_ret); failed: - btuart_release((u_long) link); + btuart_release(link); } -void btuart_release(u_long arg) +void btuart_release(dev_link_t *link) { - dev_link_t *link = (dev_link_t *)arg; btuart_info_t *info = link->priv; if (link->state & DEV_PRESENT) @@ -829,7 +823,7 @@ int btuart_event(event_t event, int priority, event_callback_args_t *args) link->state &= ~DEV_PRESENT; if (link->state & DEV_CONFIG) { btuart_close(info); - mod_timer(&link->release, jiffies + HZ / 20); + btuart_release(link); } break; case CS_EVENT_CARD_INSERTION: diff --git a/drivers/bluetooth/dtl1_cs.c b/drivers/bluetooth/dtl1_cs.c index 50240aac0e1d..96bfe85fdfec 100644 --- a/drivers/bluetooth/dtl1_cs.c +++ b/drivers/bluetooth/dtl1_cs.c @@ -28,7 +28,6 @@ #include <linux/slab.h> #include <linux/types.h> #include <linux/sched.h> -#include <linux/timer.h> #include <linux/errno.h> #include <linux/ptrace.h> #include <linux/ioport.h> @@ -95,7 +94,7 @@ typedef struct dtl1_info_t { void dtl1_config(dev_link_t *link); -void dtl1_release(u_long arg); +void dtl1_release(dev_link_t *link); int dtl1_event(event_t event, int priority, event_callback_args_t *args); static dev_info_t dev_info = "dtl1_cs"; @@ -571,9 +570,6 @@ dev_link_t *dtl1_attach(void) link = &info->link; link->priv = info; - init_timer(&link->release); - link->release.function = &dtl1_release; - link->release.data = (u_long)link; link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; link->io.NumPorts1 = 8; link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT; @@ -630,9 +626,8 @@ void dtl1_detach(dev_link_t *link) if (*linkp == NULL) return; - del_timer(&link->release); if (link->state & DEV_CONFIG) - dtl1_release((u_long)link); + dtl1_release(link); if (link->handle) { ret = CardServices(DeregisterClient, link->handle); @@ -749,13 +744,12 @@ cs_failed: cs_error(link->handle, last_fn, last_ret); failed: - dtl1_release((u_long)link); + dtl1_release(link); } -void dtl1_release(u_long arg) +void dtl1_release(dev_link_t *link) { - dev_link_t *link = (dev_link_t *)arg; dtl1_info_t *info = link->priv; if (link->state & DEV_PRESENT) @@ -781,7 +775,7 @@ int dtl1_event(event_t event, int priority, event_callback_args_t *args) link->state &= ~DEV_PRESENT; if (link->state & DEV_CONFIG) { dtl1_close(info); - mod_timer(&link->release, jiffies + HZ / 20); + dtl1_release(link); } break; case CS_EVENT_CARD_INSERTION: diff --git a/drivers/ide/legacy/ide-cs.c b/drivers/ide/legacy/ide-cs.c index 243fb272011c..f9677ff95051 100644 --- a/drivers/ide/legacy/ide-cs.c +++ b/drivers/ide/legacy/ide-cs.c @@ -92,7 +92,7 @@ typedef struct ide_info_t { int hd; } ide_info_t; -static void ide_release(u_long arg); +static void ide_release(dev_link_t *); static int ide_event(event_t event, int priority, event_callback_args_t *args); @@ -126,9 +126,6 @@ static dev_link_t *ide_attach(void) memset(info, 0, sizeof(*info)); link = &info->link; link->priv = info; - init_timer(&link->release); - link->release.function = &ide_release; - link->release.data = (u_long)link; link->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO; link->io.Attributes2 = IO_DATA_PATH_WIDTH_8; link->io.IOAddrLines = 3; @@ -187,9 +184,8 @@ static void ide_detach(dev_link_t *link) if (*linkp == NULL) return; - del_timer(&link->release); if (link->state & DEV_CONFIG) - ide_release((u_long)link); + ide_release(link); if (link->handle) { ret = CardServices(DeregisterClient, link->handle); @@ -383,7 +379,7 @@ void ide_config(dev_link_t *link) cs_failed: cs_error(link->handle, last_fn, last_ret); failed: - ide_release((u_long)link); + ide_release(link); link->state &= ~DEV_CONFIG_PENDING; } /* ide_config */ @@ -396,9 +392,8 @@ failed: ======================================================================*/ -void ide_release(u_long arg) +void ide_release(dev_link_t *link) { - dev_link_t *link = (dev_link_t *)arg; ide_info_t *info = link->priv; DEBUG(0, "ide_release(0x%p)\n", link); @@ -446,7 +441,7 @@ int ide_event(event_t event, int priority, case CS_EVENT_CARD_REMOVAL: link->state &= ~DEV_PRESENT; if (link->state & DEV_CONFIG) - mod_timer(&link->release, jiffies + HZ/20); + ide_release(link); break; case CS_EVENT_CARD_INSERTION: link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; diff --git a/drivers/isdn/hardware/avm/avm_cs.c b/drivers/isdn/hardware/avm/avm_cs.c index 21fa61be4d94..0fdab51567b5 100644 --- a/drivers/isdn/hardware/avm/avm_cs.c +++ b/drivers/isdn/hardware/avm/avm_cs.c @@ -16,7 +16,6 @@ #include <linux/ptrace.h> #include <linux/slab.h> #include <linux/string.h> -#include <linux/timer.h> #include <linux/tty.h> #include <linux/serial.h> #include <linux/major.h> @@ -64,7 +63,7 @@ MODULE_PARM(irq_list, "1-10i"); */ static void avmcs_config(dev_link_t *link); -static void avmcs_release(u_long arg); +static void avmcs_release(dev_link_t *link); static int avmcs_event(event_t event, int priority, event_callback_args_t *args); @@ -142,8 +141,6 @@ static dev_link_t *avmcs_attach(void) if (!link) goto err; memset(link, 0, sizeof(struct dev_link_t)); - link->release.function = &avmcs_release; - link->release.data = (u_long)link; /* The io structure describes IO port mapping */ link->io.NumPorts1 = 16; @@ -403,7 +400,7 @@ found_port: link->state &= ~DEV_CONFIG_PENDING; /* If any step failed, release any partially configured state */ if (i != 0) { - avmcs_release((u_long)link); + avmcs_release(link); return; } @@ -417,7 +414,7 @@ found_port: if ((i = (*addcard)(link->io.BasePort1, link->irq.AssignedIRQ)) < 0) { printk(KERN_ERR "avm_cs: failed to add AVM-%s-Controller at i/o %#x, irq %d\n", dev->node.dev_name, link->io.BasePort1, link->irq.AssignedIRQ); - avmcs_release((u_long)link); + avmcs_release(link); return; } dev->node.minor = i; @@ -432,10 +429,8 @@ found_port: ======================================================================*/ -static void avmcs_release(u_long arg) +static void avmcs_release(dev_link_t *link) { - dev_link_t *link = (dev_link_t *)arg; - /* If the device is currently in use, we won't release until it is actually closed. @@ -483,10 +478,8 @@ static int avmcs_event(event_t event, int priority, switch (event) { case CS_EVENT_CARD_REMOVAL: link->state &= ~DEV_PRESENT; - if (link->state & DEV_CONFIG) { - link->release.expires = jiffies + (HZ/20); - add_timer(&link->release); - } + if (link->state & DEV_CONFIG) + avmcs_release(link); break; case CS_EVENT_CARD_INSERTION: link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; @@ -531,7 +524,7 @@ static void __exit avmcs_exit(void) /* XXX: this really needs to move into generic code.. */ while (dev_list != NULL) { if (dev_list->state & DEV_CONFIG) - avmcs_release((u_long)dev_list); + avmcs_release(dev_list); avmcs_detach(dev_list); } } diff --git a/drivers/isdn/hisax/avma1_cs.c b/drivers/isdn/hisax/avma1_cs.c index 77e1a43a0771..f502575b7aac 100644 --- a/drivers/isdn/hisax/avma1_cs.c +++ b/drivers/isdn/hisax/avma1_cs.c @@ -18,7 +18,6 @@ #include <linux/ptrace.h> #include <linux/slab.h> #include <linux/string.h> -#include <linux/timer.h> #include <asm/io.h> #include <asm/system.h> @@ -76,7 +75,7 @@ MODULE_PARM(isdnprot, "1-4i"); */ static void avma1cs_config(dev_link_t *link); -static void avma1cs_release(u_long arg); +static void avma1cs_release(dev_link_t *link); static int avma1cs_event(event_t event, int priority, event_callback_args_t *args); @@ -156,8 +155,6 @@ static dev_link_t *avma1cs_attach(void) if (!link) return NULL; memset(link, 0, sizeof(struct dev_link_t)); - link->release.function = &avma1cs_release; - link->release.data = (u_long)link; /* The io structure describes IO port mapping */ link->io.NumPorts1 = 16; @@ -407,7 +404,7 @@ found_port: link->state &= ~DEV_CONFIG_PENDING; /* If any step failed, release any partially configured state */ if (i != 0) { - avma1cs_release((u_long)link); + avma1cs_release(link); return; } @@ -435,9 +432,8 @@ found_port: ======================================================================*/ -static void avma1cs_release(u_long arg) +static void avma1cs_release(dev_link_t *link) { - dev_link_t *link = (dev_link_t *)arg; local_info_t *local = link->priv; DEBUG(0, "avma1cs_release(0x%p)\n", link); @@ -494,10 +490,8 @@ static int avma1cs_event(event_t event, int priority, switch (event) { case CS_EVENT_CARD_REMOVAL: link->state &= ~DEV_PRESENT; - if (link->state & DEV_CONFIG) { - link->release.expires = jiffies + HZ/20; - add_timer(&link->release); - } + if (link->state & DEV_CONFIG) + avma1cs_release(link); break; case CS_EVENT_CARD_INSERTION: link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; @@ -542,7 +536,7 @@ static void __exit exit_avma1_cs(void) /* XXX: this really needs to move into generic code.. */ while (dev_list != NULL) { if (dev_list->state & DEV_CONFIG) - avma1cs_release((u_long)dev_list); + avma1cs_release(dev_list); avma1cs_detach(dev_list); } } diff --git a/drivers/isdn/hisax/elsa_cs.c b/drivers/isdn/hisax/elsa_cs.c index 8cd7c8e8cd9b..05b3548ad9ea 100644 --- a/drivers/isdn/hisax/elsa_cs.c +++ b/drivers/isdn/hisax/elsa_cs.c @@ -107,7 +107,7 @@ extern int elsa_init_pcmcia(int, int, int*, int); */ static void elsa_cs_config(dev_link_t *link); -static void elsa_cs_release(u_long arg); +static void elsa_cs_release(dev_link_t *link); static int elsa_cs_event(event_t event, int priority, event_callback_args_t *args); @@ -198,10 +198,6 @@ static dev_link_t *elsa_cs_attach(void) memset(local, 0, sizeof(local_info_t)); link = &local->link; link->priv = local; - /* Initialize the dev_link_t structure */ - link->release.function = &elsa_cs_release; - link->release.data = (u_long)link; - /* Interrupt setup */ link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING|IRQ_FIRST_SHARED; link->irq.IRQInfo1 = IRQ_INFO2_VALID|IRQ_LEVEL_ID|IRQ_SHARE_ID; @@ -272,9 +268,8 @@ static void elsa_cs_detach(dev_link_t *link) if (*linkp == NULL) return; - del_timer(&link->release); if (link->state & DEV_CONFIG) - elsa_cs_release((u_long)link); + elsa_cs_release(link); /* If the device is currently configured and active, we won't @@ -431,7 +426,7 @@ static void elsa_cs_config(dev_link_t *link) return; cs_failed: cs_error(link->handle, last_fn, i); - elsa_cs_release((u_long)link); + elsa_cs_release(link); } /* elsa_cs_config */ /*====================================================================== @@ -442,9 +437,8 @@ cs_failed: ======================================================================*/ -static void elsa_cs_release(u_long arg) +static void elsa_cs_release(dev_link_t *link) { - dev_link_t *link = (dev_link_t *)arg; DEBUG(0, "elsa_cs_release(0x%p)\n", link); @@ -503,7 +497,7 @@ static int elsa_cs_event(event_t event, int priority, link->state &= ~DEV_PRESENT; if (link->state & DEV_CONFIG) { ((local_info_t*)link->priv)->busy = 1; - mod_timer(&link->release, jiffies + HZ/20); + elsa_cs_release(link); } break; case CS_EVENT_CARD_INSERTION: diff --git a/drivers/isdn/hisax/sedlbauer_cs.c b/drivers/isdn/hisax/sedlbauer_cs.c index db1ce0dcee30..63ceffd78748 100644 --- a/drivers/isdn/hisax/sedlbauer_cs.c +++ b/drivers/isdn/hisax/sedlbauer_cs.c @@ -107,7 +107,7 @@ extern int sedl_init_pcmcia(int, int, int*, int); */ static void sedlbauer_config(dev_link_t *link); -static void sedlbauer_release(u_long arg); +static void sedlbauer_release(dev_link_t *link); static int sedlbauer_event(event_t event, int priority, event_callback_args_t *args); @@ -205,10 +205,6 @@ static dev_link_t *sedlbauer_attach(void) memset(local, 0, sizeof(local_info_t)); link = &local->link; link->priv = local; - /* Initialize the dev_link_t structure */ - link->release.function = &sedlbauer_release; - link->release.data = (u_long)link; - /* Interrupt setup */ link->irq.Attributes = IRQ_TYPE_EXCLUSIVE; link->irq.IRQInfo1 = IRQ_INFO2_VALID|IRQ_LEVEL_ID; @@ -523,7 +519,7 @@ static void sedlbauer_config(dev_link_t *link) cs_failed: cs_error(link->handle, last_fn, last_ret); - sedlbauer_release((u_long)link); + sedlbauer_release(link); } /* sedlbauer_config */ @@ -535,10 +531,8 @@ cs_failed: ======================================================================*/ -static void sedlbauer_release(u_long arg) +static void sedlbauer_release(dev_link_t *link) { - dev_link_t *link = (dev_link_t *)arg; - DEBUG(0, "sedlbauer_release(0x%p)\n", link); /* @@ -601,7 +595,7 @@ static int sedlbauer_event(event_t event, int priority, link->state &= ~DEV_PRESENT; if (link->state & DEV_CONFIG) { ((local_info_t *)link->priv)->stop = 1; - mod_timer(&link->release, jiffies + HZ/20); + sedlbauer_release(link); } break; case CS_EVENT_CARD_INSERTION: @@ -655,7 +649,7 @@ static void __exit exit_sedlbauer_cs(void) while (dev_list != NULL) { del_timer(&dev_list->release); if (dev_list->state & DEV_CONFIG) - sedlbauer_release((u_long)dev_list); + sedlbauer_release(dev_list); sedlbauer_detach(dev_list); } } diff --git a/drivers/parport/parport_cs.c b/drivers/parport/parport_cs.c index 39af957dd5f2..9bb3e092b6ad 100644 --- a/drivers/parport/parport_cs.c +++ b/drivers/parport/parport_cs.c @@ -96,7 +96,7 @@ typedef struct parport_info_t { static dev_link_t *parport_attach(void); static void parport_detach(dev_link_t *); static void parport_config(dev_link_t *link); -static void parport_cs_release(u_long arg); +static void parport_cs_release(dev_link_t *); static int parport_event(event_t event, int priority, event_callback_args_t *args); @@ -126,9 +126,6 @@ static dev_link_t *parport_attach(void) memset(info, 0, sizeof(*info)); link = &info->link; link->priv = info; - init_timer(&link->release); - link->release.function = &parport_cs_release; - link->release.data = (u_long)link; link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; link->io.Attributes2 = IO_DATA_PATH_WIDTH_8; link->irq.Attributes = IRQ_TYPE_EXCLUSIVE; @@ -186,9 +183,8 @@ static void parport_detach(dev_link_t *link) if (*linkp == NULL) return; - del_timer(&link->release); if (link->state & DEV_CONFIG) - parport_cs_release((u_long)link); + parport_cs_release(link); if (link->handle) { ret = CardServices(DeregisterClient, link->handle); @@ -308,7 +304,7 @@ void parport_config(dev_link_t *link) cs_failed: cs_error(link->handle, last_fn, last_ret); failed: - parport_cs_release((u_long)link); + parport_cs_release(link); link->state &= ~DEV_CONFIG_PENDING; } /* parport_config */ @@ -321,9 +317,8 @@ failed: ======================================================================*/ -void parport_cs_release(u_long arg) +void parport_cs_release(dev_link_t *link) { - dev_link_t *link = (dev_link_t *)arg; parport_info_t *info = link->priv; DEBUG(0, "parport_release(0x%p)\n", link); @@ -366,7 +361,7 @@ int parport_event(event_t event, int priority, case CS_EVENT_CARD_REMOVAL: link->state &= ~DEV_PRESENT; if (link->state & DEV_CONFIG) - mod_timer(&link->release, jiffies + HZ/20); + parport_cs_release(link); break; case CS_EVENT_CARD_INSERTION: link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; diff --git a/drivers/telephony/ixj_pcmcia.c b/drivers/telephony/ixj_pcmcia.c index f255dd484e11..df8903c2dd12 100644 --- a/drivers/telephony/ixj_pcmcia.c +++ b/drivers/telephony/ixj_pcmcia.c @@ -38,7 +38,7 @@ typedef struct ixj_info_t { static dev_link_t *ixj_attach(void); static void ixj_detach(dev_link_t *); static void ixj_config(dev_link_t * link); -static void ixj_cs_release(u_long arg); +static void ixj_cs_release(dev_link_t * link); static int ixj_event(event_t event, int priority, event_callback_args_t * args); static dev_info_t dev_info = "ixj_cs"; static dev_link_t *dev_list = NULL; @@ -54,9 +54,6 @@ static dev_link_t *ixj_attach(void) if (!link) return NULL; memset(link, 0, sizeof(struct dev_link_t)); - init_timer(&link->release); - link->release.function = &ixj_cs_release; - link->release.data = (u_long) link; link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; link->io.Attributes2 = IO_DATA_PATH_WIDTH_8; link->io.IOAddrLines = 3; @@ -97,10 +94,9 @@ static void ixj_detach(dev_link_t * link) break; if (*linkp == NULL) return; - del_timer_sync(&link->release); link->state &= ~DEV_RELEASE_PENDING; if (link->state & DEV_CONFIG) - ixj_cs_release((u_long) link); + ixj_cs_release(link); if (link->handle) { ret = CardServices(DeregisterClient, link->handle); if (ret != CS_SUCCESS) @@ -251,12 +247,11 @@ static void ixj_config(dev_link_t * link) return; cs_failed: cs_error(link->handle, last_fn, last_ret); - ixj_cs_release((u_long) link); + ixj_cs_release(link); } -static void ixj_cs_release(u_long arg) +static void ixj_cs_release(dev_link_t *link) { - dev_link_t *link = (dev_link_t *) arg; ixj_info_t *info = link->priv; DEBUG(0, "ixj_cs_release(0x%p)\n", link); info->ndev = 0; @@ -274,9 +269,8 @@ static int ixj_event(event_t event, int priority, event_callback_args_t * args) case CS_EVENT_CARD_REMOVAL: link->state &= ~DEV_PRESENT; if (link->state & DEV_CONFIG) { - link->release.expires = jiffies + (HZ / 20); link->state |= DEV_RELEASE_PENDING; - add_timer(&link->release); + ixj_cs_release(link); } break; case CS_EVENT_CARD_INSERTION: |
