X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fnet%2Fwireless%2Forinoco_cs.c;h=34bacd7505a92e6f4233af17f96802fd1fa4d4c8;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=4eb92ac6a5c6b74cbe8d4d423c8e0092a4f1e4ac;hpb=87fc8d1bb10cd459024a742c6a10961fefcef18f;p=linux-2.6.git diff --git a/drivers/net/wireless/orinoco_cs.c b/drivers/net/wireless/orinoco_cs.c index 4eb92ac6a..34bacd750 100644 --- a/drivers/net/wireless/orinoco_cs.c +++ b/drivers/net/wireless/orinoco_cs.c @@ -54,19 +54,11 @@ MODULE_LICENSE("Dual MPL/GPL"); /* Module parameters */ -/* The old way: bit map of interrupts to choose from */ -/* This means pick from 15, 14, 12, 11, 10, 9, 7, 5, 4, and 3 */ -static uint irq_mask = 0xdeb8; -/* Newer, simpler way of listing specific interrupts */ -static int irq_list[4] = { -1 }; - /* Some D-Link cards have buggy CIS. They do work at 5v properly, but * don't have any CIS entry for it. This workaround it... */ static int ignore_cis_vcc; /* = 0 */ -MODULE_PARM(irq_mask, "i"); -MODULE_PARM(irq_list, "1-4i"); -MODULE_PARM(ignore_cis_vcc, "i"); +module_param(ignore_cis_vcc, int, 0); /********************************************************************/ /* Magic constants */ @@ -161,7 +153,7 @@ orinoco_cs_attach(void) struct orinoco_pccard *card; dev_link_t *link; client_reg_t client_reg; - int ret, i; + int ret; dev = alloc_orinocodev(sizeof(*card), orinoco_cs_hard_reset); if (! dev) @@ -175,12 +167,7 @@ orinoco_cs_attach(void) /* Interrupt setup */ link->irq.Attributes = IRQ_TYPE_EXCLUSIVE; - link->irq.IRQInfo1 = IRQ_INFO2_VALID | IRQ_LEVEL_ID; - if (irq_list[0] == -1) - link->irq.IRQInfo2 = irq_mask; - else - for (i = 0; i < 4; i++) - link->irq.IRQInfo2 |= 1 << irq_list[i]; + link->irq.IRQInfo1 = IRQ_LEVEL_ID; link->irq.Handler = NULL; /* General socket configuration defaults can go here. In this @@ -197,7 +184,6 @@ orinoco_cs_attach(void) dev_list = link; client_reg.dev_info = &dev_info; - client_reg.Attributes = INFO_IO_CLIENT | INFO_CARD_SHARE; client_reg.EventMask = CS_EVENT_CARD_INSERTION | CS_EVENT_CARD_REMOVAL | CS_EVENT_RESET_PHYSICAL | CS_EVENT_CARD_RESET | @@ -416,16 +402,8 @@ orinoco_cs_config(dev_link_t *link) * the irq structure is initialized. */ if (link->conf.Attributes & CONF_ENABLE_IRQ) { - int i; - link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT; - link->irq.IRQInfo1 = IRQ_INFO2_VALID | IRQ_LEVEL_ID; - if (irq_list[0] == -1) - link->irq.IRQInfo2 = irq_mask; - else - for (i=0; i<4; i++) - link->irq.IRQInfo2 |= 1 << irq_list[i]; - + link->irq.IRQInfo1 = IRQ_LEVEL_ID; link->irq.Handler = orinoco_interrupt; link->irq.Instance = dev; @@ -454,6 +432,7 @@ orinoco_cs_config(dev_link_t *link) /* register_netdev will give us an ethX name */ dev->name[0] = '\0'; + SET_NETDEV_DEV(dev, &handle_to_dev(handle)); /* Tell the stack we exist */ if (register_netdev(dev) != 0) { printk(KERN_ERR PFX "register_netdev() failed\n"); @@ -653,14 +632,7 @@ static void __exit exit_orinoco_cs(void) { pcmcia_unregister_driver(&orinoco_driver); - - if (dev_list) - DEBUG(0, PFX "Removing leftover devices.\n"); - while (dev_list != NULL) { - if (dev_list->state & DEV_CONFIG) - orinoco_cs_release(dev_list); - orinoco_cs_detach(dev_list); - } + BUG_ON(dev_list != NULL); } module_init(init_orinoco_cs);