|
@@ -1505,12 +1505,20 @@ irq_done:
|
|
writeb(cor & ~COR_IREQ_ENA, smc->base + MOT_LAN + CISREG_COR);
|
|
writeb(cor & ~COR_IREQ_ENA, smc->base + MOT_LAN + CISREG_COR);
|
|
writeb(cor, smc->base + MOT_LAN + CISREG_COR);
|
|
writeb(cor, smc->base + MOT_LAN + CISREG_COR);
|
|
}
|
|
}
|
|
-#ifdef DOES_NOT_WORK
|
|
|
|
- if (smc->base != NULL) { /* Megahertz MFC's */
|
|
|
|
- readb(smc->base+MEGAHERTZ_ISR);
|
|
|
|
- readb(smc->base+MEGAHERTZ_ISR);
|
|
|
|
|
|
+
|
|
|
|
+ if ((smc->base != NULL) && /* Megahertz MFC's */
|
|
|
|
+ (smc->manfid == MANFID_MEGAHERTZ) &&
|
|
|
|
+ (smc->cardid == PRODID_MEGAHERTZ_EM3288)) {
|
|
|
|
+
|
|
|
|
+ u_char tmp;
|
|
|
|
+ tmp = readb(smc->base+MEGAHERTZ_ISR);
|
|
|
|
+ tmp = readb(smc->base+MEGAHERTZ_ISR);
|
|
|
|
+
|
|
|
|
+ /* Retrigger interrupt if needed */
|
|
|
|
+ writeb(tmp, smc->base + MEGAHERTZ_ISR);
|
|
|
|
+ writeb(tmp, smc->base + MEGAHERTZ_ISR);
|
|
}
|
|
}
|
|
-#endif
|
|
|
|
|
|
+
|
|
spin_unlock(&smc->lock);
|
|
spin_unlock(&smc->lock);
|
|
return IRQ_RETVAL(handled);
|
|
return IRQ_RETVAL(handled);
|
|
}
|
|
}
|