aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/isdn
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/isdn')
-rw-r--r--drivers/isdn/capi/capi.c5
-rw-r--r--drivers/isdn/gigaset/bas-gigaset.c4
-rw-r--r--drivers/isdn/gigaset/common.c6
-rw-r--r--drivers/isdn/gigaset/gigaset.h3
-rw-r--r--drivers/isdn/gigaset/interface.c6
-rw-r--r--drivers/isdn/gigaset/usb-gigaset.c4
-rw-r--r--drivers/isdn/hardware/avm/b1pcmcia.c2
-rw-r--r--drivers/isdn/hardware/eicon/divamnt.c3
-rw-r--r--drivers/isdn/hardware/eicon/divasi.c3
-rw-r--r--drivers/isdn/hardware/eicon/divasmain.c3
-rw-r--r--drivers/isdn/hisax/hfc_pci.c2
-rw-r--r--drivers/isdn/hisax/sedlbauer_cs.c2
-rw-r--r--drivers/isdn/hisax/teles3.c1
-rw-r--r--drivers/isdn/hisax/telespci.c5
-rw-r--r--drivers/isdn/i4l/isdn_common.c18
-rw-r--r--drivers/isdn/i4l/isdn_tty.c5
-rw-r--r--drivers/isdn/i4l/isdn_x25iface.c4
17 files changed, 36 insertions, 40 deletions
diff --git a/drivers/isdn/capi/capi.c b/drivers/isdn/capi/capi.c
index 2e541fa02024..a518ec531021 100644
--- a/drivers/isdn/capi/capi.c
+++ b/drivers/isdn/capi/capi.c
@@ -39,7 +39,6 @@
39#include <linux/init.h> 39#include <linux/init.h>
40#include <linux/device.h> 40#include <linux/device.h>
41#include <linux/moduleparam.h> 41#include <linux/moduleparam.h>
42#include <linux/devfs_fs_kernel.h>
43#include <linux/isdn/capiutil.h> 42#include <linux/isdn/capiutil.h>
44#include <linux/isdn/capicmd.h> 43#include <linux/isdn/capicmd.h>
45#if defined(CONFIG_ISDN_CAPI_CAPIFS) || defined(CONFIG_ISDN_CAPI_CAPIFS_MODULE) 44#if defined(CONFIG_ISDN_CAPI_CAPIFS) || defined(CONFIG_ISDN_CAPI_CAPIFS_MODULE)
@@ -1337,7 +1336,6 @@ static int capinc_tty_init(void)
1337 1336
1338 drv->owner = THIS_MODULE; 1337 drv->owner = THIS_MODULE;
1339 drv->driver_name = "capi_nc"; 1338 drv->driver_name = "capi_nc";
1340 drv->devfs_name = "capi/";
1341 drv->name = "capi"; 1339 drv->name = "capi";
1342 drv->major = capi_ttymajor; 1340 drv->major = capi_ttymajor;
1343 drv->minor_start = 0; 1341 drv->minor_start = 0;
@@ -1516,8 +1514,6 @@ static int __init capi_init(void)
1516 } 1514 }
1517 1515
1518 class_device_create(capi_class, NULL, MKDEV(capi_major, 0), NULL, "capi"); 1516 class_device_create(capi_class, NULL, MKDEV(capi_major, 0), NULL, "capi");
1519 devfs_mk_cdev(MKDEV(capi_major, 0), S_IFCHR | S_IRUSR | S_IWUSR,
1520 "isdn/capi20");
1521 1517
1522#ifdef CONFIG_ISDN_CAPI_MIDDLEWARE 1518#ifdef CONFIG_ISDN_CAPI_MIDDLEWARE
1523 if (capinc_tty_init() < 0) { 1519 if (capinc_tty_init() < 0) {
@@ -1552,7 +1548,6 @@ static void __exit capi_exit(void)
1552 class_device_destroy(capi_class, MKDEV(capi_major, 0)); 1548 class_device_destroy(capi_class, MKDEV(capi_major, 0));
1553 class_destroy(capi_class); 1549 class_destroy(capi_class);
1554 unregister_chrdev(capi_major, "capi20"); 1550 unregister_chrdev(capi_major, "capi20");
1555 devfs_remove("isdn/capi20");
1556 1551
1557#ifdef CONFIG_ISDN_CAPI_MIDDLEWARE 1552#ifdef CONFIG_ISDN_CAPI_MIDDLEWARE
1558 capinc_tty_exit(); 1553 capinc_tty_exit();
diff --git a/drivers/isdn/gigaset/bas-gigaset.c b/drivers/isdn/gigaset/bas-gigaset.c
index 8a45715dd4c1..3845defd4901 100644
--- a/drivers/isdn/gigaset/bas-gigaset.c
+++ b/drivers/isdn/gigaset/bas-gigaset.c
@@ -41,7 +41,6 @@ MODULE_PARM_DESC(cidmode, "Call-ID mode");
41#define GIGASET_MINORS 1 41#define GIGASET_MINORS 1
42#define GIGASET_MINOR 16 42#define GIGASET_MINOR 16
43#define GIGASET_MODULENAME "bas_gigaset" 43#define GIGASET_MODULENAME "bas_gigaset"
44#define GIGASET_DEVFSNAME "gig/bas/"
45#define GIGASET_DEVNAME "ttyGB" 44#define GIGASET_DEVNAME "ttyGB"
46 45
47/* length limit according to Siemens 3070usb-protokoll.doc ch. 2.1 */ 46/* length limit according to Siemens 3070usb-protokoll.doc ch. 2.1 */
@@ -2349,8 +2348,7 @@ static int __init bas_gigaset_init(void)
2349 /* allocate memory for our driver state and intialize it */ 2348 /* allocate memory for our driver state and intialize it */
2350 if ((driver = gigaset_initdriver(GIGASET_MINOR, GIGASET_MINORS, 2349 if ((driver = gigaset_initdriver(GIGASET_MINOR, GIGASET_MINORS,
2351 GIGASET_MODULENAME, GIGASET_DEVNAME, 2350 GIGASET_MODULENAME, GIGASET_DEVNAME,
2352 GIGASET_DEVFSNAME, &gigops, 2351 &gigops, THIS_MODULE)) == NULL)
2353 THIS_MODULE)) == NULL)
2354 goto error; 2352 goto error;
2355 2353
2356 /* allocate memory for our device state and intialize it */ 2354 /* allocate memory for our device state and intialize it */
diff --git a/drivers/isdn/gigaset/common.c b/drivers/isdn/gigaset/common.c
index acb7e2656780..aca165d43aa0 100644
--- a/drivers/isdn/gigaset/common.c
+++ b/drivers/isdn/gigaset/common.c
@@ -981,7 +981,7 @@ exit:
981EXPORT_SYMBOL_GPL(gigaset_stop); 981EXPORT_SYMBOL_GPL(gigaset_stop);
982 982
983static LIST_HEAD(drivers); 983static LIST_HEAD(drivers);
984static spinlock_t driver_lock = SPIN_LOCK_UNLOCKED; 984static DEFINE_SPINLOCK(driver_lock);
985 985
986struct cardstate *gigaset_get_cs_by_id(int id) 986struct cardstate *gigaset_get_cs_by_id(int id)
987{ 987{
@@ -1092,14 +1092,12 @@ EXPORT_SYMBOL_GPL(gigaset_freedriver);
1092 * minors Number of minors this driver can handle 1092 * minors Number of minors this driver can handle
1093 * procname Name of the driver 1093 * procname Name of the driver
1094 * devname Name of the device files (prefix without minor number) 1094 * devname Name of the device files (prefix without minor number)
1095 * devfsname Devfs name of the device files without %d
1096 * return value: 1095 * return value:
1097 * Pointer to the gigaset_driver structure on success, NULL on failure. 1096 * Pointer to the gigaset_driver structure on success, NULL on failure.
1098 */ 1097 */
1099struct gigaset_driver *gigaset_initdriver(unsigned minor, unsigned minors, 1098struct gigaset_driver *gigaset_initdriver(unsigned minor, unsigned minors,
1100 const char *procname, 1099 const char *procname,
1101 const char *devname, 1100 const char *devname,
1102 const char *devfsname,
1103 const struct gigaset_ops *ops, 1101 const struct gigaset_ops *ops,
1104 struct module *owner) 1102 struct module *owner)
1105{ 1103{
@@ -1139,7 +1137,7 @@ struct gigaset_driver *gigaset_initdriver(unsigned minor, unsigned minors,
1139 drv->cs[i].minor_index = i; 1137 drv->cs[i].minor_index = i;
1140 } 1138 }
1141 1139
1142 gigaset_if_initdriver(drv, procname, devname, devfsname); 1140 gigaset_if_initdriver(drv, procname, devname);
1143 1141
1144 spin_lock_irqsave(&driver_lock, flags); 1142 spin_lock_irqsave(&driver_lock, flags);
1145 list_add(&drv->list, &drivers); 1143 list_add(&drv->list, &drivers);
diff --git a/drivers/isdn/gigaset/gigaset.h b/drivers/isdn/gigaset/gigaset.h
index 8d63d822104f..1ca3bfdef51d 100644
--- a/drivers/isdn/gigaset/gigaset.h
+++ b/drivers/isdn/gigaset/gigaset.h
@@ -769,7 +769,6 @@ void gigaset_block_channels(struct cardstate *cs);
769struct gigaset_driver *gigaset_initdriver(unsigned minor, unsigned minors, 769struct gigaset_driver *gigaset_initdriver(unsigned minor, unsigned minors,
770 const char *procname, 770 const char *procname,
771 const char *devname, 771 const char *devname,
772 const char *devfsname,
773 const struct gigaset_ops *ops, 772 const struct gigaset_ops *ops,
774 struct module *owner); 773 struct module *owner);
775 774
@@ -892,7 +891,7 @@ int gigaset_fill_inbuf(struct inbuf_t *inbuf, const unsigned char *src,
892 891
893/* initialize interface */ 892/* initialize interface */
894void gigaset_if_initdriver(struct gigaset_driver *drv, const char *procname, 893void gigaset_if_initdriver(struct gigaset_driver *drv, const char *procname,
895 const char *devname, const char *devfsname); 894 const char *devname);
896/* release interface */ 895/* release interface */
897void gigaset_if_freedriver(struct gigaset_driver *drv); 896void gigaset_if_freedriver(struct gigaset_driver *drv);
898/* add minor */ 897/* add minor */
diff --git a/drivers/isdn/gigaset/interface.c b/drivers/isdn/gigaset/interface.c
index 74fd234956c8..bd2e4267528e 100644
--- a/drivers/isdn/gigaset/interface.c
+++ b/drivers/isdn/gigaset/interface.c
@@ -673,10 +673,9 @@ EXPORT_SYMBOL_GPL(gigaset_if_receive);
673 * drv Driver 673 * drv Driver
674 * procname Name of the driver (e.g. for /proc/tty/drivers) 674 * procname Name of the driver (e.g. for /proc/tty/drivers)
675 * devname Name of the device files (prefix without minor number) 675 * devname Name of the device files (prefix without minor number)
676 * devfsname Devfs name of the device files without %d
677 */ 676 */
678void gigaset_if_initdriver(struct gigaset_driver *drv, const char *procname, 677void gigaset_if_initdriver(struct gigaset_driver *drv, const char *procname,
679 const char *devname, const char *devfsname) 678 const char *devname)
680{ 679{
681 unsigned minors = drv->minors; 680 unsigned minors = drv->minors;
682 int ret; 681 int ret;
@@ -692,7 +691,7 @@ void gigaset_if_initdriver(struct gigaset_driver *drv, const char *procname,
692 tty->major = GIG_MAJOR, 691 tty->major = GIG_MAJOR,
693 tty->type = TTY_DRIVER_TYPE_SERIAL, 692 tty->type = TTY_DRIVER_TYPE_SERIAL,
694 tty->subtype = SERIAL_TYPE_NORMAL, 693 tty->subtype = SERIAL_TYPE_NORMAL,
695 tty->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_NO_DEVFS, 694 tty->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV;
696 695
697 tty->driver_name = procname; 696 tty->driver_name = procname;
698 tty->name = devname; 697 tty->name = devname;
@@ -700,7 +699,6 @@ void gigaset_if_initdriver(struct gigaset_driver *drv, const char *procname,
700 tty->num = drv->minors; 699 tty->num = drv->minors;
701 700
702 tty->owner = THIS_MODULE; 701 tty->owner = THIS_MODULE;
703 tty->devfs_name = devfsname;
704 702
705 tty->init_termios = tty_std_termios; //FIXME 703 tty->init_termios = tty_std_termios; //FIXME
706 tty->init_termios.c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL; //FIXME 704 tty->init_termios.c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL; //FIXME
diff --git a/drivers/isdn/gigaset/usb-gigaset.c b/drivers/isdn/gigaset/usb-gigaset.c
index d86ab68114b0..6e05d9d4a51a 100644
--- a/drivers/isdn/gigaset/usb-gigaset.c
+++ b/drivers/isdn/gigaset/usb-gigaset.c
@@ -41,7 +41,6 @@ MODULE_PARM_DESC(cidmode, "Call-ID mode");
41#define GIGASET_MINORS 1 41#define GIGASET_MINORS 1
42#define GIGASET_MINOR 8 42#define GIGASET_MINOR 8
43#define GIGASET_MODULENAME "usb_gigaset" 43#define GIGASET_MODULENAME "usb_gigaset"
44#define GIGASET_DEVFSNAME "gig/usb/"
45#define GIGASET_DEVNAME "ttyGU" 44#define GIGASET_DEVNAME "ttyGU"
46 45
47#define IF_WRITEBUF 2000 //FIXME // WAKEUP_CHARS: 256 46#define IF_WRITEBUF 2000 //FIXME // WAKEUP_CHARS: 256
@@ -896,8 +895,7 @@ static int __init usb_gigaset_init(void)
896 /* allocate memory for our driver state and intialize it */ 895 /* allocate memory for our driver state and intialize it */
897 if ((driver = gigaset_initdriver(GIGASET_MINOR, GIGASET_MINORS, 896 if ((driver = gigaset_initdriver(GIGASET_MINOR, GIGASET_MINORS,
898 GIGASET_MODULENAME, GIGASET_DEVNAME, 897 GIGASET_MODULENAME, GIGASET_DEVNAME,
899 GIGASET_DEVFSNAME, &ops, 898 &ops, THIS_MODULE)) == NULL)
900 THIS_MODULE)) == NULL)
901 goto error; 899 goto error;
902 900
903 /* allocate memory for our device state and intialize it */ 901 /* allocate memory for our device state and intialize it */
diff --git a/drivers/isdn/hardware/avm/b1pcmcia.c b/drivers/isdn/hardware/avm/b1pcmcia.c
index 9746cc5ffff8..ad5025155b4e 100644
--- a/drivers/isdn/hardware/avm/b1pcmcia.c
+++ b/drivers/isdn/hardware/avm/b1pcmcia.c
@@ -82,7 +82,7 @@ static int b1pcmcia_add_card(unsigned int port, unsigned irq,
82 card->irq = irq; 82 card->irq = irq;
83 card->cardtype = cardtype; 83 card->cardtype = cardtype;
84 84
85 retval = request_irq(card->irq, b1_interrupt, 0, card->name, card); 85 retval = request_irq(card->irq, b1_interrupt, SA_SHIRQ, card->name, card);
86 if (retval) { 86 if (retval) {
87 printk(KERN_ERR "b1pcmcia: unable to get IRQ %d.\n", 87 printk(KERN_ERR "b1pcmcia: unable to get IRQ %d.\n",
88 card->irq); 88 card->irq);
diff --git a/drivers/isdn/hardware/eicon/divamnt.c b/drivers/isdn/hardware/eicon/divamnt.c
index 6146f7633be5..b163c5909182 100644
--- a/drivers/isdn/hardware/eicon/divamnt.c
+++ b/drivers/isdn/hardware/eicon/divamnt.c
@@ -17,7 +17,6 @@
17#include <linux/sched.h> 17#include <linux/sched.h>
18#include <linux/smp_lock.h> 18#include <linux/smp_lock.h>
19#include <linux/poll.h> 19#include <linux/poll.h>
20#include <linux/devfs_fs_kernel.h>
21#include <asm/uaccess.h> 20#include <asm/uaccess.h>
22 21
23#include "platform.h" 22#include "platform.h"
@@ -178,7 +177,6 @@ static struct file_operations divas_maint_fops = {
178 177
179static void divas_maint_unregister_chrdev(void) 178static void divas_maint_unregister_chrdev(void)
180{ 179{
181 devfs_remove(DEVNAME);
182 unregister_chrdev(major, DEVNAME); 180 unregister_chrdev(major, DEVNAME);
183} 181}
184 182
@@ -190,7 +188,6 @@ static int DIVA_INIT_FUNCTION divas_maint_register_chrdev(void)
190 DRIVERLNAME); 188 DRIVERLNAME);
191 return (0); 189 return (0);
192 } 190 }
193 devfs_mk_cdev(MKDEV(major, 0), S_IFCHR|S_IRUSR|S_IWUSR, DEVNAME);
194 191
195 return (1); 192 return (1);
196} 193}
diff --git a/drivers/isdn/hardware/eicon/divasi.c b/drivers/isdn/hardware/eicon/divasi.c
index df715b47e2b4..6e7d89a31c1d 100644
--- a/drivers/isdn/hardware/eicon/divasi.c
+++ b/drivers/isdn/hardware/eicon/divasi.c
@@ -19,7 +19,6 @@
19#include <linux/poll.h> 19#include <linux/poll.h>
20#include <linux/proc_fs.h> 20#include <linux/proc_fs.h>
21#include <linux/skbuff.h> 21#include <linux/skbuff.h>
22#include <linux/devfs_fs_kernel.h>
23#include <asm/uaccess.h> 22#include <asm/uaccess.h>
24 23
25#include "platform.h" 24#include "platform.h"
@@ -145,7 +144,6 @@ static struct file_operations divas_idi_fops = {
145 144
146static void divas_idi_unregister_chrdev(void) 145static void divas_idi_unregister_chrdev(void)
147{ 146{
148 devfs_remove(DEVNAME);
149 unregister_chrdev(major, DEVNAME); 147 unregister_chrdev(major, DEVNAME);
150} 148}
151 149
@@ -157,7 +155,6 @@ static int DIVA_INIT_FUNCTION divas_idi_register_chrdev(void)
157 DRIVERLNAME); 155 DRIVERLNAME);
158 return (0); 156 return (0);
159 } 157 }
160 devfs_mk_cdev(MKDEV(major, 0), S_IFCHR|S_IRUSR|S_IWUSR, DEVNAME);
161 158
162 return (1); 159 return (1);
163} 160}
diff --git a/drivers/isdn/hardware/eicon/divasmain.c b/drivers/isdn/hardware/eicon/divasmain.c
index c9b26e86d183..9dee6a39104c 100644
--- a/drivers/isdn/hardware/eicon/divasmain.c
+++ b/drivers/isdn/hardware/eicon/divasmain.c
@@ -14,7 +14,6 @@
14#include <linux/init.h> 14#include <linux/init.h>
15#include <linux/kernel.h> 15#include <linux/kernel.h>
16#include <linux/sched.h> 16#include <linux/sched.h>
17#include <linux/devfs_fs_kernel.h>
18#include <asm/uaccess.h> 17#include <asm/uaccess.h>
19#include <asm/io.h> 18#include <asm/io.h>
20#include <linux/ioport.h> 19#include <linux/ioport.h>
@@ -678,7 +677,6 @@ static struct file_operations divas_fops = {
678 677
679static void divas_unregister_chrdev(void) 678static void divas_unregister_chrdev(void)
680{ 679{
681 devfs_remove(DEVNAME);
682 unregister_chrdev(major, DEVNAME); 680 unregister_chrdev(major, DEVNAME);
683} 681}
684 682
@@ -690,7 +688,6 @@ static int DIVA_INIT_FUNCTION divas_register_chrdev(void)
690 DRIVERLNAME); 688 DRIVERLNAME);
691 return (0); 689 return (0);
692 } 690 }
693 devfs_mk_cdev(MKDEV(major, 0), S_IFCHR|S_IRUSR|S_IWUSR, DEVNAME);
694 691
695 return (1); 692 return (1);
696} 693}
diff --git a/drivers/isdn/hisax/hfc_pci.c b/drivers/isdn/hisax/hfc_pci.c
index 91d25acb5ede..3622720f0505 100644
--- a/drivers/isdn/hisax/hfc_pci.c
+++ b/drivers/isdn/hisax/hfc_pci.c
@@ -1688,7 +1688,7 @@ setup_hfcpci(struct IsdnCard *card)
1688 printk(KERN_WARNING "HFC-PCI: No IRQ for PCI card found\n"); 1688 printk(KERN_WARNING "HFC-PCI: No IRQ for PCI card found\n");
1689 return (0); 1689 return (0);
1690 } 1690 }
1691 cs->hw.hfcpci.pci_io = (char *) dev_hfcpci->resource[ 1].start; 1691 cs->hw.hfcpci.pci_io = (char *)(unsigned long)dev_hfcpci->resource[1].start;
1692 printk(KERN_INFO "HiSax: HFC-PCI card manufacturer: %s card name: %s\n", id_list[i].vendor_name, id_list[i].card_name); 1692 printk(KERN_INFO "HiSax: HFC-PCI card manufacturer: %s card name: %s\n", id_list[i].vendor_name, id_list[i].card_name);
1693 } else { 1693 } else {
1694 printk(KERN_WARNING "HFC-PCI: No PCI card found\n"); 1694 printk(KERN_WARNING "HFC-PCI: No PCI card found\n");
diff --git a/drivers/isdn/hisax/sedlbauer_cs.c b/drivers/isdn/hisax/sedlbauer_cs.c
index 9bb18f3f7829..f9c14a2970bc 100644
--- a/drivers/isdn/hisax/sedlbauer_cs.c
+++ b/drivers/isdn/hisax/sedlbauer_cs.c
@@ -164,7 +164,7 @@ static int sedlbauer_probe(struct pcmcia_device *link)
164 link->priv = local; 164 link->priv = local;
165 165
166 /* Interrupt setup */ 166 /* Interrupt setup */
167 link->irq.Attributes = IRQ_TYPE_EXCLUSIVE; 167 link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING|IRQ_FIRST_SHARED;
168 link->irq.IRQInfo1 = IRQ_LEVEL_ID; 168 link->irq.IRQInfo1 = IRQ_LEVEL_ID;
169 link->irq.Handler = NULL; 169 link->irq.Handler = NULL;
170 170
diff --git a/drivers/isdn/hisax/teles3.c b/drivers/isdn/hisax/teles3.c
index a3eaf4d65707..090abd16b4bc 100644
--- a/drivers/isdn/hisax/teles3.c
+++ b/drivers/isdn/hisax/teles3.c
@@ -369,6 +369,7 @@ setup_teles3(struct IsdnCard *card)
369 cs->hw.teles3.hscx[1] + 96); 369 cs->hw.teles3.hscx[1] + 96);
370 return (0); 370 return (0);
371 } 371 }
372 cs->irq_flags |= SA_SHIRQ; /* cardbus can share */
372 } else { 373 } else {
373 if (cs->hw.teles3.cfg_reg) { 374 if (cs->hw.teles3.cfg_reg) {
374 if (cs->typ == ISDN_CTYPE_COMPAQ_ISA) { 375 if (cs->typ == ISDN_CTYPE_COMPAQ_ISA) {
diff --git a/drivers/isdn/hisax/telespci.c b/drivers/isdn/hisax/telespci.c
index e2bb4fd8e25e..e82ab2251b82 100644
--- a/drivers/isdn/hisax/telespci.c
+++ b/drivers/isdn/hisax/telespci.c
@@ -311,8 +311,9 @@ setup_telespci(struct IsdnCard *card)
311 } 311 }
312 cs->hw.teles0.membase = ioremap(pci_resource_start(dev_tel, 0), 312 cs->hw.teles0.membase = ioremap(pci_resource_start(dev_tel, 0),
313 PAGE_SIZE); 313 PAGE_SIZE);
314 printk(KERN_INFO "Found: Zoran, base-address: 0x%lx, irq: 0x%x\n", 314 printk(KERN_INFO "Found: Zoran, base-address: 0x%llx, irq: 0x%x\n",
315 pci_resource_start(dev_tel, 0), dev_tel->irq); 315 (unsigned long long)pci_resource_start(dev_tel, 0),
316 dev_tel->irq);
316 } else { 317 } else {
317 printk(KERN_WARNING "TelesPCI: No PCI card found\n"); 318 printk(KERN_WARNING "TelesPCI: No PCI card found\n");
318 return(0); 319 return(0);
diff --git a/drivers/isdn/i4l/isdn_common.c b/drivers/isdn/i4l/isdn_common.c
index b26e509ec759..eb21063e6f63 100644
--- a/drivers/isdn/i4l/isdn_common.c
+++ b/drivers/isdn/i4l/isdn_common.c
@@ -340,6 +340,16 @@ isdn_command(isdn_ctrl *cmd)
340 printk(KERN_WARNING "isdn_command command(%x) driver -1\n", cmd->command); 340 printk(KERN_WARNING "isdn_command command(%x) driver -1\n", cmd->command);
341 return(1); 341 return(1);
342 } 342 }
343 if (!dev->drv[cmd->driver]) {
344 printk(KERN_WARNING "isdn_command command(%x) dev->drv[%d] NULL\n",
345 cmd->command, cmd->driver);
346 return(1);
347 }
348 if (!dev->drv[cmd->driver]->interface) {
349 printk(KERN_WARNING "isdn_command command(%x) dev->drv[%d]->interface NULL\n",
350 cmd->command, cmd->driver);
351 return(1);
352 }
343 if (cmd->command == ISDN_CMD_SETL2) { 353 if (cmd->command == ISDN_CMD_SETL2) {
344 int idx = isdn_dc2minor(cmd->driver, cmd->arg & 255); 354 int idx = isdn_dc2minor(cmd->driver, cmd->arg & 255);
345 unsigned long l2prot = (cmd->arg >> 8) & 255; 355 unsigned long l2prot = (cmd->arg >> 8) & 255;
@@ -1903,6 +1913,11 @@ isdn_free_channel(int di, int ch, int usage)
1903{ 1913{
1904 int i; 1914 int i;
1905 1915
1916 if ((di < 0) || (ch < 0)) {
1917 printk(KERN_WARNING "%s: called with invalid drv(%d) or channel(%d)\n",
1918 __FUNCTION__, di, ch);
1919 return;
1920 }
1906 for (i = 0; i < ISDN_MAX_CHANNELS; i++) 1921 for (i = 0; i < ISDN_MAX_CHANNELS; i++)
1907 if (((!usage) || ((dev->usage[i] & ISDN_USAGE_MASK) == usage)) && 1922 if (((!usage) || ((dev->usage[i] & ISDN_USAGE_MASK) == usage)) &&
1908 (dev->drvmap[i] == di) && 1923 (dev->drvmap[i] == di) &&
@@ -1918,7 +1933,8 @@ isdn_free_channel(int di, int ch, int usage)
1918 dev->v110[i] = NULL; 1933 dev->v110[i] = NULL;
1919// 20.10.99 JIM, try to reinitialize v110 ! 1934// 20.10.99 JIM, try to reinitialize v110 !
1920 isdn_info_update(); 1935 isdn_info_update();
1921 skb_queue_purge(&dev->drv[di]->rpqueue[ch]); 1936 if (dev->drv[di])
1937 skb_queue_purge(&dev->drv[di]->rpqueue[ch]);
1922 } 1938 }
1923} 1939}
1924 1940
diff --git a/drivers/isdn/i4l/isdn_tty.c b/drivers/isdn/i4l/isdn_tty.c
index 2ac90242d263..0a53a990c100 100644
--- a/drivers/isdn/i4l/isdn_tty.c
+++ b/drivers/isdn/i4l/isdn_tty.c
@@ -82,7 +82,7 @@ isdn_tty_try_read(modem_info * info, struct sk_buff *skb)
82 int l = skb->len; 82 int l = skb->len;
83 unsigned char *dp = skb->data; 83 unsigned char *dp = skb->data;
84 while (--l) { 84 while (--l) {
85 if (*skb->data == DLE) 85 if (*dp == DLE)
86 tty_insert_flip_char(tty, DLE, 0); 86 tty_insert_flip_char(tty, DLE, 0);
87 tty_insert_flip_char(tty, *dp++, 0); 87 tty_insert_flip_char(tty, *dp++, 0);
88 } 88 }
@@ -1890,14 +1890,13 @@ isdn_tty_modem_init(void)
1890 if (!m->tty_modem) 1890 if (!m->tty_modem)
1891 return -ENOMEM; 1891 return -ENOMEM;
1892 m->tty_modem->name = "ttyI"; 1892 m->tty_modem->name = "ttyI";
1893 m->tty_modem->devfs_name = "isdn/ttyI";
1894 m->tty_modem->major = ISDN_TTY_MAJOR; 1893 m->tty_modem->major = ISDN_TTY_MAJOR;
1895 m->tty_modem->minor_start = 0; 1894 m->tty_modem->minor_start = 0;
1896 m->tty_modem->type = TTY_DRIVER_TYPE_SERIAL; 1895 m->tty_modem->type = TTY_DRIVER_TYPE_SERIAL;
1897 m->tty_modem->subtype = SERIAL_TYPE_NORMAL; 1896 m->tty_modem->subtype = SERIAL_TYPE_NORMAL;
1898 m->tty_modem->init_termios = tty_std_termios; 1897 m->tty_modem->init_termios = tty_std_termios;
1899 m->tty_modem->init_termios.c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL; 1898 m->tty_modem->init_termios.c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL;
1900 m->tty_modem->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_NO_DEVFS; 1899 m->tty_modem->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV;
1901 m->tty_modem->driver_name = "isdn_tty"; 1900 m->tty_modem->driver_name = "isdn_tty";
1902 tty_set_operations(m->tty_modem, &modem_ops); 1901 tty_set_operations(m->tty_modem, &modem_ops);
1903 retval = tty_register_driver(m->tty_modem); 1902 retval = tty_register_driver(m->tty_modem);
diff --git a/drivers/isdn/i4l/isdn_x25iface.c b/drivers/isdn/i4l/isdn_x25iface.c
index 743ac4077f35..8b3efc243161 100644
--- a/drivers/isdn/i4l/isdn_x25iface.c
+++ b/drivers/isdn/i4l/isdn_x25iface.c
@@ -208,7 +208,7 @@ static int isdn_x25iface_receive(struct concap_proto *cprot, struct sk_buff *skb
208 */ 208 */
209static int isdn_x25iface_connect_ind(struct concap_proto *cprot) 209static int isdn_x25iface_connect_ind(struct concap_proto *cprot)
210{ 210{
211 struct sk_buff * skb = dev_alloc_skb(1); 211 struct sk_buff * skb;
212 enum wan_states *state_p 212 enum wan_states *state_p
213 = &( ( (ix25_pdata_t*) (cprot->proto_data) ) -> state); 213 = &( ( (ix25_pdata_t*) (cprot->proto_data) ) -> state);
214 IX25DEBUG( "isdn_x25iface_connect_ind %s \n" 214 IX25DEBUG( "isdn_x25iface_connect_ind %s \n"
@@ -220,6 +220,8 @@ static int isdn_x25iface_connect_ind(struct concap_proto *cprot)
220 return -1; 220 return -1;
221 } 221 }
222 *state_p = WAN_CONNECTED; 222 *state_p = WAN_CONNECTED;
223
224 skb = dev_alloc_skb(1);
223 if( skb ){ 225 if( skb ){
224 *( skb_put(skb, 1) ) = 0x01; 226 *( skb_put(skb, 1) ) = 0x01;
225 skb->protocol = x25_type_trans(skb, cprot->net_dev); 227 skb->protocol = x25_type_trans(skb, cprot->net_dev);