Commit 3a778275 authored by Albert Lee's avatar Albert Lee Committed by Jeff Garzik

[PATCH] libata-dev: move the CDB-intr DMA blacklisting

Move the DMA blacklisting of the CDB-intr devices
from ata_check_atapi_dma() to ata_dma_blacklisted(), where it makes more sense.
Signed-off-by: default avatarAlbert Lee <albertcc@tw.ibm.com>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent 71f0737b
......@@ -2943,6 +2943,14 @@ static int ata_dma_blacklisted(const struct ata_device *dev)
unsigned int nlen, rlen;
int i;
/* We don't support polling DMA.
* DMA blacklist those ATAPI devices with CDB-intr (and use PIO)
* if the LLDD handles only interrupts in the HSM_ST_LAST state.
*/
if ((dev->ap->flags & ATA_FLAG_PIO_POLLING) &&
(dev->flags & ATA_DFLAG_CDB_INTR))
return 1;
ata_id_string(dev->id, model_num, ATA_ID_PROD_OFS,
sizeof(model_num));
ata_id_string(dev->id, model_rev, ATA_ID_FW_REV_OFS,
......@@ -3235,15 +3243,6 @@ int ata_check_atapi_dma(struct ata_queued_cmd *qc)
if (ap->ops->check_atapi_dma)
rc = ap->ops->check_atapi_dma(qc);
/* We don't support polling DMA.
* Use PIO if the LLDD handles only interrupts in
* the HSM_ST_LAST state and the ATAPI device
* generates CDB interrupts.
*/
if ((ap->flags & ATA_FLAG_PIO_POLLING) &&
(qc->dev->flags & ATA_DFLAG_CDB_INTR))
rc = 1;
return rc;
}
/**
......@@ -4551,7 +4550,7 @@ unsigned int ata_qc_issue_prot(struct ata_queued_cmd *qc)
break;
case ATA_PROT_ATAPI_DMA:
if (qc->dev->flags & ATA_DFLAG_CDB_INTR)
/* see ata_check_atapi_dma() */
/* see ata_dma_blacklisted() */
BUG();
break;
default:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment