diff options
Diffstat (limited to 'drivers/isdn')
-rw-r--r-- | drivers/isdn/Kconfig | 15 | ||||
-rw-r--r-- | drivers/isdn/capi/Kconfig | 7 | ||||
-rw-r--r-- | drivers/isdn/capi/capi.c | 2 | ||||
-rw-r--r-- | drivers/isdn/capi/kcapi.c | 6 | ||||
-rw-r--r-- | drivers/isdn/capi/kcapi_proc.c | 28 | ||||
-rw-r--r-- | drivers/isdn/hardware/Kconfig | 1 | ||||
-rw-r--r-- | drivers/isdn/hardware/avm/Kconfig | 23 | ||||
-rw-r--r-- | drivers/isdn/hardware/eicon/Kconfig | 22 | ||||
-rw-r--r-- | drivers/isdn/hardware/eicon/idifunc.c | 1 | ||||
-rw-r--r-- | drivers/isdn/hisax/config.c | 10 | ||||
-rw-r--r-- | drivers/isdn/hisax/sedlbauer.c | 8 | ||||
-rw-r--r-- | drivers/isdn/i4l/Kconfig | 7 |
12 files changed, 53 insertions, 77 deletions
diff --git a/drivers/isdn/Kconfig b/drivers/isdn/Kconfig index 3e088c4..cf906c8 100644 --- a/drivers/isdn/Kconfig +++ b/drivers/isdn/Kconfig @@ -2,12 +2,10 @@ # ISDN device configuration # -menu "ISDN subsystem" - depends on !S390 - -config ISDN +menuconfig ISDN tristate "ISDN support" depends on NET + depends on !S390 ---help--- ISDN ("Integrated Services Digital Networks", called RNIS in France) is a special type of fully digital telephone service; it's mostly @@ -21,9 +19,9 @@ config ISDN Select this option if you want your kernel to support ISDN. +if ISDN menu "Old ISDN4Linux" - depends on NET && ISDN config ISDN_I4L tristate "Old ISDN4Linux (deprecated)" @@ -50,20 +48,21 @@ endif endmenu comment "CAPI subsystem" - depends on NET && ISDN config ISDN_CAPI tristate "CAPI2.0 support" - depends on ISDN help This provides the CAPI (Common ISDN Application Programming Interface, a standard making it easy for programs to access ISDN hardware, see <http://www.capi.org/>. This is needed for AVM's set of active ISDN controllers like B1, T1, M1. +if ISDN_CAPI + source "drivers/isdn/capi/Kconfig" source "drivers/isdn/hardware/Kconfig" -endmenu +endif # ISDN_CAPI +endif # ISDN diff --git a/drivers/isdn/capi/Kconfig b/drivers/isdn/capi/Kconfig index c92f9d7..e1afd60 100644 --- a/drivers/isdn/capi/Kconfig +++ b/drivers/isdn/capi/Kconfig @@ -3,7 +3,6 @@ # config ISDN_DRV_AVMB1_VERBOSE_REASON bool "Verbose reason code reporting" - depends on ISDN_CAPI default y help If you say Y here, the CAPI drivers will give verbose reasons for @@ -12,7 +11,6 @@ config ISDN_DRV_AVMB1_VERBOSE_REASON config CAPI_TRACE bool "CAPI trace support" - depends on ISDN_CAPI default y help If you say Y here, the kernelcapi driver can make verbose traces @@ -23,7 +21,7 @@ config CAPI_TRACE config ISDN_CAPI_MIDDLEWARE bool "CAPI2.0 Middleware support (EXPERIMENTAL)" - depends on ISDN_CAPI && EXPERIMENTAL + depends on EXPERIMENTAL help This option will enhance the capabilities of the /dev/capi20 interface. It will provide a means of moving a data connection, @@ -33,7 +31,6 @@ config ISDN_CAPI_MIDDLEWARE config ISDN_CAPI_CAPI20 tristate "CAPI2.0 /dev/capi support" - depends on ISDN_CAPI help This option will provide the CAPI 2.0 interface to userspace applications via /dev/capi20. Applications should use the @@ -56,7 +53,7 @@ config ISDN_CAPI_CAPIFS config ISDN_CAPI_CAPIDRV tristate "CAPI2.0 capidrv interface support" - depends on ISDN_CAPI && ISDN_I4L + depends on ISDN_I4L help This option provides the glue code to hook up CAPI driven cards to the legacy isdn4linux link layer. If you have a card which is diff --git a/drivers/isdn/capi/capi.c b/drivers/isdn/capi/capi.c index 81661b8..f449dae 100644 --- a/drivers/isdn/capi/capi.c +++ b/drivers/isdn/capi/capi.c @@ -549,7 +549,7 @@ static int handle_minor_send(struct capiminor *mp) capimsg_setu8 (skb->data, 5, CAPI_REQ); capimsg_setu16(skb->data, 6, mp->msgid++); capimsg_setu32(skb->data, 8, mp->ncci); /* NCCI */ - capimsg_setu32(skb->data, 12, (u32) skb->data); /* Data32 */ + capimsg_setu32(skb->data, 12, (u32)(long)skb->data);/* Data32 */ capimsg_setu16(skb->data, 16, len); /* Data length */ capimsg_setu16(skb->data, 18, datahandle); capimsg_setu16(skb->data, 20, 0); /* Flags */ diff --git a/drivers/isdn/capi/kcapi.c b/drivers/isdn/capi/kcapi.c index 3ed34f7..9f73bc2 100644 --- a/drivers/isdn/capi/kcapi.c +++ b/drivers/isdn/capi/kcapi.c @@ -258,7 +258,7 @@ static void recv_handler(struct work_struct *work) if ((!ap) || (ap->release_in_progress)) return; - down(&ap->recv_sem); + mutex_lock(&ap->recv_mtx); while ((skb = skb_dequeue(&ap->recv_queue))) { if (CAPIMSG_CMD(skb->data) == CAPI_DATA_B3_IND) ap->nrecvdatapkt++; @@ -267,7 +267,7 @@ static void recv_handler(struct work_struct *work) ap->recv_message(ap, skb); } - up(&ap->recv_sem); + mutex_unlock(&ap->recv_mtx); } void capi_ctr_handle_message(struct capi_ctr * card, u16 appl, struct sk_buff *skb) @@ -547,7 +547,7 @@ u16 capi20_register(struct capi20_appl *ap) ap->nsentctlpkt = 0; ap->nsentdatapkt = 0; ap->callback = NULL; - init_MUTEX(&ap->recv_sem); + mutex_init(&ap->recv_mtx); skb_queue_head_init(&ap->recv_queue); INIT_WORK(&ap->recv_work, recv_handler); ap->release_in_progress = 0; diff --git a/drivers/isdn/capi/kcapi_proc.c b/drivers/isdn/capi/kcapi_proc.c index 31f4fd8..845a797 100644 --- a/drivers/isdn/capi/kcapi_proc.c +++ b/drivers/isdn/capi/kcapi_proc.c @@ -243,36 +243,15 @@ create_seq_entry(char *name, mode_t mode, const struct file_operations *f) // --------------------------------------------------------------------------- - -static __inline__ struct capi_driver *capi_driver_get_idx(loff_t pos) -{ - struct capi_driver *drv = NULL; - struct list_head *l; - loff_t i; - - i = 0; - list_for_each(l, &capi_drivers) { - drv = list_entry(l, struct capi_driver, list); - if (i++ == pos) - return drv; - } - return NULL; -} - static void *capi_driver_start(struct seq_file *seq, loff_t *pos) { - struct capi_driver *drv; read_lock(&capi_drivers_list_lock); - drv = capi_driver_get_idx(*pos); - return drv; + return seq_list_start(&capi_drivers, *pos); } static void *capi_driver_next(struct seq_file *seq, void *v, loff_t *pos) { - struct capi_driver *drv = (struct capi_driver *)v; - ++*pos; - if (drv->list.next == &capi_drivers) return NULL; - return list_entry(drv->list.next, struct capi_driver, list); + return seq_list_next(v, &capi_drivers, pos); } static void capi_driver_stop(struct seq_file *seq, void *v) @@ -282,7 +261,8 @@ static void capi_driver_stop(struct seq_file *seq, void *v) static int capi_driver_show(struct seq_file *seq, void *v) { - struct capi_driver *drv = (struct capi_driver *)v; + struct capi_driver *drv = list_entry(v, struct capi_driver, list); + seq_printf(seq, "%-32s %s\n", drv->name, drv->revision); return 0; } diff --git a/drivers/isdn/hardware/Kconfig b/drivers/isdn/hardware/Kconfig index 139f197..30d028d 100644 --- a/drivers/isdn/hardware/Kconfig +++ b/drivers/isdn/hardware/Kconfig @@ -2,7 +2,6 @@ # ISDN hardware drivers # comment "CAPI hardware drivers" - depends on NET && ISDN && ISDN_CAPI source "drivers/isdn/hardware/avm/Kconfig" diff --git a/drivers/isdn/hardware/avm/Kconfig b/drivers/isdn/hardware/avm/Kconfig index 29a32a8..5dbcbe3 100644 --- a/drivers/isdn/hardware/avm/Kconfig +++ b/drivers/isdn/hardware/avm/Kconfig @@ -2,23 +2,22 @@ # ISDN AVM drivers # -menu "Active AVM cards" - depends on NET && ISDN && ISDN_CAPI!=n - -config CAPI_AVM - bool "Support AVM cards" +menuconfig CAPI_AVM + bool "Active AVM cards" help Enable support for AVM active ISDN cards. +if CAPI_AVM + config ISDN_DRV_AVMB1_B1ISA tristate "AVM B1 ISA support" - depends on CAPI_AVM && ISDN_CAPI && ISA + depends on ISA help Enable support for the ISA version of the AVM B1 card. config ISDN_DRV_AVMB1_B1PCI tristate "AVM B1 PCI support" - depends on CAPI_AVM && ISDN_CAPI && PCI + depends on PCI help Enable support for the PCI version of the AVM B1 card. @@ -30,14 +29,13 @@ config ISDN_DRV_AVMB1_B1PCIV4 config ISDN_DRV_AVMB1_T1ISA tristate "AVM T1/T1-B ISA support" - depends on CAPI_AVM && ISDN_CAPI && ISA + depends on ISA help Enable support for the AVM T1 T1B card. Note: This is a PRI card and handle 30 B-channels. config ISDN_DRV_AVMB1_B1PCMCIA tristate "AVM B1/M1/M2 PCMCIA support" - depends on CAPI_AVM && ISDN_CAPI help Enable support for the PCMCIA version of the AVM B1 card. @@ -50,17 +48,16 @@ config ISDN_DRV_AVMB1_AVM_CS config ISDN_DRV_AVMB1_T1PCI tristate "AVM T1/T1-B PCI support" - depends on CAPI_AVM && ISDN_CAPI && PCI + depends on PCI help Enable support for the AVM T1 T1B card. Note: This is a PRI card and handle 30 B-channels. config ISDN_DRV_AVMB1_C4 tristate "AVM C4/C2 support" - depends on CAPI_AVM && ISDN_CAPI && PCI + depends on PCI help Enable support for the AVM C4/C2 PCI cards. These cards handle 4/2 BRI ISDN lines (8/4 channels). -endmenu - +endif # CAPI_AVM diff --git a/drivers/isdn/hardware/eicon/Kconfig b/drivers/isdn/hardware/eicon/Kconfig index 01d4afd..6082b6a 100644 --- a/drivers/isdn/hardware/eicon/Kconfig +++ b/drivers/isdn/hardware/eicon/Kconfig @@ -2,52 +2,50 @@ # ISDN DIVAS Eicon driver # -menu "Active Eicon DIVA Server cards" - depends on NET && ISDN && ISDN_CAPI!=n - -config CAPI_EICON - bool "Support Eicon cards" +menuconfig CAPI_EICON + bool "Active Eicon DIVA Server cards" help Enable support for Eicon Networks active ISDN cards. +if CAPI_EICON + config ISDN_DIVAS tristate "Support Eicon DIVA Server cards" - depends on CAPI_EICON && PROC_FS && PCI + depends on PROC_FS && PCI help Say Y here if you have an Eicon Networks DIVA Server PCI ISDN card. In order to use this card, additional firmware is necessary, which has to be downloaded into the card using the divactrl utility. +if ISDN_DIVAS + config ISDN_DIVAS_BRIPCI bool "DIVA Server BRI/PCI support" - depends on ISDN_DIVAS help Enable support for DIVA Server BRI-PCI. config ISDN_DIVAS_PRIPCI bool "DIVA Server PRI/PCI support" - depends on ISDN_DIVAS help Enable support for DIVA Server PRI-PCI. config ISDN_DIVAS_DIVACAPI tristate "DIVA CAPI2.0 interface support" - depends on ISDN_DIVAS && ISDN_CAPI help You need this to provide the CAPI interface for DIVA Server cards. config ISDN_DIVAS_USERIDI tristate "DIVA User-IDI interface support" - depends on ISDN_DIVAS help Enable support for user-mode IDI interface. config ISDN_DIVAS_MAINT tristate "DIVA Maint driver support" - depends on ISDN_DIVAS && m + depends on m help Enable Divas Maintenance driver. -endmenu +endif # ISDN_DIVAS +endif # CAPI_EICON diff --git a/drivers/isdn/hardware/eicon/idifunc.c b/drivers/isdn/hardware/eicon/idifunc.c index 4cbc68c..db87d51 100644 --- a/drivers/isdn/hardware/eicon/idifunc.c +++ b/drivers/isdn/hardware/eicon/idifunc.c @@ -106,6 +106,7 @@ static void um_new_card(DESCRIPTOR * d) } else { DBG_ERR(("could not create user mode idi card %d", adapter_nr)); + diva_os_free(0, card); } } diff --git a/drivers/isdn/hisax/config.c b/drivers/isdn/hisax/config.c index 8d53a7f..a43162c 100644 --- a/drivers/isdn/hisax/config.c +++ b/drivers/isdn/hisax/config.c @@ -361,11 +361,11 @@ module_param_array(io1, int, NULL, 0); int nrcards; -extern char *l1_revision; -extern char *l2_revision; -extern char *l3_revision; -extern char *lli_revision; -extern char *tei_revision; +extern const char *l1_revision; +extern const char *l2_revision; +extern const char *l3_revision; +extern const char *lli_revision; +extern const char *tei_revision; char *HiSax_getrev(const char *revision) { diff --git a/drivers/isdn/hisax/sedlbauer.c b/drivers/isdn/hisax/sedlbauer.c index 030d162..ad06f3c 100644 --- a/drivers/isdn/hisax/sedlbauer.c +++ b/drivers/isdn/hisax/sedlbauer.c @@ -451,6 +451,9 @@ Sedl_card_msg(struct IsdnCardState *cs, int mt, void *arg) spin_unlock_irqrestore(&cs->lock, flags); return(0); case CARD_RELEASE: + if (cs->hw.sedl.bus == SEDL_BUS_PCI) + /* disable all IRQ */ + byteout(cs->hw.sedl.cfg_reg+ 5, 0); if (cs->hw.sedl.chip == SEDL_CHIP_ISAC_ISAR) { spin_lock_irqsave(&cs->lock, flags); writereg(cs->hw.sedl.adr, cs->hw.sedl.hscx, @@ -468,6 +471,9 @@ Sedl_card_msg(struct IsdnCardState *cs, int mt, void *arg) return(0); case CARD_INIT: spin_lock_irqsave(&cs->lock, flags); + if (cs->hw.sedl.bus == SEDL_BUS_PCI) + /* enable all IRQ */ + byteout(cs->hw.sedl.cfg_reg+ 5, 0x02); reset_sedlbauer(cs); if (cs->hw.sedl.chip == SEDL_CHIP_ISAC_ISAR) { clear_pending_isac_ints(cs); @@ -667,7 +673,7 @@ setup_sedlbauer(struct IsdnCard *card) byteout(cs->hw.sedl.cfg_reg, 0xff); byteout(cs->hw.sedl.cfg_reg, 0x00); byteout(cs->hw.sedl.cfg_reg+ 2, 0xdd); - byteout(cs->hw.sedl.cfg_reg+ 5, 0x02); + byteout(cs->hw.sedl.cfg_reg+ 5, 0); /* disable all IRQ */ byteout(cs->hw.sedl.cfg_reg +3, cs->hw.sedl.reset_on); mdelay(2); byteout(cs->hw.sedl.cfg_reg +3, cs->hw.sedl.reset_off); diff --git a/drivers/isdn/i4l/Kconfig b/drivers/isdn/i4l/Kconfig index 3ef567b..e91c187 100644 --- a/drivers/isdn/i4l/Kconfig +++ b/drivers/isdn/i4l/Kconfig @@ -86,7 +86,6 @@ config ISDN_X25 menu "ISDN feature submodules" - depends on ISDN config ISDN_DRV_LOOP tristate "isdnloop support" @@ -100,7 +99,7 @@ config ISDN_DRV_LOOP config ISDN_DIVERSION tristate "Support isdn diversion services" - depends on ISDN && ISDN_I4L + depends on ISDN_I4L help This option allows you to use some supplementary diversion services in conjunction with the HiSax driver on an EURO/DSS1 @@ -120,13 +119,13 @@ config ISDN_DIVERSION endmenu comment "ISDN4Linux hardware drivers" - depends on NET && ISDN && ISDN_I4L + depends on ISDN_I4L source "drivers/isdn/hisax/Kconfig" menu "Active cards" - depends on NET && ISDN && ISDN_I4L!=n + depends on ISDN_I4L!=n source "drivers/isdn/icn/Kconfig" |