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