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