• Home
  • Raw
  • Download

Lines Matching refs:qc

171 #define HSDEV_FROM_QC(qc)	((struct sata_dwc_device *)(qc)->ap->host->private_data)  argument
188 static void sata_dwc_bmdma_start_by_tag(struct ata_queued_cmd *qc, u8 tag);
189 static int sata_dwc_qc_complete(struct ata_port *ap, struct ata_queued_cmd *qc,
367 static struct dma_async_tx_descriptor *dma_dwc_xfer_setup(struct ata_queued_cmd *qc) in dma_dwc_xfer_setup() argument
369 struct ata_port *ap = qc->ap; in dma_dwc_xfer_setup()
375 if (qc->dma_dir == DMA_DEV_TO_MEM) { in dma_dwc_xfer_setup()
383 sconf.direction = qc->dma_dir; in dma_dwc_xfer_setup()
392 desc = dmaengine_prep_slave_sg(hsdevp->chan, qc->sg, qc->n_elem, in dma_dwc_xfer_setup()
393 qc->dma_dir, in dma_dwc_xfer_setup()
403 qc->sg, qc->n_elem, &hsdev->dmadr); in dma_dwc_xfer_setup()
462 struct ata_queued_cmd *qc; in sata_dwc_error_intr() local
491 qc = ata_qc_from_tag(ap, tag); in sata_dwc_error_intr()
492 if (qc) in sata_dwc_error_intr()
493 qc->err_mask |= err_mask; in sata_dwc_error_intr()
512 struct ata_queued_cmd *qc; in sata_dwc_isr() local
549 qc = ata_qc_from_tag(ap, tag); in sata_dwc_isr()
550 if (unlikely(!qc)) { in sata_dwc_isr()
560 qc->ap->link.active_tag = tag; in sata_dwc_isr()
561 sata_dwc_bmdma_start_by_tag(qc, tag); in sata_dwc_isr()
575 qc = ata_qc_from_tag(ap, tag); in sata_dwc_isr()
578 if (unlikely(!qc || (qc->tf.flags & ATA_TFLAG_POLLING))) { in sata_dwc_isr()
581 __func__, qc); in sata_dwc_isr()
588 qc->ap->link.active_tag = tag; in sata_dwc_isr()
593 sata_dwc_qc_complete(ap, qc, 1); in sata_dwc_isr()
599 __func__, get_prot_descript(qc->tf.protocol)); in sata_dwc_isr()
601 if (ata_is_dma(qc->tf.protocol)) { in sata_dwc_isr()
619 } else if (ata_is_pio(qc->tf.protocol)) { in sata_dwc_isr()
620 ata_sff_hsm_move(ap, qc, status, 0); in sata_dwc_isr()
624 if (unlikely(sata_dwc_qc_complete(ap, qc, 1))) in sata_dwc_isr()
669 qc = ata_qc_from_tag(ap, tag); in sata_dwc_isr()
670 if (unlikely(!qc)) { in sata_dwc_isr()
677 qc->ap->link.active_tag = tag; in sata_dwc_isr()
684 sata_dwc_qc_complete(ap, qc, 1); in sata_dwc_isr()
691 get_prot_descript(qc->tf.protocol)); in sata_dwc_isr()
692 if (ata_is_dma(qc->tf.protocol)) { in sata_dwc_isr()
701 if (unlikely(sata_dwc_qc_complete(ap, qc, 1))) in sata_dwc_isr()
758 struct ata_queued_cmd *qc; in sata_dwc_dma_xfer_complete() local
764 qc = ata_qc_from_tag(ap, tag); in sata_dwc_dma_xfer_complete()
765 if (!qc) { in sata_dwc_dma_xfer_complete()
774 __func__, qc->hw_tag, qc->tf.command, in sata_dwc_dma_xfer_complete()
775 get_dma_dir_descript(qc->dma_dir), in sata_dwc_dma_xfer_complete()
776 get_prot_descript(qc->tf.protocol), in sata_dwc_dma_xfer_complete()
781 if (ata_is_dma(qc->tf.protocol)) { in sata_dwc_dma_xfer_complete()
790 sata_dwc_qc_complete(ap, qc, check_status); in sata_dwc_dma_xfer_complete()
793 sata_dwc_qc_complete(ap, qc, check_status); in sata_dwc_dma_xfer_complete()
797 static int sata_dwc_qc_complete(struct ata_port *ap, struct ata_queued_cmd *qc, in sata_dwc_qc_complete() argument
802 u8 tag = qc->hw_tag; in sata_dwc_qc_complete()
814 qc->tf.command, status, ap->print_id, qc->tf.protocol); in sata_dwc_qc_complete()
820 ata_qc_complete(qc); in sata_dwc_qc_complete()
1002 static void sata_dwc_bmdma_setup_by_tag(struct ata_queued_cmd *qc, u8 tag) in sata_dwc_bmdma_setup_by_tag() argument
1004 sata_dwc_exec_command_by_tag(qc->ap, &qc->tf, tag, in sata_dwc_bmdma_setup_by_tag()
1008 static void sata_dwc_bmdma_setup(struct ata_queued_cmd *qc) in sata_dwc_bmdma_setup() argument
1010 u8 tag = qc->hw_tag; in sata_dwc_bmdma_setup()
1012 if (ata_is_ncq(qc->tf.protocol)) { in sata_dwc_bmdma_setup()
1013 dev_dbg(qc->ap->dev, "%s: ap->link.sactive=0x%08x tag=%d\n", in sata_dwc_bmdma_setup()
1014 __func__, qc->ap->link.sactive, tag); in sata_dwc_bmdma_setup()
1018 sata_dwc_bmdma_setup_by_tag(qc, tag); in sata_dwc_bmdma_setup()
1021 static void sata_dwc_bmdma_start_by_tag(struct ata_queued_cmd *qc, u8 tag) in sata_dwc_bmdma_start_by_tag() argument
1025 struct sata_dwc_device *hsdev = HSDEV_FROM_QC(qc); in sata_dwc_bmdma_start_by_tag()
1026 struct ata_port *ap = qc->ap; in sata_dwc_bmdma_start_by_tag()
1029 int dir = qc->dma_dir; in sata_dwc_bmdma_start_by_tag()
1046 __func__, qc, tag, qc->tf.command, in sata_dwc_bmdma_start_by_tag()
1047 get_dma_dir_descript(qc->dma_dir), start_dma); in sata_dwc_bmdma_start_by_tag()
1048 sata_dwc_tf_dump(ap, &qc->tf); in sata_dwc_bmdma_start_by_tag()
1070 static void sata_dwc_bmdma_start(struct ata_queued_cmd *qc) in sata_dwc_bmdma_start() argument
1072 u8 tag = qc->hw_tag; in sata_dwc_bmdma_start()
1074 if (ata_is_ncq(qc->tf.protocol)) { in sata_dwc_bmdma_start()
1075 dev_dbg(qc->ap->dev, "%s: ap->link.sactive=0x%08x tag=%d\n", in sata_dwc_bmdma_start()
1076 __func__, qc->ap->link.sactive, tag); in sata_dwc_bmdma_start()
1080 dev_dbg(qc->ap->dev, "%s\n", __func__); in sata_dwc_bmdma_start()
1081 sata_dwc_bmdma_start_by_tag(qc, tag); in sata_dwc_bmdma_start()
1084 static unsigned int sata_dwc_qc_issue(struct ata_queued_cmd *qc) in sata_dwc_qc_issue() argument
1087 u8 tag = qc->hw_tag; in sata_dwc_qc_issue()
1088 struct ata_port *ap = qc->ap; in sata_dwc_qc_issue()
1092 if (qc->hw_tag > 0 || ap->link.sactive > 1) in sata_dwc_qc_issue()
1095 __func__, ap->print_id, qc->tf.command, in sata_dwc_qc_issue()
1096 ata_get_cmd_descript(qc->tf.command), in sata_dwc_qc_issue()
1097 qc->hw_tag, get_prot_descript(qc->tf.protocol), in sata_dwc_qc_issue()
1101 if (!ata_is_ncq(qc->tf.protocol)) in sata_dwc_qc_issue()
1104 if (ata_is_dma(qc->tf.protocol)) { in sata_dwc_qc_issue()
1105 hsdevp->desc[tag] = dma_dwc_xfer_setup(qc); in sata_dwc_qc_issue()
1112 if (ata_is_ncq(qc->tf.protocol)) { in sata_dwc_qc_issue()
1117 dev_dbg(qc->ap->dev, in sata_dwc_qc_issue()
1119 __func__, tag, qc->ap->link.sactive, sactive); in sata_dwc_qc_issue()
1121 ap->ops->sff_tf_load(ap, &qc->tf); in sata_dwc_qc_issue()
1122 sata_dwc_exec_command_by_tag(ap, &qc->tf, tag, in sata_dwc_qc_issue()
1125 return ata_bmdma_qc_issue(qc); in sata_dwc_qc_issue()