Merge tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck...
[linux-drm-fsl-dcu.git] / drivers / mmc / host / wmt-sdmmc.c
index 34231d5168fcf12dfe804d2a26b3cda2c6647976..e902ed7846b0544012a289368b187d541ced1969 100644 (file)
@@ -212,28 +212,14 @@ struct wmt_mci_priv {
 
 static void wmt_set_sd_power(struct wmt_mci_priv *priv, int enable)
 {
-       u32 reg_tmp;
-       if (enable) {
-               if (priv->power_inverted) {
-                       reg_tmp = readb(priv->sdmmc_base + SDMMC_BUSMODE);
-                       writeb(reg_tmp | BM_SD_OFF,
-                              priv->sdmmc_base + SDMMC_BUSMODE);
-               } else {
-                       reg_tmp = readb(priv->sdmmc_base + SDMMC_BUSMODE);
-                       writeb(reg_tmp & (~BM_SD_OFF),
-                              priv->sdmmc_base + SDMMC_BUSMODE);
-               }
-       } else {
-               if (priv->power_inverted) {
-                       reg_tmp = readb(priv->sdmmc_base + SDMMC_BUSMODE);
-                       writeb(reg_tmp & (~BM_SD_OFF),
-                              priv->sdmmc_base + SDMMC_BUSMODE);
-               } else {
-                       reg_tmp = readb(priv->sdmmc_base + SDMMC_BUSMODE);
-                       writeb(reg_tmp | BM_SD_OFF,
-                              priv->sdmmc_base + SDMMC_BUSMODE);
-               }
-       }
+       u32 reg_tmp = readb(priv->sdmmc_base + SDMMC_BUSMODE);
+
+       if (enable ^ priv->power_inverted)
+               reg_tmp &= ~BM_SD_OFF;
+       else
+               reg_tmp |= BM_SD_OFF;
+
+       writeb(reg_tmp, priv->sdmmc_base + SDMMC_BUSMODE);
 }
 
 static void wmt_mci_read_response(struct mmc_host *mmc)
@@ -939,28 +925,23 @@ static int wmt_mci_suspend(struct device *dev)
        struct platform_device *pdev = to_platform_device(dev);
        struct mmc_host *mmc = platform_get_drvdata(pdev);
        struct wmt_mci_priv *priv;
-       int ret;
 
        if (!mmc)
                return 0;
 
        priv = mmc_priv(mmc);
-       ret = mmc_suspend_host(mmc);
-
-       if (!ret) {
-               reg_tmp = readb(priv->sdmmc_base + SDMMC_BUSMODE);
-               writeb(reg_tmp | BM_SOFT_RESET, priv->sdmmc_base +
-                      SDMMC_BUSMODE);
+       reg_tmp = readb(priv->sdmmc_base + SDMMC_BUSMODE);
+       writeb(reg_tmp | BM_SOFT_RESET, priv->sdmmc_base +
+              SDMMC_BUSMODE);
 
-               reg_tmp = readw(priv->sdmmc_base + SDMMC_BLKLEN);
-               writew(reg_tmp & 0x5FFF, priv->sdmmc_base + SDMMC_BLKLEN);
+       reg_tmp = readw(priv->sdmmc_base + SDMMC_BLKLEN);
+       writew(reg_tmp & 0x5FFF, priv->sdmmc_base + SDMMC_BLKLEN);
 
-               writeb(0xFF, priv->sdmmc_base + SDMMC_STS0);
-               writeb(0xFF, priv->sdmmc_base + SDMMC_STS1);
+       writeb(0xFF, priv->sdmmc_base + SDMMC_STS0);
+       writeb(0xFF, priv->sdmmc_base + SDMMC_STS1);
 
-               clk_disable(priv->clk_sdmmc);
-       }
-       return ret;
+       clk_disable(priv->clk_sdmmc);
+       return 0;
 }
 
 static int wmt_mci_resume(struct device *dev)
@@ -969,7 +950,6 @@ static int wmt_mci_resume(struct device *dev)
        struct platform_device *pdev = to_platform_device(dev);
        struct mmc_host *mmc = platform_get_drvdata(pdev);
        struct wmt_mci_priv *priv;
-       int ret = 0;
 
        if (mmc) {
                priv = mmc_priv(mmc);
@@ -987,10 +967,9 @@ static int wmt_mci_resume(struct device *dev)
                writeb(reg_tmp | INT0_DI_INT_EN, priv->sdmmc_base +
                       SDMMC_INTMASK0);
 
-               ret = mmc_resume_host(mmc);
        }
 
-       return ret;
+       return 0;
 }
 
 static const struct dev_pm_ops wmt_mci_pm = {