Lines Matching full:qc

158 #define HSDEV_FROM_QC(qc)	((struct sata_dwc_device *)(qc)->ap->host->private_data)  argument
175 static void sata_dwc_bmdma_start_by_tag(struct ata_queued_cmd *qc, u8 tag);
176 static int sata_dwc_qc_complete(struct ata_port *ap, struct ata_queued_cmd *qc);
322 static struct dma_async_tx_descriptor *dma_dwc_xfer_setup(struct ata_queued_cmd *qc) in dma_dwc_xfer_setup() argument
324 struct ata_port *ap = qc->ap; in dma_dwc_xfer_setup()
330 if (qc->dma_dir == DMA_DEV_TO_MEM) { in dma_dwc_xfer_setup()
338 sconf.direction = qc->dma_dir; in dma_dwc_xfer_setup()
347 desc = dmaengine_prep_slave_sg(hsdevp->chan, qc->sg, qc->n_elem, in dma_dwc_xfer_setup()
348 qc->dma_dir, in dma_dwc_xfer_setup()
358 qc->sg, qc->n_elem, &hsdev->dmadr); in dma_dwc_xfer_setup()
417 struct ata_queued_cmd *qc; in sata_dwc_error_intr() local
446 qc = ata_qc_from_tag(ap, tag); in sata_dwc_error_intr()
447 if (qc) in sata_dwc_error_intr()
448 qc->err_mask |= err_mask; in sata_dwc_error_intr()
467 struct ata_queued_cmd *qc; in sata_dwc_isr() local
504 qc = ata_qc_from_tag(ap, tag); in sata_dwc_isr()
505 if (unlikely(!qc)) { in sata_dwc_isr()
506 dev_err(ap->dev, "failed to get qc"); in sata_dwc_isr()
515 trace_ata_bmdma_start(ap, &qc->tf, tag); in sata_dwc_isr()
516 qc->ap->link.active_tag = tag; in sata_dwc_isr()
517 sata_dwc_bmdma_start_by_tag(qc, tag); in sata_dwc_isr()
531 qc = ata_qc_from_tag(ap, tag); in sata_dwc_isr()
533 /* DEV interrupt w/ no active qc? */ in sata_dwc_isr()
534 if (unlikely(!qc || (qc->tf.flags & ATA_TFLAG_POLLING))) { in sata_dwc_isr()
536 "%s interrupt with no active qc qc=%p\n", in sata_dwc_isr()
537 __func__, qc); in sata_dwc_isr()
544 qc->ap->link.active_tag = tag; in sata_dwc_isr()
549 sata_dwc_qc_complete(ap, qc); in sata_dwc_isr()
555 __func__, get_prot_descript(qc->tf.protocol)); in sata_dwc_isr()
557 if (ata_is_dma(qc->tf.protocol)) { in sata_dwc_isr()
575 } else if (ata_is_pio(qc->tf.protocol)) { in sata_dwc_isr()
576 ata_sff_hsm_move(ap, qc, status, 0); in sata_dwc_isr()
580 if (unlikely(sata_dwc_qc_complete(ap, qc))) in sata_dwc_isr()
623 qc = ata_qc_from_tag(ap, tag); in sata_dwc_isr()
624 if (unlikely(!qc)) { in sata_dwc_isr()
625 dev_err(ap->dev, "failed to get qc"); in sata_dwc_isr()
631 qc->ap->link.active_tag = tag; in sata_dwc_isr()
638 sata_dwc_qc_complete(ap, qc); in sata_dwc_isr()
645 get_prot_descript(qc->tf.protocol)); in sata_dwc_isr()
646 if (ata_is_dma(qc->tf.protocol)) { in sata_dwc_isr()
655 if (unlikely(sata_dwc_qc_complete(ap, qc))) in sata_dwc_isr()
712 struct ata_queued_cmd *qc; in sata_dwc_dma_xfer_complete() local
718 qc = ata_qc_from_tag(ap, tag); in sata_dwc_dma_xfer_complete()
719 if (!qc) { in sata_dwc_dma_xfer_complete()
720 dev_err(ap->dev, "failed to get qc"); in sata_dwc_dma_xfer_complete()
724 if (ata_is_dma(qc->tf.protocol)) { in sata_dwc_dma_xfer_complete()
733 sata_dwc_qc_complete(ap, qc); in sata_dwc_dma_xfer_complete()
736 sata_dwc_qc_complete(ap, qc); in sata_dwc_dma_xfer_complete()
740 static int sata_dwc_qc_complete(struct ata_port *ap, struct ata_queued_cmd *qc) in sata_dwc_qc_complete() argument
744 u8 tag = qc->hw_tag; in sata_dwc_qc_complete()
754 "QC complete cmd=0x%02x status=0x%02x ata%u: protocol=%d\n", in sata_dwc_qc_complete()
755 qc->tf.command, status, ap->print_id, qc->tf.protocol); in sata_dwc_qc_complete()
761 ata_qc_complete(qc); in sata_dwc_qc_complete()
940 static void sata_dwc_bmdma_setup_by_tag(struct ata_queued_cmd *qc, u8 tag) in sata_dwc_bmdma_setup_by_tag() argument
942 sata_dwc_exec_command_by_tag(qc->ap, &qc->tf, tag, in sata_dwc_bmdma_setup_by_tag()
946 static void sata_dwc_bmdma_setup(struct ata_queued_cmd *qc) in sata_dwc_bmdma_setup() argument
948 u8 tag = qc->hw_tag; in sata_dwc_bmdma_setup()
950 if (!ata_is_ncq(qc->tf.protocol)) in sata_dwc_bmdma_setup()
953 sata_dwc_bmdma_setup_by_tag(qc, tag); in sata_dwc_bmdma_setup()
956 static void sata_dwc_bmdma_start_by_tag(struct ata_queued_cmd *qc, u8 tag) in sata_dwc_bmdma_start_by_tag() argument
960 struct sata_dwc_device *hsdev = HSDEV_FROM_QC(qc); in sata_dwc_bmdma_start_by_tag()
961 struct ata_port *ap = qc->ap; in sata_dwc_bmdma_start_by_tag()
964 int dir = qc->dma_dir; in sata_dwc_bmdma_start_by_tag()
999 static void sata_dwc_bmdma_start(struct ata_queued_cmd *qc) in sata_dwc_bmdma_start() argument
1001 u8 tag = qc->hw_tag; in sata_dwc_bmdma_start()
1003 if (!ata_is_ncq(qc->tf.protocol)) in sata_dwc_bmdma_start()
1006 sata_dwc_bmdma_start_by_tag(qc, tag); in sata_dwc_bmdma_start()
1009 static unsigned int sata_dwc_qc_issue(struct ata_queued_cmd *qc) in sata_dwc_qc_issue() argument
1012 u8 tag = qc->hw_tag; in sata_dwc_qc_issue()
1013 struct ata_port *ap = qc->ap; in sata_dwc_qc_issue()
1016 if (!ata_is_ncq(qc->tf.protocol)) in sata_dwc_qc_issue()
1019 if (ata_is_dma(qc->tf.protocol)) { in sata_dwc_qc_issue()
1020 hsdevp->desc[tag] = dma_dwc_xfer_setup(qc); in sata_dwc_qc_issue()
1027 if (ata_is_ncq(qc->tf.protocol)) { in sata_dwc_qc_issue()
1032 trace_ata_tf_load(ap, &qc->tf); in sata_dwc_qc_issue()
1033 ap->ops->sff_tf_load(ap, &qc->tf); in sata_dwc_qc_issue()
1034 trace_ata_exec_command(ap, &qc->tf, tag); in sata_dwc_qc_issue()
1035 sata_dwc_exec_command_by_tag(ap, &qc->tf, tag, in sata_dwc_qc_issue()
1038 return ata_bmdma_qc_issue(qc); in sata_dwc_qc_issue()