libata/pdc_adma: make SFF EH handle non-bmdma SFF drivers and standardize pdc_adma ops
pdc_adma has interface similar to SFF but has its own DMA interface. It currently implements noop bmdma ops to avoid crashing ata_bmdma_error_handler() which BTW actually is EH for SFF drivers. This patch makes ata_bmdma_error_handler() dereference bmdma ops iff bmdma_addr is initialized as done in ata_bmdma_post_internal_cmd. This change allows pdc_adma to standardize ops and use SFF error_handler and post_internal_cmd. Signed-off-by: Tejun Heo <htejun@gmail.com> Cc: Mark Lord <liml@rtr.ca> Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
@@ -2014,7 +2014,8 @@ void ata_bmdma_error_handler(struct ata_port *ap)
|
||||
|
||||
ap->hsm_task_state = HSM_ST_IDLE;
|
||||
|
||||
if (qc && (qc->tf.protocol == ATA_PROT_DMA ||
|
||||
if (ap->ioaddr.bmdma_addr &&
|
||||
qc && (qc->tf.protocol == ATA_PROT_DMA ||
|
||||
qc->tf.protocol == ATAPI_PROT_DMA)) {
|
||||
u8 host_stat;
|
||||
|
||||
|
Reference in New Issue
Block a user