Even if ATA_FLAG_PIO_POLLING is set, libata uses irq pio for the 
ATA_PROT_NODATA protocol.
This patch let ATA_FLAG_PIO_POLLING use polling pio for the ATA_PROT_NODATA 
protocol.

Signed-off-by: Albert Lee <[EMAIL PROTECTED]>
---
Currently even if ATA_FLAG_PIO_POLLING is set, irq driven pio is used for the
ATA_PROT_NODATA protocol. This won't cause problem for the current users of
ATA_FLAG_PIO_POLLING (sata_mv, pdc_adma.c, etc.) since the older drivers can
handle the PIO_NODATA interrupts just like the DMA interrupts.

However, pata_ixp4xx_cf, the new user of ATA_FLAG_PIO_POLLING, might have no
interrupt at all. Using irq driven pio for the ATA_PROT_NODATA protocol will
cause timeout for pata_ixp4xx_cf.

The patch is against libata-dev (2b25ec4b7b73f57f09c1262d2f2d4a567b18f44f).
For your review, thanks.

--- libata-dev/drivers/ata/libata-core.c        2006-12-07 11:05:23.000000000 
+0800
+++ pio_polling/drivers/ata/libata-core.c       2006-12-07 11:10:21.000000000 
+0800
@@ -4975,6 +4975,7 @@ unsigned int ata_qc_issue_prot(struct at
        if (ap->flags & ATA_FLAG_PIO_POLLING) {
                switch (qc->tf.protocol) {
                case ATA_PROT_PIO:
+               case ATA_PROT_NODATA:
                case ATA_PROT_ATAPI:
                case ATA_PROT_ATAPI_NODATA:
                        qc->tf.flags |= ATA_TFLAG_POLLING;


-
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