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()
146 if (mrq->done) in mmc_request_done()
147 mrq->done(mrq); in mmc_request_done()
149 mmc_should_fail_request(host, mrq); in mmc_request_done()
153 if (mrq->sbc) { in mmc_request_done()
155 mmc_hostname(host), mrq->sbc->opcode, in mmc_request_done()
156 mrq->sbc->error, in mmc_request_done()
157 mrq->sbc->resp[0], mrq->sbc->resp[1], in mmc_request_done()
158 mrq->sbc->resp[2], mrq->sbc->resp[3]); in mmc_request_done()
166 if (mrq->data) { in mmc_request_done()
169 mrq->data->bytes_xfered, mrq->data->error); in mmc_request_done()
172 if (mrq->stop) { in mmc_request_done()
174 mmc_hostname(host), mrq->stop->opcode, in mmc_request_done()
175 mrq->stop->error, in mmc_request_done()
176 mrq->stop->resp[0], mrq->stop->resp[1], in mmc_request_done()
177 mrq->stop->resp[2], mrq->stop->resp[3]); in mmc_request_done()
180 if (mrq->done) in mmc_request_done()
181 mrq->done(mrq); in mmc_request_done()
189 static int mmc_start_request(struct mmc_host *host, struct mmc_request *mrq) in mmc_start_request() argument
198 if (mrq->sbc) { in mmc_start_request()
200 mmc_hostname(host), mrq->sbc->opcode, in mmc_start_request()
201 mrq->sbc->arg, mrq->sbc->flags); in mmc_start_request()
205 mmc_hostname(host), mrq->cmd->opcode, in mmc_start_request()
206 mrq->cmd->arg, mrq->cmd->flags); in mmc_start_request()
208 if (mrq->data) { in mmc_start_request()
211 mmc_hostname(host), mrq->data->blksz, in mmc_start_request()
212 mrq->data->blocks, mrq->data->flags, in mmc_start_request()
213 mrq->data->timeout_ns / 1000000, in mmc_start_request()
214 mrq->data->timeout_clks); in mmc_start_request()
217 if (mrq->stop) { in mmc_start_request()
219 mmc_hostname(host), mrq->stop->opcode, in mmc_start_request()
220 mrq->stop->arg, mrq->stop->flags); in mmc_start_request()
225 mrq->cmd->error = 0; in mmc_start_request()
226 mrq->cmd->mrq = mrq; in mmc_start_request()
227 if (mrq->sbc) { in mmc_start_request()
228 mrq->sbc->error = 0; in mmc_start_request()
229 mrq->sbc->mrq = mrq; in mmc_start_request()
231 if (mrq->data) { in mmc_start_request()
232 BUG_ON(mrq->data->blksz > host->max_blk_size); in mmc_start_request()
233 BUG_ON(mrq->data->blocks > host->max_blk_count); in mmc_start_request()
234 BUG_ON(mrq->data->blocks * mrq->data->blksz > in mmc_start_request()
239 for_each_sg(mrq->data->sg, sg, mrq->data->sg_len, i) in mmc_start_request()
241 BUG_ON(sz != mrq->data->blocks * mrq->data->blksz); in mmc_start_request()
244 mrq->cmd->data = mrq->data; in mmc_start_request()
245 mrq->data->error = 0; in mmc_start_request()
246 mrq->data->mrq = mrq; in mmc_start_request()
247 if (mrq->stop) { in mmc_start_request()
248 mrq->data->stop = mrq->stop; in mmc_start_request()
249 mrq->stop->error = 0; in mmc_start_request()
250 mrq->stop->mrq = mrq; in mmc_start_request()
255 host->ops->request(host, mrq); in mmc_start_request()
331 static void mmc_wait_data_done(struct mmc_request *mrq) in mmc_wait_data_done() argument
333 struct mmc_context_info *context_info = &mrq->host->context_info; in mmc_wait_data_done()
339 static void mmc_wait_done(struct mmc_request *mrq) in mmc_wait_done() argument
341 complete(&mrq->completion); in mmc_wait_done()
352 static int __mmc_start_data_req(struct mmc_host *host, struct mmc_request *mrq) in __mmc_start_data_req() argument
356 mrq->done = mmc_wait_data_done; in __mmc_start_data_req()
357 mrq->host = host; in __mmc_start_data_req()
359 err = mmc_start_request(host, mrq); in __mmc_start_data_req()
361 mrq->cmd->error = err; in __mmc_start_data_req()
362 mmc_wait_data_done(mrq); in __mmc_start_data_req()
368 static int __mmc_start_req(struct mmc_host *host, struct mmc_request *mrq) in __mmc_start_req() argument
372 init_completion(&mrq->completion); in __mmc_start_req()
373 mrq->done = mmc_wait_done; in __mmc_start_req()
375 err = mmc_start_request(host, mrq); in __mmc_start_req()
377 mrq->cmd->error = err; in __mmc_start_req()
378 complete(&mrq->completion); in __mmc_start_req()
396 struct mmc_request *mrq, in mmc_wait_for_data_req_done() argument
414 cmd = mrq->cmd; in mmc_wait_for_data_req_done()
427 host->ops->request(host, mrq); in mmc_wait_for_data_req_done()
442 struct mmc_request *mrq) in mmc_wait_for_req_done() argument
447 wait_for_completion(&mrq->completion); in mmc_wait_for_req_done()
449 cmd = mrq->cmd; in mmc_wait_for_req_done()
476 host->ops->request(host, mrq); in mmc_wait_for_req_done()
491 static void mmc_pre_req(struct mmc_host *host, struct mmc_request *mrq, in mmc_pre_req() argument
496 host->ops->pre_req(host, mrq, is_first_req); in mmc_pre_req()
510 static void mmc_post_req(struct mmc_host *host, struct mmc_request *mrq, in mmc_post_req() argument
515 host->ops->post_req(host, mrq, err); in mmc_post_req()
545 mmc_pre_req(host, areq->mrq, !host->areq); in mmc_start_req()
548 err = mmc_wait_for_data_req_done(host, host->areq->mrq, areq); in mmc_start_req()
562 ((mmc_resp_type(host->areq->mrq->cmd) == MMC_RSP_R1) || in mmc_start_req()
563 (mmc_resp_type(host->areq->mrq->cmd) == MMC_RSP_R1B)) && in mmc_start_req()
564 (host->areq->mrq->cmd->resp[0] & R1_EXCEPTION_EVENT)) { in mmc_start_req()
568 mmc_post_req(host, areq->mrq, -EINVAL); in mmc_start_req()
574 mmc_pre_req(host, areq->mrq, !host->areq); in mmc_start_req()
579 start_err = __mmc_start_data_req(host, areq->mrq); in mmc_start_req()
582 mmc_post_req(host, host->areq->mrq, 0); in mmc_start_req()
586 mmc_post_req(host, areq->mrq, -EINVAL); in mmc_start_req()
608 void mmc_wait_for_req(struct mmc_host *host, struct mmc_request *mrq) in mmc_wait_for_req() argument
610 __mmc_start_req(host, mrq); in mmc_wait_for_req()
611 mmc_wait_for_req_done(host, mrq); in mmc_wait_for_req()
694 struct mmc_request mrq = {NULL}; in mmc_wait_for_cmd() local
701 mrq.cmd = cmd; in mmc_wait_for_cmd()
704 mmc_wait_for_req(host, &mrq); in mmc_wait_for_cmd()