Lines Matching refs:mrq

93 				    struct mmc_request *mrq)  in mmc_should_fail_request()  argument
95 struct mmc_command *cmd = mrq->cmd; in mmc_should_fail_request()
96 struct mmc_data *data = mrq->data; in mmc_should_fail_request()
117 struct mmc_request *mrq) in mmc_should_fail_request() argument
131 void mmc_request_done(struct mmc_host *host, struct mmc_request *mrq) in mmc_request_done() argument
133 struct mmc_command *cmd = mrq->cmd; in mmc_request_done()
139 (err == -EILSEQ || (mrq->sbc && mrq->sbc->error == -EILSEQ) || in mmc_request_done()
140 (mrq->data && mrq->data->error == -EILSEQ) || in mmc_request_done()
141 (mrq->stop && mrq->stop->error == -EILSEQ))) in mmc_request_done()
154 if (mrq->done) in mmc_request_done()
155 mrq->done(mrq); in mmc_request_done()
157 mmc_should_fail_request(host, mrq); in mmc_request_done()
161 if (mrq->sbc) { in mmc_request_done()
163 mmc_hostname(host), mrq->sbc->opcode, in mmc_request_done()
164 mrq->sbc->error, in mmc_request_done()
165 mrq->sbc->resp[0], mrq->sbc->resp[1], in mmc_request_done()
166 mrq->sbc->resp[2], mrq->sbc->resp[3]); in mmc_request_done()
174 if (mrq->data) { in mmc_request_done()
177 mrq->data->bytes_xfered, mrq->data->error); in mmc_request_done()
180 if (mrq->stop) { in mmc_request_done()
182 mmc_hostname(host), mrq->stop->opcode, in mmc_request_done()
183 mrq->stop->error, in mmc_request_done()
184 mrq->stop->resp[0], mrq->stop->resp[1], in mmc_request_done()
185 mrq->stop->resp[2], mrq->stop->resp[3]); in mmc_request_done()
188 if (mrq->done) in mmc_request_done()
189 mrq->done(mrq); in mmc_request_done()
195 static void __mmc_start_request(struct mmc_host *host, struct mmc_request *mrq) in __mmc_start_request() argument
202 mrq->cmd->error = err; in __mmc_start_request()
203 mmc_request_done(host, mrq); in __mmc_start_request()
211 if (mmc_is_io_op(mrq->cmd->opcode) && host->ops->card_busy) { in __mmc_start_request()
218 mrq->cmd->error = -EBUSY; in __mmc_start_request()
219 mmc_request_done(host, mrq); in __mmc_start_request()
224 host->ops->request(host, mrq); in __mmc_start_request()
227 static int mmc_start_request(struct mmc_host *host, struct mmc_request *mrq) in mmc_start_request() argument
238 if (mrq->sbc) { in mmc_start_request()
240 mmc_hostname(host), mrq->sbc->opcode, in mmc_start_request()
241 mrq->sbc->arg, mrq->sbc->flags); in mmc_start_request()
245 mmc_hostname(host), mrq->cmd->opcode, in mmc_start_request()
246 mrq->cmd->arg, mrq->cmd->flags); in mmc_start_request()
248 if (mrq->data) { in mmc_start_request()
251 mmc_hostname(host), mrq->data->blksz, in mmc_start_request()
252 mrq->data->blocks, mrq->data->flags, in mmc_start_request()
253 mrq->data->timeout_ns / 1000000, in mmc_start_request()
254 mrq->data->timeout_clks); in mmc_start_request()
257 if (mrq->stop) { in mmc_start_request()
259 mmc_hostname(host), mrq->stop->opcode, in mmc_start_request()
260 mrq->stop->arg, mrq->stop->flags); in mmc_start_request()
265 mrq->cmd->error = 0; in mmc_start_request()
266 mrq->cmd->mrq = mrq; in mmc_start_request()
267 if (mrq->sbc) { in mmc_start_request()
268 mrq->sbc->error = 0; in mmc_start_request()
269 mrq->sbc->mrq = mrq; in mmc_start_request()
271 if (mrq->data) { in mmc_start_request()
272 BUG_ON(mrq->data->blksz > host->max_blk_size); in mmc_start_request()
273 BUG_ON(mrq->data->blocks > host->max_blk_count); in mmc_start_request()
274 BUG_ON(mrq->data->blocks * mrq->data->blksz > in mmc_start_request()
279 for_each_sg(mrq->data->sg, sg, mrq->data->sg_len, i) in mmc_start_request()
281 BUG_ON(sz != mrq->data->blocks * mrq->data->blksz); in mmc_start_request()
284 mrq->cmd->data = mrq->data; in mmc_start_request()
285 mrq->data->error = 0; in mmc_start_request()
286 mrq->data->mrq = mrq; in mmc_start_request()
287 if (mrq->stop) { in mmc_start_request()
288 mrq->data->stop = mrq->stop; in mmc_start_request()
289 mrq->stop->error = 0; in mmc_start_request()
290 mrq->stop->mrq = mrq; in mmc_start_request()
294 __mmc_start_request(host, mrq); in mmc_start_request()
375 static void mmc_wait_data_done(struct mmc_request *mrq) in mmc_wait_data_done() argument
377 struct mmc_context_info *context_info = &mrq->host->context_info; in mmc_wait_data_done()
383 static void mmc_wait_done(struct mmc_request *mrq) in mmc_wait_done() argument
385 complete(&mrq->completion); in mmc_wait_done()
396 static int __mmc_start_data_req(struct mmc_host *host, struct mmc_request *mrq) in __mmc_start_data_req() argument
400 mrq->done = mmc_wait_data_done; in __mmc_start_data_req()
401 mrq->host = host; in __mmc_start_data_req()
403 err = mmc_start_request(host, mrq); in __mmc_start_data_req()
405 mrq->cmd->error = err; in __mmc_start_data_req()
406 mmc_wait_data_done(mrq); in __mmc_start_data_req()
412 static int __mmc_start_req(struct mmc_host *host, struct mmc_request *mrq) in __mmc_start_req() argument
416 init_completion(&mrq->completion); in __mmc_start_req()
417 mrq->done = mmc_wait_done; in __mmc_start_req()
419 err = mmc_start_request(host, mrq); in __mmc_start_req()
421 mrq->cmd->error = err; in __mmc_start_req()
422 complete(&mrq->completion); in __mmc_start_req()
440 struct mmc_request *mrq, in mmc_wait_for_data_req_done() argument
458 cmd = mrq->cmd; in mmc_wait_for_data_req_done()
472 __mmc_start_request(host, mrq); in mmc_wait_for_data_req_done()
486 struct mmc_request *mrq) in mmc_wait_for_req_done() argument
491 wait_for_completion(&mrq->completion); in mmc_wait_for_req_done()
493 cmd = mrq->cmd; in mmc_wait_for_req_done()
522 __mmc_start_request(host, mrq); in mmc_wait_for_req_done()
539 static void mmc_pre_req(struct mmc_host *host, struct mmc_request *mrq, in mmc_pre_req() argument
543 host->ops->pre_req(host, mrq, is_first_req); in mmc_pre_req()
555 static void mmc_post_req(struct mmc_host *host, struct mmc_request *mrq, in mmc_post_req() argument
559 host->ops->post_req(host, mrq, err); in mmc_post_req()
587 mmc_pre_req(host, areq->mrq, !host->areq); in mmc_start_req()
590 err = mmc_wait_for_data_req_done(host, host->areq->mrq, areq); in mmc_start_req()
604 ((mmc_resp_type(host->areq->mrq->cmd) == MMC_RSP_R1) || in mmc_start_req()
605 (mmc_resp_type(host->areq->mrq->cmd) == MMC_RSP_R1B)) && in mmc_start_req()
606 (host->areq->mrq->cmd->resp[0] & R1_EXCEPTION_EVENT)) { in mmc_start_req()
610 mmc_post_req(host, areq->mrq, -EINVAL); in mmc_start_req()
616 mmc_pre_req(host, areq->mrq, !host->areq); in mmc_start_req()
621 start_err = __mmc_start_data_req(host, areq->mrq); in mmc_start_req()
624 mmc_post_req(host, host->areq->mrq, 0); in mmc_start_req()
628 mmc_post_req(host, areq->mrq, -EINVAL); in mmc_start_req()
650 void mmc_wait_for_req(struct mmc_host *host, struct mmc_request *mrq) in mmc_wait_for_req() argument
652 __mmc_start_req(host, mrq); in mmc_wait_for_req()
653 mmc_wait_for_req_done(host, mrq); in mmc_wait_for_req()
736 struct mmc_request mrq = {NULL}; in mmc_wait_for_cmd() local
743 mrq.cmd = cmd; in mmc_wait_for_cmd()
746 mmc_wait_for_req(host, &mrq); in mmc_wait_for_cmd()