Jeff
I think I may have found an issue in the ATAPI code in the function atapi_packet_task.
From my testing with the sata_via driver, I have been getting a timeout when sending the first inquiry command.
Here is the section of code of interest:
/* make sure DRQ is set */ status = ata_chk_status(ap); if ((status & (ATA_BUSY | ATA_DRQ)) != ATA_DRQ) goto err_out;
/* send SCSI cdb */
DPRINTK("send cdb\n");
assert(ap->cdb_len >= 12);
ata_data_xfer(ap, qc->cdb, ap->cdb_len, 1);** Wait is needed here to work correctly
DPRINTK("Wait for a bit\n"); /* if we are DMA'ing, irq handler takes over from here */
if (qc->tf.protocol == ATA_PROT_ATAPI_DMA)
ap->ops->bmdma_start(qc); /* initiate bmdma */In the test case, the dma transfer is being used. From my perusal of the ATA spec in section 9.8, it looks like there needs to be a definite state transition before issuing the bmdma_start.
Would you take a look at this and verify my theory? Thanks for all the hard work on these drivers.
Gary
- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
