diff options
Diffstat (limited to 'drivers/isdn/hisax/sedlbauer.c')
-rw-r--r-- | drivers/isdn/hisax/sedlbauer.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/isdn/hisax/sedlbauer.c b/drivers/isdn/hisax/sedlbauer.c index 030d1625c5c6..ad06f3cc60fb 100644 --- a/drivers/isdn/hisax/sedlbauer.c +++ b/drivers/isdn/hisax/sedlbauer.c | |||
@@ -451,6 +451,9 @@ Sedl_card_msg(struct IsdnCardState *cs, int mt, void *arg) | |||
451 | spin_unlock_irqrestore(&cs->lock, flags); | 451 | spin_unlock_irqrestore(&cs->lock, flags); |
452 | return(0); | 452 | return(0); |
453 | case CARD_RELEASE: | 453 | case CARD_RELEASE: |
454 | if (cs->hw.sedl.bus == SEDL_BUS_PCI) | ||
455 | /* disable all IRQ */ | ||
456 | byteout(cs->hw.sedl.cfg_reg+ 5, 0); | ||
454 | if (cs->hw.sedl.chip == SEDL_CHIP_ISAC_ISAR) { | 457 | if (cs->hw.sedl.chip == SEDL_CHIP_ISAC_ISAR) { |
455 | spin_lock_irqsave(&cs->lock, flags); | 458 | spin_lock_irqsave(&cs->lock, flags); |
456 | writereg(cs->hw.sedl.adr, cs->hw.sedl.hscx, | 459 | writereg(cs->hw.sedl.adr, cs->hw.sedl.hscx, |
@@ -468,6 +471,9 @@ Sedl_card_msg(struct IsdnCardState *cs, int mt, void *arg) | |||
468 | return(0); | 471 | return(0); |
469 | case CARD_INIT: | 472 | case CARD_INIT: |
470 | spin_lock_irqsave(&cs->lock, flags); | 473 | spin_lock_irqsave(&cs->lock, flags); |
474 | if (cs->hw.sedl.bus == SEDL_BUS_PCI) | ||
475 | /* enable all IRQ */ | ||
476 | byteout(cs->hw.sedl.cfg_reg+ 5, 0x02); | ||
471 | reset_sedlbauer(cs); | 477 | reset_sedlbauer(cs); |
472 | if (cs->hw.sedl.chip == SEDL_CHIP_ISAC_ISAR) { | 478 | if (cs->hw.sedl.chip == SEDL_CHIP_ISAC_ISAR) { |
473 | clear_pending_isac_ints(cs); | 479 | clear_pending_isac_ints(cs); |
@@ -667,7 +673,7 @@ setup_sedlbauer(struct IsdnCard *card) | |||
667 | byteout(cs->hw.sedl.cfg_reg, 0xff); | 673 | byteout(cs->hw.sedl.cfg_reg, 0xff); |
668 | byteout(cs->hw.sedl.cfg_reg, 0x00); | 674 | byteout(cs->hw.sedl.cfg_reg, 0x00); |
669 | byteout(cs->hw.sedl.cfg_reg+ 2, 0xdd); | 675 | byteout(cs->hw.sedl.cfg_reg+ 2, 0xdd); |
670 | byteout(cs->hw.sedl.cfg_reg+ 5, 0x02); | 676 | byteout(cs->hw.sedl.cfg_reg+ 5, 0); /* disable all IRQ */ |
671 | byteout(cs->hw.sedl.cfg_reg +3, cs->hw.sedl.reset_on); | 677 | byteout(cs->hw.sedl.cfg_reg +3, cs->hw.sedl.reset_on); |
672 | mdelay(2); | 678 | mdelay(2); |
673 | byteout(cs->hw.sedl.cfg_reg +3, cs->hw.sedl.reset_off); | 679 | byteout(cs->hw.sedl.cfg_reg +3, cs->hw.sedl.reset_off); |