aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/mmc
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/mmc')
-rw-r--r--include/linux/mmc/core.h1
-rw-r--r--include/linux/mmc/host.h46
2 files changed, 4 insertions, 43 deletions
diff --git a/include/linux/mmc/core.h b/include/linux/mmc/core.h
index 87a976cc5654..2bfa589764de 100644
--- a/include/linux/mmc/core.h
+++ b/include/linux/mmc/core.h
@@ -175,7 +175,6 @@ extern unsigned int mmc_align_data_size(struct mmc_card *, unsigned int);
175 175
176extern int __mmc_claim_host(struct mmc_host *host, atomic_t *abort); 176extern int __mmc_claim_host(struct mmc_host *host, atomic_t *abort);
177extern void mmc_release_host(struct mmc_host *host); 177extern void mmc_release_host(struct mmc_host *host);
178extern void mmc_do_release_host(struct mmc_host *host);
179extern int mmc_try_claim_host(struct mmc_host *host); 178extern int mmc_try_claim_host(struct mmc_host *host);
180 179
181extern int mmc_flush_cache(struct mmc_card *); 180extern int mmc_flush_cache(struct mmc_card *);
diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h
index d1d3743fde90..e05bd241c676 100644
--- a/include/linux/mmc/host.h
+++ b/include/linux/mmc/host.h
@@ -80,34 +80,11 @@ struct mmc_ios {
80 80
81struct mmc_host_ops { 81struct mmc_host_ops {
82 /* 82 /*
83 * Hosts that support power saving can use the 'enable' and 'disable' 83 * 'enable' is called when the host is claimed and 'disable' is called
84 * methods to exit and enter power saving states. 'enable' is called 84 * when the host is released. 'enable' and 'disable' are deprecated.
85 * when the host is claimed and 'disable' is called (or scheduled with
86 * a delay) when the host is released. The 'disable' is scheduled if
87 * the disable delay set by 'mmc_set_disable_delay()' is non-zero,
88 * otherwise 'disable' is called immediately. 'disable' may be
89 * scheduled repeatedly, to permit ever greater power saving at the
90 * expense of ever greater latency to re-enable. Rescheduling is
91 * determined by the return value of the 'disable' method. A positive
92 * value gives the delay in milliseconds.
93 *
94 * In the case where a host function (like set_ios) may be called
95 * with or without the host claimed, enabling and disabling can be
96 * done directly and will nest correctly. Call 'mmc_host_enable()' and
97 * 'mmc_host_lazy_disable()' for this purpose, but note that these
98 * functions must be paired.
99 *
100 * Alternatively, 'mmc_host_enable()' may be paired with
101 * 'mmc_host_disable()' which calls 'disable' immediately. In this
102 * case the 'disable' method will be called with 'lazy' set to 0.
103 * This is mainly useful for error paths.
104 *
105 * Because lazy disable may be called from a work queue, the 'disable'
106 * method must claim the host when 'lazy' != 0, which will work
107 * correctly because recursion is detected and handled.
108 */ 85 */
109 int (*enable)(struct mmc_host *host); 86 int (*enable)(struct mmc_host *host);
110 int (*disable)(struct mmc_host *host, int lazy); 87 int (*disable)(struct mmc_host *host);
111 /* 88 /*
112 * It is optional for the host to implement pre_req and post_req in 89 * It is optional for the host to implement pre_req and post_req in
113 * order to support double buffering of requests (prepare one 90 * order to support double buffering of requests (prepare one
@@ -218,7 +195,7 @@ struct mmc_host {
218#define MMC_CAP_SPI (1 << 4) /* Talks only SPI protocols */ 195#define MMC_CAP_SPI (1 << 4) /* Talks only SPI protocols */
219#define MMC_CAP_NEEDS_POLL (1 << 5) /* Needs polling for card-detection */ 196#define MMC_CAP_NEEDS_POLL (1 << 5) /* Needs polling for card-detection */
220#define MMC_CAP_8_BIT_DATA (1 << 6) /* Can the host do 8 bit transfers */ 197#define MMC_CAP_8_BIT_DATA (1 << 6) /* Can the host do 8 bit transfers */
221#define MMC_CAP_DISABLE (1 << 7) /* Can the host be disabled */ 198
222#define MMC_CAP_NONREMOVABLE (1 << 8) /* Nonremovable e.g. eMMC */ 199#define MMC_CAP_NONREMOVABLE (1 << 8) /* Nonremovable e.g. eMMC */
223#define MMC_CAP_WAIT_WHILE_BUSY (1 << 9) /* Waits while card is busy */ 200#define MMC_CAP_WAIT_WHILE_BUSY (1 << 9) /* Waits while card is busy */
224#define MMC_CAP_ERASE (1 << 10) /* Allow erase/trim commands */ 201#define MMC_CAP_ERASE (1 << 10) /* Allow erase/trim commands */
@@ -301,13 +278,7 @@ struct mmc_host {
301 unsigned int removed:1; /* host is being removed */ 278 unsigned int removed:1; /* host is being removed */
302#endif 279#endif
303 280
304 /* Only used with MMC_CAP_DISABLE */
305 int enabled; /* host is enabled */
306 int rescan_disable; /* disable card detection */ 281 int rescan_disable; /* disable card detection */
307 int nesting_cnt; /* "enable" nesting count */
308 int en_dis_recurs; /* detect recursion */
309 unsigned int disable_delay; /* disable delay in msecs */
310 struct delayed_work disable; /* disabling work */
311 282
312 struct mmc_card *card; /* device attached to this host */ 283 struct mmc_card *card; /* device attached to this host */
313 284
@@ -407,17 +378,8 @@ int mmc_card_awake(struct mmc_host *host);
407int mmc_card_sleep(struct mmc_host *host); 378int mmc_card_sleep(struct mmc_host *host);
408int mmc_card_can_sleep(struct mmc_host *host); 379int mmc_card_can_sleep(struct mmc_host *host);
409 380
410int mmc_host_enable(struct mmc_host *host);
411int mmc_host_disable(struct mmc_host *host);
412int mmc_host_lazy_disable(struct mmc_host *host);
413int mmc_pm_notify(struct notifier_block *notify_block, unsigned long, void *); 381int mmc_pm_notify(struct notifier_block *notify_block, unsigned long, void *);
414 382
415static inline void mmc_set_disable_delay(struct mmc_host *host,
416 unsigned int disable_delay)
417{
418 host->disable_delay = disable_delay;
419}
420
421/* Module parameter */ 383/* Module parameter */
422extern bool mmc_assume_removable; 384extern bool mmc_assume_removable;
423 385