mmc: wmt-sdmmc: Simplify wmt_set_sd_power implementation
authorAxel Lin <axel.lin@ingics.com>
Thu, 3 Oct 2013 09:04:40 +0000 (17:04 +0800)
committerChris Ball <chris@printf.net>
Mon, 21 Oct 2013 19:57:15 +0000 (15:57 -0400)
Simplify the code to set/clear BM_SD_OFF bit:

          | power_inverted: 0  | power_inverted: 1
-------------------------------------------------
enable: 0 | SET BM_SD_OFF      | CLEAR BM_SD_OFF
-------------------------------------------------
enable: 1 | CLEAR BM_SD_OFF    | SET BM_SD_OFF

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Acked-by: Tony Prisk <linux@prisktech.co.nz>
Signed-off-by: Chris Ball <cjb@laptop.org>
drivers/mmc/host/wmt-sdmmc.c

index 34231d5..57858ef 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)