Lines Matching refs:qc
328 static int sil24_qc_defer(struct ata_queued_cmd *qc);
329 static enum ata_completion_errors sil24_qc_prep(struct ata_queued_cmd *qc);
330 static unsigned int sil24_qc_issue(struct ata_queued_cmd *qc);
331 static bool sil24_qc_fill_rtf(struct ata_queued_cmd *qc);
343 static void sil24_post_internal_cmd(struct ata_queued_cmd *qc);
769 static inline void sil24_fill_sg(struct ata_queued_cmd *qc, in sil24_fill_sg() argument
776 for_each_sg(qc->sg, sg, qc->n_elem, si) { in sil24_fill_sg()
788 static int sil24_qc_defer(struct ata_queued_cmd *qc) in sil24_qc_defer() argument
790 struct ata_link *link = qc->dev->link; in sil24_qc_defer()
792 u8 prot = qc->tf.protocol; in sil24_qc_defer()
814 (qc->flags & ATA_QCFLAG_RESULT_TF)); in sil24_qc_defer()
820 qc->flags |= ATA_QCFLAG_CLEAR_EXCL; in sil24_qc_defer()
827 qc->flags |= ATA_QCFLAG_CLEAR_EXCL; in sil24_qc_defer()
830 return ata_std_qc_defer(qc); in sil24_qc_defer()
833 static enum ata_completion_errors sil24_qc_prep(struct ata_queued_cmd *qc) in sil24_qc_prep() argument
835 struct ata_port *ap = qc->ap; in sil24_qc_prep()
842 cb = &pp->cmd_block[sil24_tag(qc->hw_tag)]; in sil24_qc_prep()
844 if (!ata_is_atapi(qc->tf.protocol)) { in sil24_qc_prep()
847 if (ata_is_data(qc->tf.protocol)) { in sil24_qc_prep()
850 if (ata_is_ncq(qc->tf.protocol)) in sil24_qc_prep()
852 if (qc->tf.flags & ATA_TFLAG_WRITE) in sil24_qc_prep()
862 memcpy(cb->atapi.cdb, qc->cdb, qc->dev->cdb_len); in sil24_qc_prep()
864 if (ata_is_data(qc->tf.protocol)) { in sil24_qc_prep()
865 if (qc->tf.flags & ATA_TFLAG_WRITE) in sil24_qc_prep()
873 ata_tf_to_fis(&qc->tf, qc->dev->link->pmp, 1, prb->fis); in sil24_qc_prep()
875 if (qc->flags & ATA_QCFLAG_DMAMAP) in sil24_qc_prep()
876 sil24_fill_sg(qc, sge); in sil24_qc_prep()
881 static unsigned int sil24_qc_issue(struct ata_queued_cmd *qc) in sil24_qc_issue() argument
883 struct ata_port *ap = qc->ap; in sil24_qc_issue()
886 unsigned int tag = sil24_tag(qc->hw_tag); in sil24_qc_issue()
904 static bool sil24_qc_fill_rtf(struct ata_queued_cmd *qc) in sil24_qc_fill_rtf() argument
906 sil24_read_tf(qc->ap, qc->hw_tag, &qc->result_tf); in sil24_qc_fill_rtf()
974 struct ata_queued_cmd *qc = NULL; in sil24_error_intr() local
1041 qc = ata_qc_from_tag(ap, link->active_tag); in sil24_error_intr()
1052 qc = ata_qc_from_tag(ap, link->active_tag); in sil24_error_intr()
1074 if (qc) in sil24_error_intr()
1075 qc->err_mask |= err_mask; in sil24_error_intr()
1090 if (qc) in sil24_error_intr()
1091 ata_link_abort(qc->dev->link); in sil24_error_intr()
1183 static void sil24_post_internal_cmd(struct ata_queued_cmd *qc) in sil24_post_internal_cmd() argument
1185 struct ata_port *ap = qc->ap; in sil24_post_internal_cmd()
1188 if ((qc->flags & ATA_QCFLAG_FAILED) && sil24_init_port(ap)) in sil24_post_internal_cmd()