1 // SPDX-License-Identifier: GPL-2.0-only 2 /* 3 * linux/drivers/mmc/core/core.c 4 * 5 * Copyright (C) 2003-2004 Russell King, All Rights Reserved. 6 * SD support Copyright (C) 2004 Ian Molton, All Rights Reserved. 7 * Copyright (C) 2005-2008 Pierre Ossman, All Rights Reserved. 8 * MMCv4 support Copyright (C) 2006 Philip Langdale, All Rights Reserved. 9 */ 10 #include <linux/module.h> 11 #include <linux/init.h> 12 #include <linux/interrupt.h> 13 #include <linux/completion.h> 14 #include <linux/device.h> 15 #include <linux/delay.h> 16 #include <linux/pagemap.h> 17 #include <linux/err.h> 18 #include <linux/leds.h> 19 #include <linux/scatterlist.h> 20 #include <linux/log2.h> 21 #include <linux/pm_runtime.h> 22 #include <linux/suspend.h> 23 #include <linux/fault-inject.h> 24 #include <linux/random.h> 25 #include <linux/slab.h> 26 #include <linux/of.h> 27 28 #include <linux/mmc/card.h> 29 #include <linux/mmc/host.h> 30 #include <linux/mmc/mmc.h> 31 #include <linux/mmc/sd.h> 32 #include <linux/mmc/slot-gpio.h> 33 34 #define CREATE_TRACE_POINTS 35 #include <trace/events/mmc.h> 36 37 #include "core.h" 38 #include "card.h" 39 #include "crypto.h" 40 #include "bus.h" 41 #include "host.h" 42 #include "sdio_bus.h" 43 #include "pwrseq.h" 44 45 #include "mmc_ops.h" 46 #include "sd_ops.h" 47 #include "sdio_ops.h" 48 49 /* The max erase timeout, used when host->max_busy_timeout isn't specified */ 50 #define MMC_ERASE_TIMEOUT_MS (60 * 1000) /* 60 s */ 51 #define SD_DISCARD_TIMEOUT_MS (250) 52 53 static const unsigned freqs[] = { 400000, 300000, 200000, 100000 }; 54 55 /* 56 * Enabling software CRCs on the data blocks can be a significant (30%) 57 * performance cost, and for other reasons may not always be desired. 58 * So we allow it to be disabled. 59 */ 60 bool use_spi_crc = 1; 61 module_param(use_spi_crc, bool, 0); 62 63 static int mmc_schedule_delayed_work(struct delayed_work *work, 64 unsigned long delay) 65 { 66 /* 67 * We use the system_freezable_wq, because of two reasons. 68 * First, it allows several works (not the same work item) to be 69 * executed simultaneously. Second, the queue becomes frozen when 70 * userspace becomes frozen during system PM. 71 */ 72 return queue_delayed_work(system_freezable_wq, work, delay); 73 } 74 75 #ifdef CONFIG_FAIL_MMC_REQUEST 76 77 /* 78 * Internal function. Inject random data errors. 79 * If mmc_data is NULL no errors are injected. 80 */ 81 static void mmc_should_fail_request(struct mmc_host *host, 82 struct mmc_request *mrq) 83 { 84 struct mmc_command *cmd = mrq->cmd; 85 struct mmc_data *data = mrq->data; 86 static const int data_errors[] = { 87 -ETIMEDOUT, 88 -EILSEQ, 89 -EIO, 90 }; 91 92 if (!data) 93 return; 94 95 if ((cmd && cmd->error) || data->error || 96 !should_fail(&host->fail_mmc_request, data->blksz * data->blocks)) 97 return; 98 99 data->error = data_errors[get_random_u32_below(ARRAY_SIZE(data_errors))]; 100 data->bytes_xfered = get_random_u32_below(data->bytes_xfered >> 9) << 9; 101 } 102 103 #else /* CONFIG_FAIL_MMC_REQUEST */ 104 105 static inline void mmc_should_fail_request(struct mmc_host *host, 106 struct mmc_request *mrq) 107 { 108 } 109 110 #endif /* CONFIG_FAIL_MMC_REQUEST */ 111 112 static inline void mmc_complete_cmd(struct mmc_request *mrq) 113 { 114 if (mrq->cap_cmd_during_tfr && !completion_done(&mrq->cmd_completion)) 115 complete_all(&mrq->cmd_completion); 116 } 117 118 void mmc_command_done(struct mmc_host *host, struct mmc_request *mrq) 119 { 120 if (!mrq->cap_cmd_during_tfr) 121 return; 122 123 mmc_complete_cmd(mrq); 124 125 pr_debug("%s: cmd done, tfr ongoing (CMD%u)\n", 126 mmc_hostname(host), mrq->cmd->opcode); 127 } 128 EXPORT_SYMBOL(mmc_command_done); 129 130 /** 131 * mmc_request_done - finish processing an MMC request 132 * @host: MMC host which completed request 133 * @mrq: MMC request which request 134 * 135 * MMC drivers should call this function when they have completed 136 * their processing of a request. 137 */ 138 void mmc_request_done(struct mmc_host *host, struct mmc_request *mrq) 139 { 140 struct mmc_command *cmd = mrq->cmd; 141 int err = cmd->error; 142 143 /* Flag re-tuning needed on CRC errors */ 144 if (!mmc_op_tuning(cmd->opcode) && 145 !host->retune_crc_disable && 146 (err == -EILSEQ || (mrq->sbc && mrq->sbc->error == -EILSEQ) || 147 (mrq->data && mrq->data->error == -EILSEQ) || 148 (mrq->stop && mrq->stop->error == -EILSEQ))) 149 mmc_retune_needed(host); 150 151 if (err && cmd->retries && mmc_host_is_spi(host)) { 152 if (cmd->resp[0] & R1_SPI_ILLEGAL_COMMAND) 153 cmd->retries = 0; 154 } 155 156 if (host->ongoing_mrq == mrq) 157 host->ongoing_mrq = NULL; 158 159 mmc_complete_cmd(mrq); 160 161 trace_mmc_request_done(host, mrq); 162 163 /* 164 * We list various conditions for the command to be considered 165 * properly done: 166 * 167 * - There was no error, OK fine then 168 * - We are not doing some kind of retry 169 * - The card was removed (...so just complete everything no matter 170 * if there are errors or retries) 171 */ 172 if (!err || !cmd->retries || mmc_card_removed(host->card)) { 173 mmc_should_fail_request(host, mrq); 174 175 if (!host->ongoing_mrq) 176 led_trigger_event(host->led, LED_OFF); 177 178 if (mrq->sbc) { 179 pr_debug("%s: req done <CMD%u>: %d: %08x %08x %08x %08x\n", 180 mmc_hostname(host), mrq->sbc->opcode, 181 mrq->sbc->error, 182 mrq->sbc->resp[0], mrq->sbc->resp[1], 183 mrq->sbc->resp[2], mrq->sbc->resp[3]); 184 } 185 186 pr_debug("%s: req done (CMD%u): %d: %08x %08x %08x %08x\n", 187 mmc_hostname(host), cmd->opcode, err, 188 cmd->resp[0], cmd->resp[1], 189 cmd->resp[2], cmd->resp[3]); 190 191 if (mrq->data) { 192 pr_debug("%s: %d bytes transferred: %d\n", 193 mmc_hostname(host), 194 mrq->data->bytes_xfered, mrq->data->error); 195 } 196 197 if (mrq->stop) { 198 pr_debug("%s: (CMD%u): %d: %08x %08x %08x %08x\n", 199 mmc_hostname(host), mrq->stop->opcode, 200 mrq->stop->error, 201 mrq->stop->resp[0], mrq->stop->resp[1], 202 mrq->stop->resp[2], mrq->stop->resp[3]); 203 } 204 } 205 /* 206 * Request starter must handle retries - see 207 * mmc_wait_for_req_done(). 208 */ 209 if (mrq->done) 210 mrq->done(mrq); 211 } 212 213 EXPORT_SYMBOL(mmc_request_done); 214 215 static void __mmc_start_request(struct mmc_host *host, struct mmc_request *mrq) 216 { 217 int err; 218 219 /* Assumes host controller has been runtime resumed by mmc_claim_host */ 220 err = mmc_retune(host); 221 if (err) { 222 mrq->cmd->error = err; 223 mmc_request_done(host, mrq); 224 return; 225 } 226 227 /* 228 * For sdio rw commands we must wait for card busy otherwise some 229 * sdio devices won't work properly. 230 * And bypass I/O abort, reset and bus suspend operations. 231 */ 232 if (sdio_is_io_busy(mrq->cmd->opcode, mrq->cmd->arg) && 233 host->ops->card_busy) { 234 int tries = 500; /* Wait aprox 500ms at maximum */ 235 236 while (host->ops->card_busy(host) && --tries) 237 mmc_delay(1); 238 239 if (tries == 0) { 240 mrq->cmd->error = -EBUSY; 241 mmc_request_done(host, mrq); 242 return; 243 } 244 } 245 246 if (mrq->cap_cmd_during_tfr) { 247 host->ongoing_mrq = mrq; 248 /* 249 * Retry path could come through here without having waiting on 250 * cmd_completion, so ensure it is reinitialised. 251 */ 252 reinit_completion(&mrq->cmd_completion); 253 } 254 255 trace_mmc_request_start(host, mrq); 256 257 if (host->cqe_on) 258 host->cqe_ops->cqe_off(host); 259 260 host->ops->request(host, mrq); 261 } 262 263 static void mmc_mrq_pr_debug(struct mmc_host *host, struct mmc_request *mrq, 264 bool cqe) 265 { 266 if (mrq->sbc) { 267 pr_debug("<%s: starting CMD%u arg %08x flags %08x>\n", 268 mmc_hostname(host), mrq->sbc->opcode, 269 mrq->sbc->arg, mrq->sbc->flags); 270 } 271 272 if (mrq->cmd) { 273 pr_debug("%s: starting %sCMD%u arg %08x flags %08x\n", 274 mmc_hostname(host), cqe ? "CQE direct " : "", 275 mrq->cmd->opcode, mrq->cmd->arg, mrq->cmd->flags); 276 } else if (cqe) { 277 pr_debug("%s: starting CQE transfer for tag %d blkaddr %u\n", 278 mmc_hostname(host), mrq->tag, mrq->data->blk_addr); 279 } 280 281 if (mrq->data) { 282 pr_debug("%s: blksz %d blocks %d flags %08x " 283 "tsac %d ms nsac %d\n", 284 mmc_hostname(host), mrq->data->blksz, 285 mrq->data->blocks, mrq->data->flags, 286 mrq->data->timeout_ns / 1000000, 287 mrq->data->timeout_clks); 288 } 289 290 if (mrq->stop) { 291 pr_debug("%s: CMD%u arg %08x flags %08x\n", 292 mmc_hostname(host), mrq->stop->opcode, 293 mrq->stop->arg, mrq->stop->flags); 294 } 295 } 296 297 static int mmc_mrq_prep(struct mmc_host *host, struct mmc_request *mrq) 298 { 299 unsigned int i, sz = 0; 300 struct scatterlist *sg; 301 302 if (mrq->cmd) { 303 mrq->cmd->error = 0; 304 mrq->cmd->mrq = mrq; 305 mrq->cmd->data = mrq->data; 306 } 307 if (mrq->sbc) { 308 mrq->sbc->error = 0; 309 mrq->sbc->mrq = mrq; 310 } 311 if (mrq->data) { 312 if (mrq->data->blksz > host->max_blk_size || 313 mrq->data->blocks > host->max_blk_count || 314 mrq->data->blocks * mrq->data->blksz > host->max_req_size) 315 return -EINVAL; 316 317 for_each_sg(mrq->data->sg, sg, mrq->data->sg_len, i) 318 sz += sg->length; 319 if (sz != mrq->data->blocks * mrq->data->blksz) 320 return -EINVAL; 321 322 mrq->data->error = 0; 323 mrq->data->mrq = mrq; 324 if (mrq->stop) { 325 mrq->data->stop = mrq->stop; 326 mrq->stop->error = 0; 327 mrq->stop->mrq = mrq; 328 } 329 } 330 331 return 0; 332 } 333 334 int mmc_start_request(struct mmc_host *host, struct mmc_request *mrq) 335 { 336 int err; 337 338 if (mrq->cmd && mrq->cmd->has_ext_addr) 339 mmc_send_ext_addr(host, mrq->cmd->ext_addr); 340 341 init_completion(&mrq->cmd_completion); 342 343 mmc_retune_hold(host); 344 345 if (mmc_card_removed(host->card)) 346 return -ENOMEDIUM; 347 348 mmc_mrq_pr_debug(host, mrq, false); 349 350 WARN_ON(!host->claimed); 351 352 err = mmc_mrq_prep(host, mrq); 353 if (err) 354 return err; 355 356 if (host->uhs2_sd_tran) 357 mmc_uhs2_prepare_cmd(host, mrq); 358 359 led_trigger_event(host->led, LED_FULL); 360 __mmc_start_request(host, mrq); 361 362 return 0; 363 } 364 EXPORT_SYMBOL(mmc_start_request); 365 366 static void mmc_wait_done(struct mmc_request *mrq) 367 { 368 complete(&mrq->completion); 369 } 370 371 static inline void mmc_wait_ongoing_tfr_cmd(struct mmc_host *host) 372 { 373 struct mmc_request *ongoing_mrq = READ_ONCE(host->ongoing_mrq); 374 375 /* 376 * If there is an ongoing transfer, wait for the command line to become 377 * available. 378 */ 379 if (ongoing_mrq && !completion_done(&ongoing_mrq->cmd_completion)) 380 wait_for_completion(&ongoing_mrq->cmd_completion); 381 } 382 383 static int __mmc_start_req(struct mmc_host *host, struct mmc_request *mrq) 384 { 385 int err; 386 387 mmc_wait_ongoing_tfr_cmd(host); 388 389 init_completion(&mrq->completion); 390 mrq->done = mmc_wait_done; 391 392 err = mmc_start_request(host, mrq); 393 if (err) { 394 mrq->cmd->error = err; 395 mmc_complete_cmd(mrq); 396 complete(&mrq->completion); 397 } 398 399 return err; 400 } 401 402 void mmc_wait_for_req_done(struct mmc_host *host, struct mmc_request *mrq) 403 { 404 struct mmc_command *cmd; 405 406 while (1) { 407 wait_for_completion(&mrq->completion); 408 409 cmd = mrq->cmd; 410 411 if (!cmd->error || !cmd->retries || 412 mmc_card_removed(host->card)) 413 break; 414 415 mmc_retune_recheck(host); 416 417 pr_debug("%s: req failed (CMD%u): %d, retrying...\n", 418 mmc_hostname(host), cmd->opcode, cmd->error); 419 cmd->retries--; 420 cmd->error = 0; 421 __mmc_start_request(host, mrq); 422 } 423 424 mmc_retune_release(host); 425 } 426 EXPORT_SYMBOL(mmc_wait_for_req_done); 427 428 /* 429 * mmc_cqe_start_req - Start a CQE request. 430 * @host: MMC host to start the request 431 * @mrq: request to start 432 * 433 * Start the request, re-tuning if needed and it is possible. Returns an error 434 * code if the request fails to start or -EBUSY if CQE is busy. 435 */ 436 int mmc_cqe_start_req(struct mmc_host *host, struct mmc_request *mrq) 437 { 438 int err; 439 440 /* 441 * CQE cannot process re-tuning commands. Caller must hold retuning 442 * while CQE is in use. Re-tuning can happen here only when CQE has no 443 * active requests i.e. this is the first. Note, re-tuning will call 444 * ->cqe_off(). 445 */ 446 err = mmc_retune(host); 447 if (err) 448 goto out_err; 449 450 mrq->host = host; 451 452 mmc_mrq_pr_debug(host, mrq, true); 453 454 err = mmc_mrq_prep(host, mrq); 455 if (err) 456 goto out_err; 457 458 if (host->uhs2_sd_tran) 459 mmc_uhs2_prepare_cmd(host, mrq); 460 461 err = host->cqe_ops->cqe_request(host, mrq); 462 if (err) 463 goto out_err; 464 465 trace_mmc_request_start(host, mrq); 466 467 return 0; 468 469 out_err: 470 if (mrq->cmd) { 471 pr_debug("%s: failed to start CQE direct CMD%u, error %d\n", 472 mmc_hostname(host), mrq->cmd->opcode, err); 473 } else { 474 pr_debug("%s: failed to start CQE transfer for tag %d, error %d\n", 475 mmc_hostname(host), mrq->tag, err); 476 } 477 return err; 478 } 479 EXPORT_SYMBOL(mmc_cqe_start_req); 480 481 /** 482 * mmc_cqe_request_done - CQE has finished processing an MMC request 483 * @host: MMC host which completed request 484 * @mrq: MMC request which completed 485 * 486 * CQE drivers should call this function when they have completed 487 * their processing of a request. 488 */ 489 void mmc_cqe_request_done(struct mmc_host *host, struct mmc_request *mrq) 490 { 491 mmc_should_fail_request(host, mrq); 492 493 /* Flag re-tuning needed on CRC errors */ 494 if ((mrq->cmd && mrq->cmd->error == -EILSEQ) || 495 (mrq->data && mrq->data->error == -EILSEQ)) 496 mmc_retune_needed(host); 497 498 trace_mmc_request_done(host, mrq); 499 500 if (mrq->cmd) { 501 pr_debug("%s: CQE req done (direct CMD%u): %d\n", 502 mmc_hostname(host), mrq->cmd->opcode, mrq->cmd->error); 503 } else { 504 pr_debug("%s: CQE transfer done tag %d\n", 505 mmc_hostname(host), mrq->tag); 506 } 507 508 if (mrq->data) { 509 pr_debug("%s: %d bytes transferred: %d\n", 510 mmc_hostname(host), 511 mrq->data->bytes_xfered, mrq->data->error); 512 } 513 514 mrq->done(mrq); 515 } 516 EXPORT_SYMBOL(mmc_cqe_request_done); 517 518 /** 519 * mmc_cqe_post_req - CQE post process of a completed MMC request 520 * @host: MMC host 521 * @mrq: MMC request to be processed 522 */ 523 void mmc_cqe_post_req(struct mmc_host *host, struct mmc_request *mrq) 524 { 525 if (host->cqe_ops->cqe_post_req) 526 host->cqe_ops->cqe_post_req(host, mrq); 527 } 528 EXPORT_SYMBOL(mmc_cqe_post_req); 529 530 /* Arbitrary 1 second timeout */ 531 #define MMC_CQE_RECOVERY_TIMEOUT 1000 532 533 /* 534 * mmc_cqe_recovery - Recover from CQE errors. 535 * @host: MMC host to recover 536 * 537 * Recovery consists of stopping CQE, stopping eMMC, discarding the queue 538 * in eMMC, and discarding the queue in CQE. CQE must call 539 * mmc_cqe_request_done() on all requests. An error is returned if the eMMC 540 * fails to discard its queue. 541 */ 542 int mmc_cqe_recovery(struct mmc_host *host) 543 { 544 struct mmc_command cmd; 545 int err; 546 547 mmc_retune_hold_now(host); 548 549 /* 550 * Recovery is expected seldom, if at all, but it reduces performance, 551 * so make sure it is not completely silent. 552 */ 553 pr_warn("%s: running CQE recovery\n", mmc_hostname(host)); 554 555 host->cqe_ops->cqe_recovery_start(host); 556 557 memset(&cmd, 0, sizeof(cmd)); 558 cmd.opcode = MMC_STOP_TRANSMISSION; 559 cmd.flags = MMC_RSP_R1B_NO_CRC | MMC_CMD_AC; /* Ignore CRC */ 560 cmd.busy_timeout = MMC_CQE_RECOVERY_TIMEOUT; 561 mmc_wait_for_cmd(host, &cmd, MMC_CMD_RETRIES); 562 563 mmc_poll_for_busy(host->card, MMC_CQE_RECOVERY_TIMEOUT, true, MMC_BUSY_IO); 564 565 memset(&cmd, 0, sizeof(cmd)); 566 cmd.opcode = MMC_CMDQ_TASK_MGMT; 567 cmd.arg = 1; /* Discard entire queue */ 568 cmd.flags = MMC_RSP_R1B_NO_CRC | MMC_CMD_AC; /* Ignore CRC */ 569 cmd.busy_timeout = MMC_CQE_RECOVERY_TIMEOUT; 570 err = mmc_wait_for_cmd(host, &cmd, MMC_CMD_RETRIES); 571 572 host->cqe_ops->cqe_recovery_finish(host); 573 574 if (err) 575 err = mmc_wait_for_cmd(host, &cmd, MMC_CMD_RETRIES); 576 577 mmc_retune_release(host); 578 579 return err; 580 } 581 EXPORT_SYMBOL(mmc_cqe_recovery); 582 583 /** 584 * mmc_is_req_done - Determine if a 'cap_cmd_during_tfr' request is done 585 * @host: MMC host 586 * @mrq: MMC request 587 * 588 * mmc_is_req_done() is used with requests that have 589 * mrq->cap_cmd_during_tfr = true. mmc_is_req_done() must be called after 590 * starting a request and before waiting for it to complete. That is, 591 * either in between calls to mmc_start_req(), or after mmc_wait_for_req() 592 * and before mmc_wait_for_req_done(). If it is called at other times the 593 * result is not meaningful. 594 */ 595 bool mmc_is_req_done(struct mmc_host *host, struct mmc_request *mrq) 596 { 597 return completion_done(&mrq->completion); 598 } 599 EXPORT_SYMBOL(mmc_is_req_done); 600 601 /** 602 * mmc_wait_for_req - start a request and wait for completion 603 * @host: MMC host to start command 604 * @mrq: MMC request to start 605 * 606 * Start a new MMC custom command request for a host, and wait 607 * for the command to complete. In the case of 'cap_cmd_during_tfr' 608 * requests, the transfer is ongoing and the caller can issue further 609 * commands that do not use the data lines, and then wait by calling 610 * mmc_wait_for_req_done(). 611 * Does not attempt to parse the response. 612 */ 613 void mmc_wait_for_req(struct mmc_host *host, struct mmc_request *mrq) 614 { 615 __mmc_start_req(host, mrq); 616 617 if (!mrq->cap_cmd_during_tfr) 618 mmc_wait_for_req_done(host, mrq); 619 } 620 EXPORT_SYMBOL(mmc_wait_for_req); 621 622 /** 623 * mmc_wait_for_cmd - start a command and wait for completion 624 * @host: MMC host to start command 625 * @cmd: MMC command to start 626 * @retries: maximum number of retries 627 * 628 * Start a new MMC command for a host, and wait for the command 629 * to complete. Return any error that occurred while the command 630 * was executing. Do not attempt to parse the response. 631 */ 632 int mmc_wait_for_cmd(struct mmc_host *host, struct mmc_command *cmd, int retries) 633 { 634 struct mmc_request mrq = {}; 635 636 WARN_ON(!host->claimed); 637 638 memset(cmd->resp, 0, sizeof(cmd->resp)); 639 cmd->retries = retries; 640 641 mrq.cmd = cmd; 642 cmd->data = NULL; 643 644 mmc_wait_for_req(host, &mrq); 645 646 return cmd->error; 647 } 648 649 EXPORT_SYMBOL(mmc_wait_for_cmd); 650 651 /** 652 * mmc_set_data_timeout - set the timeout for a data command 653 * @data: data phase for command 654 * @card: the MMC card associated with the data transfer 655 * 656 * Computes the data timeout parameters according to the 657 * correct algorithm given the card type. 658 */ 659 void mmc_set_data_timeout(struct mmc_data *data, const struct mmc_card *card) 660 { 661 unsigned int mult; 662 663 /* 664 * SDIO cards only define an upper 1 s limit on access. 665 */ 666 if (mmc_card_sdio(card)) { 667 data->timeout_ns = 1000000000; 668 data->timeout_clks = 0; 669 return; 670 } 671 672 /* 673 * SD cards use a 100 multiplier rather than 10 674 */ 675 mult = mmc_card_sd(card) ? 100 : 10; 676 677 /* 678 * Scale up the multiplier (and therefore the timeout) by 679 * the r2w factor for writes. 680 */ 681 if (data->flags & MMC_DATA_WRITE) 682 mult <<= card->csd.r2w_factor; 683 684 data->timeout_ns = card->csd.taac_ns * mult; 685 data->timeout_clks = card->csd.taac_clks * mult; 686 687 /* 688 * SD cards also have an upper limit on the timeout. 689 */ 690 if (mmc_card_sd(card)) { 691 unsigned int timeout_us, limit_us; 692 693 timeout_us = data->timeout_ns / 1000; 694 if (card->host->ios.clock) 695 timeout_us += data->timeout_clks * 1000 / 696 (card->host->ios.clock / 1000); 697 698 if (data->flags & MMC_DATA_WRITE) 699 /* 700 * The MMC spec "It is strongly recommended 701 * for hosts to implement more than 500ms 702 * timeout value even if the card indicates 703 * the 250ms maximum busy length." Even the 704 * previous value of 300ms is known to be 705 * insufficient for some cards. 706 */ 707 limit_us = 3000000; 708 else 709 limit_us = 100000; 710 711 /* 712 * SDHC cards always use these fixed values. 713 */ 714 if (timeout_us > limit_us) { 715 data->timeout_ns = limit_us * 1000; 716 data->timeout_clks = 0; 717 } 718 719 /* assign limit value if invalid */ 720 if (timeout_us == 0) 721 data->timeout_ns = limit_us * 1000; 722 } 723 724 /* 725 * Some cards require longer data read timeout than indicated in CSD. 726 * Address this by setting the read timeout to a "reasonably high" 727 * value. For the cards tested, 600ms has proven enough. If necessary, 728 * this value can be increased if other problematic cards require this. 729 */ 730 if (mmc_card_long_read_time(card) && data->flags & MMC_DATA_READ) { 731 data->timeout_ns = 600000000; 732 data->timeout_clks = 0; 733 } 734 735 /* 736 * Some cards need very high timeouts if driven in SPI mode. 737 * The worst observed timeout was 900ms after writing a 738 * continuous stream of data until the internal logic 739 * overflowed. 740 */ 741 if (mmc_host_is_spi(card->host)) { 742 if (data->flags & MMC_DATA_WRITE) { 743 if (data->timeout_ns < 1000000000) 744 data->timeout_ns = 1000000000; /* 1s */ 745 } else { 746 if (data->timeout_ns < 100000000) 747 data->timeout_ns = 100000000; /* 100ms */ 748 } 749 } 750 } 751 EXPORT_SYMBOL(mmc_set_data_timeout); 752 753 /* 754 * Allow claiming an already claimed host if the context is the same or there is 755 * no context but the task is the same. 756 */ 757 static inline bool mmc_ctx_matches(struct mmc_host *host, struct mmc_ctx *ctx, 758 struct task_struct *task) 759 { 760 return host->claimer == ctx || 761 (!ctx && task && host->claimer->task == task); 762 } 763 764 static inline void mmc_ctx_set_claimer(struct mmc_host *host, 765 struct mmc_ctx *ctx, 766 struct task_struct *task) 767 { 768 if (!host->claimer) { 769 if (ctx) 770 host->claimer = ctx; 771 else 772 host->claimer = &host->default_ctx; 773 } 774 if (task) 775 host->claimer->task = task; 776 } 777 778 /** 779 * __mmc_claim_host - exclusively claim a host 780 * @host: mmc host to claim 781 * @ctx: context that claims the host or NULL in which case the default 782 * context will be used 783 * @abort: whether or not the operation should be aborted 784 * 785 * Claim a host for a set of operations. If @abort is non null and 786 * dereference a non-zero value then this will return prematurely with 787 * that non-zero value without acquiring the lock. Returns zero 788 * with the lock held otherwise. 789 */ 790 int __mmc_claim_host(struct mmc_host *host, struct mmc_ctx *ctx, 791 atomic_t *abort) 792 { 793 struct task_struct *task = ctx ? NULL : current; 794 DECLARE_WAITQUEUE(wait, current); 795 unsigned long flags; 796 int stop; 797 bool pm = false; 798 799 might_sleep(); 800 801 add_wait_queue(&host->wq, &wait); 802 spin_lock_irqsave(&host->lock, flags); 803 while (1) { 804 set_current_state(TASK_UNINTERRUPTIBLE); 805 stop = abort ? atomic_read(abort) : 0; 806 if (stop || !host->claimed || mmc_ctx_matches(host, ctx, task)) 807 break; 808 spin_unlock_irqrestore(&host->lock, flags); 809 schedule(); 810 spin_lock_irqsave(&host->lock, flags); 811 } 812 set_current_state(TASK_RUNNING); 813 if (!stop) { 814 host->claimed = 1; 815 mmc_ctx_set_claimer(host, ctx, task); 816 host->claim_cnt += 1; 817 if (host->claim_cnt == 1) 818 pm = true; 819 } else 820 wake_up(&host->wq); 821 spin_unlock_irqrestore(&host->lock, flags); 822 remove_wait_queue(&host->wq, &wait); 823 824 if (pm) 825 pm_runtime_get_sync(mmc_dev(host)); 826 827 return stop; 828 } 829 EXPORT_SYMBOL(__mmc_claim_host); 830 831 /** 832 * mmc_release_host - release a host 833 * @host: mmc host to release 834 * 835 * Release a MMC host, allowing others to claim the host 836 * for their operations. 837 */ 838 void mmc_release_host(struct mmc_host *host) 839 { 840 unsigned long flags; 841 842 WARN_ON(!host->claimed); 843 844 spin_lock_irqsave(&host->lock, flags); 845 if (--host->claim_cnt) { 846 /* Release for nested claim */ 847 spin_unlock_irqrestore(&host->lock, flags); 848 } else { 849 host->claimed = 0; 850 host->claimer->task = NULL; 851 host->claimer = NULL; 852 spin_unlock_irqrestore(&host->lock, flags); 853 wake_up(&host->wq); 854 pm_runtime_mark_last_busy(mmc_dev(host)); 855 if (host->caps & MMC_CAP_SYNC_RUNTIME_PM) 856 pm_runtime_put_sync_suspend(mmc_dev(host)); 857 else 858 pm_runtime_put_autosuspend(mmc_dev(host)); 859 } 860 } 861 EXPORT_SYMBOL(mmc_release_host); 862 863 /* 864 * This is a helper function, which fetches a runtime pm reference for the 865 * card device and also claims the host. 866 */ 867 void mmc_get_card(struct mmc_card *card, struct mmc_ctx *ctx) 868 { 869 pm_runtime_get_sync(&card->dev); 870 __mmc_claim_host(card->host, ctx, NULL); 871 } 872 EXPORT_SYMBOL(mmc_get_card); 873 874 /* 875 * This is a helper function, which releases the host and drops the runtime 876 * pm reference for the card device. 877 */ 878 void mmc_put_card(struct mmc_card *card, struct mmc_ctx *ctx) 879 { 880 struct mmc_host *host = card->host; 881 882 WARN_ON(ctx && host->claimer != ctx); 883 884 mmc_release_host(host); 885 pm_runtime_mark_last_busy(&card->dev); 886 pm_runtime_put_autosuspend(&card->dev); 887 } 888 EXPORT_SYMBOL(mmc_put_card); 889 890 /* 891 * Internal function that does the actual ios call to the host driver, 892 * optionally printing some debug output. 893 */ 894 static inline void mmc_set_ios(struct mmc_host *host) 895 { 896 struct mmc_ios *ios = &host->ios; 897 898 pr_debug("%s: clock %uHz busmode %u powermode %u cs %u Vdd %u " 899 "width %u timing %u\n", 900 mmc_hostname(host), ios->clock, ios->bus_mode, 901 ios->power_mode, ios->chip_select, ios->vdd, 902 1 << ios->bus_width, ios->timing); 903 904 host->ops->set_ios(host, ios); 905 } 906 907 /* 908 * Control chip select pin on a host. 909 */ 910 void mmc_set_chip_select(struct mmc_host *host, int mode) 911 { 912 host->ios.chip_select = mode; 913 mmc_set_ios(host); 914 } 915 916 /* 917 * Sets the host clock to the highest possible frequency that 918 * is below "hz". 919 */ 920 void mmc_set_clock(struct mmc_host *host, unsigned int hz) 921 { 922 WARN_ON(hz && hz < host->f_min); 923 924 if (hz > host->f_max) 925 hz = host->f_max; 926 927 host->ios.clock = hz; 928 mmc_set_ios(host); 929 } 930 931 int mmc_execute_tuning(struct mmc_card *card) 932 { 933 struct mmc_host *host = card->host; 934 u32 opcode; 935 int err; 936 937 if (!host->ops->execute_tuning) 938 return 0; 939 940 if (host->cqe_on) 941 host->cqe_ops->cqe_off(host); 942 943 if (mmc_card_mmc(card)) 944 opcode = MMC_SEND_TUNING_BLOCK_HS200; 945 else 946 opcode = MMC_SEND_TUNING_BLOCK; 947 948 err = host->ops->execute_tuning(host, opcode); 949 if (!err) { 950 mmc_retune_clear(host); 951 mmc_retune_enable(host); 952 return 0; 953 } 954 955 /* Only print error when we don't check for card removal */ 956 if (!host->detect_change) { 957 pr_err("%s: tuning execution failed: %d\n", 958 mmc_hostname(host), err); 959 mmc_debugfs_err_stats_inc(host, MMC_ERR_TUNING); 960 } 961 962 return err; 963 } 964 965 /* 966 * Change the bus mode (open drain/push-pull) of a host. 967 */ 968 void mmc_set_bus_mode(struct mmc_host *host, unsigned int mode) 969 { 970 host->ios.bus_mode = mode; 971 mmc_set_ios(host); 972 } 973 974 /* 975 * Change data bus width of a host. 976 */ 977 void mmc_set_bus_width(struct mmc_host *host, unsigned int width) 978 { 979 host->ios.bus_width = width; 980 mmc_set_ios(host); 981 } 982 983 /* 984 * Set initial state after a power cycle or a hw_reset. 985 */ 986 void mmc_set_initial_state(struct mmc_host *host) 987 { 988 if (host->cqe_on) 989 host->cqe_ops->cqe_off(host); 990 991 mmc_retune_disable(host); 992 993 if (mmc_host_is_spi(host)) 994 host->ios.chip_select = MMC_CS_HIGH; 995 else 996 host->ios.chip_select = MMC_CS_DONTCARE; 997 host->ios.bus_mode = MMC_BUSMODE_PUSHPULL; 998 host->ios.bus_width = MMC_BUS_WIDTH_1; 999 host->ios.timing = MMC_TIMING_LEGACY; 1000 host->ios.drv_type = 0; 1001 host->ios.enhanced_strobe = false; 1002 1003 /* 1004 * Make sure we are in non-enhanced strobe mode before we 1005 * actually enable it in ext_csd. 1006 */ 1007 if ((host->caps2 & MMC_CAP2_HS400_ES) && 1008 host->ops->hs400_enhanced_strobe) 1009 host->ops->hs400_enhanced_strobe(host, &host->ios); 1010 1011 mmc_set_ios(host); 1012 1013 mmc_crypto_set_initial_state(host); 1014 } 1015 1016 /** 1017 * mmc_vdd_to_ocrbitnum - Convert a voltage to the OCR bit number 1018 * @vdd: voltage (mV) 1019 * @low_bits: prefer low bits in boundary cases 1020 * 1021 * This function returns the OCR bit number according to the provided @vdd 1022 * value. If conversion is not possible a negative errno value returned. 1023 * 1024 * Depending on the @low_bits flag the function prefers low or high OCR bits 1025 * on boundary voltages. For example, 1026 * with @low_bits = true, 3300 mV translates to ilog2(MMC_VDD_32_33); 1027 * with @low_bits = false, 3300 mV translates to ilog2(MMC_VDD_33_34); 1028 * 1029 * Any value in the [1951:1999] range translates to the ilog2(MMC_VDD_20_21). 1030 */ 1031 static int mmc_vdd_to_ocrbitnum(int vdd, bool low_bits) 1032 { 1033 const int max_bit = ilog2(MMC_VDD_35_36); 1034 int bit; 1035 1036 if (vdd < 1650 || vdd > 3600) 1037 return -EINVAL; 1038 1039 if (vdd >= 1650 && vdd <= 1950) 1040 return ilog2(MMC_VDD_165_195); 1041 1042 if (low_bits) 1043 vdd -= 1; 1044 1045 /* Base 2000 mV, step 100 mV, bit's base 8. */ 1046 bit = (vdd - 2000) / 100 + 8; 1047 if (bit > max_bit) 1048 return max_bit; 1049 return bit; 1050 } 1051 1052 /** 1053 * mmc_vddrange_to_ocrmask - Convert a voltage range to the OCR mask 1054 * @vdd_min: minimum voltage value (mV) 1055 * @vdd_max: maximum voltage value (mV) 1056 * 1057 * This function returns the OCR mask bits according to the provided @vdd_min 1058 * and @vdd_max values. If conversion is not possible the function returns 0. 1059 * 1060 * Notes wrt boundary cases: 1061 * This function sets the OCR bits for all boundary voltages, for example 1062 * [3300:3400] range is translated to MMC_VDD_32_33 | MMC_VDD_33_34 | 1063 * MMC_VDD_34_35 mask. 1064 */ 1065 u32 mmc_vddrange_to_ocrmask(int vdd_min, int vdd_max) 1066 { 1067 u32 mask = 0; 1068 1069 if (vdd_max < vdd_min) 1070 return 0; 1071 1072 /* Prefer high bits for the boundary vdd_max values. */ 1073 vdd_max = mmc_vdd_to_ocrbitnum(vdd_max, false); 1074 if (vdd_max < 0) 1075 return 0; 1076 1077 /* Prefer low bits for the boundary vdd_min values. */ 1078 vdd_min = mmc_vdd_to_ocrbitnum(vdd_min, true); 1079 if (vdd_min < 0) 1080 return 0; 1081 1082 /* Fill the mask, from max bit to min bit. */ 1083 while (vdd_max >= vdd_min) 1084 mask |= 1 << vdd_max--; 1085 1086 return mask; 1087 } 1088 1089 static int mmc_of_get_func_num(struct device_node *node) 1090 { 1091 u32 reg; 1092 int ret; 1093 1094 ret = of_property_read_u32(node, "reg", ®); 1095 if (ret < 0) 1096 return ret; 1097 1098 return reg; 1099 } 1100 1101 struct device_node *mmc_of_find_child_device(struct mmc_host *host, 1102 unsigned func_num) 1103 { 1104 struct device_node *node; 1105 1106 if (!host->parent || !host->parent->of_node) 1107 return NULL; 1108 1109 for_each_child_of_node(host->parent->of_node, node) { 1110 if (mmc_of_get_func_num(node) == func_num) 1111 return node; 1112 } 1113 1114 return NULL; 1115 } 1116 1117 /* 1118 * Mask off any voltages we don't support and select 1119 * the lowest voltage 1120 */ 1121 u32 mmc_select_voltage(struct mmc_host *host, u32 ocr) 1122 { 1123 int bit; 1124 1125 /* 1126 * Sanity check the voltages that the card claims to 1127 * support. 1128 */ 1129 if (ocr & 0x7F) { 1130 dev_warn(mmc_dev(host), 1131 "card claims to support voltages below defined range\n"); 1132 ocr &= ~0x7F; 1133 } 1134 1135 ocr &= host->ocr_avail; 1136 if (!ocr) { 1137 dev_warn(mmc_dev(host), "no support for card's volts\n"); 1138 return 0; 1139 } 1140 1141 if (!mmc_card_uhs2(host) && host->caps2 & MMC_CAP2_FULL_PWR_CYCLE) { 1142 bit = ffs(ocr) - 1; 1143 ocr &= 3 << bit; 1144 mmc_power_cycle(host, ocr); 1145 } else { 1146 bit = fls(ocr) - 1; 1147 /* 1148 * The bit variable represents the highest voltage bit set in 1149 * the OCR register. 1150 * To keep a range of 2 values (e.g. 3.2V/3.3V and 3.3V/3.4V), 1151 * we must shift the mask '3' with (bit - 1). 1152 */ 1153 ocr &= 3 << (bit - 1); 1154 if (bit != host->ios.vdd) 1155 dev_warn(mmc_dev(host), "exceeding card's volts\n"); 1156 } 1157 1158 return ocr; 1159 } 1160 1161 int mmc_set_signal_voltage(struct mmc_host *host, int signal_voltage) 1162 { 1163 int err = 0; 1164 int old_signal_voltage = host->ios.signal_voltage; 1165 1166 host->ios.signal_voltage = signal_voltage; 1167 if (host->ops->start_signal_voltage_switch) 1168 err = host->ops->start_signal_voltage_switch(host, &host->ios); 1169 1170 if (err) 1171 host->ios.signal_voltage = old_signal_voltage; 1172 1173 return err; 1174 1175 } 1176 1177 void mmc_set_initial_signal_voltage(struct mmc_host *host) 1178 { 1179 /* Try to set signal voltage to 3.3V but fall back to 1.8v or 1.2v */ 1180 if (!mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_330)) 1181 dev_dbg(mmc_dev(host), "Initial signal voltage of 3.3v\n"); 1182 else if (!mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_180)) 1183 dev_dbg(mmc_dev(host), "Initial signal voltage of 1.8v\n"); 1184 else if (!mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_120)) 1185 dev_dbg(mmc_dev(host), "Initial signal voltage of 1.2v\n"); 1186 } 1187 1188 int mmc_host_set_uhs_voltage(struct mmc_host *host) 1189 { 1190 u32 clock; 1191 1192 /* 1193 * During a signal voltage level switch, the clock must be gated 1194 * for 5 ms according to the SD spec 1195 */ 1196 clock = host->ios.clock; 1197 host->ios.clock = 0; 1198 mmc_set_ios(host); 1199 1200 if (mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_180)) 1201 return -EAGAIN; 1202 1203 /* Keep clock gated for at least 10 ms, though spec only says 5 ms */ 1204 mmc_delay(10); 1205 host->ios.clock = clock; 1206 mmc_set_ios(host); 1207 1208 return 0; 1209 } 1210 1211 int mmc_set_uhs_voltage(struct mmc_host *host, u32 ocr) 1212 { 1213 struct mmc_command cmd = {}; 1214 int err = 0; 1215 1216 /* 1217 * If we cannot switch voltages, return failure so the caller 1218 * can continue without UHS mode 1219 */ 1220 if (!host->ops->start_signal_voltage_switch) 1221 return -EPERM; 1222 if (!host->ops->card_busy) 1223 pr_warn("%s: cannot verify signal voltage switch\n", 1224 mmc_hostname(host)); 1225 1226 cmd.opcode = SD_SWITCH_VOLTAGE; 1227 cmd.arg = 0; 1228 cmd.flags = MMC_RSP_R1 | MMC_CMD_AC; 1229 1230 err = mmc_wait_for_cmd(host, &cmd, 0); 1231 if (err) 1232 goto power_cycle; 1233 1234 if (!mmc_host_is_spi(host) && (cmd.resp[0] & R1_ERROR)) 1235 return -EIO; 1236 1237 /* 1238 * The card should drive cmd and dat[0:3] low immediately 1239 * after the response of cmd11, but wait 1 ms to be sure 1240 */ 1241 mmc_delay(1); 1242 if (host->ops->card_busy && !host->ops->card_busy(host)) { 1243 err = -EAGAIN; 1244 goto power_cycle; 1245 } 1246 1247 if (mmc_host_set_uhs_voltage(host)) { 1248 /* 1249 * Voltages may not have been switched, but we've already 1250 * sent CMD11, so a power cycle is required anyway 1251 */ 1252 err = -EAGAIN; 1253 goto power_cycle; 1254 } 1255 1256 /* Wait for at least 1 ms according to spec */ 1257 mmc_delay(1); 1258 1259 /* 1260 * Failure to switch is indicated by the card holding 1261 * dat[0:3] low 1262 */ 1263 if (host->ops->card_busy && host->ops->card_busy(host)) 1264 err = -EAGAIN; 1265 1266 power_cycle: 1267 if (err) { 1268 pr_debug("%s: Signal voltage switch failed, " 1269 "power cycling card\n", mmc_hostname(host)); 1270 mmc_power_cycle(host, ocr); 1271 } 1272 1273 return err; 1274 } 1275 1276 /* 1277 * Select timing parameters for host. 1278 */ 1279 void mmc_set_timing(struct mmc_host *host, unsigned int timing) 1280 { 1281 host->ios.timing = timing; 1282 mmc_set_ios(host); 1283 } 1284 1285 /* 1286 * Select appropriate driver type for host. 1287 */ 1288 void mmc_set_driver_type(struct mmc_host *host, unsigned int drv_type) 1289 { 1290 host->ios.drv_type = drv_type; 1291 mmc_set_ios(host); 1292 } 1293 1294 int mmc_select_drive_strength(struct mmc_card *card, unsigned int max_dtr, 1295 int card_drv_type, int *drv_type) 1296 { 1297 struct mmc_host *host = card->host; 1298 int host_drv_type = SD_DRIVER_TYPE_B; 1299 1300 *drv_type = 0; 1301 1302 if (!host->ops->select_drive_strength) 1303 return 0; 1304 1305 /* Use SD definition of driver strength for hosts */ 1306 if (host->caps & MMC_CAP_DRIVER_TYPE_A) 1307 host_drv_type |= SD_DRIVER_TYPE_A; 1308 1309 if (host->caps & MMC_CAP_DRIVER_TYPE_C) 1310 host_drv_type |= SD_DRIVER_TYPE_C; 1311 1312 if (host->caps & MMC_CAP_DRIVER_TYPE_D) 1313 host_drv_type |= SD_DRIVER_TYPE_D; 1314 1315 /* 1316 * The drive strength that the hardware can support 1317 * depends on the board design. Pass the appropriate 1318 * information and let the hardware specific code 1319 * return what is possible given the options 1320 */ 1321 return host->ops->select_drive_strength(card, max_dtr, 1322 host_drv_type, 1323 card_drv_type, 1324 drv_type); 1325 } 1326 1327 /* 1328 * Apply power to the MMC stack. This is a two-stage process. 1329 * First, we enable power to the card without the clock running. 1330 * We then wait a bit for the power to stabilise. Finally, 1331 * enable the bus drivers and clock to the card. 1332 * 1333 * We must _NOT_ enable the clock prior to power stablising. 1334 * 1335 * If a host does all the power sequencing itself, ignore the 1336 * initial MMC_POWER_UP stage. 1337 */ 1338 void mmc_power_up(struct mmc_host *host, u32 ocr) 1339 { 1340 if (host->ios.power_mode == MMC_POWER_ON) 1341 return; 1342 1343 mmc_pwrseq_pre_power_on(host); 1344 1345 host->ios.vdd = fls(ocr) - 1; 1346 host->ios.power_mode = MMC_POWER_UP; 1347 /* Set initial state and call mmc_set_ios */ 1348 mmc_set_initial_state(host); 1349 1350 mmc_set_initial_signal_voltage(host); 1351 1352 /* 1353 * This delay should be sufficient to allow the power supply 1354 * to reach the minimum voltage. 1355 */ 1356 mmc_delay(host->ios.power_delay_ms); 1357 1358 mmc_pwrseq_post_power_on(host); 1359 1360 host->ios.clock = host->f_init; 1361 1362 host->ios.power_mode = MMC_POWER_ON; 1363 mmc_set_ios(host); 1364 1365 /* 1366 * This delay must be at least 74 clock sizes, or 1 ms, or the 1367 * time required to reach a stable voltage. 1368 */ 1369 mmc_delay(host->ios.power_delay_ms); 1370 } 1371 1372 void mmc_power_off(struct mmc_host *host) 1373 { 1374 if (host->ios.power_mode == MMC_POWER_OFF) 1375 return; 1376 1377 mmc_pwrseq_power_off(host); 1378 1379 host->ios.clock = 0; 1380 host->ios.vdd = 0; 1381 1382 host->ios.power_mode = MMC_POWER_OFF; 1383 /* Set initial state and call mmc_set_ios */ 1384 mmc_set_initial_state(host); 1385 1386 /* 1387 * Some configurations, such as the 802.11 SDIO card in the OLPC 1388 * XO-1.5, require a short delay after poweroff before the card 1389 * can be successfully turned on again. 1390 */ 1391 mmc_delay(1); 1392 } 1393 1394 void mmc_power_cycle(struct mmc_host *host, u32 ocr) 1395 { 1396 mmc_power_off(host); 1397 /* Wait at least 1 ms according to SD spec */ 1398 mmc_delay(1); 1399 mmc_power_up(host, ocr); 1400 } 1401 1402 /* 1403 * Assign a mmc bus handler to a host. Only one bus handler may control a 1404 * host at any given time. 1405 */ 1406 void mmc_attach_bus(struct mmc_host *host, const struct mmc_bus_ops *ops) 1407 { 1408 host->bus_ops = ops; 1409 } 1410 1411 /* 1412 * Remove the current bus handler from a host. 1413 */ 1414 void mmc_detach_bus(struct mmc_host *host) 1415 { 1416 host->bus_ops = NULL; 1417 } 1418 1419 void _mmc_detect_change(struct mmc_host *host, unsigned long delay, bool cd_irq) 1420 { 1421 /* 1422 * Prevent system sleep for 5s to allow user space to consume the 1423 * corresponding uevent. This is especially useful, when CD irq is used 1424 * as a system wakeup, but doesn't hurt in other cases. 1425 */ 1426 if (cd_irq && !(host->caps & MMC_CAP_NEEDS_POLL)) 1427 __pm_wakeup_event(host->ws, 5000); 1428 1429 host->detect_change = 1; 1430 mmc_schedule_delayed_work(&host->detect, delay); 1431 } 1432 1433 /** 1434 * mmc_detect_change - process change of state on a MMC socket 1435 * @host: host which changed state. 1436 * @delay: optional delay to wait before detection (jiffies) 1437 * 1438 * MMC drivers should call this when they detect a card has been 1439 * inserted or removed. The MMC layer will confirm that any 1440 * present card is still functional, and initialize any newly 1441 * inserted. 1442 */ 1443 void mmc_detect_change(struct mmc_host *host, unsigned long delay) 1444 { 1445 _mmc_detect_change(host, delay, true); 1446 } 1447 EXPORT_SYMBOL(mmc_detect_change); 1448 1449 void mmc_init_erase(struct mmc_card *card) 1450 { 1451 unsigned int sz; 1452 1453 if (is_power_of_2(card->erase_size)) 1454 card->erase_shift = ffs(card->erase_size) - 1; 1455 else 1456 card->erase_shift = 0; 1457 1458 /* 1459 * It is possible to erase an arbitrarily large area of an SD or MMC 1460 * card. That is not desirable because it can take a long time 1461 * (minutes) potentially delaying more important I/O, and also the 1462 * timeout calculations become increasingly hugely over-estimated. 1463 * Consequently, 'pref_erase' is defined as a guide to limit erases 1464 * to that size and alignment. 1465 * 1466 * For SD cards that define Allocation Unit size, limit erases to one 1467 * Allocation Unit at a time. 1468 * For MMC, have a stab at ai good value and for modern cards it will 1469 * end up being 4MiB. Note that if the value is too small, it can end 1470 * up taking longer to erase. Also note, erase_size is already set to 1471 * High Capacity Erase Size if available when this function is called. 1472 */ 1473 if (mmc_card_sd(card) && card->ssr.au) { 1474 card->pref_erase = card->ssr.au; 1475 card->erase_shift = ffs(card->ssr.au) - 1; 1476 } else if (card->erase_size) { 1477 sz = (card->csd.capacity << (card->csd.read_blkbits - 9)) >> 11; 1478 if (sz < 128) 1479 card->pref_erase = 512 * 1024 / 512; 1480 else if (sz < 512) 1481 card->pref_erase = 1024 * 1024 / 512; 1482 else if (sz < 1024) 1483 card->pref_erase = 2 * 1024 * 1024 / 512; 1484 else 1485 card->pref_erase = 4 * 1024 * 1024 / 512; 1486 if (card->pref_erase < card->erase_size) 1487 card->pref_erase = card->erase_size; 1488 else { 1489 sz = card->pref_erase % card->erase_size; 1490 if (sz) 1491 card->pref_erase += card->erase_size - sz; 1492 } 1493 } else 1494 card->pref_erase = 0; 1495 } 1496 1497 static bool is_trim_arg(unsigned int arg) 1498 { 1499 return (arg & MMC_TRIM_OR_DISCARD_ARGS) && arg != MMC_DISCARD_ARG; 1500 } 1501 1502 static unsigned int mmc_mmc_erase_timeout(struct mmc_card *card, 1503 unsigned int arg, unsigned int qty) 1504 { 1505 unsigned int erase_timeout; 1506 1507 if (arg == MMC_DISCARD_ARG || 1508 (arg == MMC_TRIM_ARG && card->ext_csd.rev >= 6)) { 1509 erase_timeout = card->ext_csd.trim_timeout; 1510 } else if (card->ext_csd.erase_group_def & 1) { 1511 /* High Capacity Erase Group Size uses HC timeouts */ 1512 if (arg == MMC_TRIM_ARG) 1513 erase_timeout = card->ext_csd.trim_timeout; 1514 else 1515 erase_timeout = card->ext_csd.hc_erase_timeout; 1516 } else { 1517 /* CSD Erase Group Size uses write timeout */ 1518 unsigned int mult = (10 << card->csd.r2w_factor); 1519 unsigned int timeout_clks = card->csd.taac_clks * mult; 1520 unsigned int timeout_us; 1521 1522 /* Avoid overflow: e.g. taac_ns=80000000 mult=1280 */ 1523 if (card->csd.taac_ns < 1000000) 1524 timeout_us = (card->csd.taac_ns * mult) / 1000; 1525 else 1526 timeout_us = (card->csd.taac_ns / 1000) * mult; 1527 1528 /* 1529 * ios.clock is only a target. The real clock rate might be 1530 * less but not that much less, so fudge it by multiplying by 2. 1531 */ 1532 timeout_clks <<= 1; 1533 timeout_us += (timeout_clks * 1000) / 1534 (card->host->ios.clock / 1000); 1535 1536 erase_timeout = timeout_us / 1000; 1537 1538 /* 1539 * Theoretically, the calculation could underflow so round up 1540 * to 1ms in that case. 1541 */ 1542 if (!erase_timeout) 1543 erase_timeout = 1; 1544 } 1545 1546 /* Multiplier for secure operations */ 1547 if (arg & MMC_SECURE_ARGS) { 1548 if (arg == MMC_SECURE_ERASE_ARG) 1549 erase_timeout *= card->ext_csd.sec_erase_mult; 1550 else 1551 erase_timeout *= card->ext_csd.sec_trim_mult; 1552 } 1553 1554 erase_timeout *= qty; 1555 1556 /* 1557 * Ensure at least a 1 second timeout for SPI as per 1558 * 'mmc_set_data_timeout()' 1559 */ 1560 if (mmc_host_is_spi(card->host) && erase_timeout < 1000) 1561 erase_timeout = 1000; 1562 1563 return erase_timeout; 1564 } 1565 1566 static unsigned int mmc_sd_erase_timeout(struct mmc_card *card, 1567 unsigned int arg, 1568 unsigned int qty) 1569 { 1570 unsigned int erase_timeout; 1571 1572 /* for DISCARD none of the below calculation applies. 1573 * the busy timeout is 250msec per discard command. 1574 */ 1575 if (arg == SD_DISCARD_ARG) 1576 return SD_DISCARD_TIMEOUT_MS; 1577 1578 if (card->ssr.erase_timeout) { 1579 /* Erase timeout specified in SD Status Register (SSR) */ 1580 erase_timeout = card->ssr.erase_timeout * qty + 1581 card->ssr.erase_offset; 1582 } else { 1583 /* 1584 * Erase timeout not specified in SD Status Register (SSR) so 1585 * use 250ms per write block. 1586 */ 1587 erase_timeout = 250 * qty; 1588 } 1589 1590 /* Must not be less than 1 second */ 1591 if (erase_timeout < 1000) 1592 erase_timeout = 1000; 1593 1594 return erase_timeout; 1595 } 1596 1597 static unsigned int mmc_erase_timeout(struct mmc_card *card, 1598 unsigned int arg, 1599 unsigned int qty) 1600 { 1601 if (mmc_card_sd(card)) 1602 return mmc_sd_erase_timeout(card, arg, qty); 1603 else 1604 return mmc_mmc_erase_timeout(card, arg, qty); 1605 } 1606 1607 static int mmc_do_erase(struct mmc_card *card, sector_t from, 1608 sector_t to, unsigned int arg) 1609 { 1610 struct mmc_command cmd = {}; 1611 unsigned int qty = 0, busy_timeout = 0; 1612 bool use_r1b_resp; 1613 int err; 1614 1615 mmc_retune_hold(card->host); 1616 1617 /* 1618 * qty is used to calculate the erase timeout which depends on how many 1619 * erase groups (or allocation units in SD terminology) are affected. 1620 * We count erasing part of an erase group as one erase group. 1621 * For SD, the allocation units are always a power of 2. For MMC, the 1622 * erase group size is almost certainly also power of 2, but it does not 1623 * seem to insist on that in the JEDEC standard, so we fall back to 1624 * division in that case. SD may not specify an allocation unit size, 1625 * in which case the timeout is based on the number of write blocks. 1626 * 1627 * Note that the timeout for secure trim 2 will only be correct if the 1628 * number of erase groups specified is the same as the total of all 1629 * preceding secure trim 1 commands. Since the power may have been 1630 * lost since the secure trim 1 commands occurred, it is generally 1631 * impossible to calculate the secure trim 2 timeout correctly. 1632 */ 1633 if (card->erase_shift) 1634 qty += ((to >> card->erase_shift) - 1635 (from >> card->erase_shift)) + 1; 1636 else if (mmc_card_sd(card)) 1637 qty += to - from + 1; 1638 else 1639 qty += (mmc_sector_div(to, card->erase_size) - 1640 mmc_sector_div(from, card->erase_size)) + 1; 1641 1642 if (!mmc_card_blockaddr(card)) { 1643 from <<= 9; 1644 to <<= 9; 1645 } 1646 1647 if (mmc_card_sd(card)) 1648 cmd.opcode = SD_ERASE_WR_BLK_START; 1649 else 1650 cmd.opcode = MMC_ERASE_GROUP_START; 1651 cmd.arg = from; 1652 cmd.flags = MMC_RSP_SPI_R1 | MMC_RSP_R1 | MMC_CMD_AC; 1653 1654 if (mmc_card_ult_capacity(card)) { 1655 cmd.ext_addr = from >> 32; 1656 cmd.has_ext_addr = true; 1657 } 1658 1659 err = mmc_wait_for_cmd(card->host, &cmd, 0); 1660 if (err) { 1661 pr_err("mmc_erase: group start error %d, " 1662 "status %#x\n", err, cmd.resp[0]); 1663 err = -EIO; 1664 goto out; 1665 } 1666 1667 memset(&cmd, 0, sizeof(struct mmc_command)); 1668 if (mmc_card_sd(card)) 1669 cmd.opcode = SD_ERASE_WR_BLK_END; 1670 else 1671 cmd.opcode = MMC_ERASE_GROUP_END; 1672 cmd.arg = to; 1673 cmd.flags = MMC_RSP_SPI_R1 | MMC_RSP_R1 | MMC_CMD_AC; 1674 1675 if (mmc_card_ult_capacity(card)) { 1676 cmd.ext_addr = to >> 32; 1677 cmd.has_ext_addr = true; 1678 } 1679 1680 err = mmc_wait_for_cmd(card->host, &cmd, 0); 1681 if (err) { 1682 pr_err("mmc_erase: group end error %d, status %#x\n", 1683 err, cmd.resp[0]); 1684 err = -EIO; 1685 goto out; 1686 } 1687 1688 memset(&cmd, 0, sizeof(struct mmc_command)); 1689 cmd.opcode = MMC_ERASE; 1690 cmd.arg = arg; 1691 busy_timeout = mmc_erase_timeout(card, arg, qty); 1692 use_r1b_resp = mmc_prepare_busy_cmd(card->host, &cmd, busy_timeout); 1693 1694 err = mmc_wait_for_cmd(card->host, &cmd, 0); 1695 if (err) { 1696 pr_err("mmc_erase: erase error %d, status %#x\n", 1697 err, cmd.resp[0]); 1698 err = -EIO; 1699 goto out; 1700 } 1701 1702 if (mmc_host_is_spi(card->host)) 1703 goto out; 1704 1705 /* 1706 * In case of when R1B + MMC_CAP_WAIT_WHILE_BUSY is used, the polling 1707 * shall be avoided. 1708 */ 1709 if ((card->host->caps & MMC_CAP_WAIT_WHILE_BUSY) && use_r1b_resp) 1710 goto out; 1711 1712 /* Let's poll to find out when the erase operation completes. */ 1713 err = mmc_poll_for_busy(card, busy_timeout, false, MMC_BUSY_ERASE); 1714 1715 out: 1716 mmc_retune_release(card->host); 1717 return err; 1718 } 1719 1720 static unsigned int mmc_align_erase_size(struct mmc_card *card, 1721 sector_t *from, 1722 sector_t *to, 1723 unsigned int nr) 1724 { 1725 sector_t from_new = *from; 1726 unsigned int nr_new = nr, rem; 1727 1728 /* 1729 * When the 'card->erase_size' is power of 2, we can use round_up/down() 1730 * to align the erase size efficiently. 1731 */ 1732 if (is_power_of_2(card->erase_size)) { 1733 sector_t temp = from_new; 1734 1735 from_new = round_up(temp, card->erase_size); 1736 rem = from_new - temp; 1737 1738 if (nr_new > rem) 1739 nr_new -= rem; 1740 else 1741 return 0; 1742 1743 nr_new = round_down(nr_new, card->erase_size); 1744 } else { 1745 rem = mmc_sector_mod(from_new, card->erase_size); 1746 if (rem) { 1747 rem = card->erase_size - rem; 1748 from_new += rem; 1749 if (nr_new > rem) 1750 nr_new -= rem; 1751 else 1752 return 0; 1753 } 1754 1755 rem = nr_new % card->erase_size; 1756 if (rem) 1757 nr_new -= rem; 1758 } 1759 1760 if (nr_new == 0) 1761 return 0; 1762 1763 *to = from_new + nr_new; 1764 *from = from_new; 1765 1766 return nr_new; 1767 } 1768 1769 /** 1770 * mmc_erase - erase sectors. 1771 * @card: card to erase 1772 * @from: first sector to erase 1773 * @nr: number of sectors to erase 1774 * @arg: erase command argument 1775 * 1776 * Caller must claim host before calling this function. 1777 */ 1778 int mmc_erase(struct mmc_card *card, sector_t from, unsigned int nr, 1779 unsigned int arg) 1780 { 1781 unsigned int rem; 1782 sector_t to = from + nr; 1783 1784 int err; 1785 1786 if (!(card->csd.cmdclass & CCC_ERASE)) 1787 return -EOPNOTSUPP; 1788 1789 if (!card->erase_size) 1790 return -EOPNOTSUPP; 1791 1792 if (mmc_card_sd(card) && arg != SD_ERASE_ARG && arg != SD_DISCARD_ARG) 1793 return -EOPNOTSUPP; 1794 1795 if (mmc_card_mmc(card) && (arg & MMC_SECURE_ARGS) && 1796 !(card->ext_csd.sec_feature_support & EXT_CSD_SEC_ER_EN)) 1797 return -EOPNOTSUPP; 1798 1799 if (mmc_card_mmc(card) && is_trim_arg(arg) && 1800 !(card->ext_csd.sec_feature_support & EXT_CSD_SEC_GB_CL_EN)) 1801 return -EOPNOTSUPP; 1802 1803 if (arg == MMC_SECURE_ERASE_ARG) { 1804 if (mmc_sector_mod(from, card->erase_size) || nr % card->erase_size) 1805 return -EINVAL; 1806 } 1807 1808 if (arg == MMC_ERASE_ARG) 1809 nr = mmc_align_erase_size(card, &from, &to, nr); 1810 1811 if (nr == 0) 1812 return 0; 1813 1814 if (to <= from) 1815 return -EINVAL; 1816 1817 /* 'from' and 'to' are inclusive */ 1818 to -= 1; 1819 1820 /* 1821 * Special case where only one erase-group fits in the timeout budget: 1822 * If the region crosses an erase-group boundary on this particular 1823 * case, we will be trimming more than one erase-group which, does not 1824 * fit in the timeout budget of the controller, so we need to split it 1825 * and call mmc_do_erase() twice if necessary. This special case is 1826 * identified by the card->eg_boundary flag. 1827 */ 1828 rem = card->erase_size - mmc_sector_mod(from, card->erase_size); 1829 if ((arg & MMC_TRIM_OR_DISCARD_ARGS) && card->eg_boundary && nr > rem) { 1830 err = mmc_do_erase(card, from, from + rem - 1, arg); 1831 from += rem; 1832 if ((err) || (to <= from)) 1833 return err; 1834 } 1835 1836 return mmc_do_erase(card, from, to, arg); 1837 } 1838 EXPORT_SYMBOL(mmc_erase); 1839 1840 int mmc_can_erase(struct mmc_card *card) 1841 { 1842 if (card->csd.cmdclass & CCC_ERASE && card->erase_size) 1843 return 1; 1844 return 0; 1845 } 1846 EXPORT_SYMBOL(mmc_can_erase); 1847 1848 int mmc_can_trim(struct mmc_card *card) 1849 { 1850 if ((card->ext_csd.sec_feature_support & EXT_CSD_SEC_GB_CL_EN) && 1851 (!(card->quirks & MMC_QUIRK_TRIM_BROKEN))) 1852 return 1; 1853 return 0; 1854 } 1855 EXPORT_SYMBOL(mmc_can_trim); 1856 1857 int mmc_can_discard(struct mmc_card *card) 1858 { 1859 /* 1860 * As there's no way to detect the discard support bit at v4.5 1861 * use the s/w feature support filed. 1862 */ 1863 if (card->ext_csd.feature_support & MMC_DISCARD_FEATURE) 1864 return 1; 1865 return 0; 1866 } 1867 EXPORT_SYMBOL(mmc_can_discard); 1868 1869 int mmc_can_sanitize(struct mmc_card *card) 1870 { 1871 if (!mmc_can_trim(card) && !mmc_can_erase(card)) 1872 return 0; 1873 if (card->ext_csd.sec_feature_support & EXT_CSD_SEC_SANITIZE) 1874 return 1; 1875 return 0; 1876 } 1877 1878 int mmc_can_secure_erase_trim(struct mmc_card *card) 1879 { 1880 if ((card->ext_csd.sec_feature_support & EXT_CSD_SEC_ER_EN) && 1881 !(card->quirks & MMC_QUIRK_SEC_ERASE_TRIM_BROKEN)) 1882 return 1; 1883 return 0; 1884 } 1885 EXPORT_SYMBOL(mmc_can_secure_erase_trim); 1886 1887 int mmc_erase_group_aligned(struct mmc_card *card, sector_t from, 1888 unsigned int nr) 1889 { 1890 if (!card->erase_size) 1891 return 0; 1892 if (mmc_sector_mod(from, card->erase_size) || nr % card->erase_size) 1893 return 0; 1894 return 1; 1895 } 1896 EXPORT_SYMBOL(mmc_erase_group_aligned); 1897 1898 static unsigned int mmc_do_calc_max_discard(struct mmc_card *card, 1899 unsigned int arg) 1900 { 1901 struct mmc_host *host = card->host; 1902 unsigned int max_discard, x, y, qty = 0, max_qty, min_qty, timeout; 1903 unsigned int last_timeout = 0; 1904 unsigned int max_busy_timeout = host->max_busy_timeout ? 1905 host->max_busy_timeout : MMC_ERASE_TIMEOUT_MS; 1906 1907 if (card->erase_shift) { 1908 max_qty = UINT_MAX >> card->erase_shift; 1909 min_qty = card->pref_erase >> card->erase_shift; 1910 } else if (mmc_card_sd(card)) { 1911 max_qty = UINT_MAX; 1912 min_qty = card->pref_erase; 1913 } else { 1914 max_qty = UINT_MAX / card->erase_size; 1915 min_qty = card->pref_erase / card->erase_size; 1916 } 1917 1918 /* 1919 * We should not only use 'host->max_busy_timeout' as the limitation 1920 * when deciding the max discard sectors. We should set a balance value 1921 * to improve the erase speed, and it can not get too long timeout at 1922 * the same time. 1923 * 1924 * Here we set 'card->pref_erase' as the minimal discard sectors no 1925 * matter what size of 'host->max_busy_timeout', but if the 1926 * 'host->max_busy_timeout' is large enough for more discard sectors, 1927 * then we can continue to increase the max discard sectors until we 1928 * get a balance value. In cases when the 'host->max_busy_timeout' 1929 * isn't specified, use the default max erase timeout. 1930 */ 1931 do { 1932 y = 0; 1933 for (x = 1; x && x <= max_qty && max_qty - x >= qty; x <<= 1) { 1934 timeout = mmc_erase_timeout(card, arg, qty + x); 1935 1936 if (qty + x > min_qty && timeout > max_busy_timeout) 1937 break; 1938 1939 if (timeout < last_timeout) 1940 break; 1941 last_timeout = timeout; 1942 y = x; 1943 } 1944 qty += y; 1945 } while (y); 1946 1947 if (!qty) 1948 return 0; 1949 1950 /* 1951 * When specifying a sector range to trim, chances are we might cross 1952 * an erase-group boundary even if the amount of sectors is less than 1953 * one erase-group. 1954 * If we can only fit one erase-group in the controller timeout budget, 1955 * we have to care that erase-group boundaries are not crossed by a 1956 * single trim operation. We flag that special case with "eg_boundary". 1957 * In all other cases we can just decrement qty and pretend that we 1958 * always touch (qty + 1) erase-groups as a simple optimization. 1959 */ 1960 if (qty == 1) 1961 card->eg_boundary = 1; 1962 else 1963 qty--; 1964 1965 /* Convert qty to sectors */ 1966 if (card->erase_shift) 1967 max_discard = qty << card->erase_shift; 1968 else if (mmc_card_sd(card)) 1969 max_discard = qty + 1; 1970 else 1971 max_discard = qty * card->erase_size; 1972 1973 return max_discard; 1974 } 1975 1976 unsigned int mmc_calc_max_discard(struct mmc_card *card) 1977 { 1978 struct mmc_host *host = card->host; 1979 unsigned int max_discard, max_trim; 1980 1981 /* 1982 * Without erase_group_def set, MMC erase timeout depends on clock 1983 * frequence which can change. In that case, the best choice is 1984 * just the preferred erase size. 1985 */ 1986 if (mmc_card_mmc(card) && !(card->ext_csd.erase_group_def & 1)) 1987 return card->pref_erase; 1988 1989 max_discard = mmc_do_calc_max_discard(card, MMC_ERASE_ARG); 1990 if (mmc_can_trim(card)) { 1991 max_trim = mmc_do_calc_max_discard(card, MMC_TRIM_ARG); 1992 if (max_trim < max_discard || max_discard == 0) 1993 max_discard = max_trim; 1994 } else if (max_discard < card->erase_size) { 1995 max_discard = 0; 1996 } 1997 pr_debug("%s: calculated max. discard sectors %u for timeout %u ms\n", 1998 mmc_hostname(host), max_discard, host->max_busy_timeout ? 1999 host->max_busy_timeout : MMC_ERASE_TIMEOUT_MS); 2000 return max_discard; 2001 } 2002 EXPORT_SYMBOL(mmc_calc_max_discard); 2003 2004 bool mmc_card_is_blockaddr(struct mmc_card *card) 2005 { 2006 return card ? mmc_card_blockaddr(card) : false; 2007 } 2008 EXPORT_SYMBOL(mmc_card_is_blockaddr); 2009 2010 int mmc_set_blocklen(struct mmc_card *card, unsigned int blocklen) 2011 { 2012 struct mmc_command cmd = {}; 2013 2014 if (mmc_card_blockaddr(card) || mmc_card_ddr52(card) || 2015 mmc_card_hs400(card) || mmc_card_hs400es(card)) 2016 return 0; 2017 2018 cmd.opcode = MMC_SET_BLOCKLEN; 2019 cmd.arg = blocklen; 2020 cmd.flags = MMC_RSP_SPI_R1 | MMC_RSP_R1 | MMC_CMD_AC; 2021 return mmc_wait_for_cmd(card->host, &cmd, 5); 2022 } 2023 EXPORT_SYMBOL(mmc_set_blocklen); 2024 2025 static void mmc_hw_reset_for_init(struct mmc_host *host) 2026 { 2027 mmc_pwrseq_reset(host); 2028 2029 if (!(host->caps & MMC_CAP_HW_RESET) || !host->ops->card_hw_reset) 2030 return; 2031 host->ops->card_hw_reset(host); 2032 } 2033 2034 /** 2035 * mmc_hw_reset - reset the card in hardware 2036 * @card: card to be reset 2037 * 2038 * Hard reset the card. This function is only for upper layers, like the 2039 * block layer or card drivers. You cannot use it in host drivers (struct 2040 * mmc_card might be gone then). 2041 * 2042 * Return: 0 on success, -errno on failure 2043 */ 2044 int mmc_hw_reset(struct mmc_card *card) 2045 { 2046 struct mmc_host *host = card->host; 2047 int ret; 2048 2049 ret = host->bus_ops->hw_reset(host); 2050 if (ret < 0) 2051 pr_warn("%s: tried to HW reset card, got error %d\n", 2052 mmc_hostname(host), ret); 2053 2054 return ret; 2055 } 2056 EXPORT_SYMBOL(mmc_hw_reset); 2057 2058 int mmc_sw_reset(struct mmc_card *card) 2059 { 2060 struct mmc_host *host = card->host; 2061 int ret; 2062 2063 if (!host->bus_ops->sw_reset) 2064 return -EOPNOTSUPP; 2065 2066 ret = host->bus_ops->sw_reset(host); 2067 if (ret) 2068 pr_warn("%s: tried to SW reset card, got error %d\n", 2069 mmc_hostname(host), ret); 2070 2071 return ret; 2072 } 2073 EXPORT_SYMBOL(mmc_sw_reset); 2074 2075 static int mmc_rescan_try_freq(struct mmc_host *host, unsigned freq) 2076 { 2077 host->f_init = freq; 2078 2079 pr_debug("%s: %s: trying to init card at %u Hz\n", 2080 mmc_hostname(host), __func__, host->f_init); 2081 2082 mmc_power_up(host, host->ocr_avail); 2083 2084 /* 2085 * Some eMMCs (with VCCQ always on) may not be reset after power up, so 2086 * do a hardware reset if possible. 2087 */ 2088 mmc_hw_reset_for_init(host); 2089 2090 /* 2091 * sdio_reset sends CMD52 to reset card. Since we do not know 2092 * if the card is being re-initialized, just send it. CMD52 2093 * should be ignored by SD/eMMC cards. 2094 * Skip it if we already know that we do not support SDIO commands 2095 */ 2096 if (!(host->caps2 & MMC_CAP2_NO_SDIO)) 2097 sdio_reset(host); 2098 2099 mmc_go_idle(host); 2100 2101 if (!(host->caps2 & MMC_CAP2_NO_SD)) { 2102 if (mmc_send_if_cond_pcie(host, host->ocr_avail)) 2103 goto out; 2104 if (mmc_card_sd_express(host)) 2105 return 0; 2106 } 2107 2108 /* Order's important: probe SDIO, then SD, then MMC */ 2109 if (!(host->caps2 & MMC_CAP2_NO_SDIO)) 2110 if (!mmc_attach_sdio(host)) 2111 return 0; 2112 2113 if (!(host->caps2 & MMC_CAP2_NO_SD)) 2114 if (!mmc_attach_sd(host)) 2115 return 0; 2116 2117 if (!(host->caps2 & MMC_CAP2_NO_MMC)) 2118 if (!mmc_attach_mmc(host)) 2119 return 0; 2120 2121 out: 2122 mmc_power_off(host); 2123 return -EIO; 2124 } 2125 2126 int _mmc_detect_card_removed(struct mmc_host *host) 2127 { 2128 int ret; 2129 2130 if (!host->card || mmc_card_removed(host->card)) 2131 return 1; 2132 2133 ret = host->bus_ops->alive(host); 2134 2135 /* 2136 * Card detect status and alive check may be out of sync if card is 2137 * removed slowly, when card detect switch changes while card/slot 2138 * pads are still contacted in hardware (refer to "SD Card Mechanical 2139 * Addendum, Appendix C: Card Detection Switch"). So reschedule a 2140 * detect work 200ms later for this case. 2141 */ 2142 if (!ret && host->ops->get_cd && !host->ops->get_cd(host)) { 2143 mmc_detect_change(host, msecs_to_jiffies(200)); 2144 pr_debug("%s: card removed too slowly\n", mmc_hostname(host)); 2145 } 2146 2147 if (ret) { 2148 mmc_card_set_removed(host->card); 2149 pr_debug("%s: card remove detected\n", mmc_hostname(host)); 2150 } 2151 2152 return ret; 2153 } 2154 2155 int mmc_detect_card_removed(struct mmc_host *host) 2156 { 2157 struct mmc_card *card = host->card; 2158 int ret; 2159 2160 WARN_ON(!host->claimed); 2161 2162 if (!card) 2163 return 1; 2164 2165 if (!mmc_card_is_removable(host)) 2166 return 0; 2167 2168 ret = mmc_card_removed(card); 2169 /* 2170 * The card will be considered unchanged unless we have been asked to 2171 * detect a change or host requires polling to provide card detection. 2172 */ 2173 if (!host->detect_change && !(host->caps & MMC_CAP_NEEDS_POLL)) 2174 return ret; 2175 2176 host->detect_change = 0; 2177 if (!ret) { 2178 ret = _mmc_detect_card_removed(host); 2179 if (ret && (host->caps & MMC_CAP_NEEDS_POLL)) { 2180 /* 2181 * Schedule a detect work as soon as possible to let a 2182 * rescan handle the card removal. 2183 */ 2184 cancel_delayed_work(&host->detect); 2185 _mmc_detect_change(host, 0, false); 2186 } 2187 } 2188 2189 return ret; 2190 } 2191 EXPORT_SYMBOL(mmc_detect_card_removed); 2192 2193 int mmc_card_alternative_gpt_sector(struct mmc_card *card, sector_t *gpt_sector) 2194 { 2195 unsigned int boot_sectors_num; 2196 2197 if ((!(card->host->caps2 & MMC_CAP2_ALT_GPT_TEGRA))) 2198 return -EOPNOTSUPP; 2199 2200 /* filter out unrelated cards */ 2201 if (card->ext_csd.rev < 3 || 2202 !mmc_card_mmc(card) || 2203 !mmc_card_is_blockaddr(card) || 2204 mmc_card_is_removable(card->host)) 2205 return -ENOENT; 2206 2207 /* 2208 * eMMC storage has two special boot partitions in addition to the 2209 * main one. NVIDIA's bootloader linearizes eMMC boot0->boot1->main 2210 * accesses, this means that the partition table addresses are shifted 2211 * by the size of boot partitions. In accordance with the eMMC 2212 * specification, the boot partition size is calculated as follows: 2213 * 2214 * boot partition size = 128K byte x BOOT_SIZE_MULT 2215 * 2216 * Calculate number of sectors occupied by the both boot partitions. 2217 */ 2218 boot_sectors_num = card->ext_csd.raw_boot_mult * SZ_128K / 2219 SZ_512 * MMC_NUM_BOOT_PARTITION; 2220 2221 /* Defined by NVIDIA and used by Android devices. */ 2222 *gpt_sector = card->ext_csd.sectors - boot_sectors_num - 1; 2223 2224 return 0; 2225 } 2226 EXPORT_SYMBOL(mmc_card_alternative_gpt_sector); 2227 2228 void mmc_rescan(struct work_struct *work) 2229 { 2230 struct mmc_host *host = 2231 container_of(work, struct mmc_host, detect.work); 2232 int i; 2233 2234 if (host->rescan_disable) 2235 return; 2236 2237 /* If there is a non-removable card registered, only scan once */ 2238 if (!mmc_card_is_removable(host) && host->rescan_entered) 2239 return; 2240 host->rescan_entered = 1; 2241 2242 if (host->trigger_card_event && host->ops->card_event) { 2243 mmc_claim_host(host); 2244 host->ops->card_event(host); 2245 mmc_release_host(host); 2246 host->trigger_card_event = false; 2247 } 2248 2249 /* Verify a registered card to be functional, else remove it. */ 2250 if (host->bus_ops) 2251 host->bus_ops->detect(host); 2252 2253 host->detect_change = 0; 2254 2255 /* if there still is a card present, stop here */ 2256 if (host->bus_ops != NULL) 2257 goto out; 2258 2259 mmc_claim_host(host); 2260 if (mmc_card_is_removable(host) && host->ops->get_cd && 2261 host->ops->get_cd(host) == 0) { 2262 mmc_power_off(host); 2263 mmc_release_host(host); 2264 goto out; 2265 } 2266 2267 /* If an SD express card is present, then leave it as is. */ 2268 if (mmc_card_sd_express(host)) { 2269 mmc_release_host(host); 2270 goto out; 2271 } 2272 2273 /* 2274 * Ideally we should favor initialization of legacy SD cards and defer 2275 * UHS-II enumeration. However, it seems like cards doesn't reliably 2276 * announce their support for UHS-II in the response to the ACMD41, 2277 * while initializing the legacy SD interface. Therefore, let's start 2278 * with UHS-II for now. 2279 */ 2280 if (!mmc_attach_sd_uhs2(host)) { 2281 mmc_release_host(host); 2282 goto out; 2283 } 2284 2285 for (i = 0; i < ARRAY_SIZE(freqs); i++) { 2286 unsigned int freq = freqs[i]; 2287 if (freq > host->f_max) { 2288 if (i + 1 < ARRAY_SIZE(freqs)) 2289 continue; 2290 freq = host->f_max; 2291 } 2292 if (!mmc_rescan_try_freq(host, max(freq, host->f_min))) 2293 break; 2294 if (freqs[i] <= host->f_min) 2295 break; 2296 } 2297 2298 /* A non-removable card should have been detected by now. */ 2299 if (!mmc_card_is_removable(host) && !host->bus_ops) 2300 pr_info("%s: Failed to initialize a non-removable card", 2301 mmc_hostname(host)); 2302 2303 /* 2304 * Ignore the command timeout errors observed during 2305 * the card init as those are excepted. 2306 */ 2307 host->err_stats[MMC_ERR_CMD_TIMEOUT] = 0; 2308 mmc_release_host(host); 2309 2310 out: 2311 if (host->caps & MMC_CAP_NEEDS_POLL) 2312 mmc_schedule_delayed_work(&host->detect, HZ); 2313 } 2314 2315 void mmc_start_host(struct mmc_host *host) 2316 { 2317 bool power_up = !(host->caps2 & 2318 (MMC_CAP2_NO_PRESCAN_POWERUP | MMC_CAP2_SD_UHS2)); 2319 2320 host->f_init = max(min(freqs[0], host->f_max), host->f_min); 2321 host->rescan_disable = 0; 2322 2323 if (power_up) { 2324 mmc_claim_host(host); 2325 mmc_power_up(host, host->ocr_avail); 2326 mmc_release_host(host); 2327 } 2328 2329 mmc_gpiod_request_cd_irq(host); 2330 _mmc_detect_change(host, 0, false); 2331 } 2332 2333 void __mmc_stop_host(struct mmc_host *host) 2334 { 2335 if (host->rescan_disable) 2336 return; 2337 2338 if (host->slot.cd_irq >= 0) { 2339 mmc_gpio_set_cd_wake(host, false); 2340 disable_irq(host->slot.cd_irq); 2341 } 2342 2343 host->rescan_disable = 1; 2344 cancel_delayed_work_sync(&host->detect); 2345 } 2346 2347 void mmc_stop_host(struct mmc_host *host) 2348 { 2349 __mmc_stop_host(host); 2350 2351 /* clear pm flags now and let card drivers set them as needed */ 2352 host->pm_flags = 0; 2353 2354 if (host->bus_ops) { 2355 /* Calling bus_ops->remove() with a claimed host can deadlock */ 2356 host->bus_ops->remove(host); 2357 mmc_claim_host(host); 2358 mmc_detach_bus(host); 2359 mmc_power_off(host); 2360 mmc_release_host(host); 2361 return; 2362 } 2363 2364 mmc_claim_host(host); 2365 mmc_power_off(host); 2366 mmc_release_host(host); 2367 } 2368 2369 static int __init mmc_init(void) 2370 { 2371 int ret; 2372 2373 ret = mmc_register_bus(); 2374 if (ret) 2375 return ret; 2376 2377 ret = mmc_register_host_class(); 2378 if (ret) 2379 goto unregister_bus; 2380 2381 ret = sdio_register_bus(); 2382 if (ret) 2383 goto unregister_host_class; 2384 2385 return 0; 2386 2387 unregister_host_class: 2388 mmc_unregister_host_class(); 2389 unregister_bus: 2390 mmc_unregister_bus(); 2391 return ret; 2392 } 2393 2394 static void __exit mmc_exit(void) 2395 { 2396 sdio_unregister_bus(); 2397 mmc_unregister_host_class(); 2398 mmc_unregister_bus(); 2399 } 2400 2401 subsys_initcall(mmc_init); 2402 module_exit(mmc_exit); 2403 2404 MODULE_DESCRIPTION("MMC core driver"); 2405 MODULE_LICENSE("GPL"); 2406