Merge "mmc: core: Use mmc_reset instead of power_restore"
This commit is contained in:
commit
e8c139bc05
2 changed files with 27 additions and 6 deletions
|
@ -3944,12 +3944,10 @@ static void mmc_hw_reset_for_init(struct mmc_host *host)
|
||||||
*/
|
*/
|
||||||
int mmc_cmdq_hw_reset(struct mmc_host *host)
|
int mmc_cmdq_hw_reset(struct mmc_host *host)
|
||||||
{
|
{
|
||||||
if (!host->bus_ops->power_restore)
|
if (!host->bus_ops->reset)
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
|
|
||||||
mmc_power_cycle(host, host->ocr_avail);
|
return host->bus_ops->reset(host);
|
||||||
mmc_select_voltage(host, host->card->ocr);
|
|
||||||
return host->bus_ops->power_restore(host);
|
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(mmc_cmdq_hw_reset);
|
EXPORT_SYMBOL(mmc_cmdq_hw_reset);
|
||||||
|
|
||||||
|
|
|
@ -2892,6 +2892,7 @@ EXPORT_SYMBOL(mmc_can_reset);
|
||||||
static int mmc_reset(struct mmc_host *host)
|
static int mmc_reset(struct mmc_host *host)
|
||||||
{
|
{
|
||||||
struct mmc_card *card = host->card;
|
struct mmc_card *card = host->card;
|
||||||
|
int ret;
|
||||||
|
|
||||||
if ((host->caps & MMC_CAP_HW_RESET) && host->ops->hw_reset &&
|
if ((host->caps & MMC_CAP_HW_RESET) && host->ops->hw_reset &&
|
||||||
mmc_can_reset(card)) {
|
mmc_can_reset(card)) {
|
||||||
|
@ -2904,7 +2905,29 @@ static int mmc_reset(struct mmc_host *host)
|
||||||
/* Do a brute force power cycle */
|
/* Do a brute force power cycle */
|
||||||
mmc_power_cycle(host, card->ocr);
|
mmc_power_cycle(host, card->ocr);
|
||||||
}
|
}
|
||||||
return mmc_init_card(host, card->ocr, card);
|
|
||||||
|
/* Suspend clk scaling to avoid switching frequencies intermittently */
|
||||||
|
|
||||||
|
ret = mmc_suspend_clk_scaling(host);
|
||||||
|
if (ret) {
|
||||||
|
pr_err("%s: %s: fail to suspend clock scaling (%d)\n",
|
||||||
|
mmc_hostname(host), __func__, ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = mmc_init_card(host, host->card->ocr, host->card);
|
||||||
|
if (ret) {
|
||||||
|
pr_err("%s: %s: mmc_init_card failed (%d)\n",
|
||||||
|
mmc_hostname(host), __func__, ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = mmc_resume_clk_scaling(host);
|
||||||
|
if (ret)
|
||||||
|
pr_err("%s: %s: fail to resume clock scaling (%d)\n",
|
||||||
|
mmc_hostname(host), __func__, ret);
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct mmc_bus_ops mmc_ops = {
|
static const struct mmc_bus_ops mmc_ops = {
|
||||||
|
|
Loading…
Add table
Reference in a new issue