aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/scsi/libata-core.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c
index ef0d0dd90e17..61c120dae74d 100644
--- a/drivers/scsi/libata-core.c
+++ b/drivers/scsi/libata-core.c
@@ -2883,6 +2883,15 @@ int ata_check_atapi_dma(struct ata_queued_cmd *qc)
2883 if (ap->ops->check_atapi_dma) 2883 if (ap->ops->check_atapi_dma)
2884 rc = ap->ops->check_atapi_dma(qc); 2884 rc = ap->ops->check_atapi_dma(qc);
2885 2885
2886 /* We don't support polling DMA.
2887 * Use PIO if the LLDD handles only interrupts in
2888 * the HSM_ST_LAST state and the ATAPI device
2889 * generates CDB interrupts.
2890 */
2891 if ((ap->flags & ATA_FLAG_PIO_POLLING) &&
2892 (qc->dev->flags & ATA_DFLAG_CDB_INTR))
2893 rc = 1;
2894
2886 return rc; 2895 return rc;
2887} 2896}
2888/** 2897/**
@@ -4038,6 +4047,7 @@ unsigned int ata_qc_issue_prot(struct ata_queued_cmd *qc)
4038 break; 4047 break;
4039 case ATA_PROT_ATAPI_DMA: 4048 case ATA_PROT_ATAPI_DMA:
4040 if (qc->dev->flags & ATA_DFLAG_CDB_INTR) 4049 if (qc->dev->flags & ATA_DFLAG_CDB_INTR)
4050 /* see ata_check_atapi_dma() */
4041 BUG(); 4051 BUG();
4042 break; 4052 break;
4043 default: 4053 default: