[PATCH] libata-dev: ata_check_atapi_dma() fix for ATA_FLAG_PIO_POLLING LLDDs
ata_check_atapi_dma() fix for LLDDs with the ATA_FLAG_PIO_POLLING flag. Signed-off-by: Albert Lee <albertcc@tw.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
parent
27cdadef6d
commit
c2bbc55161
1 changed files with 10 additions and 0 deletions
|
@ -2883,6 +2883,15 @@ int ata_check_atapi_dma(struct ata_queued_cmd *qc)
|
||||||
if (ap->ops->check_atapi_dma)
|
if (ap->ops->check_atapi_dma)
|
||||||
rc = ap->ops->check_atapi_dma(qc);
|
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;
|
return rc;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
@ -4038,6 +4047,7 @@ unsigned int ata_qc_issue_prot(struct ata_queued_cmd *qc)
|
||||||
break;
|
break;
|
||||||
case ATA_PROT_ATAPI_DMA:
|
case ATA_PROT_ATAPI_DMA:
|
||||||
if (qc->dev->flags & ATA_DFLAG_CDB_INTR)
|
if (qc->dev->flags & ATA_DFLAG_CDB_INTR)
|
||||||
|
/* see ata_check_atapi_dma() */
|
||||||
BUG();
|
BUG();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
Loading…
Add table
Reference in a new issue