2 * linux/drivers/mmc/mmc.c
4 * Copyright (C) 2003-2004 Russell King, All Rights Reserved.
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
10 #include <linux/config.h>
11 #include <linux/module.h>
12 #include <linux/init.h>
13 #include <linux/interrupt.h>
14 #include <linux/completion.h>
15 #include <linux/device.h>
16 #include <linux/delay.h>
17 #include <linux/pagemap.h>
18 #include <linux/err.h>
20 #include <linux/mmc/card.h>
21 #include <linux/mmc/host.h>
22 #include <linux/mmc/protocol.h>
26 #ifdef CONFIG_MMC_DEBUG
27 #define DBG(x...) printk(KERN_DEBUG x)
29 #define DBG(x...) do { } while (0)
35 * OCR Bit positions to 10s of Vdd mV.
37 static const unsigned short mmc_ocr_bit_to_vdd
[] = {
38 150, 155, 160, 165, 170, 180, 190, 200,
39 210, 220, 230, 240, 250, 260, 270, 280,
40 290, 300, 310, 320, 330, 340, 350, 360
43 static const unsigned int tran_exp
[] = {
44 10000, 100000, 1000000, 10000000,
48 static const unsigned char tran_mant
[] = {
49 0, 10, 12, 13, 15, 20, 25, 30,
50 35, 40, 45, 50, 55, 60, 70, 80,
53 static const unsigned int tacc_exp
[] = {
54 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000,
57 static const unsigned int tacc_mant
[] = {
58 0, 10, 12, 13, 15, 20, 25, 30,
59 35, 40, 45, 50, 55, 60, 70, 80,
64 * mmc_request_done - finish processing an MMC command
65 * @host: MMC host which completed command
66 * @mrq: MMC request which completed
68 * MMC drivers should call this function when they have completed
69 * their processing of a command. This should be called before the
70 * data part of the command has completed.
72 void mmc_request_done(struct mmc_host
*host
, struct mmc_request
*mrq
)
74 struct mmc_command
*cmd
= mrq
->cmd
;
75 int err
= mrq
->cmd
->error
;
76 DBG("MMC: req done (%02x): %d: %08x %08x %08x %08x\n", cmd
->opcode
,
77 err
, cmd
->resp
[0], cmd
->resp
[1], cmd
->resp
[2], cmd
->resp
[3]);
79 if (err
&& cmd
->retries
) {
82 host
->ops
->request(host
, mrq
);
83 } else if (mrq
->done
) {
88 EXPORT_SYMBOL(mmc_request_done
);
91 * mmc_start_request - start a command on a host
92 * @host: MMC host to start command on
93 * @mrq: MMC request to start
95 * Queue a command on the specified host. We expect the
96 * caller to be holding the host lock with interrupts disabled.
99 mmc_start_request(struct mmc_host
*host
, struct mmc_request
*mrq
)
101 DBG("MMC: starting cmd %02x arg %08x flags %08x\n",
102 mrq
->cmd
->opcode
, mrq
->cmd
->arg
, mrq
->cmd
->flags
);
104 WARN_ON(host
->card_busy
== NULL
);
109 mrq
->cmd
->data
= mrq
->data
;
110 mrq
->data
->error
= 0;
111 mrq
->data
->mrq
= mrq
;
113 mrq
->data
->stop
= mrq
->stop
;
114 mrq
->stop
->error
= 0;
115 mrq
->stop
->mrq
= mrq
;
118 host
->ops
->request(host
, mrq
);
121 EXPORT_SYMBOL(mmc_start_request
);
123 static void mmc_wait_done(struct mmc_request
*mrq
)
125 complete(mrq
->done_data
);
128 int mmc_wait_for_req(struct mmc_host
*host
, struct mmc_request
*mrq
)
130 DECLARE_COMPLETION(complete
);
132 mrq
->done_data
= &complete
;
133 mrq
->done
= mmc_wait_done
;
135 mmc_start_request(host
, mrq
);
137 wait_for_completion(&complete
);
142 EXPORT_SYMBOL(mmc_wait_for_req
);
145 * mmc_wait_for_cmd - start a command and wait for completion
146 * @host: MMC host to start command
147 * @cmd: MMC command to start
148 * @retries: maximum number of retries
150 * Start a new MMC command for a host, and wait for the command
151 * to complete. Return any error that occurred while the command
152 * was executing. Do not attempt to parse the response.
154 int mmc_wait_for_cmd(struct mmc_host
*host
, struct mmc_command
*cmd
, int retries
)
156 struct mmc_request mrq
;
158 BUG_ON(host
->card_busy
== NULL
);
160 memset(&mrq
, 0, sizeof(struct mmc_request
));
162 memset(cmd
->resp
, 0, sizeof(cmd
->resp
));
163 cmd
->retries
= retries
;
168 mmc_wait_for_req(host
, &mrq
);
173 EXPORT_SYMBOL(mmc_wait_for_cmd
);
178 * __mmc_claim_host - exclusively claim a host
179 * @host: mmc host to claim
180 * @card: mmc card to claim host for
182 * Claim a host for a set of operations. If a valid card
183 * is passed and this wasn't the last card selected, select
184 * the card before returning.
186 * Note: you should use mmc_card_claim_host or mmc_claim_host.
188 int __mmc_claim_host(struct mmc_host
*host
, struct mmc_card
*card
)
190 DECLARE_WAITQUEUE(wait
, current
);
194 add_wait_queue(&host
->wq
, &wait
);
195 spin_lock_irqsave(&host
->lock
, flags
);
197 set_current_state(TASK_UNINTERRUPTIBLE
);
198 if (host
->card_busy
== NULL
)
200 spin_unlock_irqrestore(&host
->lock
, flags
);
202 spin_lock_irqsave(&host
->lock
, flags
);
204 set_current_state(TASK_RUNNING
);
205 host
->card_busy
= card
;
206 spin_unlock_irqrestore(&host
->lock
, flags
);
207 remove_wait_queue(&host
->wq
, &wait
);
209 if (card
!= (void *)-1 && host
->card_selected
!= card
) {
210 struct mmc_command cmd
;
212 host
->card_selected
= card
;
214 cmd
.opcode
= MMC_SELECT_CARD
;
215 cmd
.arg
= card
->rca
<< 16;
216 cmd
.flags
= MMC_RSP_R1
;
218 err
= mmc_wait_for_cmd(host
, &cmd
, CMD_RETRIES
);
224 EXPORT_SYMBOL(__mmc_claim_host
);
227 * mmc_release_host - release a host
228 * @host: mmc host to release
230 * Release a MMC host, allowing others to claim the host
231 * for their operations.
233 void mmc_release_host(struct mmc_host
*host
)
237 BUG_ON(host
->card_busy
== NULL
);
239 spin_lock_irqsave(&host
->lock
, flags
);
240 host
->card_busy
= NULL
;
241 spin_unlock_irqrestore(&host
->lock
, flags
);
246 EXPORT_SYMBOL(mmc_release_host
);
249 * Ensure that no card is selected.
251 static void mmc_deselect_cards(struct mmc_host
*host
)
253 struct mmc_command cmd
;
255 if (host
->card_selected
) {
256 host
->card_selected
= NULL
;
258 cmd
.opcode
= MMC_SELECT_CARD
;
260 cmd
.flags
= MMC_RSP_NONE
;
262 mmc_wait_for_cmd(host
, &cmd
, 0);
267 static inline void mmc_delay(unsigned int ms
)
269 if (ms
< HZ
/ 1000) {
273 msleep_interruptible (ms
);
278 * Mask off any voltages we don't support and select
281 static u32
mmc_select_voltage(struct mmc_host
*host
, u32 ocr
)
285 ocr
&= host
->ocr_avail
;
294 host
->ops
->set_ios(host
, &host
->ios
);
302 #define UNSTUFF_BITS(resp,start,size) \
304 const int __size = size; \
305 const u32 __mask = (__size < 32 ? 1 << __size : 0) - 1; \
306 const int __off = 3 - ((start) / 32); \
307 const int __shft = (start) & 31; \
310 __res = resp[__off] >> __shft; \
311 if (__size + __shft > 32) \
312 __res |= resp[__off-1] << ((32 - __shft) % 32); \
317 * Given the decoded CSD structure, decode the raw CID to our CID structure.
319 static void mmc_decode_cid(struct mmc_card
*card
)
321 u32
*resp
= card
->raw_cid
;
323 memset(&card
->cid
, 0, sizeof(struct mmc_cid
));
326 * The selection of the format here is guesswork based upon
327 * information people have sent to date.
329 switch (card
->csd
.mmca_vsn
) {
330 case 0: /* MMC v1.? */
331 case 1: /* MMC v1.4 */
332 card
->cid
.manfid
= UNSTUFF_BITS(resp
, 104, 24);
333 card
->cid
.prod_name
[0] = UNSTUFF_BITS(resp
, 96, 8);
334 card
->cid
.prod_name
[1] = UNSTUFF_BITS(resp
, 88, 8);
335 card
->cid
.prod_name
[2] = UNSTUFF_BITS(resp
, 80, 8);
336 card
->cid
.prod_name
[3] = UNSTUFF_BITS(resp
, 72, 8);
337 card
->cid
.prod_name
[4] = UNSTUFF_BITS(resp
, 64, 8);
338 card
->cid
.prod_name
[5] = UNSTUFF_BITS(resp
, 56, 8);
339 card
->cid
.prod_name
[6] = UNSTUFF_BITS(resp
, 48, 8);
340 card
->cid
.hwrev
= UNSTUFF_BITS(resp
, 44, 4);
341 card
->cid
.fwrev
= UNSTUFF_BITS(resp
, 40, 4);
342 card
->cid
.serial
= UNSTUFF_BITS(resp
, 16, 24);
343 card
->cid
.month
= UNSTUFF_BITS(resp
, 12, 4);
344 card
->cid
.year
= UNSTUFF_BITS(resp
, 8, 4) + 1997;
347 case 2: /* MMC v2.x ? */
348 case 3: /* MMC v3.x ? */
349 card
->cid
.manfid
= UNSTUFF_BITS(resp
, 120, 8);
350 card
->cid
.oemid
= UNSTUFF_BITS(resp
, 104, 16);
351 card
->cid
.prod_name
[0] = UNSTUFF_BITS(resp
, 96, 8);
352 card
->cid
.prod_name
[1] = UNSTUFF_BITS(resp
, 88, 8);
353 card
->cid
.prod_name
[2] = UNSTUFF_BITS(resp
, 80, 8);
354 card
->cid
.prod_name
[3] = UNSTUFF_BITS(resp
, 72, 8);
355 card
->cid
.prod_name
[4] = UNSTUFF_BITS(resp
, 64, 8);
356 card
->cid
.prod_name
[5] = UNSTUFF_BITS(resp
, 56, 8);
357 card
->cid
.serial
= UNSTUFF_BITS(resp
, 16, 32);
358 card
->cid
.month
= UNSTUFF_BITS(resp
, 12, 4);
359 card
->cid
.year
= UNSTUFF_BITS(resp
, 8, 4) + 1997;
363 printk("%s: card has unknown MMCA version %d\n",
364 card
->host
->host_name
, card
->csd
.mmca_vsn
);
365 mmc_card_set_bad(card
);
371 * Given a 128-bit response, decode to our card CSD structure.
373 static void mmc_decode_csd(struct mmc_card
*card
)
375 struct mmc_csd
*csd
= &card
->csd
;
376 unsigned int e
, m
, csd_struct
;
377 u32
*resp
= card
->raw_csd
;
380 * We only understand CSD structure v1.1 and v2.
381 * v2 has extra information in bits 15, 11 and 10.
383 csd_struct
= UNSTUFF_BITS(resp
, 126, 2);
384 if (csd_struct
!= 1 && csd_struct
!= 2) {
385 printk("%s: unrecognised CSD structure version %d\n",
386 card
->host
->host_name
, csd_struct
);
387 mmc_card_set_bad(card
);
391 csd
->mmca_vsn
= UNSTUFF_BITS(resp
, 122, 4);
392 m
= UNSTUFF_BITS(resp
, 115, 4);
393 e
= UNSTUFF_BITS(resp
, 112, 3);
394 csd
->tacc_ns
= (tacc_exp
[e
] * tacc_mant
[m
] + 9) / 10;
395 csd
->tacc_clks
= UNSTUFF_BITS(resp
, 104, 8) * 100;
397 m
= UNSTUFF_BITS(resp
, 99, 4);
398 e
= UNSTUFF_BITS(resp
, 96, 3);
399 csd
->max_dtr
= tran_exp
[e
] * tran_mant
[m
];
400 csd
->cmdclass
= UNSTUFF_BITS(resp
, 84, 12);
402 e
= UNSTUFF_BITS(resp
, 47, 3);
403 m
= UNSTUFF_BITS(resp
, 62, 12);
404 csd
->capacity
= (1 + m
) << (e
+ 2);
406 csd
->read_blkbits
= UNSTUFF_BITS(resp
, 80, 4);
410 * Locate a MMC card on this MMC host given a raw CID.
412 static struct mmc_card
*mmc_find_card(struct mmc_host
*host
, u32
*raw_cid
)
414 struct mmc_card
*card
;
416 list_for_each_entry(card
, &host
->cards
, node
) {
417 if (memcmp(card
->raw_cid
, raw_cid
, sizeof(card
->raw_cid
)) == 0)
424 * Allocate a new MMC card, and assign a unique RCA.
426 static struct mmc_card
*
427 mmc_alloc_card(struct mmc_host
*host
, u32
*raw_cid
, unsigned int *frca
)
429 struct mmc_card
*card
, *c
;
430 unsigned int rca
= *frca
;
432 card
= kmalloc(sizeof(struct mmc_card
), GFP_KERNEL
);
434 return ERR_PTR(-ENOMEM
);
436 mmc_init_card(card
, host
);
437 memcpy(card
->raw_cid
, raw_cid
, sizeof(card
->raw_cid
));
440 list_for_each_entry(c
, &host
->cards
, node
)
454 * Tell attached cards to go to IDLE state
456 static void mmc_idle_cards(struct mmc_host
*host
)
458 struct mmc_command cmd
;
460 cmd
.opcode
= MMC_GO_IDLE_STATE
;
462 cmd
.flags
= MMC_RSP_NONE
;
464 mmc_wait_for_cmd(host
, &cmd
, 0);
470 * Apply power to the MMC stack.
472 static void mmc_power_up(struct mmc_host
*host
)
474 int bit
= fls(host
->ocr_avail
) - 1;
477 host
->ios
.bus_mode
= MMC_BUSMODE_OPENDRAIN
;
478 host
->ios
.power_mode
= MMC_POWER_UP
;
479 host
->ops
->set_ios(host
, &host
->ios
);
483 host
->ios
.clock
= host
->f_min
;
484 host
->ios
.power_mode
= MMC_POWER_ON
;
485 host
->ops
->set_ios(host
, &host
->ios
);
490 static void mmc_power_off(struct mmc_host
*host
)
494 host
->ios
.bus_mode
= MMC_BUSMODE_OPENDRAIN
;
495 host
->ios
.power_mode
= MMC_POWER_OFF
;
496 host
->ops
->set_ios(host
, &host
->ios
);
499 static int mmc_send_op_cond(struct mmc_host
*host
, u32 ocr
, u32
*rocr
)
501 struct mmc_command cmd
;
504 cmd
.opcode
= MMC_SEND_OP_COND
;
506 cmd
.flags
= MMC_RSP_R3
;
508 for (i
= 100; i
; i
--) {
509 err
= mmc_wait_for_cmd(host
, &cmd
, 0);
510 if (err
!= MMC_ERR_NONE
)
513 if (cmd
.resp
[0] & MMC_CARD_BUSY
|| ocr
== 0)
516 err
= MMC_ERR_TIMEOUT
;
528 * Discover cards by requesting their CID. If this command
529 * times out, it is not an error; there are no further cards
530 * to be discovered. Add new cards to the list.
532 * Create a mmc_card entry for each discovered card, assigning
533 * it an RCA, and save the raw CID for decoding later.
535 static void mmc_discover_cards(struct mmc_host
*host
)
537 struct mmc_card
*card
;
538 unsigned int first_rca
= 1, err
;
541 struct mmc_command cmd
;
543 cmd
.opcode
= MMC_ALL_SEND_CID
;
545 cmd
.flags
= MMC_RSP_R2
;
547 err
= mmc_wait_for_cmd(host
, &cmd
, CMD_RETRIES
);
548 if (err
== MMC_ERR_TIMEOUT
) {
552 if (err
!= MMC_ERR_NONE
) {
553 printk(KERN_ERR
"%s: error requesting CID: %d\n",
554 host
->host_name
, err
);
558 card
= mmc_find_card(host
, cmd
.resp
);
560 card
= mmc_alloc_card(host
, cmd
.resp
, &first_rca
);
565 list_add(&card
->node
, &host
->cards
);
568 card
->state
&= ~MMC_STATE_DEAD
;
570 cmd
.opcode
= MMC_SET_RELATIVE_ADDR
;
571 cmd
.arg
= card
->rca
<< 16;
572 cmd
.flags
= MMC_RSP_R1
;
574 err
= mmc_wait_for_cmd(host
, &cmd
, CMD_RETRIES
);
575 if (err
!= MMC_ERR_NONE
)
576 mmc_card_set_dead(card
);
580 static void mmc_read_csds(struct mmc_host
*host
)
582 struct mmc_card
*card
;
584 list_for_each_entry(card
, &host
->cards
, node
) {
585 struct mmc_command cmd
;
588 if (card
->state
& (MMC_STATE_DEAD
|MMC_STATE_PRESENT
))
591 cmd
.opcode
= MMC_SEND_CSD
;
592 cmd
.arg
= card
->rca
<< 16;
593 cmd
.flags
= MMC_RSP_R2
;
595 err
= mmc_wait_for_cmd(host
, &cmd
, CMD_RETRIES
);
596 if (err
!= MMC_ERR_NONE
) {
597 mmc_card_set_dead(card
);
601 memcpy(card
->raw_csd
, cmd
.resp
, sizeof(card
->raw_csd
));
603 mmc_decode_csd(card
);
604 mmc_decode_cid(card
);
608 static unsigned int mmc_calculate_clock(struct mmc_host
*host
)
610 struct mmc_card
*card
;
611 unsigned int max_dtr
= host
->f_max
;
613 list_for_each_entry(card
, &host
->cards
, node
)
614 if (!mmc_card_dead(card
) && max_dtr
> card
->csd
.max_dtr
)
615 max_dtr
= card
->csd
.max_dtr
;
617 DBG("MMC: selected %d.%03dMHz transfer rate\n",
618 max_dtr
/ 1000000, (max_dtr
/ 1000) % 1000);
624 * Check whether cards we already know about are still present.
625 * We do this by requesting status, and checking whether a card
628 * A request for status does not cause a state change in data
631 static void mmc_check_cards(struct mmc_host
*host
)
633 struct list_head
*l
, *n
;
635 mmc_deselect_cards(host
);
637 list_for_each_safe(l
, n
, &host
->cards
) {
638 struct mmc_card
*card
= mmc_list_to_card(l
);
639 struct mmc_command cmd
;
642 cmd
.opcode
= MMC_SEND_STATUS
;
643 cmd
.arg
= card
->rca
<< 16;
644 cmd
.flags
= MMC_RSP_R1
;
646 err
= mmc_wait_for_cmd(host
, &cmd
, CMD_RETRIES
);
647 if (err
== MMC_ERR_NONE
)
650 mmc_card_set_dead(card
);
654 static void mmc_setup(struct mmc_host
*host
)
656 if (host
->ios
.power_mode
!= MMC_POWER_ON
) {
661 mmc_idle_cards(host
);
663 err
= mmc_send_op_cond(host
, 0, &ocr
);
664 if (err
!= MMC_ERR_NONE
)
667 host
->ocr
= mmc_select_voltage(host
, ocr
);
670 * Since we're changing the OCR value, we seem to
671 * need to tell some cards to go back to the idle
672 * state. We wait 1ms to give cards time to
676 mmc_idle_cards(host
);
678 host
->ios
.bus_mode
= MMC_BUSMODE_OPENDRAIN
;
679 host
->ios
.clock
= host
->f_min
;
680 host
->ops
->set_ios(host
, &host
->ios
);
683 * We should remember the OCR mask from the existing
684 * cards, and detect the new cards OCR mask, combine
685 * the two and re-select the VDD. However, if we do
686 * change VDD, we should do an idle, and then do a
687 * full re-initialisation. We would need to notify
688 * drivers so that they can re-setup the cards as
689 * well, while keeping their queues at bay.
691 * For the moment, we take the easy way out - if the
692 * new cards don't like our currently selected VDD,
693 * they drop off the bus.
701 * Send the selected OCR multiple times... until the cards
702 * all get the idea that they should be ready for CMD2.
703 * (My SanDisk card seems to need this.)
705 mmc_send_op_cond(host
, host
->ocr
, NULL
);
707 mmc_discover_cards(host
);
710 * Ok, now switch to push-pull mode.
712 host
->ios
.bus_mode
= MMC_BUSMODE_PUSHPULL
;
713 host
->ops
->set_ios(host
, &host
->ios
);
720 * mmc_detect_change - process change of state on a MMC socket
721 * @host: host which changed state.
723 * All we know is that card(s) have been inserted or removed
724 * from the socket(s). We don't know which socket or cards.
726 void mmc_detect_change(struct mmc_host
*host
)
728 schedule_work(&host
->detect
);
731 EXPORT_SYMBOL(mmc_detect_change
);
734 static void mmc_rescan(void *data
)
736 struct mmc_host
*host
= data
;
737 struct list_head
*l
, *n
;
739 mmc_claim_host(host
);
741 if (host
->ios
.power_mode
== MMC_POWER_ON
)
742 mmc_check_cards(host
);
746 if (!list_empty(&host
->cards
)) {
748 * (Re-)calculate the fastest clock rate which the
749 * attached cards and the host support.
751 host
->ios
.clock
= mmc_calculate_clock(host
);
752 host
->ops
->set_ios(host
, &host
->ios
);
755 mmc_release_host(host
);
757 list_for_each_safe(l
, n
, &host
->cards
) {
758 struct mmc_card
*card
= mmc_list_to_card(l
);
761 * If this is a new and good card, register it.
763 if (!mmc_card_present(card
) && !mmc_card_dead(card
)) {
764 if (mmc_register_card(card
))
765 mmc_card_set_dead(card
);
767 mmc_card_set_present(card
);
771 * If this card is dead, destroy it.
773 if (mmc_card_dead(card
)) {
774 list_del(&card
->node
);
775 mmc_remove_card(card
);
780 * If we discover that there are no cards on the
781 * bus, turn off the clock and power down.
783 if (list_empty(&host
->cards
))
789 * mmc_alloc_host - initialise the per-host structure.
790 * @extra: sizeof private data structure
791 * @dev: pointer to host device model structure
793 * Initialise the per-host structure.
795 struct mmc_host
*mmc_alloc_host(int extra
, struct device
*dev
)
797 struct mmc_host
*host
;
799 host
= kmalloc(sizeof(struct mmc_host
) + extra
, GFP_KERNEL
);
801 memset(host
, 0, sizeof(struct mmc_host
) + extra
);
803 spin_lock_init(&host
->lock
);
804 init_waitqueue_head(&host
->wq
);
805 INIT_LIST_HEAD(&host
->cards
);
806 INIT_WORK(&host
->detect
, mmc_rescan
, host
);
811 * By default, hosts do not support SGIO or large requests.
812 * They have to set these according to their abilities.
814 host
->max_hw_segs
= 1;
815 host
->max_phys_segs
= 1;
816 host
->max_sectors
= 1 << (PAGE_CACHE_SHIFT
- 9);
817 host
->max_seg_size
= PAGE_CACHE_SIZE
;
823 EXPORT_SYMBOL(mmc_alloc_host
);
826 * mmc_add_host - initialise host hardware
829 int mmc_add_host(struct mmc_host
*host
)
831 static unsigned int host_num
;
833 snprintf(host
->host_name
, sizeof(host
->host_name
),
834 "mmc%d", host_num
++);
837 mmc_detect_change(host
);
842 EXPORT_SYMBOL(mmc_add_host
);
845 * mmc_remove_host - remove host hardware
848 * Unregister and remove all cards associated with this host,
849 * and power down the MMC bus.
851 void mmc_remove_host(struct mmc_host
*host
)
853 struct list_head
*l
, *n
;
855 list_for_each_safe(l
, n
, &host
->cards
) {
856 struct mmc_card
*card
= mmc_list_to_card(l
);
858 mmc_remove_card(card
);
864 EXPORT_SYMBOL(mmc_remove_host
);
867 * mmc_free_host - free the host structure
870 * Free the host once all references to it have been dropped.
872 void mmc_free_host(struct mmc_host
*host
)
874 flush_scheduled_work();
878 EXPORT_SYMBOL(mmc_free_host
);
883 * mmc_suspend_host - suspend a host
885 * @state: suspend mode (PM_SUSPEND_xxx)
887 int mmc_suspend_host(struct mmc_host
*host
, pm_message_t state
)
889 mmc_claim_host(host
);
890 mmc_deselect_cards(host
);
892 mmc_release_host(host
);
897 EXPORT_SYMBOL(mmc_suspend_host
);
900 * mmc_resume_host - resume a previously suspended host
903 int mmc_resume_host(struct mmc_host
*host
)
905 mmc_detect_change(host
);
910 EXPORT_SYMBOL(mmc_resume_host
);
914 MODULE_LICENSE("GPL");