mirror of
https://github.com/torvalds/linux.git
synced 2024-11-16 17:12:06 +00:00
mISDN: Cleanup hfc multiport driver
Remove references to external zaptel modules and some cosmetic cleanups. Signed-off-by: Karsten Keil <kkeil@suse.de>
This commit is contained in:
parent
7c51d57e9d
commit
69e656cc16
@ -2,10 +2,6 @@
|
||||
* see notice in hfc_multi.c
|
||||
*/
|
||||
|
||||
extern void ztdummy_extern_interrupt(void);
|
||||
extern void ztdummy_register_interrupt(void);
|
||||
extern int ztdummy_unregister_interrupt(void);
|
||||
|
||||
#define DEBUG_HFCMULTI_FIFO 0x00010000
|
||||
#define DEBUG_HFCMULTI_CRC 0x00020000
|
||||
#define DEBUG_HFCMULTI_INIT 0x00040000
|
||||
|
@ -140,7 +140,7 @@
|
||||
* #define HFC_REGISTER_DEBUG
|
||||
*/
|
||||
|
||||
static const char *hfcmulti_revision = "2.02";
|
||||
#define HFC_MULTI_VERSION "2.03"
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/pci.h>
|
||||
@ -165,10 +165,6 @@ static LIST_HEAD(HFClist);
|
||||
static spinlock_t HFClock; /* global hfc list lock */
|
||||
|
||||
static void ph_state_change(struct dchannel *);
|
||||
static void (*hfc_interrupt)(void);
|
||||
static void (*register_interrupt)(void);
|
||||
static int (*unregister_interrupt)(void);
|
||||
static int interrupt_registered;
|
||||
|
||||
static struct hfc_multi *syncmaster;
|
||||
static int plxsd_master; /* if we have a master card (yet) */
|
||||
@ -209,6 +205,7 @@ static int HFC_cnt, Port_cnt, PCM_cnt = 99;
|
||||
|
||||
MODULE_AUTHOR("Andreas Eversberg");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_VERSION(HFC_MULTI_VERSION);
|
||||
module_param(debug, uint, S_IRUGO | S_IWUSR);
|
||||
module_param(poll, uint, S_IRUGO | S_IWUSR);
|
||||
module_param(timer, uint, S_IRUGO | S_IWUSR);
|
||||
@ -1419,19 +1416,6 @@ controller_fail:
|
||||
HFC_outb(hc, R_TI_WD, poll_timer);
|
||||
hc->hw.r_irqmsk_misc |= V_TI_IRQMSK;
|
||||
|
||||
/*
|
||||
* set up 125us interrupt, only if function pointer is available
|
||||
* and module parameter timer is set
|
||||
*/
|
||||
if (timer && hfc_interrupt && register_interrupt) {
|
||||
/* only one chip should use this interrupt */
|
||||
timer = 0;
|
||||
interrupt_registered = 1;
|
||||
hc->hw.r_irqmsk_misc |= V_PROC_IRQMSK;
|
||||
/* deactivate other interrupts in ztdummy */
|
||||
register_interrupt();
|
||||
}
|
||||
|
||||
/* set E1 state machine IRQ */
|
||||
if (hc->type == 1)
|
||||
hc->hw.r_irqmsk_misc |= V_STA_IRQMSK;
|
||||
@ -2583,7 +2567,6 @@ hfcmulti_interrupt(int intno, void *dev_id)
|
||||
static int iq1 = 0, iq2 = 0, iq3 = 0, iq4 = 0,
|
||||
iq5 = 0, iq6 = 0, iqcnt = 0;
|
||||
#endif
|
||||
static int count;
|
||||
struct hfc_multi *hc = dev_id;
|
||||
struct dchannel *dch;
|
||||
u_char r_irq_statech, status, r_irq_misc, r_irq_oview;
|
||||
@ -2698,16 +2681,11 @@ hfcmulti_interrupt(int intno, void *dev_id)
|
||||
/* -> DTMF IRQ */
|
||||
hfcmulti_dtmf(hc);
|
||||
}
|
||||
/* TODO: REPLACE !!!! 125 us Interrupts are not acceptable */
|
||||
if (r_irq_misc & V_IRQ_PROC) {
|
||||
/* IRQ every 125us */
|
||||
count++;
|
||||
/* generate 1kHz signal */
|
||||
if (count == 8) {
|
||||
if (hfc_interrupt)
|
||||
hfc_interrupt();
|
||||
count = 0;
|
||||
}
|
||||
static int irq_proc_cnt;
|
||||
if (!irq_proc_cnt++)
|
||||
printk(KERN_WARNING "%s: got V_IRQ_PROC -"
|
||||
" this should not happen\n", __func__);
|
||||
}
|
||||
|
||||
}
|
||||
@ -4945,9 +4923,7 @@ hfcmulti_init(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||
switch (m->dip_type) {
|
||||
case DIP_4S:
|
||||
/*
|
||||
* get DIP Setting for beroNet 1S/2S/4S cards
|
||||
* check if Port Jumper config matches
|
||||
* module param 'protocol'
|
||||
* Get DIP setting for beroNet 1S/2S/4S cards
|
||||
* DIP Setting: (collect GPIO 13/14/15 (R_GPIO_IN1) +
|
||||
* GPI 19/23 (R_GPI_IN2))
|
||||
*/
|
||||
@ -4966,9 +4942,8 @@ hfcmulti_init(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||
break;
|
||||
case DIP_8S:
|
||||
/*
|
||||
* get DIP Setting for beroNet 8S0+ cards
|
||||
*
|
||||
* enable PCI auxbridge function
|
||||
* Get DIP Setting for beroNet 8S0+ cards
|
||||
* Enable PCI auxbridge function
|
||||
*/
|
||||
HFC_outb(hc, R_BRG_PCM_CFG, 1 | V_PCM_CLK);
|
||||
/* prepare access to auxport */
|
||||
@ -5137,8 +5112,7 @@ static struct pci_device_id hfmultipci_ids[] __devinitdata = {
|
||||
{ PCI_VENDOR_ID_CCD, PCI_DEVICE_ID_CCD_HFC8S, PCI_VENDOR_ID_CCD,
|
||||
PCI_DEVICE_ID_CCD_HFC8S, 0, 0, H(14)}, /* old Eval */
|
||||
{ PCI_VENDOR_ID_CCD, PCI_DEVICE_ID_CCD_HFC8S, PCI_VENDOR_ID_CCD,
|
||||
PCI_SUBDEVICE_ID_CCD_IOB8STR, 0, 0, H(15)},
|
||||
/* IOB8ST Recording */
|
||||
PCI_SUBDEVICE_ID_CCD_IOB8STR, 0, 0, H(15)}, /* IOB8ST Recording */
|
||||
{ PCI_VENDOR_ID_CCD, PCI_DEVICE_ID_CCD_HFC8S, PCI_VENDOR_ID_CCD,
|
||||
PCI_SUBDEVICE_ID_CCD_IOB8ST, 0, 0, H(16)}, /* IOB8ST */
|
||||
{ PCI_VENDOR_ID_CCD, PCI_DEVICE_ID_CCD_HFC8S, PCI_VENDOR_ID_CCD,
|
||||
@ -5188,18 +5162,16 @@ hfcmulti_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||
struct hm_map *m = (struct hm_map *)ent->driver_data;
|
||||
int ret;
|
||||
|
||||
if (m == NULL) {
|
||||
if (ent->vendor == PCI_VENDOR_ID_CCD)
|
||||
if (ent->device == PCI_DEVICE_ID_CCD_HFC4S ||
|
||||
ent->device == PCI_DEVICE_ID_CCD_HFC8S ||
|
||||
ent->device == PCI_DEVICE_ID_CCD_HFCE1)
|
||||
printk(KERN_ERR
|
||||
"unknown HFC multiport controller "
|
||||
"(vendor:%x device:%x subvendor:%x "
|
||||
"subdevice:%x) Please contact the "
|
||||
"driver maintainer for support.\n",
|
||||
ent->vendor, ent->device,
|
||||
ent->subvendor, ent->subdevice);
|
||||
if (m == NULL && ent->vendor == PCI_VENDOR_ID_CCD && (
|
||||
ent->device == PCI_DEVICE_ID_CCD_HFC4S ||
|
||||
ent->device == PCI_DEVICE_ID_CCD_HFC8S ||
|
||||
ent->device == PCI_DEVICE_ID_CCD_HFCE1)) {
|
||||
printk(KERN_ERR
|
||||
"Unknown HFC multiport controller (vendor:%x device:%x "
|
||||
"subvendor:%x subdevice:%x)\n", ent->vendor, ent->device,
|
||||
ent->subvendor, ent->subdevice);
|
||||
printk(KERN_ERR
|
||||
"Please contact the driver maintainer for support.\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
ret = hfcmulti_init(pdev, ent);
|
||||
@ -5222,22 +5194,9 @@ HFCmulti_cleanup(void)
|
||||
{
|
||||
struct hfc_multi *card, *next;
|
||||
|
||||
/* unload interrupt function symbol */
|
||||
if (hfc_interrupt)
|
||||
symbol_put(ztdummy_extern_interrupt);
|
||||
if (register_interrupt)
|
||||
symbol_put(ztdummy_register_interrupt);
|
||||
if (unregister_interrupt) {
|
||||
if (interrupt_registered) {
|
||||
interrupt_registered = 0;
|
||||
unregister_interrupt();
|
||||
}
|
||||
symbol_put(ztdummy_unregister_interrupt);
|
||||
}
|
||||
|
||||
/* get rid of all devices of this driver */
|
||||
list_for_each_entry_safe(card, next, &HFClist, list)
|
||||
release_card(card);
|
||||
/* get rid of all devices of this driver */
|
||||
pci_unregister_driver(&hfcmultipci_driver);
|
||||
}
|
||||
|
||||
@ -5246,8 +5205,10 @@ HFCmulti_init(void)
|
||||
{
|
||||
int err;
|
||||
|
||||
printk(KERN_INFO "mISDN: HFC-multi driver %s\n", HFC_MULTI_VERSION);
|
||||
|
||||
#ifdef IRQ_DEBUG
|
||||
printk(KERN_ERR "%s: IRQ_DEBUG IS ENABLED!\n", __func__);
|
||||
printk(KERN_DEBUG "%s: IRQ_DEBUG IS ENABLED!\n", __func__);
|
||||
#endif
|
||||
|
||||
spin_lock_init(&HFClock);
|
||||
@ -5256,22 +5217,11 @@ HFCmulti_init(void)
|
||||
if (debug & DEBUG_HFCMULTI_INIT)
|
||||
printk(KERN_DEBUG "%s: init entered\n", __func__);
|
||||
|
||||
hfc_interrupt = symbol_get(ztdummy_extern_interrupt);
|
||||
register_interrupt = symbol_get(ztdummy_register_interrupt);
|
||||
unregister_interrupt = symbol_get(ztdummy_unregister_interrupt);
|
||||
printk(KERN_INFO "mISDN: HFC-multi driver %s\n",
|
||||
hfcmulti_revision);
|
||||
|
||||
switch (poll) {
|
||||
case 0:
|
||||
poll_timer = 6;
|
||||
poll = 128;
|
||||
break;
|
||||
/*
|
||||
* wenn dieses break nochmal verschwindet,
|
||||
* gibt es heisse ohren :-)
|
||||
* "without the break you will get hot ears ???"
|
||||
*/
|
||||
case 8:
|
||||
poll_timer = 2;
|
||||
break;
|
||||
@ -5301,17 +5251,6 @@ HFCmulti_init(void)
|
||||
err = pci_register_driver(&hfcmultipci_driver);
|
||||
if (err < 0) {
|
||||
printk(KERN_ERR "error registering pci driver: %x\n", err);
|
||||
if (hfc_interrupt)
|
||||
symbol_put(ztdummy_extern_interrupt);
|
||||
if (register_interrupt)
|
||||
symbol_put(ztdummy_register_interrupt);
|
||||
if (unregister_interrupt) {
|
||||
if (interrupt_registered) {
|
||||
interrupt_registered = 0;
|
||||
unregister_interrupt();
|
||||
}
|
||||
symbol_put(ztdummy_unregister_interrupt);
|
||||
}
|
||||
return err;
|
||||
}
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user