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