diff options
Diffstat (limited to 'drivers/isdn/hisax')
-rw-r--r-- | drivers/isdn/hisax/Kconfig | 12 | ||||
-rw-r--r-- | drivers/isdn/hisax/avm_pci.c | 12 | ||||
-rw-r--r-- | drivers/isdn/hisax/avma1_cs.c | 4 | ||||
-rw-r--r-- | drivers/isdn/hisax/config.c | 9 | ||||
-rw-r--r-- | drivers/isdn/hisax/hfc4s8s_l1.c | 10 | ||||
-rw-r--r-- | drivers/isdn/hisax/hfc_2bds0.c | 18 | ||||
-rw-r--r-- | drivers/isdn/hisax/hfc_2bs0.c | 12 | ||||
-rw-r--r-- | drivers/isdn/hisax/hfc_usb.c | 284 | ||||
-rw-r--r-- | drivers/isdn/hisax/hfc_usb.h | 6 | ||||
-rw-r--r-- | drivers/isdn/hisax/hisax_fcpcipnp.c | 1 | ||||
-rw-r--r-- | drivers/isdn/hisax/hscx.c | 12 | ||||
-rw-r--r-- | drivers/isdn/hisax/icc.c | 12 | ||||
-rw-r--r-- | drivers/isdn/hisax/ipacx.c | 12 | ||||
-rw-r--r-- | drivers/isdn/hisax/isac.c | 15 | ||||
-rw-r--r-- | drivers/isdn/hisax/isar.c | 6 | ||||
-rw-r--r-- | drivers/isdn/hisax/jade.c | 12 | ||||
-rw-r--r-- | drivers/isdn/hisax/netjet.c | 32 | ||||
-rw-r--r-- | drivers/isdn/hisax/st5481_b.c | 2 | ||||
-rw-r--r-- | drivers/isdn/hisax/st5481_init.c | 1 | ||||
-rw-r--r-- | drivers/isdn/hisax/st5481_usb.c | 14 | ||||
-rw-r--r-- | drivers/isdn/hisax/w6692.c | 12 |
21 files changed, 183 insertions, 315 deletions
diff --git a/drivers/isdn/hisax/Kconfig b/drivers/isdn/hisax/Kconfig index 801c98f30e5..c82105920d7 100644 --- a/drivers/isdn/hisax/Kconfig +++ b/drivers/isdn/hisax/Kconfig @@ -110,7 +110,7 @@ config HISAX_16_3 config HISAX_TELESPCI bool "Teles PCI" - depends on PCI && (BROKEN || !(SPARC64 || PPC)) + depends on PCI && (BROKEN || !(SPARC || PPC || PARISC || M68K)) help This enables HiSax support for the Teles PCI. See <file:Documentation/isdn/README.HiSax> on how to configure it. @@ -238,7 +238,7 @@ config HISAX_MIC config HISAX_NETJET bool "NETjet card" - depends on PCI && (BROKEN || !(SPARC64 || PPC)) + depends on PCI && (BROKEN || !(SPARC || PPC || PARISC || M68K)) help This enables HiSax support for the NetJet from Traverse Technologies. @@ -249,7 +249,7 @@ config HISAX_NETJET config HISAX_NETJET_U bool "NETspider U card" - depends on PCI && (BROKEN || !(SPARC64 || PPC)) + depends on PCI && (BROKEN || !(SPARC || PPC || PARISC || M68K)) help This enables HiSax support for the Netspider U interface ISDN card from Traverse Technologies. @@ -317,7 +317,7 @@ config HISAX_GAZEL config HISAX_HFC_PCI bool "HFC PCI-Bus cards" - depends on PCI && (BROKEN || !(SPARC64 || PPC)) + depends on PCI && (BROKEN || !(SPARC || PPC || PARISC || M68K)) help This enables HiSax support for the HFC-S PCI 2BDS0 based cards. @@ -344,14 +344,14 @@ config HISAX_HFC_SX config HISAX_ENTERNOW_PCI bool "Formula-n enter:now PCI card" - depends on PCI && (BROKEN || !(SPARC64 || PPC)) + depends on PCI && (BROKEN || !(SPARC || PPC || PARISC || M68K)) help This enables HiSax support for the Formula-n enter:now PCI ISDN card. config HISAX_AMD7930 bool "Am7930 (EXPERIMENTAL)" - depends on EXPERIMENTAL && (SPARC32 || SPARC64) + depends on EXPERIMENTAL && SPARC help This enables HiSax support for the AMD7930 chips on some SPARCs. This code is not finished yet. diff --git a/drivers/isdn/hisax/avm_pci.c b/drivers/isdn/hisax/avm_pci.c index 625799ab0d1..5d8ee7368f7 100644 --- a/drivers/isdn/hisax/avm_pci.c +++ b/drivers/isdn/hisax/avm_pci.c @@ -552,14 +552,10 @@ close_hdlcstate(struct BCState *bcs) { modehdlc(bcs, 0, 0); if (test_and_clear_bit(BC_FLG_INIT, &bcs->Flag)) { - if (bcs->hw.hdlc.rcvbuf) { - kfree(bcs->hw.hdlc.rcvbuf); - bcs->hw.hdlc.rcvbuf = NULL; - } - if (bcs->blog) { - kfree(bcs->blog); - bcs->blog = NULL; - } + kfree(bcs->hw.hdlc.rcvbuf); + bcs->hw.hdlc.rcvbuf = NULL; + kfree(bcs->blog); + bcs->blog = NULL; skb_queue_purge(&bcs->rqueue); skb_queue_purge(&bcs->squeue); if (bcs->tx_skb) { diff --git a/drivers/isdn/hisax/avma1_cs.c b/drivers/isdn/hisax/avma1_cs.c index 0e22991635e..5f5a5ae740d 100644 --- a/drivers/isdn/hisax/avma1_cs.c +++ b/drivers/isdn/hisax/avma1_cs.c @@ -236,9 +236,7 @@ static void avma1cs_detach(dev_link_t *link) /* Unlink device structure, free pieces */ *linkp = link->next; - if (link->priv) { - kfree(link->priv); - } + kfree(link->priv); kfree(link); } /* avma1cs_detach */ diff --git a/drivers/isdn/hisax/config.c b/drivers/isdn/hisax/config.c index fbaab435290..8159bcecd0c 100644 --- a/drivers/isdn/hisax/config.c +++ b/drivers/isdn/hisax/config.c @@ -787,8 +787,7 @@ static void ll_unload(struct IsdnCardState *cs) ic.command = ISDN_STAT_UNLOAD; ic.driver = cs->myid; cs->iif.statcallb(&ic); - if (cs->status_buf) - kfree(cs->status_buf); + kfree(cs->status_buf); cs->status_read = NULL; cs->status_write = NULL; cs->status_end = NULL; @@ -807,10 +806,8 @@ static void closecard(int cardnr) skb_queue_purge(&csta->rq); skb_queue_purge(&csta->sq); - if (csta->rcvbuf) { - kfree(csta->rcvbuf); - csta->rcvbuf = NULL; - } + kfree(csta->rcvbuf); + csta->rcvbuf = NULL; if (csta->tx_skb) { dev_kfree_skb(csta->tx_skb); csta->tx_skb = NULL; diff --git a/drivers/isdn/hisax/hfc4s8s_l1.c b/drivers/isdn/hisax/hfc4s8s_l1.c index 7333377ab31..e3866b0a97f 100644 --- a/drivers/isdn/hisax/hfc4s8s_l1.c +++ b/drivers/isdn/hisax/hfc4s8s_l1.c @@ -1063,7 +1063,7 @@ tx_b_frame(struct hfc4s8s_btype *bch) Write_hfc8(l1->hw, A_INC_RES_FIFO, 1); } ack_len += skb->truesize; - bch->tx_skb = 0; + bch->tx_skb = NULL; bch->tx_cnt = 0; dev_kfree_skb(skb); } else @@ -1659,10 +1659,10 @@ hfc4s8s_remove(struct pci_dev *pdev) } static struct pci_driver hfc4s8s_driver = { - name:"hfc4s8s_l1", - probe:hfc4s8s_probe, - remove:__devexit_p(hfc4s8s_remove), - id_table:hfc4s8s_ids, + .name = "hfc4s8s_l1", + .probe = hfc4s8s_probe, + .remove = __devexit_p(hfc4s8s_remove), + .id_table = hfc4s8s_ids, }; /**********************/ diff --git a/drivers/isdn/hisax/hfc_2bds0.c b/drivers/isdn/hisax/hfc_2bds0.c index 7cf87793e79..637a261c931 100644 --- a/drivers/isdn/hisax/hfc_2bds0.c +++ b/drivers/isdn/hisax/hfc_2bds0.c @@ -1052,18 +1052,12 @@ init2bds0(struct IsdnCardState *cs) void release2bds0(struct IsdnCardState *cs) { - if (cs->bcs[0].hw.hfc.send) { - kfree(cs->bcs[0].hw.hfc.send); - cs->bcs[0].hw.hfc.send = NULL; - } - if (cs->bcs[1].hw.hfc.send) { - kfree(cs->bcs[1].hw.hfc.send); - cs->bcs[1].hw.hfc.send = NULL; - } - if (cs->hw.hfcD.send) { - kfree(cs->hw.hfcD.send); - cs->hw.hfcD.send = NULL; - } + kfree(cs->bcs[0].hw.hfc.send); + cs->bcs[0].hw.hfc.send = NULL; + kfree(cs->bcs[1].hw.hfc.send); + cs->bcs[1].hw.hfc.send = NULL; + kfree(cs->hw.hfcD.send); + cs->hw.hfcD.send = NULL; } void diff --git a/drivers/isdn/hisax/hfc_2bs0.c b/drivers/isdn/hisax/hfc_2bs0.c index f978a5af866..c964539cc43 100644 --- a/drivers/isdn/hisax/hfc_2bs0.c +++ b/drivers/isdn/hisax/hfc_2bs0.c @@ -582,12 +582,8 @@ inithfc(struct IsdnCardState *cs) void releasehfc(struct IsdnCardState *cs) { - if (cs->bcs[0].hw.hfc.send) { - kfree(cs->bcs[0].hw.hfc.send); - cs->bcs[0].hw.hfc.send = NULL; - } - if (cs->bcs[1].hw.hfc.send) { - kfree(cs->bcs[1].hw.hfc.send); - cs->bcs[1].hw.hfc.send = NULL; - } + kfree(cs->bcs[0].hw.hfc.send); + cs->bcs[0].hw.hfc.send = NULL; + kfree(cs->bcs[1].hw.hfc.send); + cs->bcs[1].hw.hfc.send = NULL; } diff --git a/drivers/isdn/hisax/hfc_usb.c b/drivers/isdn/hisax/hfc_usb.c index e2c3af49d72..f8457ef4882 100644 --- a/drivers/isdn/hisax/hfc_usb.c +++ b/drivers/isdn/hisax/hfc_usb.c @@ -1,7 +1,7 @@ /* * hfc_usb.c * - * $Id: hfc_usb.c,v 4.34 2005/01/26 17:25:53 martinb1 Exp $ + * $Id: hfc_usb.c,v 4.36 2005/04/08 09:55:13 martinb1 Exp $ * * modular HiSax ISDN driver for Colognechip HFC-S USB chip * @@ -44,12 +44,8 @@ #include "hisax_if.h" #include "hfc_usb.h" -/* -* Version Information -* (do not modify the CVS Makros $Revision: 4.34 $ and $Date: 2005/01/26 17:25:53 $ !) -*/ static const char *hfcusb_revision = - "Revision: 4.34 $ Date: 2005/01/26 17:25:53 $ "; + "$Revision: 4.36 $ $Date: 2005/04/08 09:55:13 $ "; /* Hisax debug support * use "modprobe debug=x" where x is bitfield of USB_DBG & ISDN_DBG @@ -63,80 +59,78 @@ module_param(debug, uint, 0); static int hfc_debug; #endif +/* private vendor specific data */ +typedef struct { + __u8 led_scheme; // led display scheme + signed short led_bits[8]; // array of 8 possible LED bitmask settings + char *vend_name; // device name +} hfcsusb_vdata; /****************************************/ /* data defining the devices to be used */ /****************************************/ -static struct usb_device_id hfc_usb_idtab[] = { - {USB_DEVICE(0x0959, 0x2bd0)}, /* Colognechip USB eval TA */ - {USB_DEVICE(0x0675, 0x1688)}, /* DrayTek miniVigor 128 USB ISDN TA */ - {USB_DEVICE(0x07b0, 0x0007)}, /* Billion USB TA 2 */ - {USB_DEVICE(0x0742, 0x2008)}, /* Stollmann USB TA */ - {USB_DEVICE(0x0742, 0x2009)}, /* Aceex USB ISDN TA */ - {USB_DEVICE(0x0742, 0x200A)}, /* OEM USB ISDN TA */ - {USB_DEVICE(0x08e3, 0x0301)}, /* OliTec ISDN USB */ - {USB_DEVICE(0x07fa, 0x0846)}, /* Bewan ISDN USB TA */ - {USB_DEVICE(0x07fa, 0x0847)}, /* Djinn Numeris USB */ - {USB_DEVICE(0x07b0, 0x0006)}, /* Twister ISDN USB TA */ - {} /* end with an all-zeroes entry */ -}; - -/* driver internal device specific data: -* VendorID, ProductID, Devicename, LED_SCHEME, -* LED's BitMask in HFCUSB_P_DATA Register : LED_USB, LED_S0, LED_B1, LED_B2 -*/ -static vendor_data vdata[] = { - /* CologneChip Eval TA */ - {0x0959, 0x2bd0, "ISDN USB TA (Cologne Chip HFC-S USB based)", - LED_OFF, {4, 0, 2, 1} - } - , - /* DrayTek miniVigor 128 USB ISDN TA */ - {0x0675, 0x1688, "DrayTek miniVigor 128 USB ISDN TA", - LED_SCHEME1, {1, 2, 0, 0} - } - , - /* Billion TA */ - {0x07b0, 0x0007, "Billion tiny USB ISDN TA 128", - LED_SCHEME1, {0x80, -64, -32, -16} - } - , - /* Stollmann TA */ - {0x0742, 0x2008, "Stollmann USB TA", - LED_SCHEME1, {4, 0, 2, 1} - } - , - /* Aceex USB ISDN TA */ - {0x0742, 0x2009, "Aceex USB ISDN TA", - LED_SCHEME1, {4, 0, 2, 1} - } - , - /* OEM USB ISDN TA */ - {0x0742, 0x200A, "OEM USB ISDN TA", - LED_SCHEME1, {4, 0, 2, 1} - } - , - /* Olitec TA */ - {0x08e3, 0x0301, "Olitec USB RNIS", - LED_SCHEME1, {2, 0, 1, 4} - } - , - /* Bewan TA */ - {0x07fa, 0x0846, "Bewan Modem RNIS USB", - LED_SCHEME1, {0x80, -64, -32, -16} - } - , - /* Bewan TA */ - {0x07fa, 0x0847, "Djinn Numeris USB", - LED_SCHEME1, {0x80, -64, -32, -16} - } - , - /* Twister ISDN TA */ - {0x07b0, 0x0006, "Twister ISDN TA", - LED_SCHEME1, {0x80, -64, -32, -16} - } - , - {0, 0, 0} /* EOL element */ +static struct usb_device_id hfcusb_idtab[] = { + { + USB_DEVICE(0x0959, 0x2bd0), + .driver_info = (unsigned long) &((hfcsusb_vdata) + {LED_OFF, {4, 0, 2, 1}, + "ISDN USB TA (Cologne Chip HFC-S USB based)"}), + }, + { + USB_DEVICE(0x0675, 0x1688), + .driver_info = (unsigned long) &((hfcsusb_vdata) + {LED_SCHEME1, {1, 2, 0, 0}, + "DrayTek miniVigor 128 USB ISDN TA"}), + }, + { + USB_DEVICE(0x07b0, 0x0007), + .driver_info = (unsigned long) &((hfcsusb_vdata) + {LED_SCHEME1, {0x80, -64, -32, -16}, + "Billion tiny USB ISDN TA 128"}), + }, + { + USB_DEVICE(0x0742, 0x2008), + .driver_info = (unsigned long) &((hfcsusb_vdata) + {LED_SCHEME1, {4, 0, 2, 1}, + "Stollmann USB TA"}), + }, + { + USB_DEVICE(0x0742, 0x2009), + .driver_info = (unsigned long) &((hfcsusb_vdata) + {LED_SCHEME1, {4, 0, 2, 1}, + "Aceex USB ISDN TA"}), + }, + { + USB_DEVICE(0x0742, 0x200A), + .driver_info = (unsigned long) &((hfcsusb_vdata) + {LED_SCHEME1, {4, 0, 2, 1}, + "OEM USB ISDN TA"}), + }, + { + USB_DEVICE(0x08e3, 0x0301), + .driver_info = (unsigned long) &((hfcsusb_vdata) + {LED_SCHEME1, {2, 0, 1, 4}, + "Olitec USB RNIS"}), + }, + { + USB_DEVICE(0x07fa, 0x0846), + .driver_info = (unsigned long) &((hfcsusb_vdata) + {LED_SCHEME1, {0x80, -64, -32, -16}, + "Bewan Modem RNIS USB"}), + }, + { + USB_DEVICE(0x07fa, 0x0847), + .driver_info = (unsigned long) &((hfcsusb_vdata) + {LED_SCHEME1, {0x80, -64, -32, -16}, + "Djinn Numeris USB"}), + }, + { + USB_DEVICE(0x07b0, 0x0006), + .driver_info = (unsigned long) &((hfcsusb_vdata) + {LED_SCHEME1, {0x80, -64, -32, -16}, + "Twister ISDN TA"}), + }, + { } }; /***************************************************************/ @@ -211,8 +205,6 @@ typedef struct hfcusb_data { volatile __u8 l1_state; /* actual l1 state */ struct timer_list t3_timer; /* timer 3 for activation/deactivation */ struct timer_list t4_timer; /* timer 4 for activation/deactivation */ - struct timer_list led_timer; /* timer flashing leds */ - } hfcusb_data; @@ -227,7 +219,7 @@ symbolic(struct hfcusb_symbolic_list list[], const int num) for (i = 0; list[i].name != NULL; i++) if (list[i].num == num) return (list[i].name); - return "<unkown>"; + return "<unkown ERROR>"; } @@ -335,93 +327,57 @@ set_led_bit(hfcusb_data * hfc, signed short led_bits, int unset) } } -/******************************************/ -/* invert B-channel LEDs if data is sent */ -/******************************************/ -static void -led_timer(hfcusb_data * hfc) -{ - static int cnt = 0; - - if (cnt) { - if (hfc->led_b_active & 1) - set_led_bit(hfc, vdata[hfc->vend_idx].led_bits[2], - 0); - if (hfc->led_b_active & 2) - set_led_bit(hfc, vdata[hfc->vend_idx].led_bits[3], - 0); - } else { - if (!(hfc->led_b_active & 1) || hfc->led_new_data & 1) - set_led_bit(hfc, vdata[hfc->vend_idx].led_bits[2], - 1); - if (!(hfc->led_b_active & 2) || hfc->led_new_data & 2) - set_led_bit(hfc, vdata[hfc->vend_idx].led_bits[3], - 1); - } - - write_led(hfc, hfc->led_state); - hfc->led_new_data = 0; - - cnt = !cnt; - - /* restart 4 hz timer */ - if (!timer_pending(&hfc->led_timer)) { - add_timer(&hfc->led_timer); - hfc->led_timer.expires = jiffies + (LED_TIME * HZ) / 1000; - } -} - /**************************/ /* handle LED requests */ /**************************/ static void handle_led(hfcusb_data * hfc, int event) { + hfcsusb_vdata *driver_info = + (hfcsusb_vdata *) hfcusb_idtab[hfc->vend_idx].driver_info; + /* if no scheme -> no LED action */ - if (vdata[hfc->vend_idx].led_scheme == LED_OFF) + if (driver_info->led_scheme == LED_OFF) return; switch (event) { case LED_POWER_ON: - set_led_bit(hfc, vdata[hfc->vend_idx].led_bits[0], + set_led_bit(hfc, driver_info->led_bits[0], 0); - set_led_bit(hfc, vdata[hfc->vend_idx].led_bits[1], + set_led_bit(hfc, driver_info->led_bits[1], 1); - set_led_bit(hfc, vdata[hfc->vend_idx].led_bits[2], + set_led_bit(hfc, driver_info->led_bits[2], 1); - set_led_bit(hfc, vdata[hfc->vend_idx].led_bits[3], + set_led_bit(hfc, driver_info->led_bits[3], 1); break; case LED_POWER_OFF: /* no Power off handling */ break; case LED_S0_ON: - set_led_bit(hfc, vdata[hfc->vend_idx].led_bits[1], + set_led_bit(hfc, driver_info->led_bits[1], 0); break; case LED_S0_OFF: - set_led_bit(hfc, vdata[hfc->vend_idx].led_bits[1], + set_led_bit(hfc, driver_info->led_bits[1], 1); break; case LED_B1_ON: - hfc->led_b_active |= 1; + set_led_bit(hfc, driver_info->led_bits[2], + 0); break; case LED_B1_OFF: - hfc->led_b_active &= ~1; - break; - case LED_B1_DATA: - hfc->led_new_data |= 1; + set_led_bit(hfc, driver_info->led_bits[2], + 1); break; case LED_B2_ON: - hfc->led_b_active |= 2; + set_led_bit(hfc, driver_info->led_bits[3], + 0); break; case LED_B2_OFF: - hfc->led_b_active &= ~2; - break; - case LED_B2_DATA: - hfc->led_new_data |= 2; + set_led_bit(hfc, driver_info->led_bits[3], + 1); break; } - write_led(hfc, hfc->led_state); } @@ -725,14 +681,6 @@ tx_iso_complete(struct urb *urb, struct pt_regs *regs) current_len + 1; tx_offset += (current_len + 1); - if (!transp_mode) { - if (fifon == HFCUSB_B1_TX) - handle_led(hfc, - LED_B1_DATA); - if (fifon == HFCUSB_B2_TX) - handle_led(hfc, - LED_B2_DATA); - } } else { urb->iso_frame_desc[k].offset = tx_offset++; @@ -966,14 +914,6 @@ collect_rx_frame(usb_fifo * fifo, __u8 * data, int len, int finish) skb_trim(fifo->skbuff, 0); } } - - /* LED flashing only in HDLC mode */ - if (!transp_mode) { - if (fifon == HFCUSB_B1_RX) - handle_led(hfc, LED_B1_DATA); - if (fifon == HFCUSB_B2_RX) - handle_led(hfc, LED_B2_DATA); - } } /***********************************************/ @@ -1339,17 +1279,6 @@ usb_init(hfcusb_data * hfc) hfc->t4_timer.data = (long) hfc; hfc->t4_timer.function = (void *) l1_timer_expire_t4; - /* init the led timer */ - init_timer(&hfc->led_timer); - hfc->led_timer.data = (long) hfc; - hfc->led_timer.function = (void *) led_timer; - - /* trigger 4 hz led timer */ - if (!timer_pending(&hfc->led_timer)) { - hfc->led_timer.expires = jiffies + (LED_TIME * HZ) / 1000; - add_timer(&hfc->led_timer); - } - /* init the background machinery for control requests */ hfc->ctrl_read.bRequestType = 0xc0; hfc->ctrl_read.bRequest = 1; @@ -1440,13 +1369,18 @@ hfc_usb_probe(struct usb_interface *intf, const struct usb_device_id *id) attr, cfg_found, cidx, ep_addr; int cmptbl[16], small_match, iso_packet_size, packet_size, alt_used = 0; + hfcsusb_vdata *driver_info; vend_idx = 0xffff; - for (i = 0; vdata[i].vendor; i++) { - if (dev->descriptor.idVendor == vdata[i].vendor - && dev->descriptor.idProduct == vdata[i].prod_id) + for (i = 0; hfcusb_idtab[i].idVendor; i++) { + if (dev->descriptor.idVendor == hfcusb_idtab[i].idVendor + && dev->descriptor.idProduct == + hfcusb_idtab[i].idProduct) { vend_idx = i; + continue; + } } + #ifdef CONFIG_HISAX_DEBUG DBG(USB_DBG, "HFC-USB: probing interface(%d) actalt(%d) minor(%d)\n", ifnum, @@ -1457,10 +1391,6 @@ hfc_usb_probe(struct usb_interface *intf, const struct usb_device_id *id) ifnum, iface->desc.bAlternateSetting, intf->minor); if (vend_idx != 0xffff) { -#ifdef CONFIG_HISAX_DEBUG - DBG(USB_DBG, "HFC-S USB: found vendor idx:%d name:%s", - vend_idx, vdata[vend_idx].vend_name); -#endif /* if vendor and product ID is OK, start probing alternate settings */ alt_idx = 0; small_match = 0xffff; @@ -1687,9 +1617,11 @@ hfc_usb_probe(struct usb_interface *intf, const struct usb_device_id *id) usb_sndctrlpipe(context->dev, 0); context->ctrl_urb = usb_alloc_urb(0, GFP_KERNEL); - printk(KERN_INFO - "HFC-S USB: detected \"%s\"\n", - vdata[vend_idx].vend_name); + driver_info = + (hfcsusb_vdata *) hfcusb_idtab[vend_idx]. + driver_info; + printk(KERN_INFO "HFC-S USB: detected \"%s\"\n", + driver_info->vend_name); #ifdef CONFIG_HISAX_DEBUG DBG(USB_DBG, "HFC-S USB: Endpoint-Config: %s (if=%d alt=%d)\n", @@ -1740,8 +1672,6 @@ hfc_usb_disconnect(struct usb_interface del_timer(&context->t3_timer); if (timer_pending(&context->t4_timer)) del_timer(&context->t4_timer); - if (timer_pending(&context->led_timer)) - del_timer(&context->led_timer); /* tell all fifos to terminate */ for (i = 0; i < HFCUSB_NUM_FIFOS; i++) { if (context->fifos[i].usb_transfer_mode == USB_ISOC) { @@ -1785,9 +1715,11 @@ hfc_usb_disconnect(struct usb_interface /* our driver information structure */ /************************************/ static struct usb_driver hfc_drv = { - .owner = THIS_MODULE,.name = - "hfc_usb",.id_table = hfc_usb_idtab,.probe = - hfc_usb_probe,.disconnect = hfc_usb_disconnect, + .owner = THIS_MODULE, + .name = "hfc_usb", + .id_table = hfcusb_idtab, + .probe = hfc_usb_probe, + .disconnect = hfc_usb_disconnect, }; static void __exit hfc_usb_exit(void) @@ -1825,4 +1757,4 @@ module_exit(hfc_usb_exit); MODULE_AUTHOR(DRIVER_AUTHOR); MODULE_DESCRIPTION(DRIVER_DESC); MODULE_LICENSE("GPL"); -MODULE_DEVICE_TABLE(usb, hfc_usb_idtab); +MODULE_DEVICE_TABLE(usb, hfcusb_idtab); diff --git a/drivers/isdn/hisax/hfc_usb.h b/drivers/isdn/hisax/hfc_usb.h index 280dd29b30d..ec52c1a7c22 100644 --- a/drivers/isdn/hisax/hfc_usb.h +++ b/drivers/isdn/hisax/hfc_usb.h @@ -1,7 +1,7 @@ /* * hfc_usb.h * -* $Id: hfc_usb.h,v 4.1 2005/01/26 17:25:53 martinb1 Exp $ +* $Id: hfc_usb.h,v 4.2 2005/04/07 15:27:17 martinb1 Exp $ */ #ifndef __HFC_USB_H__ @@ -91,7 +91,7 @@ /**********/ /* macros */ /**********/ -#define write_usb(a,b,c)usb_control_msg((a)->dev,(a)->ctrl_out_pipe,0,0x40,(c),(b),0,0,HFC_CTRL_TIMEOUT) +#define write_usb(a,b,c)usb_control_msg((a)->dev,(a)->ctrl_out_pipe,0,0x40,(c),(b),NULL,0,HFC_CTRL_TIMEOUT) #define read_usb(a,b,c) usb_control_msg((a)->dev,(a)->ctrl_in_pipe,1,0xC0,0,(b),(c),1,HFC_CTRL_TIMEOUT) @@ -186,6 +186,7 @@ static int validconf[][19] = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} // EOL element }; +#ifdef CONFIG_HISAX_DEBUG // string description of chosen config static char *conf_str[] = { "4 Interrupt IN + 3 Isochron OUT", @@ -193,6 +194,7 @@ static char *conf_str[] = { "4 Isochron IN + 3 Isochron OUT", "3 Isochron IN + 3 Isochron OUT" }; +#endif typedef struct { diff --git a/drivers/isdn/hisax/hisax_fcpcipnp.c b/drivers/isdn/hisax/hisax_fcpcipnp.c index b4d795d4015..dc7ef957e89 100644 --- a/drivers/isdn/hisax/hisax_fcpcipnp.c +++ b/drivers/isdn/hisax/hisax_fcpcipnp.c @@ -23,7 +23,6 @@ * o tx_skb at PH_DEACTIVATE time */ -#include <linux/version.h> #include <linux/module.h> #include <linux/init.h> #include <linux/pci.h> diff --git a/drivers/isdn/hisax/hscx.c b/drivers/isdn/hisax/hscx.c index 66dbaee77bf..c8f9951f791 100644 --- a/drivers/isdn/hisax/hscx.c +++ b/drivers/isdn/hisax/hscx.c @@ -156,14 +156,10 @@ close_hscxstate(struct BCState *bcs) { modehscx(bcs, 0, bcs->channel); if (test_and_clear_bit(BC_FLG_INIT, &bcs->Flag)) { - if (bcs->hw.hscx.rcvbuf) { - kfree(bcs->hw.hscx.rcvbuf); - bcs->hw.hscx.rcvbuf = NULL; - } - if (bcs->blog) { - kfree(bcs->blog); - bcs->blog = NULL; - } + kfree(bcs->hw.hscx.rcvbuf); + bcs->hw.hscx.rcvbuf = NULL; + kfree(bcs->blog); + bcs->blog = NULL; skb_queue_purge(&bcs->rqueue); skb_queue_purge(&bcs->squeue); if (bcs->tx_skb) { diff --git a/drivers/isdn/hisax/icc.c b/drivers/isdn/hisax/icc.c index b4ca5859b17..c615752b96a 100644 --- a/drivers/isdn/hisax/icc.c +++ b/drivers/isdn/hisax/icc.c @@ -571,14 +571,10 @@ setstack_icc(struct PStack *st, struct IsdnCardState *cs) static void DC_Close_icc(struct IsdnCardState *cs) { - if (cs->dc.icc.mon_rx) { - kfree(cs->dc.icc.mon_rx); - cs->dc.icc.mon_rx = NULL; - } - if (cs->dc.icc.mon_tx) { - kfree(cs->dc.icc.mon_tx); - cs->dc.icc.mon_tx = NULL; - } + kfree(cs->dc.icc.mon_rx); + cs->dc.icc.mon_rx = NULL; + kfree(cs->dc.icc.mon_tx); + cs->dc.icc.mon_tx = NULL; } static void diff --git a/drivers/isdn/hisax/ipacx.c b/drivers/isdn/hisax/ipacx.c index efba2f44801..2e9afae1254 100644 --- a/drivers/isdn/hisax/ipacx.c +++ b/drivers/isdn/hisax/ipacx.c @@ -762,14 +762,10 @@ bch_close_state(struct BCState *bcs) { bch_mode(bcs, 0, bcs->channel); if (test_and_clear_bit(BC_FLG_INIT, &bcs->Flag)) { - if (bcs->hw.hscx.rcvbuf) { - kfree(bcs->hw.hscx.rcvbuf); - bcs->hw.hscx.rcvbuf = NULL; - } - if (bcs->blog) { - kfree(bcs->blog); - bcs->blog = NULL; - } + kfree(bcs->hw.hscx.rcvbuf); + bcs->hw.hscx.rcvbuf = NULL; + kfree(bcs->blog); + bcs->blog = NULL; skb_queue_purge(&bcs->rqueue); skb_queue_purge(&bcs->squeue); if (bcs->tx_skb) { diff --git a/drivers/isdn/hisax/isac.c b/drivers/isdn/hisax/isac.c index 85e063a08d2..565b7892c26 100644 --- a/drivers/isdn/hisax/isac.c +++ b/drivers/isdn/hisax/isac.c @@ -570,15 +570,12 @@ setstack_isac(struct PStack *st, struct IsdnCardState *cs) } static void -DC_Close_isac(struct IsdnCardState *cs) { - if (cs->dc.isac.mon_rx) { - kfree(cs->dc.isac.mon_rx); - cs->dc.isac.mon_rx = NULL; - } - if (cs->dc.isac.mon_tx) { - kfree(cs->dc.isac.mon_tx); - cs->dc.isac.mon_tx = NULL; - } +DC_Close_isac(struct IsdnCardState *cs) +{ + kfree(cs->dc.isac.mon_rx); + cs->dc.isac.mon_rx = NULL; + kfree(cs->dc.isac.mon_tx); + cs->dc.isac.mon_tx = NULL; } static void diff --git a/drivers/isdn/hisax/isar.c b/drivers/isdn/hisax/isar.c index 642a87c5129..674af673ff9 100644 --- a/drivers/isdn/hisax/isar.c +++ b/drivers/isdn/hisax/isar.c @@ -1688,10 +1688,8 @@ close_isarstate(struct BCState *bcs) { modeisar(bcs, 0, bcs->channel); if (test_and_clear_bit(BC_FLG_INIT, &bcs->Flag)) { - if (bcs->hw.isar.rcvbuf) { - kfree(bcs->hw.isar.rcvbuf); - bcs->hw.isar.rcvbuf = NULL; - } + kfree(bcs->hw.isar.rcvbuf); + bcs->hw.isar.rcvbuf = NULL; skb_queue_purge(&bcs->rqueue); skb_queue_purge(&bcs->squeue); if (bcs->tx_skb) { diff --git a/drivers/isdn/hisax/jade.c b/drivers/isdn/hisax/jade.c index 363ae3179bb..2659fecc267 100644 --- a/drivers/isdn/hisax/jade.c +++ b/drivers/isdn/hisax/jade.c @@ -195,14 +195,10 @@ close_jadestate(struct BCState *bcs) { modejade(bcs, 0, bcs->channel); if (test_and_clear_bit(BC_FLG_INIT, &bcs->Flag)) { - if (bcs->hw.hscx.rcvbuf) { - kfree(bcs->hw.hscx.rcvbuf); - bcs->hw.hscx.rcvbuf = NULL; - } - if (bcs->blog) { - kfree(bcs->blog); - bcs->blog = NULL; - } + kfree(bcs->hw.hscx.rcvbuf); + bcs->hw.hscx.rcvbuf = NULL; + kfree(bcs->blog); + bcs->blog = NULL; skb_queue_purge(&bcs->rqueue); skb_queue_purge(&bcs->squeue); if (bcs->tx_skb) { diff --git a/drivers/isdn/hisax/netjet.c b/drivers/isdn/hisax/netjet.c index 94da03c30c5..47a47ef0968 100644 --- a/drivers/isdn/hisax/netjet.c +++ b/drivers/isdn/hisax/netjet.c @@ -855,14 +855,10 @@ close_tigerstate(struct BCState *bcs) { mode_tiger(bcs, 0, bcs->channel); if (test_and_clear_bit(BC_FLG_INIT, &bcs->Flag)) { - if (bcs->hw.tiger.rcvbuf) { - kfree(bcs->hw.tiger.rcvbuf); - bcs->hw.tiger.rcvbuf = NULL; - } - if (bcs->hw.tiger.sendbuf) { - kfree(bcs->hw.tiger.sendbuf); - bcs->hw.tiger.sendbuf = NULL; - } + kfree(bcs->hw.tiger.rcvbuf); + bcs->hw.tiger.rcvbuf = NULL; + kfree(bcs->hw.tiger.sendbuf); + bcs->hw.tiger.sendbuf = NULL; skb_queue_purge(&bcs->rqueue); skb_queue_purge(&bcs->squeue); if (bcs->tx_skb) { @@ -967,20 +963,12 @@ inittiger(struct IsdnCardState *cs) static void releasetiger(struct IsdnCardState *cs) { - if (cs->bcs[0].hw.tiger.send) { - kfree(cs->bcs[0].hw.tiger.send); - cs->bcs[0].hw.tiger.send = NULL; - } - if (cs->bcs[1].hw.tiger.send) { - cs->bcs[1].hw.tiger.send = NULL; - } - if (cs->bcs[0].hw.tiger.rec) { - kfree(cs->bcs[0].hw.tiger.rec); - cs->bcs[0].hw.tiger.rec = NULL; - } - if (cs->bcs[1].hw.tiger.rec) { - cs->bcs[1].hw.tiger.rec = NULL; - } + kfree(cs->bcs[0].hw.tiger.send); + cs->bcs[0].hw.tiger.send = NULL; + cs->bcs[1].hw.tiger.send = NULL; + kfree(cs->bcs[0].hw.tiger.rec); + cs->bcs[0].hw.tiger.rec = NULL; + cs->bcs[1].hw.tiger.rec = NULL; } void diff --git a/drivers/isdn/hisax/st5481_b.c b/drivers/isdn/hisax/st5481_b.c index 0a2536d6240..657817a591f 100644 --- a/drivers/isdn/hisax/st5481_b.c +++ b/drivers/isdn/hisax/st5481_b.c @@ -209,9 +209,7 @@ static void st5481B_mode(struct st5481_bcs *bcs, int mode) bcs->mode = mode; // Cancel all USB transfers on this B channel - b_out->urb[0]->transfer_flags |= URB_ASYNC_UNLINK; usb_unlink_urb(b_out->urb[0]); - b_out->urb[1]->transfer_flags |= URB_ASYNC_UNLINK; usb_unlink_urb(b_out->urb[1]); b_out->busy = 0; diff --git a/drivers/isdn/hisax/st5481_init.c b/drivers/isdn/hisax/st5481_init.c index 2cf5d1a6df6..8e192a3a349 100644 --- a/drivers/isdn/hisax/st5481_init.c +++ b/drivers/isdn/hisax/st5481_init.c @@ -25,7 +25,6 @@ */ #include <linux/config.h> -#include <linux/version.h> #include <linux/module.h> #include <linux/init.h> #include <linux/usb.h> diff --git a/drivers/isdn/hisax/st5481_usb.c b/drivers/isdn/hisax/st5481_usb.c index ffd5b2d4555..b096b64b025 100644 --- a/drivers/isdn/hisax/st5481_usb.c +++ b/drivers/isdn/hisax/st5481_usb.c @@ -335,14 +335,12 @@ void st5481_release_usb(struct st5481_adapter *adapter) // Stop and free Control and Interrupt URBs usb_kill_urb(ctrl->urb); - if (ctrl->urb->transfer_buffer) - kfree(ctrl->urb->transfer_buffer); + kfree(ctrl->urb->transfer_buffer); usb_free_urb(ctrl->urb); ctrl->urb = NULL; usb_kill_urb(intr->urb); - if (intr->urb->transfer_buffer) - kfree(intr->urb->transfer_buffer); + kfree(intr->urb->transfer_buffer); usb_free_urb(intr->urb); ctrl->urb = NULL; } @@ -457,8 +455,7 @@ st5481_setup_isocpipes(struct urb* urb[2], struct usb_device *dev, err: for (j = 0; j < 2; j++) { if (urb[j]) { - if (urb[j]->transfer_buffer) - kfree(urb[j]->transfer_buffer); + kfree(urb[j]->transfer_buffer); urb[j]->transfer_buffer = NULL; usb_free_urb(urb[j]); urb[j] = NULL; @@ -473,8 +470,7 @@ void st5481_release_isocpipes(struct urb* urb[2]) for (j = 0; j < 2; j++) { usb_kill_urb(urb[j]); - if (urb[j]->transfer_buffer) - kfree(urb[j]->transfer_buffer); + kfree(urb[j]->transfer_buffer); usb_free_urb(urb[j]); urb[j] = NULL; } @@ -645,9 +641,7 @@ void st5481_in_mode(struct st5481_in *in, int mode) in->mode = mode; - in->urb[0]->transfer_flags |= URB_ASYNC_UNLINK; usb_unlink_urb(in->urb[0]); - in->urb[1]->transfer_flags |= URB_ASYNC_UNLINK; usb_unlink_urb(in->urb[1]); if (in->mode != L1_MODE_NULL) { diff --git a/drivers/isdn/hisax/w6692.c b/drivers/isdn/hisax/w6692.c index 7baf8e48847..0352ee5f706 100644 --- a/drivers/isdn/hisax/w6692.c +++ b/drivers/isdn/hisax/w6692.c @@ -819,14 +819,10 @@ close_w6692state(struct BCState *bcs) { W6692Bmode(bcs, 0, bcs->channel); if (test_and_clear_bit(BC_FLG_INIT, &bcs->Flag)) { - if (bcs->hw.w6692.rcvbuf) { - kfree(bcs->hw.w6692.rcvbuf); - bcs->hw.w6692.rcvbuf = NULL; - } - if (bcs->blog) { - kfree(bcs->blog); - bcs->blog = NULL; - } + kfree(bcs->hw.w6692.rcvbuf); + bcs->hw.w6692.rcvbuf = NULL; + kfree(bcs->blog); + bcs->blog = NULL; skb_queue_purge(&bcs->rqueue); skb_queue_purge(&bcs->squeue); if (bcs->tx_skb) { |