xref: /openbmc/linux/drivers/mmc/core/mmc_ops.c (revision 151f4e2b)
1 /*
2  *  linux/drivers/mmc/core/mmc_ops.h
3  *
4  *  Copyright 2006-2007 Pierre Ossman
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or (at
9  * your option) any later version.
10  */
11 
12 #include <linux/slab.h>
13 #include <linux/export.h>
14 #include <linux/types.h>
15 #include <linux/scatterlist.h>
16 
17 #include <linux/mmc/host.h>
18 #include <linux/mmc/card.h>
19 #include <linux/mmc/mmc.h>
20 
21 #include "core.h"
22 #include "card.h"
23 #include "host.h"
24 #include "mmc_ops.h"
25 
26 #define MMC_OPS_TIMEOUT_MS	(10 * 60 * 1000) /* 10 minute timeout */
27 
28 static const u8 tuning_blk_pattern_4bit[] = {
29 	0xff, 0x0f, 0xff, 0x00, 0xff, 0xcc, 0xc3, 0xcc,
30 	0xc3, 0x3c, 0xcc, 0xff, 0xfe, 0xff, 0xfe, 0xef,
31 	0xff, 0xdf, 0xff, 0xdd, 0xff, 0xfb, 0xff, 0xfb,
32 	0xbf, 0xff, 0x7f, 0xff, 0x77, 0xf7, 0xbd, 0xef,
33 	0xff, 0xf0, 0xff, 0xf0, 0x0f, 0xfc, 0xcc, 0x3c,
34 	0xcc, 0x33, 0xcc, 0xcf, 0xff, 0xef, 0xff, 0xee,
35 	0xff, 0xfd, 0xff, 0xfd, 0xdf, 0xff, 0xbf, 0xff,
36 	0xbb, 0xff, 0xf7, 0xff, 0xf7, 0x7f, 0x7b, 0xde,
37 };
38 
39 static const u8 tuning_blk_pattern_8bit[] = {
40 	0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00,
41 	0xff, 0xff, 0xcc, 0xcc, 0xcc, 0x33, 0xcc, 0xcc,
42 	0xcc, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xff, 0xff,
43 	0xff, 0xee, 0xff, 0xff, 0xff, 0xee, 0xee, 0xff,
44 	0xff, 0xff, 0xdd, 0xff, 0xff, 0xff, 0xdd, 0xdd,
45 	0xff, 0xff, 0xff, 0xbb, 0xff, 0xff, 0xff, 0xbb,
46 	0xbb, 0xff, 0xff, 0xff, 0x77, 0xff, 0xff, 0xff,
47 	0x77, 0x77, 0xff, 0x77, 0xbb, 0xdd, 0xee, 0xff,
48 	0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00,
49 	0x00, 0xff, 0xff, 0xcc, 0xcc, 0xcc, 0x33, 0xcc,
50 	0xcc, 0xcc, 0x33, 0x33, 0xcc, 0xcc, 0xcc, 0xff,
51 	0xff, 0xff, 0xee, 0xff, 0xff, 0xff, 0xee, 0xee,
52 	0xff, 0xff, 0xff, 0xdd, 0xff, 0xff, 0xff, 0xdd,
53 	0xdd, 0xff, 0xff, 0xff, 0xbb, 0xff, 0xff, 0xff,
54 	0xbb, 0xbb, 0xff, 0xff, 0xff, 0x77, 0xff, 0xff,
55 	0xff, 0x77, 0x77, 0xff, 0x77, 0xbb, 0xdd, 0xee,
56 };
57 
58 int __mmc_send_status(struct mmc_card *card, u32 *status, unsigned int retries)
59 {
60 	int err;
61 	struct mmc_command cmd = {};
62 
63 	cmd.opcode = MMC_SEND_STATUS;
64 	if (!mmc_host_is_spi(card->host))
65 		cmd.arg = card->rca << 16;
66 	cmd.flags = MMC_RSP_SPI_R2 | MMC_RSP_R1 | MMC_CMD_AC;
67 
68 	err = mmc_wait_for_cmd(card->host, &cmd, retries);
69 	if (err)
70 		return err;
71 
72 	/* NOTE: callers are required to understand the difference
73 	 * between "native" and SPI format status words!
74 	 */
75 	if (status)
76 		*status = cmd.resp[0];
77 
78 	return 0;
79 }
80 EXPORT_SYMBOL_GPL(__mmc_send_status);
81 
82 int mmc_send_status(struct mmc_card *card, u32 *status)
83 {
84 	return __mmc_send_status(card, status, MMC_CMD_RETRIES);
85 }
86 EXPORT_SYMBOL_GPL(mmc_send_status);
87 
88 static int _mmc_select_card(struct mmc_host *host, struct mmc_card *card)
89 {
90 	struct mmc_command cmd = {};
91 
92 	cmd.opcode = MMC_SELECT_CARD;
93 
94 	if (card) {
95 		cmd.arg = card->rca << 16;
96 		cmd.flags = MMC_RSP_R1 | MMC_CMD_AC;
97 	} else {
98 		cmd.arg = 0;
99 		cmd.flags = MMC_RSP_NONE | MMC_CMD_AC;
100 	}
101 
102 	return mmc_wait_for_cmd(host, &cmd, MMC_CMD_RETRIES);
103 }
104 
105 int mmc_select_card(struct mmc_card *card)
106 {
107 
108 	return _mmc_select_card(card->host, card);
109 }
110 
111 int mmc_deselect_cards(struct mmc_host *host)
112 {
113 	return _mmc_select_card(host, NULL);
114 }
115 
116 /*
117  * Write the value specified in the device tree or board code into the optional
118  * 16 bit Driver Stage Register. This can be used to tune raise/fall times and
119  * drive strength of the DAT and CMD outputs. The actual meaning of a given
120  * value is hardware dependant.
121  * The presence of the DSR register can be determined from the CSD register,
122  * bit 76.
123  */
124 int mmc_set_dsr(struct mmc_host *host)
125 {
126 	struct mmc_command cmd = {};
127 
128 	cmd.opcode = MMC_SET_DSR;
129 
130 	cmd.arg = (host->dsr << 16) | 0xffff;
131 	cmd.flags = MMC_RSP_NONE | MMC_CMD_AC;
132 
133 	return mmc_wait_for_cmd(host, &cmd, MMC_CMD_RETRIES);
134 }
135 
136 int mmc_go_idle(struct mmc_host *host)
137 {
138 	int err;
139 	struct mmc_command cmd = {};
140 
141 	/*
142 	 * Non-SPI hosts need to prevent chipselect going active during
143 	 * GO_IDLE; that would put chips into SPI mode.  Remind them of
144 	 * that in case of hardware that won't pull up DAT3/nCS otherwise.
145 	 *
146 	 * SPI hosts ignore ios.chip_select; it's managed according to
147 	 * rules that must accommodate non-MMC slaves which this layer
148 	 * won't even know about.
149 	 */
150 	if (!mmc_host_is_spi(host)) {
151 		mmc_set_chip_select(host, MMC_CS_HIGH);
152 		mmc_delay(1);
153 	}
154 
155 	cmd.opcode = MMC_GO_IDLE_STATE;
156 	cmd.arg = 0;
157 	cmd.flags = MMC_RSP_SPI_R1 | MMC_RSP_NONE | MMC_CMD_BC;
158 
159 	err = mmc_wait_for_cmd(host, &cmd, 0);
160 
161 	mmc_delay(1);
162 
163 	if (!mmc_host_is_spi(host)) {
164 		mmc_set_chip_select(host, MMC_CS_DONTCARE);
165 		mmc_delay(1);
166 	}
167 
168 	host->use_spi_crc = 0;
169 
170 	return err;
171 }
172 
173 int mmc_send_op_cond(struct mmc_host *host, u32 ocr, u32 *rocr)
174 {
175 	struct mmc_command cmd = {};
176 	int i, err = 0;
177 
178 	cmd.opcode = MMC_SEND_OP_COND;
179 	cmd.arg = mmc_host_is_spi(host) ? 0 : ocr;
180 	cmd.flags = MMC_RSP_SPI_R1 | MMC_RSP_R3 | MMC_CMD_BCR;
181 
182 	for (i = 100; i; i--) {
183 		err = mmc_wait_for_cmd(host, &cmd, 0);
184 		if (err)
185 			break;
186 
187 		/* wait until reset completes */
188 		if (mmc_host_is_spi(host)) {
189 			if (!(cmd.resp[0] & R1_SPI_IDLE))
190 				break;
191 		} else {
192 			if (cmd.resp[0] & MMC_CARD_BUSY)
193 				break;
194 		}
195 
196 		err = -ETIMEDOUT;
197 
198 		mmc_delay(10);
199 
200 		/*
201 		 * According to eMMC specification v5.1 section 6.4.3, we
202 		 * should issue CMD1 repeatedly in the idle state until
203 		 * the eMMC is ready. Otherwise some eMMC devices seem to enter
204 		 * the inactive mode after mmc_init_card() issued CMD0 when
205 		 * the eMMC device is busy.
206 		 */
207 		if (!ocr && !mmc_host_is_spi(host))
208 			cmd.arg = cmd.resp[0] | BIT(30);
209 	}
210 
211 	if (rocr && !mmc_host_is_spi(host))
212 		*rocr = cmd.resp[0];
213 
214 	return err;
215 }
216 
217 int mmc_set_relative_addr(struct mmc_card *card)
218 {
219 	struct mmc_command cmd = {};
220 
221 	cmd.opcode = MMC_SET_RELATIVE_ADDR;
222 	cmd.arg = card->rca << 16;
223 	cmd.flags = MMC_RSP_R1 | MMC_CMD_AC;
224 
225 	return mmc_wait_for_cmd(card->host, &cmd, MMC_CMD_RETRIES);
226 }
227 
228 static int
229 mmc_send_cxd_native(struct mmc_host *host, u32 arg, u32 *cxd, int opcode)
230 {
231 	int err;
232 	struct mmc_command cmd = {};
233 
234 	cmd.opcode = opcode;
235 	cmd.arg = arg;
236 	cmd.flags = MMC_RSP_R2 | MMC_CMD_AC;
237 
238 	err = mmc_wait_for_cmd(host, &cmd, MMC_CMD_RETRIES);
239 	if (err)
240 		return err;
241 
242 	memcpy(cxd, cmd.resp, sizeof(u32) * 4);
243 
244 	return 0;
245 }
246 
247 /*
248  * NOTE: void *buf, caller for the buf is required to use DMA-capable
249  * buffer or on-stack buffer (with some overhead in callee).
250  */
251 static int
252 mmc_send_cxd_data(struct mmc_card *card, struct mmc_host *host,
253 		u32 opcode, void *buf, unsigned len)
254 {
255 	struct mmc_request mrq = {};
256 	struct mmc_command cmd = {};
257 	struct mmc_data data = {};
258 	struct scatterlist sg;
259 
260 	mrq.cmd = &cmd;
261 	mrq.data = &data;
262 
263 	cmd.opcode = opcode;
264 	cmd.arg = 0;
265 
266 	/* NOTE HACK:  the MMC_RSP_SPI_R1 is always correct here, but we
267 	 * rely on callers to never use this with "native" calls for reading
268 	 * CSD or CID.  Native versions of those commands use the R2 type,
269 	 * not R1 plus a data block.
270 	 */
271 	cmd.flags = MMC_RSP_SPI_R1 | MMC_RSP_R1 | MMC_CMD_ADTC;
272 
273 	data.blksz = len;
274 	data.blocks = 1;
275 	data.flags = MMC_DATA_READ;
276 	data.sg = &sg;
277 	data.sg_len = 1;
278 
279 	sg_init_one(&sg, buf, len);
280 
281 	if (opcode == MMC_SEND_CSD || opcode == MMC_SEND_CID) {
282 		/*
283 		 * The spec states that CSR and CID accesses have a timeout
284 		 * of 64 clock cycles.
285 		 */
286 		data.timeout_ns = 0;
287 		data.timeout_clks = 64;
288 	} else
289 		mmc_set_data_timeout(&data, card);
290 
291 	mmc_wait_for_req(host, &mrq);
292 
293 	if (cmd.error)
294 		return cmd.error;
295 	if (data.error)
296 		return data.error;
297 
298 	return 0;
299 }
300 
301 static int mmc_spi_send_csd(struct mmc_card *card, u32 *csd)
302 {
303 	int ret, i;
304 	__be32 *csd_tmp;
305 
306 	csd_tmp = kzalloc(16, GFP_KERNEL);
307 	if (!csd_tmp)
308 		return -ENOMEM;
309 
310 	ret = mmc_send_cxd_data(card, card->host, MMC_SEND_CSD, csd_tmp, 16);
311 	if (ret)
312 		goto err;
313 
314 	for (i = 0; i < 4; i++)
315 		csd[i] = be32_to_cpu(csd_tmp[i]);
316 
317 err:
318 	kfree(csd_tmp);
319 	return ret;
320 }
321 
322 int mmc_send_csd(struct mmc_card *card, u32 *csd)
323 {
324 	if (mmc_host_is_spi(card->host))
325 		return mmc_spi_send_csd(card, csd);
326 
327 	return mmc_send_cxd_native(card->host, card->rca << 16,	csd,
328 				MMC_SEND_CSD);
329 }
330 
331 static int mmc_spi_send_cid(struct mmc_host *host, u32 *cid)
332 {
333 	int ret, i;
334 	__be32 *cid_tmp;
335 
336 	cid_tmp = kzalloc(16, GFP_KERNEL);
337 	if (!cid_tmp)
338 		return -ENOMEM;
339 
340 	ret = mmc_send_cxd_data(NULL, host, MMC_SEND_CID, cid_tmp, 16);
341 	if (ret)
342 		goto err;
343 
344 	for (i = 0; i < 4; i++)
345 		cid[i] = be32_to_cpu(cid_tmp[i]);
346 
347 err:
348 	kfree(cid_tmp);
349 	return ret;
350 }
351 
352 int mmc_send_cid(struct mmc_host *host, u32 *cid)
353 {
354 	if (mmc_host_is_spi(host))
355 		return mmc_spi_send_cid(host, cid);
356 
357 	return mmc_send_cxd_native(host, 0, cid, MMC_ALL_SEND_CID);
358 }
359 
360 int mmc_get_ext_csd(struct mmc_card *card, u8 **new_ext_csd)
361 {
362 	int err;
363 	u8 *ext_csd;
364 
365 	if (!card || !new_ext_csd)
366 		return -EINVAL;
367 
368 	if (!mmc_can_ext_csd(card))
369 		return -EOPNOTSUPP;
370 
371 	/*
372 	 * As the ext_csd is so large and mostly unused, we don't store the
373 	 * raw block in mmc_card.
374 	 */
375 	ext_csd = kzalloc(512, GFP_KERNEL);
376 	if (!ext_csd)
377 		return -ENOMEM;
378 
379 	err = mmc_send_cxd_data(card, card->host, MMC_SEND_EXT_CSD, ext_csd,
380 				512);
381 	if (err)
382 		kfree(ext_csd);
383 	else
384 		*new_ext_csd = ext_csd;
385 
386 	return err;
387 }
388 EXPORT_SYMBOL_GPL(mmc_get_ext_csd);
389 
390 int mmc_spi_read_ocr(struct mmc_host *host, int highcap, u32 *ocrp)
391 {
392 	struct mmc_command cmd = {};
393 	int err;
394 
395 	cmd.opcode = MMC_SPI_READ_OCR;
396 	cmd.arg = highcap ? (1 << 30) : 0;
397 	cmd.flags = MMC_RSP_SPI_R3;
398 
399 	err = mmc_wait_for_cmd(host, &cmd, 0);
400 
401 	*ocrp = cmd.resp[1];
402 	return err;
403 }
404 
405 int mmc_spi_set_crc(struct mmc_host *host, int use_crc)
406 {
407 	struct mmc_command cmd = {};
408 	int err;
409 
410 	cmd.opcode = MMC_SPI_CRC_ON_OFF;
411 	cmd.flags = MMC_RSP_SPI_R1;
412 	cmd.arg = use_crc;
413 
414 	err = mmc_wait_for_cmd(host, &cmd, 0);
415 	if (!err)
416 		host->use_spi_crc = use_crc;
417 	return err;
418 }
419 
420 static int mmc_switch_status_error(struct mmc_host *host, u32 status)
421 {
422 	if (mmc_host_is_spi(host)) {
423 		if (status & R1_SPI_ILLEGAL_COMMAND)
424 			return -EBADMSG;
425 	} else {
426 		if (R1_STATUS(status))
427 			pr_warn("%s: unexpected status %#x after switch\n",
428 				mmc_hostname(host), status);
429 		if (status & R1_SWITCH_ERROR)
430 			return -EBADMSG;
431 	}
432 	return 0;
433 }
434 
435 /* Caller must hold re-tuning */
436 int __mmc_switch_status(struct mmc_card *card, bool crc_err_fatal)
437 {
438 	u32 status;
439 	int err;
440 
441 	err = mmc_send_status(card, &status);
442 	if (!crc_err_fatal && err == -EILSEQ)
443 		return 0;
444 	if (err)
445 		return err;
446 
447 	return mmc_switch_status_error(card->host, status);
448 }
449 
450 int mmc_switch_status(struct mmc_card *card)
451 {
452 	return __mmc_switch_status(card, true);
453 }
454 
455 static int mmc_poll_for_busy(struct mmc_card *card, unsigned int timeout_ms,
456 			bool send_status, bool retry_crc_err)
457 {
458 	struct mmc_host *host = card->host;
459 	int err;
460 	unsigned long timeout;
461 	u32 status = 0;
462 	bool expired = false;
463 	bool busy = false;
464 
465 	/* We have an unspecified cmd timeout, use the fallback value. */
466 	if (!timeout_ms)
467 		timeout_ms = MMC_OPS_TIMEOUT_MS;
468 
469 	/*
470 	 * In cases when not allowed to poll by using CMD13 or because we aren't
471 	 * capable of polling by using ->card_busy(), then rely on waiting the
472 	 * stated timeout to be sufficient.
473 	 */
474 	if (!send_status && !host->ops->card_busy) {
475 		mmc_delay(timeout_ms);
476 		return 0;
477 	}
478 
479 	timeout = jiffies + msecs_to_jiffies(timeout_ms) + 1;
480 	do {
481 		/*
482 		 * Due to the possibility of being preempted while polling,
483 		 * check the expiration time first.
484 		 */
485 		expired = time_after(jiffies, timeout);
486 
487 		if (host->ops->card_busy) {
488 			busy = host->ops->card_busy(host);
489 		} else {
490 			err = mmc_send_status(card, &status);
491 			if (retry_crc_err && err == -EILSEQ) {
492 				busy = true;
493 			} else if (err) {
494 				return err;
495 			} else {
496 				err = mmc_switch_status_error(host, status);
497 				if (err)
498 					return err;
499 				busy = R1_CURRENT_STATE(status) == R1_STATE_PRG;
500 			}
501 		}
502 
503 		/* Timeout if the device still remains busy. */
504 		if (expired && busy) {
505 			pr_err("%s: Card stuck being busy! %s\n",
506 				mmc_hostname(host), __func__);
507 			return -ETIMEDOUT;
508 		}
509 	} while (busy);
510 
511 	return 0;
512 }
513 
514 /**
515  *	__mmc_switch - modify EXT_CSD register
516  *	@card: the MMC card associated with the data transfer
517  *	@set: cmd set values
518  *	@index: EXT_CSD register index
519  *	@value: value to program into EXT_CSD register
520  *	@timeout_ms: timeout (ms) for operation performed by register write,
521  *                   timeout of zero implies maximum possible timeout
522  *	@timing: new timing to change to
523  *	@use_busy_signal: use the busy signal as response type
524  *	@send_status: send status cmd to poll for busy
525  *	@retry_crc_err: retry when CRC errors when polling with CMD13 for busy
526  *
527  *	Modifies the EXT_CSD register for selected card.
528  */
529 int __mmc_switch(struct mmc_card *card, u8 set, u8 index, u8 value,
530 		unsigned int timeout_ms, unsigned char timing,
531 		bool use_busy_signal, bool send_status,	bool retry_crc_err)
532 {
533 	struct mmc_host *host = card->host;
534 	int err;
535 	struct mmc_command cmd = {};
536 	bool use_r1b_resp = use_busy_signal;
537 	unsigned char old_timing = host->ios.timing;
538 
539 	mmc_retune_hold(host);
540 
541 	/*
542 	 * If the cmd timeout and the max_busy_timeout of the host are both
543 	 * specified, let's validate them. A failure means we need to prevent
544 	 * the host from doing hw busy detection, which is done by converting
545 	 * to a R1 response instead of a R1B.
546 	 */
547 	if (timeout_ms && host->max_busy_timeout &&
548 		(timeout_ms > host->max_busy_timeout))
549 		use_r1b_resp = false;
550 
551 	cmd.opcode = MMC_SWITCH;
552 	cmd.arg = (MMC_SWITCH_MODE_WRITE_BYTE << 24) |
553 		  (index << 16) |
554 		  (value << 8) |
555 		  set;
556 	cmd.flags = MMC_CMD_AC;
557 	if (use_r1b_resp) {
558 		cmd.flags |= MMC_RSP_SPI_R1B | MMC_RSP_R1B;
559 		/*
560 		 * A busy_timeout of zero means the host can decide to use
561 		 * whatever value it finds suitable.
562 		 */
563 		cmd.busy_timeout = timeout_ms;
564 	} else {
565 		cmd.flags |= MMC_RSP_SPI_R1 | MMC_RSP_R1;
566 	}
567 
568 	if (index == EXT_CSD_SANITIZE_START)
569 		cmd.sanitize_busy = true;
570 
571 	err = mmc_wait_for_cmd(host, &cmd, 0);
572 	if (err)
573 		goto out;
574 
575 	/* No need to check card status in case of unblocking command */
576 	if (!use_busy_signal)
577 		goto out;
578 
579 	/*If SPI or used HW busy detection above, then we don't need to poll. */
580 	if (((host->caps & MMC_CAP_WAIT_WHILE_BUSY) && use_r1b_resp) ||
581 		mmc_host_is_spi(host))
582 		goto out_tim;
583 
584 	/* Let's try to poll to find out when the command is completed. */
585 	err = mmc_poll_for_busy(card, timeout_ms, send_status, retry_crc_err);
586 	if (err)
587 		goto out;
588 
589 out_tim:
590 	/* Switch to new timing before check switch status. */
591 	if (timing)
592 		mmc_set_timing(host, timing);
593 
594 	if (send_status) {
595 		err = mmc_switch_status(card);
596 		if (err && timing)
597 			mmc_set_timing(host, old_timing);
598 	}
599 out:
600 	mmc_retune_release(host);
601 
602 	return err;
603 }
604 
605 int mmc_switch(struct mmc_card *card, u8 set, u8 index, u8 value,
606 		unsigned int timeout_ms)
607 {
608 	return __mmc_switch(card, set, index, value, timeout_ms, 0,
609 			true, true, false);
610 }
611 EXPORT_SYMBOL_GPL(mmc_switch);
612 
613 int mmc_send_tuning(struct mmc_host *host, u32 opcode, int *cmd_error)
614 {
615 	struct mmc_request mrq = {};
616 	struct mmc_command cmd = {};
617 	struct mmc_data data = {};
618 	struct scatterlist sg;
619 	struct mmc_ios *ios = &host->ios;
620 	const u8 *tuning_block_pattern;
621 	int size, err = 0;
622 	u8 *data_buf;
623 
624 	if (ios->bus_width == MMC_BUS_WIDTH_8) {
625 		tuning_block_pattern = tuning_blk_pattern_8bit;
626 		size = sizeof(tuning_blk_pattern_8bit);
627 	} else if (ios->bus_width == MMC_BUS_WIDTH_4) {
628 		tuning_block_pattern = tuning_blk_pattern_4bit;
629 		size = sizeof(tuning_blk_pattern_4bit);
630 	} else
631 		return -EINVAL;
632 
633 	data_buf = kzalloc(size, GFP_KERNEL);
634 	if (!data_buf)
635 		return -ENOMEM;
636 
637 	mrq.cmd = &cmd;
638 	mrq.data = &data;
639 
640 	cmd.opcode = opcode;
641 	cmd.flags = MMC_RSP_R1 | MMC_CMD_ADTC;
642 
643 	data.blksz = size;
644 	data.blocks = 1;
645 	data.flags = MMC_DATA_READ;
646 
647 	/*
648 	 * According to the tuning specs, Tuning process
649 	 * is normally shorter 40 executions of CMD19,
650 	 * and timeout value should be shorter than 150 ms
651 	 */
652 	data.timeout_ns = 150 * NSEC_PER_MSEC;
653 
654 	data.sg = &sg;
655 	data.sg_len = 1;
656 	sg_init_one(&sg, data_buf, size);
657 
658 	mmc_wait_for_req(host, &mrq);
659 
660 	if (cmd_error)
661 		*cmd_error = cmd.error;
662 
663 	if (cmd.error) {
664 		err = cmd.error;
665 		goto out;
666 	}
667 
668 	if (data.error) {
669 		err = data.error;
670 		goto out;
671 	}
672 
673 	if (memcmp(data_buf, tuning_block_pattern, size))
674 		err = -EIO;
675 
676 out:
677 	kfree(data_buf);
678 	return err;
679 }
680 EXPORT_SYMBOL_GPL(mmc_send_tuning);
681 
682 int mmc_abort_tuning(struct mmc_host *host, u32 opcode)
683 {
684 	struct mmc_command cmd = {};
685 
686 	/*
687 	 * eMMC specification specifies that CMD12 can be used to stop a tuning
688 	 * command, but SD specification does not, so do nothing unless it is
689 	 * eMMC.
690 	 */
691 	if (opcode != MMC_SEND_TUNING_BLOCK_HS200)
692 		return 0;
693 
694 	cmd.opcode = MMC_STOP_TRANSMISSION;
695 	cmd.flags = MMC_RSP_SPI_R1 | MMC_RSP_R1 | MMC_CMD_AC;
696 
697 	/*
698 	 * For drivers that override R1 to R1b, set an arbitrary timeout based
699 	 * on the tuning timeout i.e. 150ms.
700 	 */
701 	cmd.busy_timeout = 150;
702 
703 	return mmc_wait_for_cmd(host, &cmd, 0);
704 }
705 EXPORT_SYMBOL_GPL(mmc_abort_tuning);
706 
707 static int
708 mmc_send_bus_test(struct mmc_card *card, struct mmc_host *host, u8 opcode,
709 		  u8 len)
710 {
711 	struct mmc_request mrq = {};
712 	struct mmc_command cmd = {};
713 	struct mmc_data data = {};
714 	struct scatterlist sg;
715 	u8 *data_buf;
716 	u8 *test_buf;
717 	int i, err;
718 	static u8 testdata_8bit[8] = { 0x55, 0xaa, 0, 0, 0, 0, 0, 0 };
719 	static u8 testdata_4bit[4] = { 0x5a, 0, 0, 0 };
720 
721 	/* dma onto stack is unsafe/nonportable, but callers to this
722 	 * routine normally provide temporary on-stack buffers ...
723 	 */
724 	data_buf = kmalloc(len, GFP_KERNEL);
725 	if (!data_buf)
726 		return -ENOMEM;
727 
728 	if (len == 8)
729 		test_buf = testdata_8bit;
730 	else if (len == 4)
731 		test_buf = testdata_4bit;
732 	else {
733 		pr_err("%s: Invalid bus_width %d\n",
734 		       mmc_hostname(host), len);
735 		kfree(data_buf);
736 		return -EINVAL;
737 	}
738 
739 	if (opcode == MMC_BUS_TEST_W)
740 		memcpy(data_buf, test_buf, len);
741 
742 	mrq.cmd = &cmd;
743 	mrq.data = &data;
744 	cmd.opcode = opcode;
745 	cmd.arg = 0;
746 
747 	/* NOTE HACK:  the MMC_RSP_SPI_R1 is always correct here, but we
748 	 * rely on callers to never use this with "native" calls for reading
749 	 * CSD or CID.  Native versions of those commands use the R2 type,
750 	 * not R1 plus a data block.
751 	 */
752 	cmd.flags = MMC_RSP_SPI_R1 | MMC_RSP_R1 | MMC_CMD_ADTC;
753 
754 	data.blksz = len;
755 	data.blocks = 1;
756 	if (opcode == MMC_BUS_TEST_R)
757 		data.flags = MMC_DATA_READ;
758 	else
759 		data.flags = MMC_DATA_WRITE;
760 
761 	data.sg = &sg;
762 	data.sg_len = 1;
763 	mmc_set_data_timeout(&data, card);
764 	sg_init_one(&sg, data_buf, len);
765 	mmc_wait_for_req(host, &mrq);
766 	err = 0;
767 	if (opcode == MMC_BUS_TEST_R) {
768 		for (i = 0; i < len / 4; i++)
769 			if ((test_buf[i] ^ data_buf[i]) != 0xff) {
770 				err = -EIO;
771 				break;
772 			}
773 	}
774 	kfree(data_buf);
775 
776 	if (cmd.error)
777 		return cmd.error;
778 	if (data.error)
779 		return data.error;
780 
781 	return err;
782 }
783 
784 int mmc_bus_test(struct mmc_card *card, u8 bus_width)
785 {
786 	int width;
787 
788 	if (bus_width == MMC_BUS_WIDTH_8)
789 		width = 8;
790 	else if (bus_width == MMC_BUS_WIDTH_4)
791 		width = 4;
792 	else if (bus_width == MMC_BUS_WIDTH_1)
793 		return 0; /* no need for test */
794 	else
795 		return -EINVAL;
796 
797 	/*
798 	 * Ignore errors from BUS_TEST_W.  BUS_TEST_R will fail if there
799 	 * is a problem.  This improves chances that the test will work.
800 	 */
801 	mmc_send_bus_test(card, card->host, MMC_BUS_TEST_W, width);
802 	return mmc_send_bus_test(card, card->host, MMC_BUS_TEST_R, width);
803 }
804 
805 static int mmc_send_hpi_cmd(struct mmc_card *card, u32 *status)
806 {
807 	struct mmc_command cmd = {};
808 	unsigned int opcode;
809 	int err;
810 
811 	opcode = card->ext_csd.hpi_cmd;
812 	if (opcode == MMC_STOP_TRANSMISSION)
813 		cmd.flags = MMC_RSP_R1B | MMC_CMD_AC;
814 	else if (opcode == MMC_SEND_STATUS)
815 		cmd.flags = MMC_RSP_R1 | MMC_CMD_AC;
816 
817 	cmd.opcode = opcode;
818 	cmd.arg = card->rca << 16 | 1;
819 
820 	err = mmc_wait_for_cmd(card->host, &cmd, 0);
821 	if (err) {
822 		pr_warn("%s: error %d interrupting operation. "
823 			"HPI command response %#x\n", mmc_hostname(card->host),
824 			err, cmd.resp[0]);
825 		return err;
826 	}
827 	if (status)
828 		*status = cmd.resp[0];
829 
830 	return 0;
831 }
832 
833 /**
834  *	mmc_interrupt_hpi - Issue for High priority Interrupt
835  *	@card: the MMC card associated with the HPI transfer
836  *
837  *	Issued High Priority Interrupt, and check for card status
838  *	until out-of prg-state.
839  */
840 int mmc_interrupt_hpi(struct mmc_card *card)
841 {
842 	int err;
843 	u32 status;
844 	unsigned long prg_wait;
845 
846 	if (!card->ext_csd.hpi_en) {
847 		pr_info("%s: HPI enable bit unset\n", mmc_hostname(card->host));
848 		return 1;
849 	}
850 
851 	err = mmc_send_status(card, &status);
852 	if (err) {
853 		pr_err("%s: Get card status fail\n", mmc_hostname(card->host));
854 		goto out;
855 	}
856 
857 	switch (R1_CURRENT_STATE(status)) {
858 	case R1_STATE_IDLE:
859 	case R1_STATE_READY:
860 	case R1_STATE_STBY:
861 	case R1_STATE_TRAN:
862 		/*
863 		 * In idle and transfer states, HPI is not needed and the caller
864 		 * can issue the next intended command immediately
865 		 */
866 		goto out;
867 	case R1_STATE_PRG:
868 		break;
869 	default:
870 		/* In all other states, it's illegal to issue HPI */
871 		pr_debug("%s: HPI cannot be sent. Card state=%d\n",
872 			mmc_hostname(card->host), R1_CURRENT_STATE(status));
873 		err = -EINVAL;
874 		goto out;
875 	}
876 
877 	err = mmc_send_hpi_cmd(card, &status);
878 	if (err)
879 		goto out;
880 
881 	prg_wait = jiffies + msecs_to_jiffies(card->ext_csd.out_of_int_time);
882 	do {
883 		err = mmc_send_status(card, &status);
884 
885 		if (!err && R1_CURRENT_STATE(status) == R1_STATE_TRAN)
886 			break;
887 		if (time_after(jiffies, prg_wait))
888 			err = -ETIMEDOUT;
889 	} while (!err);
890 
891 out:
892 	return err;
893 }
894 
895 int mmc_can_ext_csd(struct mmc_card *card)
896 {
897 	return (card && card->csd.mmca_vsn > CSD_SPEC_VER_3);
898 }
899 
900 static int mmc_read_bkops_status(struct mmc_card *card)
901 {
902 	int err;
903 	u8 *ext_csd;
904 
905 	err = mmc_get_ext_csd(card, &ext_csd);
906 	if (err)
907 		return err;
908 
909 	card->ext_csd.raw_bkops_status = ext_csd[EXT_CSD_BKOPS_STATUS];
910 	card->ext_csd.raw_exception_status = ext_csd[EXT_CSD_EXP_EVENTS_STATUS];
911 	kfree(ext_csd);
912 	return 0;
913 }
914 
915 /**
916  *	mmc_run_bkops - Run BKOPS for supported cards
917  *	@card: MMC card to run BKOPS for
918  *
919  *	Run background operations synchronously for cards having manual BKOPS
920  *	enabled and in case it reports urgent BKOPS level.
921 */
922 void mmc_run_bkops(struct mmc_card *card)
923 {
924 	int err;
925 
926 	if (!card->ext_csd.man_bkops_en)
927 		return;
928 
929 	err = mmc_read_bkops_status(card);
930 	if (err) {
931 		pr_err("%s: Failed to read bkops status: %d\n",
932 		       mmc_hostname(card->host), err);
933 		return;
934 	}
935 
936 	if (!card->ext_csd.raw_bkops_status ||
937 	    card->ext_csd.raw_bkops_status < EXT_CSD_BKOPS_LEVEL_2)
938 		return;
939 
940 	mmc_retune_hold(card->host);
941 
942 	/*
943 	 * For urgent BKOPS status, LEVEL_2 and higher, let's execute
944 	 * synchronously. Future wise, we may consider to start BKOPS, for less
945 	 * urgent levels by using an asynchronous background task, when idle.
946 	 */
947 	err = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL,
948 			EXT_CSD_BKOPS_START, 1, MMC_OPS_TIMEOUT_MS);
949 	if (err)
950 		pr_warn("%s: Error %d starting bkops\n",
951 			mmc_hostname(card->host), err);
952 
953 	mmc_retune_release(card->host);
954 }
955 EXPORT_SYMBOL(mmc_run_bkops);
956 
957 /*
958  * Flush the cache to the non-volatile storage.
959  */
960 int mmc_flush_cache(struct mmc_card *card)
961 {
962 	int err = 0;
963 
964 	if (mmc_card_mmc(card) &&
965 			(card->ext_csd.cache_size > 0) &&
966 			(card->ext_csd.cache_ctrl & 1)) {
967 		err = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL,
968 				EXT_CSD_FLUSH_CACHE, 1, 0);
969 		if (err)
970 			pr_err("%s: cache flush error %d\n",
971 					mmc_hostname(card->host), err);
972 	}
973 
974 	return err;
975 }
976 EXPORT_SYMBOL(mmc_flush_cache);
977 
978 static int mmc_cmdq_switch(struct mmc_card *card, bool enable)
979 {
980 	u8 val = enable ? EXT_CSD_CMDQ_MODE_ENABLED : 0;
981 	int err;
982 
983 	if (!card->ext_csd.cmdq_support)
984 		return -EOPNOTSUPP;
985 
986 	err = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_CMDQ_MODE_EN,
987 			 val, card->ext_csd.generic_cmd6_time);
988 	if (!err)
989 		card->ext_csd.cmdq_en = enable;
990 
991 	return err;
992 }
993 
994 int mmc_cmdq_enable(struct mmc_card *card)
995 {
996 	return mmc_cmdq_switch(card, true);
997 }
998 EXPORT_SYMBOL_GPL(mmc_cmdq_enable);
999 
1000 int mmc_cmdq_disable(struct mmc_card *card)
1001 {
1002 	return mmc_cmdq_switch(card, false);
1003 }
1004 EXPORT_SYMBOL_GPL(mmc_cmdq_disable);
1005