mmc: core: Share internal function to set initial signal voltage
Move the corresponding code for setting the initial signal voltage, from mmc_power_up() into a new function, mmc_set_initial_signal_voltage(). Make the function internally available to the mmc core, as to allow the following changes to make use of it. Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org> Tested-by: Quentin Schulz <quentin.schulz@bootlin.com> Reviewed-by: Shawn Lin <shawn.lin@rock-chips.com>
This commit is contained in:
parent
1433269c4d
commit
508c9864cc
|
@ -1484,6 +1484,17 @@ int mmc_set_signal_voltage(struct mmc_host *host, int signal_voltage)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void mmc_set_initial_signal_voltage(struct mmc_host *host)
|
||||||
|
{
|
||||||
|
/* Try to set signal voltage to 3.3V but fall back to 1.8v or 1.2v */
|
||||||
|
if (!mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_330))
|
||||||
|
dev_dbg(mmc_dev(host), "Initial signal voltage of 3.3v\n");
|
||||||
|
else if (!mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_180))
|
||||||
|
dev_dbg(mmc_dev(host), "Initial signal voltage of 1.8v\n");
|
||||||
|
else if (!mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_120))
|
||||||
|
dev_dbg(mmc_dev(host), "Initial signal voltage of 1.2v\n");
|
||||||
|
}
|
||||||
|
|
||||||
int mmc_host_set_uhs_voltage(struct mmc_host *host)
|
int mmc_host_set_uhs_voltage(struct mmc_host *host)
|
||||||
{
|
{
|
||||||
u32 clock;
|
u32 clock;
|
||||||
|
@ -1646,13 +1657,7 @@ void mmc_power_up(struct mmc_host *host, u32 ocr)
|
||||||
/* Set initial state and call mmc_set_ios */
|
/* Set initial state and call mmc_set_ios */
|
||||||
mmc_set_initial_state(host);
|
mmc_set_initial_state(host);
|
||||||
|
|
||||||
/* Try to set signal voltage to 3.3V but fall back to 1.8v or 1.2v */
|
mmc_set_initial_signal_voltage(host);
|
||||||
if (!mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_330))
|
|
||||||
dev_dbg(mmc_dev(host), "Initial signal voltage of 3.3v\n");
|
|
||||||
else if (!mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_180))
|
|
||||||
dev_dbg(mmc_dev(host), "Initial signal voltage of 1.8v\n");
|
|
||||||
else if (!mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_120))
|
|
||||||
dev_dbg(mmc_dev(host), "Initial signal voltage of 1.2v\n");
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This delay should be sufficient to allow the power supply
|
* This delay should be sufficient to allow the power supply
|
||||||
|
|
|
@ -52,6 +52,7 @@ u32 mmc_select_voltage(struct mmc_host *host, u32 ocr);
|
||||||
int mmc_set_uhs_voltage(struct mmc_host *host, u32 ocr);
|
int mmc_set_uhs_voltage(struct mmc_host *host, u32 ocr);
|
||||||
int mmc_host_set_uhs_voltage(struct mmc_host *host);
|
int mmc_host_set_uhs_voltage(struct mmc_host *host);
|
||||||
int mmc_set_signal_voltage(struct mmc_host *host, int signal_voltage);
|
int mmc_set_signal_voltage(struct mmc_host *host, int signal_voltage);
|
||||||
|
void mmc_set_initial_signal_voltage(struct mmc_host *host);
|
||||||
void mmc_set_timing(struct mmc_host *host, unsigned int timing);
|
void mmc_set_timing(struct mmc_host *host, unsigned int timing);
|
||||||
void mmc_set_driver_type(struct mmc_host *host, unsigned int drv_type);
|
void mmc_set_driver_type(struct mmc_host *host, unsigned int drv_type);
|
||||||
int mmc_select_drive_strength(struct mmc_card *card, unsigned int max_dtr,
|
int mmc_select_drive_strength(struct mmc_card *card, unsigned int max_dtr,
|
||||||
|
|
Loading…
Reference in New Issue