mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-11 15:49:56 +00:00
[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: Albert Lee <albertcc@tw.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
parent
71f0737b28
commit
3a77827562
@ -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:
|
||||
|
Loading…
x
Reference in New Issue
Block a user