Lines Matching refs:qc
289 static unsigned int octeon_cf_data_xfer8(struct ata_queued_cmd *qc, in octeon_cf_data_xfer8() argument
294 struct ata_port *ap = qc->dev->link->ap; in octeon_cf_data_xfer8()
328 static unsigned int octeon_cf_data_xfer16(struct ata_queued_cmd *qc, in octeon_cf_data_xfer16() argument
333 struct ata_port *ap = qc->dev->link->ap; in octeon_cf_data_xfer16()
516 static void octeon_cf_dma_setup(struct ata_queued_cmd *qc) in octeon_cf_dma_setup() argument
518 struct ata_port *ap = qc->ap; in octeon_cf_dma_setup()
523 qc->cursg = qc->sg; in octeon_cf_dma_setup()
525 ap->ops->sff_exec_command(ap, &qc->tf); in octeon_cf_dma_setup()
533 static void octeon_cf_dma_start(struct ata_queued_cmd *qc) in octeon_cf_dma_start() argument
535 struct octeon_cf_port *cf_port = qc->ap->private_data; in octeon_cf_dma_start()
541 sg = qc->cursg; in octeon_cf_dma_start()
560 mio_boot_dma_cfg.s.rw = ((qc->tf.flags & ATA_TFLAG_WRITE) != 0); in octeon_cf_dma_start()
590 struct ata_queued_cmd *qc) in octeon_cf_dma_finished() argument
598 trace_ata_bmdma_stop(ap, &qc->tf, qc->tag); in octeon_cf_dma_finished()
606 qc->err_mask |= AC_ERR_HOST_BUS; in octeon_cf_dma_finished()
625 ata_sff_hsm_move(ap, qc, status, 0); in octeon_cf_dma_finished()
627 if (unlikely(qc->err_mask) && (qc->tf.protocol == ATA_PROT_DMA)) in octeon_cf_dma_finished()
650 struct ata_queued_cmd *qc; in octeon_cf_interrupt() local
660 qc = ata_qc_from_tag(ap, ap->link.active_tag); in octeon_cf_interrupt()
662 if (!qc || (qc->tf.flags & ATA_TFLAG_POLLING)) in octeon_cf_interrupt()
666 if (!sg_is_last(qc->cursg)) { in octeon_cf_interrupt()
667 qc->cursg = sg_next(qc->cursg); in octeon_cf_interrupt()
669 trace_ata_bmdma_start(ap, &qc->tf, qc->tag); in octeon_cf_interrupt()
670 octeon_cf_dma_start(qc); in octeon_cf_interrupt()
697 handled |= octeon_cf_dma_finished(ap, qc); in octeon_cf_interrupt()
711 struct ata_queued_cmd *qc; in octeon_cf_delayed_finish() local
734 qc = ata_qc_from_tag(ap, ap->link.active_tag); in octeon_cf_delayed_finish()
735 if (qc && (!(qc->tf.flags & ATA_TFLAG_POLLING))) in octeon_cf_delayed_finish()
736 octeon_cf_dma_finished(ap, qc); in octeon_cf_delayed_finish()
755 static int octeon_cf_check_atapi_dma(struct ata_queued_cmd *qc) in octeon_cf_check_atapi_dma() argument
760 static unsigned int octeon_cf_qc_issue(struct ata_queued_cmd *qc) in octeon_cf_qc_issue() argument
762 struct ata_port *ap = qc->ap; in octeon_cf_qc_issue()
764 switch (qc->tf.protocol) { in octeon_cf_qc_issue()
766 WARN_ON(qc->tf.flags & ATA_TFLAG_POLLING); in octeon_cf_qc_issue()
768 trace_ata_tf_load(ap, &qc->tf); in octeon_cf_qc_issue()
769 ap->ops->sff_tf_load(ap, &qc->tf); /* load tf registers */ in octeon_cf_qc_issue()
770 trace_ata_bmdma_setup(ap, &qc->tf, qc->tag); in octeon_cf_qc_issue()
771 octeon_cf_dma_setup(qc); /* set up dma */ in octeon_cf_qc_issue()
772 trace_ata_bmdma_start(ap, &qc->tf, qc->tag); in octeon_cf_qc_issue()
773 octeon_cf_dma_start(qc); /* initiate dma */ in octeon_cf_qc_issue()
782 return ata_sff_qc_issue(qc); in octeon_cf_qc_issue()