|
@@ -17,6 +17,7 @@
|
|
#include <linux/mmc/mmc.h>
|
|
#include <linux/mmc/mmc.h>
|
|
#include <linux/of.h>
|
|
#include <linux/of.h>
|
|
#include <linux/of_gpio.h>
|
|
#include <linux/of_gpio.h>
|
|
|
|
+#include <linux/pm_runtime.h>
|
|
#include <linux/slab.h>
|
|
#include <linux/slab.h>
|
|
|
|
|
|
#include "dw_mmc.h"
|
|
#include "dw_mmc.h"
|
|
@@ -161,20 +162,13 @@ static void dw_mci_exynos_set_clksel_timing(struct dw_mci *host, u32 timing)
|
|
set_bit(DW_MMC_CARD_NO_USE_HOLD, &host->cur_slot->flags);
|
|
set_bit(DW_MMC_CARD_NO_USE_HOLD, &host->cur_slot->flags);
|
|
}
|
|
}
|
|
|
|
|
|
-#ifdef CONFIG_PM_SLEEP
|
|
|
|
-static int dw_mci_exynos_suspend(struct device *dev)
|
|
|
|
-{
|
|
|
|
- struct dw_mci *host = dev_get_drvdata(dev);
|
|
|
|
-
|
|
|
|
- return dw_mci_suspend(host);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-static int dw_mci_exynos_resume(struct device *dev)
|
|
|
|
|
|
+#ifdef CONFIG_PM
|
|
|
|
+static int dw_mci_exynos_runtime_resume(struct device *dev)
|
|
{
|
|
{
|
|
struct dw_mci *host = dev_get_drvdata(dev);
|
|
struct dw_mci *host = dev_get_drvdata(dev);
|
|
|
|
|
|
dw_mci_exynos_config_smu(host);
|
|
dw_mci_exynos_config_smu(host);
|
|
- return dw_mci_resume(host);
|
|
|
|
|
|
+ return dw_mci_runtime_resume(dev);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -211,10 +205,8 @@ static int dw_mci_exynos_resume_noirq(struct device *dev)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
#else
|
|
#else
|
|
-#define dw_mci_exynos_suspend NULL
|
|
|
|
-#define dw_mci_exynos_resume NULL
|
|
|
|
#define dw_mci_exynos_resume_noirq NULL
|
|
#define dw_mci_exynos_resume_noirq NULL
|
|
-#endif /* CONFIG_PM_SLEEP */
|
|
|
|
|
|
+#endif /* CONFIG_PM */
|
|
|
|
|
|
static void dw_mci_exynos_config_hs400(struct dw_mci *host, u32 timing)
|
|
static void dw_mci_exynos_config_hs400(struct dw_mci *host, u32 timing)
|
|
{
|
|
{
|
|
@@ -531,7 +523,11 @@ static int dw_mci_exynos_probe(struct platform_device *pdev)
|
|
}
|
|
}
|
|
|
|
|
|
static const struct dev_pm_ops dw_mci_exynos_pmops = {
|
|
static const struct dev_pm_ops dw_mci_exynos_pmops = {
|
|
- SET_SYSTEM_SLEEP_PM_OPS(dw_mci_exynos_suspend, dw_mci_exynos_resume)
|
|
|
|
|
|
+ SET_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend,
|
|
|
|
+ pm_runtime_force_resume)
|
|
|
|
+ SET_RUNTIME_PM_OPS(dw_mci_runtime_suspend,
|
|
|
|
+ dw_mci_exynos_runtime_resume,
|
|
|
|
+ NULL)
|
|
.resume_noirq = dw_mci_exynos_resume_noirq,
|
|
.resume_noirq = dw_mci_exynos_resume_noirq,
|
|
.thaw_noirq = dw_mci_exynos_resume_noirq,
|
|
.thaw_noirq = dw_mci_exynos_resume_noirq,
|
|
.restore_noirq = dw_mci_exynos_resume_noirq,
|
|
.restore_noirq = dw_mci_exynos_resume_noirq,
|