浏览代码

[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->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) {
 		printk(KERN_ERR "b1pcmcia: unable to get IRQ %d.\n",
 		       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;
 
     /* 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.Handler = NULL;
 

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

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