瀏覽代碼

[PATCH] i4l make PCMCIA for all cards working with shared IRQ

most current laptops do not work without allowing shared cardbus IRQs.
This patch enables IRQ sharing, so these cards work again.
This was tested with shared and none shared cardbus IRQs on different laptops
without problems.

Signed-off-by: Karsten Keil <kkeil@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Karsten Keil 19 年之前
父節點
當前提交
0f6c10ead8
共有 3 個文件被更改,包括 3 次插入2 次删除
  1. 1 1
      drivers/isdn/hardware/avm/b1pcmcia.c
  2. 1 1
      drivers/isdn/hisax/sedlbauer_cs.c
  3. 1 0
      drivers/isdn/hisax/teles3.c

+ 1 - 1
drivers/isdn/hardware/avm/b1pcmcia.c

@@ -82,7 +82,7 @@ static int b1pcmcia_add_card(unsigned int port, unsigned irq,
 	card->irq = irq;
 	card->irq = irq;
 	card->cardtype = cardtype;
 	card->cardtype = cardtype;
 
 
-	retval = request_irq(card->irq, b1_interrupt, 0, card->name, card);
+	retval = request_irq(card->irq, b1_interrupt, SA_SHIRQ, card->name, card);
 	if (retval) {
 	if (retval) {
 		printk(KERN_ERR "b1pcmcia: unable to get IRQ %d.\n",
 		printk(KERN_ERR "b1pcmcia: unable to get IRQ %d.\n",
 		       card->irq);
 		       card->irq);

+ 1 - 1
drivers/isdn/hisax/sedlbauer_cs.c

@@ -164,7 +164,7 @@ static int sedlbauer_probe(struct pcmcia_device *link)
     link->priv = local;
     link->priv = local;
 
 
     /* Interrupt setup */
     /* Interrupt setup */
-    link->irq.Attributes = IRQ_TYPE_EXCLUSIVE;
+    link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING|IRQ_FIRST_SHARED;
     link->irq.IRQInfo1 = IRQ_LEVEL_ID;
     link->irq.IRQInfo1 = IRQ_LEVEL_ID;
     link->irq.Handler = NULL;
     link->irq.Handler = NULL;
 
 

+ 1 - 0
drivers/isdn/hisax/teles3.c

@@ -369,6 +369,7 @@ setup_teles3(struct IsdnCard *card)
 			       cs->hw.teles3.hscx[1] + 96);
 			       cs->hw.teles3.hscx[1] + 96);
 			return (0);
 			return (0);
 		}
 		}
+		cs->irq_flags |= SA_SHIRQ; /* cardbus can share */
 	} else {
 	} else {
 		if (cs->hw.teles3.cfg_reg) {
 		if (cs->hw.teles3.cfg_reg) {
 			if (cs->typ == ISDN_CTYPE_COMPAQ_ISA) {
 			if (cs->typ == ISDN_CTYPE_COMPAQ_ISA) {