Lines Matching refs:mrq

189 				 struct mmc_request *mrq, unsigned int blocks)  in mmc_test_prepare_sbc()  argument
193 if (!mrq->sbc || !mmc_host_cmd23(card->host) || in mmc_test_prepare_sbc()
194 !mmc_test_card_cmd23(card) || !mmc_op_multi(mrq->cmd->opcode) || in mmc_test_prepare_sbc()
196 mrq->sbc = NULL; in mmc_test_prepare_sbc()
200 mrq->sbc->opcode = MMC_SET_BLOCK_COUNT; in mmc_test_prepare_sbc()
201 mrq->sbc->arg = blocks; in mmc_test_prepare_sbc()
202 mrq->sbc->flags = MMC_RSP_R1 | MMC_CMD_AC; in mmc_test_prepare_sbc()
209 struct mmc_request *mrq, struct scatterlist *sg, unsigned sg_len, in mmc_test_prepare_mrq() argument
212 if (WARN_ON(!mrq || !mrq->cmd || !mrq->data || !mrq->stop)) in mmc_test_prepare_mrq()
216 mrq->cmd->opcode = write ? in mmc_test_prepare_mrq()
219 mrq->cmd->opcode = write ? in mmc_test_prepare_mrq()
223 mrq->cmd->arg = dev_addr; in mmc_test_prepare_mrq()
225 mrq->cmd->arg <<= 9; in mmc_test_prepare_mrq()
227 mrq->cmd->flags = MMC_RSP_R1 | MMC_CMD_ADTC; in mmc_test_prepare_mrq()
230 mrq->stop = NULL; in mmc_test_prepare_mrq()
232 mrq->stop->opcode = MMC_STOP_TRANSMISSION; in mmc_test_prepare_mrq()
233 mrq->stop->arg = 0; in mmc_test_prepare_mrq()
234 mrq->stop->flags = MMC_RSP_R1B | MMC_CMD_AC; in mmc_test_prepare_mrq()
237 mrq->data->blksz = blksz; in mmc_test_prepare_mrq()
238 mrq->data->blocks = blocks; in mmc_test_prepare_mrq()
239 mrq->data->flags = write ? MMC_DATA_WRITE : MMC_DATA_READ; in mmc_test_prepare_mrq()
240 mrq->data->sg = sg; in mmc_test_prepare_mrq()
241 mrq->data->sg_len = sg_len; in mmc_test_prepare_mrq()
243 mmc_test_prepare_sbc(test, mrq, blocks); in mmc_test_prepare_mrq()
245 mmc_set_data_timeout(mrq->data, test->card); in mmc_test_prepare_mrq()
291 struct mmc_request mrq = {}; in mmc_test_buffer_transfer() local
298 mrq.cmd = &cmd; in mmc_test_buffer_transfer()
299 mrq.data = &data; in mmc_test_buffer_transfer()
300 mrq.stop = &stop; in mmc_test_buffer_transfer()
304 mmc_test_prepare_mrq(test, &mrq, &sg, 1, addr, 1, blksz, write); in mmc_test_buffer_transfer()
306 mmc_wait_for_req(test->card->host, &mrq); in mmc_test_buffer_transfer()
686 struct mmc_request *mrq, int write) in mmc_test_prepare_broken_mrq() argument
688 if (WARN_ON(!mrq || !mrq->cmd || !mrq->data)) in mmc_test_prepare_broken_mrq()
691 if (mrq->data->blocks > 1) { in mmc_test_prepare_broken_mrq()
692 mrq->cmd->opcode = write ? in mmc_test_prepare_broken_mrq()
694 mrq->stop = NULL; in mmc_test_prepare_broken_mrq()
696 mrq->cmd->opcode = MMC_SEND_STATUS; in mmc_test_prepare_broken_mrq()
697 mrq->cmd->arg = test->card->rca << 16; in mmc_test_prepare_broken_mrq()
705 struct mmc_request *mrq) in mmc_test_check_result() argument
709 if (WARN_ON(!mrq || !mrq->cmd || !mrq->data)) in mmc_test_check_result()
714 if (mrq->sbc && mrq->sbc->error) in mmc_test_check_result()
715 ret = mrq->sbc->error; in mmc_test_check_result()
716 if (!ret && mrq->cmd->error) in mmc_test_check_result()
717 ret = mrq->cmd->error; in mmc_test_check_result()
718 if (!ret && mrq->data->error) in mmc_test_check_result()
719 ret = mrq->data->error; in mmc_test_check_result()
720 if (!ret && mrq->stop && mrq->stop->error) in mmc_test_check_result()
721 ret = mrq->stop->error; in mmc_test_check_result()
722 if (!ret && mrq->data->bytes_xfered != in mmc_test_check_result()
723 mrq->data->blocks * mrq->data->blksz) in mmc_test_check_result()
736 struct mmc_request *mrq) in mmc_test_check_broken_result() argument
740 if (WARN_ON(!mrq || !mrq->cmd || !mrq->data)) in mmc_test_check_broken_result()
745 if (!ret && mrq->cmd->error) in mmc_test_check_broken_result()
746 ret = mrq->cmd->error; in mmc_test_check_broken_result()
747 if (!ret && mrq->data->error == 0) in mmc_test_check_broken_result()
749 if (!ret && mrq->data->error != -ETIMEDOUT) in mmc_test_check_broken_result()
750 ret = mrq->data->error; in mmc_test_check_broken_result()
751 if (!ret && mrq->stop && mrq->stop->error) in mmc_test_check_broken_result()
752 ret = mrq->stop->error; in mmc_test_check_broken_result()
753 if (mrq->data->blocks > 1) { in mmc_test_check_broken_result()
754 if (!ret && mrq->data->bytes_xfered > mrq->data->blksz) in mmc_test_check_broken_result()
757 if (!ret && mrq->data->bytes_xfered > 0) in mmc_test_check_broken_result()
768 struct mmc_request mrq; member
783 rq->mrq.cmd = &rq->cmd; in mmc_test_req_reset()
784 rq->mrq.data = &rq->data; in mmc_test_req_reset()
785 rq->mrq.stop = &rq->stop; in mmc_test_req_reset()
798 static void mmc_test_wait_done(struct mmc_request *mrq) in mmc_test_wait_done() argument
800 complete(&mrq->completion); in mmc_test_wait_done()
804 struct mmc_request *mrq, in mmc_test_start_areq() argument
810 if (mrq) { in mmc_test_start_areq()
811 init_completion(&mrq->completion); in mmc_test_start_areq()
812 mrq->done = mmc_test_wait_done; in mmc_test_start_areq()
813 mmc_pre_req(host, mrq); in mmc_test_start_areq()
823 if (!err && mrq) { in mmc_test_start_areq()
824 err = mmc_start_request(host, mrq); in mmc_test_start_areq()
832 if (err && mrq) in mmc_test_start_areq()
833 mmc_post_req(host, mrq, err); in mmc_test_start_areq()
844 struct mmc_request *mrq, *prev_mrq; in mmc_test_nonblock_transfer() local
855 mrq = &rq1->mrq; in mmc_test_nonblock_transfer()
859 mmc_test_req_reset(container_of(mrq, struct mmc_test_req, mrq)); in mmc_test_nonblock_transfer()
860 mmc_test_prepare_mrq(test, mrq, sg, sg_len, dev_addr, blocks, in mmc_test_nonblock_transfer()
862 ret = mmc_test_start_areq(test, mrq, prev_mrq); in mmc_test_nonblock_transfer()
867 prev_mrq = &rq2->mrq; in mmc_test_nonblock_transfer()
869 swap(mrq, prev_mrq); in mmc_test_nonblock_transfer()
887 struct mmc_request mrq = {}; in mmc_test_simple_transfer() local
892 mrq.cmd = &cmd; in mmc_test_simple_transfer()
893 mrq.data = &data; in mmc_test_simple_transfer()
894 mrq.stop = &stop; in mmc_test_simple_transfer()
896 mmc_test_prepare_mrq(test, &mrq, sg, sg_len, dev_addr, in mmc_test_simple_transfer()
899 mmc_wait_for_req(test->card->host, &mrq); in mmc_test_simple_transfer()
903 return mmc_test_check_result(test, &mrq); in mmc_test_simple_transfer()
912 struct mmc_request mrq = {}; in mmc_test_broken_transfer() local
919 mrq.cmd = &cmd; in mmc_test_broken_transfer()
920 mrq.data = &data; in mmc_test_broken_transfer()
921 mrq.stop = &stop; in mmc_test_broken_transfer()
925 mmc_test_prepare_mrq(test, &mrq, &sg, 1, 0, blocks, blksz, write); in mmc_test_broken_transfer()
926 mmc_test_prepare_broken_mrq(test, &mrq, write); in mmc_test_broken_transfer()
928 mmc_wait_for_req(test->card->host, &mrq); in mmc_test_broken_transfer()
932 return mmc_test_check_broken_result(test, &mrq); in mmc_test_broken_transfer()
2354 struct mmc_request *mrq; in mmc_test_ongoing_transfer() local
2364 mrq = &rq->mrq; in mmc_test_ongoing_transfer()
2366 mrq->sbc = &rq->sbc; in mmc_test_ongoing_transfer()
2367 mrq->cap_cmd_during_tfr = true; in mmc_test_ongoing_transfer()
2369 mmc_test_prepare_mrq(test, mrq, t->sg, t->sg_len, dev_addr, t->blocks, in mmc_test_ongoing_transfer()
2372 if (use_sbc && t->blocks > 1 && !mrq->sbc) { in mmc_test_ongoing_transfer()
2381 ret = mmc_test_start_areq(test, mrq, NULL); in mmc_test_ongoing_transfer()
2385 mmc_wait_for_req(host, mrq); in mmc_test_ongoing_transfer()
2403 if (mmc_is_req_done(host, mrq)) in mmc_test_ongoing_transfer()
2417 ret = mmc_test_start_areq(test, NULL, mrq); in mmc_test_ongoing_transfer()
2419 mmc_wait_for_req_done(test->card->host, mrq); in mmc_test_ongoing_transfer()
2426 if (mrq->data->stop && (mrq->data->error || !mrq->sbc)) { in mmc_test_ongoing_transfer()
2428 mmc_wait_for_cmd(host, mrq->data->stop, 0); in mmc_test_ongoing_transfer()
2430 ret = mmc_wait_for_cmd(host, mrq->data->stop, 0); in mmc_test_ongoing_transfer()
2441 ret = mmc_test_check_result(test, mrq); in mmc_test_ongoing_transfer()