static void vt6420_bmdma_start(struct ata_queued_cmd *qc) { struct ata_port *ap = qc->ap; if ((qc->tf.command == ATA_CMD_PACKET) && (qc->scsicmd->sc_data_direction == DMA_TO_DEVICE)) { /* Prevents corruption on some ATAPI burners */ ata_sff_pause(ap); } ata_bmdma_start(qc); }
static void sl82c105_bmdma_start(struct ata_queued_cmd *qc) { struct ata_port *ap = qc->ap; udelay(100); sl82c105_reset_engine(ap); udelay(100); /* Set the clocks for DMA */ sl82c105_configure_dmamode(ap, qc->dev); /* Activate DMA */ ata_bmdma_start(qc); }
static void atiixp_bmdma_start(struct ata_queued_cmd *qc) { struct ata_port *ap = qc->ap; struct ata_device *adev = qc->dev; struct pci_dev *pdev = to_pci_dev(ap->host->dev); int dn = (2 * ap->port_no) + adev->devno; u16 tmp16; pci_read_config_word(pdev, ATIIXP_IDE_UDMA_CONTROL, &tmp16); if (ata_using_udma(adev)) tmp16 |= (1 << dn); else tmp16 &= ~(1 << dn); pci_write_config_word(pdev, ATIIXP_IDE_UDMA_CONTROL, tmp16); ata_bmdma_start(qc); }
static void triflex_bmdma_start(struct ata_queued_cmd *qc) { triflex_load_timing(qc->ap, qc->dev, qc->dev->dma_mode); ata_bmdma_start(qc); }
static void ns87415_bmdma_start(struct ata_queued_cmd *qc) { ns87415_set_mode(qc->ap, qc->dev, qc->dev->dma_mode); ata_bmdma_start(qc); }