]> err.no Git - linux-2.6/blobdiff - drivers/ide/ide-cd.c
[POWERPC] Celleb: interfaces to the hypervisor
[linux-2.6] / drivers / ide / ide-cd.c
index 88214943d00ad776a0977507c4b5d721ed894949..5969cec58dc155c2f21aea7e72c4b6d6aca9eb94 100644 (file)
@@ -687,8 +687,15 @@ static void ide_dump_status_no_sense(ide_drive_t *drive, const char *msg, u8 sta
 static int cdrom_decode_status(ide_drive_t *drive, int good_stat, int *stat_ret)
 {
        struct request *rq = HWGROUP(drive)->rq;
+       ide_hwif_t *hwif = HWIF(drive);
        int stat, err, sense_key;
        
+       /* We may have bogus DMA interrupts in PIO state here */
+       if (HWIF(drive)->dma_status && hwif->atapi_irq_bogon) {
+               stat = hwif->INB(hwif->dma_status);
+               /* Should we force the bit as well ? */
+               hwif->OUTB(stat, hwif->dma_status);
+       }
        /* Check for errors. */
        stat = HWIF(drive)->INB(IDE_STATUS_REG);
        if (stat_ret)