Hi Iguchi-san, > > >>Is the irq of Celleb IDE shared with other adapters? >>If the irq is non-shared, could you check if the following code works >>for Celleb: >> >> /* if it's not our irq... */ >> if ((host_stat & ATA_DMA_ACTIVE) && >> !(host_stat & ATA_DMA_INTR)) >> goto idle_irq; > > > My irq is non-shared, but above code doesn't work. > I got the following register values at this point: > - DMA_STATUS = 0x01 (ATA_DMA_ACTIVE is 1) > - ALT_STATUS = 0x51 (ERR is 1) Ah, I see, so the adapter thinks BMDMA is still active. :( Wonder whether this behavior would be related to CD-ROM drive... i.e. Does it possibly work ok with other CD-ROM models? > > Now I think I should handle this problem in my bmdma_status() hook > because it is a device specific problem. > I intend to emulate ATA_DMA_INTR if the following conditions are true: > - In ISR > - ALT_STATUS[ERR] = 1 > - DMA_STATUS[DMA_ACTIVE] = 1 > > Some controller like Promise 2027x has an extra register/bit for INTRQ. Don't know whether Celleb has such hardware bit or not. If do, maybe such bit can be also used as substitute for bmdma:INTR. -- albert - To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html