소스 검색

[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) {