Skip to contentSkip to conversation

mmc: wmt-sdmmc: Simplify wmt_set_sd_power implementation

PATCH In review Axel Lin 3 participants 3 messages Oct 3, 2013 – Oct 21, 2013

Subsystems (2)
lore
Share & tools
lore

Axel Lin

author
#0 lore raw

PATCH 1/1 mmc: wmt-sdmmc: Simplify wmt_set_sd_power implementation

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

---
 drivers/mmc/host/wmt-sdmmc.c | 30 ++++++++----------------------
 1 file changed, 8 insertions(+), 22 deletions(-)
drivers/mmc/host/wmt-sdmmc.c +8 -22
index 34231d5..57858ef 100644
@@ -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)
Signature · 1 line
1.8.1.2
Acked-by on v1 1/1
#1 lore raw
Quoted 44 lines · Axel Lin

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

---
  drivers/mmc/host/wmt-sdmmc.c | 30 ++++++++----------------------
  1 file changed, 8 insertions(+), 22 deletions(-)
drivers/mmc/host/wmt-sdmmc.c +1 -22
index 34231d5..57858ef 100644
@@ -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);

drivers/mmc/host/wmt-sdmmc.c struct wmt_mci_priv { · line 225

Quoted 10 lines
drivers/mmc/host/wmt-sdmmc.c +7 -0
+
+	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)

Thanks Axel - much better code.

Regards
Tony Prisk

#2 lore raw

Hi Axel,

Quoted 9 lines · Tony Prisk
Quoted 8 lines · Axel Lin

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

Quoted 5 lines
Quoted 1 line

Thanks Axel - much better code.

Thanks, pushed to mmc-next for 3.13.

- Chris.

Signature · 1 line
Chris Ball   <[email protected]>   <http://printf.net/>