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