Lines Matching refs:qc
177 #define HSDEV_FROM_QC(qc) ((struct sata_dwc_device *)\ argument
178 (qc)->ap->host->private_data)
211 static void sata_dwc_bmdma_start_by_tag(struct ata_queued_cmd *qc, u8 tag);
212 static int sata_dwc_qc_complete(struct ata_port *ap, struct ata_queued_cmd *qc,
303 static struct dma_async_tx_descriptor *dma_dwc_xfer_setup(struct ata_queued_cmd *qc) in dma_dwc_xfer_setup() argument
305 struct ata_port *ap = qc->ap; in dma_dwc_xfer_setup()
312 if (qc->dma_dir == DMA_DEV_TO_MEM) { in dma_dwc_xfer_setup()
320 sconf.direction = qc->dma_dir; in dma_dwc_xfer_setup()
329 desc = dmaengine_prep_slave_sg(hsdevp->chan, qc->sg, qc->n_elem, in dma_dwc_xfer_setup()
330 qc->dma_dir, in dma_dwc_xfer_setup()
340 __func__, qc->sg, qc->n_elem, &addr); in dma_dwc_xfer_setup()
409 struct ata_queued_cmd *qc; in sata_dwc_error_intr() local
438 qc = ata_qc_from_tag(ap, tag); in sata_dwc_error_intr()
439 if (qc) in sata_dwc_error_intr()
440 qc->err_mask |= err_mask; in sata_dwc_error_intr()
459 struct ata_queued_cmd *qc; in sata_dwc_isr() local
496 qc = ata_qc_from_tag(ap, tag); in sata_dwc_isr()
502 qc->ap->link.active_tag = tag; in sata_dwc_isr()
503 sata_dwc_bmdma_start_by_tag(qc, tag); in sata_dwc_isr()
517 qc = ata_qc_from_tag(ap, tag); in sata_dwc_isr()
520 if (unlikely(!qc || (qc->tf.flags & ATA_TFLAG_POLLING))) { in sata_dwc_isr()
523 __func__, qc); in sata_dwc_isr()
530 qc->ap->link.active_tag = tag; in sata_dwc_isr()
535 sata_dwc_qc_complete(ap, qc, 1); in sata_dwc_isr()
541 __func__, get_prot_descript(qc->tf.protocol)); in sata_dwc_isr()
543 if (ata_is_dma(qc->tf.protocol)) { in sata_dwc_isr()
561 } else if (ata_is_pio(qc->tf.protocol)) { in sata_dwc_isr()
562 ata_sff_hsm_move(ap, qc, status, 0); in sata_dwc_isr()
566 if (unlikely(sata_dwc_qc_complete(ap, qc, 1))) in sata_dwc_isr()
614 qc = ata_qc_from_tag(ap, tag); in sata_dwc_isr()
617 qc->ap->link.active_tag = tag; in sata_dwc_isr()
624 sata_dwc_qc_complete(ap, qc, 1); in sata_dwc_isr()
631 get_prot_descript(qc->tf.protocol)); in sata_dwc_isr()
632 if (ata_is_dma(qc->tf.protocol)) { in sata_dwc_isr()
641 if (unlikely(sata_dwc_qc_complete(ap, qc, 1))) in sata_dwc_isr()
700 struct ata_queued_cmd *qc; in sata_dwc_dma_xfer_complete() local
706 qc = ata_qc_from_tag(ap, tag); in sata_dwc_dma_xfer_complete()
707 if (!qc) { in sata_dwc_dma_xfer_complete()
716 __func__, qc->tag, qc->tf.command, in sata_dwc_dma_xfer_complete()
717 get_dma_dir_descript(qc->dma_dir), in sata_dwc_dma_xfer_complete()
718 get_prot_descript(qc->tf.protocol), in sata_dwc_dma_xfer_complete()
723 if (ata_is_dma(qc->tf.protocol)) { in sata_dwc_dma_xfer_complete()
732 sata_dwc_qc_complete(ap, qc, check_status); in sata_dwc_dma_xfer_complete()
735 sata_dwc_qc_complete(ap, qc, check_status); in sata_dwc_dma_xfer_complete()
739 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->tag; in sata_dwc_qc_complete()
755 qc->tf.command, status, ap->print_id, qc->tf.protocol); in sata_dwc_qc_complete()
763 ata_qc_complete(qc); in sata_dwc_qc_complete()
946 static void sata_dwc_bmdma_setup_by_tag(struct ata_queued_cmd *qc, u8 tag) in sata_dwc_bmdma_setup_by_tag() argument
948 sata_dwc_exec_command_by_tag(qc->ap, &qc->tf, tag, in sata_dwc_bmdma_setup_by_tag()
952 static void sata_dwc_bmdma_setup(struct ata_queued_cmd *qc) in sata_dwc_bmdma_setup() argument
954 u8 tag = qc->tag; in sata_dwc_bmdma_setup()
956 if (ata_is_ncq(qc->tf.protocol)) { in sata_dwc_bmdma_setup()
957 dev_dbg(qc->ap->dev, "%s: ap->link.sactive=0x%08x tag=%d\n", in sata_dwc_bmdma_setup()
958 __func__, qc->ap->link.sactive, tag); in sata_dwc_bmdma_setup()
962 sata_dwc_bmdma_setup_by_tag(qc, tag); in sata_dwc_bmdma_setup()
965 static void sata_dwc_bmdma_start_by_tag(struct ata_queued_cmd *qc, u8 tag) in sata_dwc_bmdma_start_by_tag() argument
969 struct sata_dwc_device *hsdev = HSDEV_FROM_QC(qc); in sata_dwc_bmdma_start_by_tag()
970 struct ata_port *ap = qc->ap; in sata_dwc_bmdma_start_by_tag()
973 int dir = qc->dma_dir; in sata_dwc_bmdma_start_by_tag()
990 __func__, qc, tag, qc->tf.command, in sata_dwc_bmdma_start_by_tag()
991 get_dma_dir_descript(qc->dma_dir), start_dma); in sata_dwc_bmdma_start_by_tag()
992 sata_dwc_tf_dump(ap, &qc->tf); in sata_dwc_bmdma_start_by_tag()
1014 static void sata_dwc_bmdma_start(struct ata_queued_cmd *qc) in sata_dwc_bmdma_start() argument
1016 u8 tag = qc->tag; in sata_dwc_bmdma_start()
1018 if (ata_is_ncq(qc->tf.protocol)) { in sata_dwc_bmdma_start()
1019 dev_dbg(qc->ap->dev, "%s: ap->link.sactive=0x%08x tag=%d\n", in sata_dwc_bmdma_start()
1020 __func__, qc->ap->link.sactive, tag); in sata_dwc_bmdma_start()
1024 dev_dbg(qc->ap->dev, "%s\n", __func__); in sata_dwc_bmdma_start()
1025 sata_dwc_bmdma_start_by_tag(qc, tag); in sata_dwc_bmdma_start()
1034 static void sata_dwc_qc_prep_by_tag(struct ata_queued_cmd *qc, u8 tag) in sata_dwc_qc_prep_by_tag() argument
1037 struct ata_port *ap = qc->ap; in sata_dwc_qc_prep_by_tag()
1041 __func__, ap->port_no, get_dma_dir_descript(qc->dma_dir), in sata_dwc_qc_prep_by_tag()
1042 qc->n_elem); in sata_dwc_qc_prep_by_tag()
1044 desc = dma_dwc_xfer_setup(qc); in sata_dwc_qc_prep_by_tag()
1053 static unsigned int sata_dwc_qc_issue(struct ata_queued_cmd *qc) in sata_dwc_qc_issue() argument
1056 u8 tag = qc->tag; in sata_dwc_qc_issue()
1057 struct ata_port *ap = qc->ap; in sata_dwc_qc_issue()
1060 if (qc->tag > 0 || ap->link.sactive > 1) in sata_dwc_qc_issue()
1063 __func__, ap->print_id, qc->tf.command, in sata_dwc_qc_issue()
1064 ata_get_cmd_descript(qc->tf.command), in sata_dwc_qc_issue()
1065 qc->tag, get_prot_descript(qc->tf.protocol), in sata_dwc_qc_issue()
1069 if (!ata_is_ncq(qc->tf.protocol)) in sata_dwc_qc_issue()
1071 sata_dwc_qc_prep_by_tag(qc, tag); in sata_dwc_qc_issue()
1073 if (ata_is_ncq(qc->tf.protocol)) { in sata_dwc_qc_issue()
1078 dev_dbg(qc->ap->dev, in sata_dwc_qc_issue()
1080 __func__, tag, qc->ap->link.sactive, sactive); in sata_dwc_qc_issue()
1082 ap->ops->sff_tf_load(ap, &qc->tf); in sata_dwc_qc_issue()
1083 sata_dwc_exec_command_by_tag(ap, &qc->tf, qc->tag, in sata_dwc_qc_issue()
1086 ata_sff_qc_issue(qc); in sata_dwc_qc_issue()
1098 static void sata_dwc_qc_prep(struct ata_queued_cmd *qc) in sata_dwc_qc_prep() argument
1100 if ((qc->dma_dir == DMA_NONE) || (qc->tf.protocol == ATA_PROT_PIO)) in sata_dwc_qc_prep()
1104 if (qc->tag > 0) in sata_dwc_qc_prep()
1105 dev_info(qc->ap->dev, "%s: qc->tag=%d ap->active_tag=0x%08x\n", in sata_dwc_qc_prep()
1106 __func__, qc->tag, qc->ap->link.active_tag); in sata_dwc_qc_prep()