Lines Matching refs:mrq
193 struct mmc_request *mrq, unsigned int blocks) in mmc_test_prepare_sbc() argument
197 if (!mrq->sbc || !mmc_host_cmd23(card->host) || in mmc_test_prepare_sbc()
198 !mmc_test_card_cmd23(card) || !mmc_op_multi(mrq->cmd->opcode) || in mmc_test_prepare_sbc()
200 mrq->sbc = NULL; in mmc_test_prepare_sbc()
204 mrq->sbc->opcode = MMC_SET_BLOCK_COUNT; in mmc_test_prepare_sbc()
205 mrq->sbc->arg = blocks; in mmc_test_prepare_sbc()
206 mrq->sbc->flags = MMC_RSP_R1 | MMC_CMD_AC; in mmc_test_prepare_sbc()
213 struct mmc_request *mrq, struct scatterlist *sg, unsigned sg_len, in mmc_test_prepare_mrq() argument
216 if (WARN_ON(!mrq || !mrq->cmd || !mrq->data || !mrq->stop)) in mmc_test_prepare_mrq()
220 mrq->cmd->opcode = write ? in mmc_test_prepare_mrq()
223 mrq->cmd->opcode = write ? in mmc_test_prepare_mrq()
227 mrq->cmd->arg = dev_addr; in mmc_test_prepare_mrq()
229 mrq->cmd->arg <<= 9; in mmc_test_prepare_mrq()
231 mrq->cmd->flags = MMC_RSP_R1 | MMC_CMD_ADTC; in mmc_test_prepare_mrq()
234 mrq->stop = NULL; in mmc_test_prepare_mrq()
236 mrq->stop->opcode = MMC_STOP_TRANSMISSION; in mmc_test_prepare_mrq()
237 mrq->stop->arg = 0; in mmc_test_prepare_mrq()
238 mrq->stop->flags = MMC_RSP_R1B | MMC_CMD_AC; in mmc_test_prepare_mrq()
241 mrq->data->blksz = blksz; in mmc_test_prepare_mrq()
242 mrq->data->blocks = blocks; in mmc_test_prepare_mrq()
243 mrq->data->flags = write ? MMC_DATA_WRITE : MMC_DATA_READ; in mmc_test_prepare_mrq()
244 mrq->data->sg = sg; in mmc_test_prepare_mrq()
245 mrq->data->sg_len = sg_len; in mmc_test_prepare_mrq()
247 mmc_test_prepare_sbc(test, mrq, blocks); in mmc_test_prepare_mrq()
249 mmc_set_data_timeout(mrq->data, test->card); in mmc_test_prepare_mrq()
295 struct mmc_request mrq = {}; in mmc_test_buffer_transfer() local
302 mrq.cmd = &cmd; in mmc_test_buffer_transfer()
303 mrq.data = &data; in mmc_test_buffer_transfer()
304 mrq.stop = &stop; in mmc_test_buffer_transfer()
308 mmc_test_prepare_mrq(test, &mrq, &sg, 1, addr, 1, blksz, write); in mmc_test_buffer_transfer()
310 mmc_wait_for_req(test->card->host, &mrq); in mmc_test_buffer_transfer()
690 struct mmc_request *mrq, int write) in mmc_test_prepare_broken_mrq() argument
692 if (WARN_ON(!mrq || !mrq->cmd || !mrq->data)) in mmc_test_prepare_broken_mrq()
695 if (mrq->data->blocks > 1) { in mmc_test_prepare_broken_mrq()
696 mrq->cmd->opcode = write ? in mmc_test_prepare_broken_mrq()
698 mrq->stop = NULL; in mmc_test_prepare_broken_mrq()
700 mrq->cmd->opcode = MMC_SEND_STATUS; in mmc_test_prepare_broken_mrq()
701 mrq->cmd->arg = test->card->rca << 16; in mmc_test_prepare_broken_mrq()
709 struct mmc_request *mrq) in mmc_test_check_result() argument
713 if (WARN_ON(!mrq || !mrq->cmd || !mrq->data)) in mmc_test_check_result()
718 if (mrq->sbc && mrq->sbc->error) in mmc_test_check_result()
719 ret = mrq->sbc->error; in mmc_test_check_result()
720 if (!ret && mrq->cmd->error) in mmc_test_check_result()
721 ret = mrq->cmd->error; in mmc_test_check_result()
722 if (!ret && mrq->data->error) in mmc_test_check_result()
723 ret = mrq->data->error; in mmc_test_check_result()
724 if (!ret && mrq->stop && mrq->stop->error) in mmc_test_check_result()
725 ret = mrq->stop->error; in mmc_test_check_result()
726 if (!ret && mrq->data->bytes_xfered != in mmc_test_check_result()
727 mrq->data->blocks * mrq->data->blksz) in mmc_test_check_result()
740 struct mmc_request *mrq) in mmc_test_check_broken_result() argument
744 if (WARN_ON(!mrq || !mrq->cmd || !mrq->data)) in mmc_test_check_broken_result()
749 if (!ret && mrq->cmd->error) in mmc_test_check_broken_result()
750 ret = mrq->cmd->error; in mmc_test_check_broken_result()
751 if (!ret && mrq->data->error == 0) in mmc_test_check_broken_result()
753 if (!ret && mrq->data->error != -ETIMEDOUT) in mmc_test_check_broken_result()
754 ret = mrq->data->error; in mmc_test_check_broken_result()
755 if (!ret && mrq->stop && mrq->stop->error) in mmc_test_check_broken_result()
756 ret = mrq->stop->error; in mmc_test_check_broken_result()
757 if (mrq->data->blocks > 1) { in mmc_test_check_broken_result()
758 if (!ret && mrq->data->bytes_xfered > mrq->data->blksz) in mmc_test_check_broken_result()
761 if (!ret && mrq->data->bytes_xfered > 0) in mmc_test_check_broken_result()
772 struct mmc_request mrq; member
787 rq->mrq.cmd = &rq->cmd; in mmc_test_req_reset()
788 rq->mrq.data = &rq->data; in mmc_test_req_reset()
789 rq->mrq.stop = &rq->stop; in mmc_test_req_reset()
802 static void mmc_test_wait_done(struct mmc_request *mrq) in mmc_test_wait_done() argument
804 complete(&mrq->completion); in mmc_test_wait_done()
808 struct mmc_request *mrq, in mmc_test_start_areq() argument
814 if (mrq) { in mmc_test_start_areq()
815 init_completion(&mrq->completion); in mmc_test_start_areq()
816 mrq->done = mmc_test_wait_done; in mmc_test_start_areq()
817 mmc_pre_req(host, mrq); in mmc_test_start_areq()
827 if (!err && mrq) { in mmc_test_start_areq()
828 err = mmc_start_request(host, mrq); in mmc_test_start_areq()
836 if (err && mrq) in mmc_test_start_areq()
837 mmc_post_req(host, mrq, err); in mmc_test_start_areq()
848 struct mmc_request *mrq, *prev_mrq; in mmc_test_nonblock_transfer() local
859 mrq = &rq1->mrq; in mmc_test_nonblock_transfer()
863 mmc_test_req_reset(container_of(mrq, struct mmc_test_req, mrq)); in mmc_test_nonblock_transfer()
864 mmc_test_prepare_mrq(test, mrq, sg, sg_len, dev_addr, blocks, in mmc_test_nonblock_transfer()
866 ret = mmc_test_start_areq(test, mrq, prev_mrq); in mmc_test_nonblock_transfer()
871 prev_mrq = &rq2->mrq; in mmc_test_nonblock_transfer()
873 swap(mrq, prev_mrq); in mmc_test_nonblock_transfer()
891 struct mmc_request mrq = {}; in mmc_test_simple_transfer() local
896 mrq.cmd = &cmd; in mmc_test_simple_transfer()
897 mrq.data = &data; in mmc_test_simple_transfer()
898 mrq.stop = &stop; in mmc_test_simple_transfer()
900 mmc_test_prepare_mrq(test, &mrq, sg, sg_len, dev_addr, in mmc_test_simple_transfer()
903 mmc_wait_for_req(test->card->host, &mrq); in mmc_test_simple_transfer()
907 return mmc_test_check_result(test, &mrq); in mmc_test_simple_transfer()
916 struct mmc_request mrq = {}; in mmc_test_broken_transfer() local
923 mrq.cmd = &cmd; in mmc_test_broken_transfer()
924 mrq.data = &data; in mmc_test_broken_transfer()
925 mrq.stop = &stop; in mmc_test_broken_transfer()
929 mmc_test_prepare_mrq(test, &mrq, &sg, 1, 0, blocks, blksz, write); in mmc_test_broken_transfer()
930 mmc_test_prepare_broken_mrq(test, &mrq, write); in mmc_test_broken_transfer()
932 mmc_wait_for_req(test->card->host, &mrq); in mmc_test_broken_transfer()
936 return mmc_test_check_broken_result(test, &mrq); in mmc_test_broken_transfer()
2358 struct mmc_request *mrq; in mmc_test_ongoing_transfer() local
2368 mrq = &rq->mrq; in mmc_test_ongoing_transfer()
2370 mrq->sbc = &rq->sbc; in mmc_test_ongoing_transfer()
2371 mrq->cap_cmd_during_tfr = true; in mmc_test_ongoing_transfer()
2373 mmc_test_prepare_mrq(test, mrq, t->sg, t->sg_len, dev_addr, t->blocks, in mmc_test_ongoing_transfer()
2376 if (use_sbc && t->blocks > 1 && !mrq->sbc) { in mmc_test_ongoing_transfer()
2385 ret = mmc_test_start_areq(test, mrq, NULL); in mmc_test_ongoing_transfer()
2389 mmc_wait_for_req(host, mrq); in mmc_test_ongoing_transfer()
2407 if (mmc_is_req_done(host, mrq)) in mmc_test_ongoing_transfer()
2421 ret = mmc_test_start_areq(test, NULL, mrq); in mmc_test_ongoing_transfer()
2423 mmc_wait_for_req_done(test->card->host, mrq); in mmc_test_ongoing_transfer()
2430 if (mrq->data->stop && (mrq->data->error || !mrq->sbc)) { in mmc_test_ongoing_transfer()
2432 mmc_wait_for_cmd(host, mrq->data->stop, 0); in mmc_test_ongoing_transfer()
2434 ret = mmc_wait_for_cmd(host, mrq->data->stop, 0); in mmc_test_ongoing_transfer()
2445 ret = mmc_test_check_result(test, mrq); in mmc_test_ongoing_transfer()