diff options
author | Ulf Hansson <ulf.hansson@linaro.org> | 2014-11-28 08:38:36 -0500 |
---|---|---|
committer | Ulf Hansson <ulf.hansson@linaro.org> | 2015-01-28 06:31:12 -0500 |
commit | 3aa8793f751d4cfcaca886e75ab30dfb00cf1d88 (patch) | |
tree | 21b63b12191ec9a41f231c7234d43843f98e147f /include/linux/mmc | |
parent | c25d9e1bda2316aa0d2bb61640ab4fbe01feb590 (diff) |
mmc: core: Initial support for MMC power sequences
System on chip designs may specify a specific MMC power sequence. To
successfully detect an (e)MMC/SD/SDIO card, that power sequence must
be followed while initializing the card.
To be able to handle these SOC specific power sequences, let's add a
MMC power sequence interface. It provides the following functions to
help the mmc core to deal with these power sequences.
mmc_pwrseq_alloc() - Invoked from mmc_of_parse(), to initialize data.
mmc_pwrseq_pre_power_on()- Invoked in the beginning of mmc_power_up().
mmc_pwrseq_post_power_on()- Invoked at the end in mmc_power_up().
mmc_pwrseq_power_off()- Invoked from mmc_power_off().
mmc_pwrseq_free() - Invoked from mmc_free_host(), to free data.
Each MMC power sequence provider will be responsible to implement a set
of callbacks. These callbacks mirrors the functions above.
This patch adds the skeleton, following patches will extend the core of
the MMC power sequence and add support for a specific simple MMC power
sequence.
Do note, since the mmc_pwrseq_alloc() is invoked from mmc_of_parse(),
host drivers needs to make use of this API to enable the support for
MMC power sequences. Moreover the MMC power sequence support depends on
CONFIG_OF.
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Tested-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
Reviewed-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
Diffstat (limited to 'include/linux/mmc')
-rw-r--r-- | include/linux/mmc/host.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h index b6bf718c3498..0c8cbe5d1550 100644 --- a/include/linux/mmc/host.h +++ b/include/linux/mmc/host.h | |||
@@ -195,6 +195,7 @@ struct mmc_context_info { | |||
195 | }; | 195 | }; |
196 | 196 | ||
197 | struct regulator; | 197 | struct regulator; |
198 | struct mmc_pwrseq; | ||
198 | 199 | ||
199 | struct mmc_supply { | 200 | struct mmc_supply { |
200 | struct regulator *vmmc; /* Card power supply */ | 201 | struct regulator *vmmc; /* Card power supply */ |
@@ -206,6 +207,7 @@ struct mmc_host { | |||
206 | struct device class_dev; | 207 | struct device class_dev; |
207 | int index; | 208 | int index; |
208 | const struct mmc_host_ops *ops; | 209 | const struct mmc_host_ops *ops; |
210 | struct mmc_pwrseq *pwrseq; | ||
209 | unsigned int f_min; | 211 | unsigned int f_min; |
210 | unsigned int f_max; | 212 | unsigned int f_max; |
211 | unsigned int f_init; | 213 | unsigned int f_init; |