diff options
Diffstat (limited to 'drivers/isdn')
-rw-r--r-- | drivers/isdn/divert/isdn_divert.c | 2 | ||||
-rw-r--r-- | drivers/isdn/gigaset/common.c | 2 | ||||
-rw-r--r-- | drivers/isdn/hardware/avm/b1pcmcia.c | 2 | ||||
-rw-r--r-- | drivers/isdn/hisax/hfc_pci.c | 2 | ||||
-rw-r--r-- | drivers/isdn/hisax/sedlbauer_cs.c | 2 | ||||
-rw-r--r-- | drivers/isdn/hisax/teles3.c | 1 | ||||
-rw-r--r-- | drivers/isdn/hisax/telespci.c | 5 | ||||
-rw-r--r-- | drivers/isdn/i4l/isdn_common.c | 20 | ||||
-rw-r--r-- | drivers/isdn/i4l/isdn_tty.c | 2 | ||||
-rw-r--r-- | drivers/isdn/i4l/isdn_x25iface.c | 4 |
10 files changed, 31 insertions, 11 deletions
diff --git a/drivers/isdn/divert/isdn_divert.c b/drivers/isdn/divert/isdn_divert.c index f1a1f9a9b88e..1f5ebe9ee72c 100644 --- a/drivers/isdn/divert/isdn_divert.c +++ b/drivers/isdn/divert/isdn_divert.c | |||
@@ -592,7 +592,7 @@ static int put_address(char *st, u_char *p, int len) | |||
592 | } /* put_address */ | 592 | } /* put_address */ |
593 | 593 | ||
594 | /*************************************/ | 594 | /*************************************/ |
595 | /* report a succesfull interrogation */ | 595 | /* report a successful interrogation */ |
596 | /*************************************/ | 596 | /*************************************/ |
597 | static int interrogate_success(isdn_ctrl *ic, struct call_struc *cs) | 597 | static int interrogate_success(isdn_ctrl *ic, struct call_struc *cs) |
598 | { char *src = ic->parm.dss1_io.data; | 598 | { char *src = ic->parm.dss1_io.data; |
diff --git a/drivers/isdn/gigaset/common.c b/drivers/isdn/gigaset/common.c index 578e6797ef04..aca165d43aa0 100644 --- a/drivers/isdn/gigaset/common.c +++ b/drivers/isdn/gigaset/common.c | |||
@@ -981,7 +981,7 @@ exit: | |||
981 | EXPORT_SYMBOL_GPL(gigaset_stop); | 981 | EXPORT_SYMBOL_GPL(gigaset_stop); |
982 | 982 | ||
983 | static LIST_HEAD(drivers); | 983 | static LIST_HEAD(drivers); |
984 | static spinlock_t driver_lock = SPIN_LOCK_UNLOCKED; | 984 | static DEFINE_SPINLOCK(driver_lock); |
985 | 985 | ||
986 | struct cardstate *gigaset_get_cs_by_id(int id) | 986 | struct cardstate *gigaset_get_cs_by_id(int id) |
987 | { | 987 | { |
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/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 81accdf35168..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; |
@@ -933,7 +943,7 @@ isdn_readbchan_tty(int di, int channel, struct tty_struct *tty, int cisco_hack) | |||
933 | count_put = count_pull; | 943 | count_put = count_pull; |
934 | if(count_put > 1) | 944 | if(count_put > 1) |
935 | tty_insert_flip_string(tty, skb->data, count_put - 1); | 945 | tty_insert_flip_string(tty, skb->data, count_put - 1); |
936 | last = skb->data[count_put] - 1; | 946 | last = skb->data[count_put - 1]; |
937 | len -= count_put; | 947 | len -= count_put; |
938 | #ifdef CONFIG_ISDN_AUDIO | 948 | #ifdef CONFIG_ISDN_AUDIO |
939 | } | 949 | } |
@@ -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 77579f82aede..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 | } |
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 | */ |
209 | static int isdn_x25iface_connect_ind(struct concap_proto *cprot) | 209 | static 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); |