V4L/DVB (13770): [Mantis] Bug Do not trigger FR/DA IRQ from SBUF OPDONE
[safe/jmp/linux-2.6] / drivers / media / dvb / mantis / mantis_pcmcia.c
index 960123f..4156a08 100644 (file)
@@ -32,7 +32,7 @@ void mantis_event_cam_plugin(struct mantis_ca *ca)
        u32 gpif_irqcfg;
 
        if (ca->slot_state == MODULE_XTRACTED) {
-               dprintk(mantis->verbose, MANTIS_DEBUG, 1, "Event: CAM Plugged IN: Adapter(%d) Slot(0)", mantis->num);
+               dprintk(verbose, MANTIS_DEBUG, 1, "Event: CAM Plugged IN: Adapter(%d) Slot(0)", mantis->num);
                udelay(50);
                mmwrite(0xda000000, MANTIS_CARD_RESET);
                gpif_irqcfg  = mmread(MANTIS_GPIF_IRQCFG);
@@ -56,7 +56,7 @@ void mantis_event_cam_unplug(struct mantis_ca *ca)
        u32 gpif_irqcfg;
 
        if (ca->slot_state == MODULE_INSERTED) {
-               dprintk(mantis->verbose, MANTIS_DEBUG, 1, "Event: CAM Unplugged: Adapter(%d) Slot(0)", mantis->num);
+               dprintk(verbose, MANTIS_DEBUG, 1, "Event: CAM Unplugged: Adapter(%d) Slot(0)", mantis->num);
                udelay(50);
                mmwrite(0x00da0000, MANTIS_CARD_RESET);
                gpif_irqcfg  = mmread(MANTIS_GPIF_IRQCFG);
@@ -75,17 +75,24 @@ int mantis_pcmcia_init(struct mantis_ca *ca)
 
        u32 gpif_stat, card_stat;
 
+       mmwrite(mmread(MANTIS_INT_MASK) | MANTIS_INT_IRQ0, MANTIS_INT_MASK);
        gpif_stat = mmread(MANTIS_GPIF_STATUS);
        card_stat = mmread(MANTIS_GPIF_IRQCFG);
 
        if (gpif_stat & MANTIS_GPIF_DETSTAT) {
-               dprintk(mantis->verbose, MANTIS_DEBUG, 1, "CAM found on Adapter(%d) Slot(0)", mantis->num);
+               dprintk(verbose, MANTIS_DEBUG, 1, "CAM found on Adapter(%d) Slot(0)", mantis->num);
                mmwrite(card_stat | MANTIS_MASK_PLUGOUT, MANTIS_GPIF_IRQCFG);
                ca->slot_state = MODULE_INSERTED;
+               dvb_ca_en50221_camchange_irq(&ca->en50221,
+                                            0,
+                                            DVB_CA_EN50221_CAMCHANGE_INSERTED);
        } else {
-               dprintk(mantis->verbose, MANTIS_DEBUG, 1, "Empty Slot on Adapter(%d) Slot(0)", mantis->num);
+               dprintk(verbose, MANTIS_DEBUG, 1, "Empty Slot on Adapter(%d) Slot(0)", mantis->num);
                mmwrite(card_stat | MANTIS_MASK_PLUGIN, MANTIS_GPIF_IRQCFG);
                ca->slot_state = MODULE_XTRACTED;
+               dvb_ca_en50221_camchange_irq(&ca->en50221,
+                                            0,
+                                            DVB_CA_EN50221_CAMCHANGE_REMOVED);
        }
 
        return 0;