Hi, Albert-san,

Thank you for your comment.

>Albert Lee wrote:
>This check is needed to make sure it is "my irq". Otherwise we might
>- incorrectly stop BMDMA if another PCI adapter raise the same shared irq 
>- incorrectly read ALT_STATUS when DD0-DD15 being used for DMA transfer

I understood the meaning of this check.

>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)

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


Best regards,
Akira iguchi
-
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to