aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAxel Lin <axel.lin@ingics.com>2013-10-03 05:04:40 -0400
committerChris Ball <chris@printf.net>2013-10-21 15:57:15 -0400
commit7b2399034af31d934ce3efc898e023e027f110bd (patch)
tree371580f9ba6a9b07a0f97837420f436c22157357
parent8776a165d152d57a3a58895d55204614abe93d7f (diff)
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 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>
-rw-r--r--drivers/mmc/host/wmt-sdmmc.c30
1 files changed, 8 insertions, 22 deletions
diff --git a/drivers/mmc/host/wmt-sdmmc.c b/drivers/mmc/host/wmt-sdmmc.c
index 34231d5168fc..57858efb3762 100644
--- a/drivers/mmc/host/wmt-sdmmc.c
+++ b/drivers/mmc/host/wmt-sdmmc.c
@@ -212,28 +212,14 @@ struct wmt_mci_priv {
212 212
213static void wmt_set_sd_power(struct wmt_mci_priv *priv, int enable) 213static void wmt_set_sd_power(struct wmt_mci_priv *priv, int enable)
214{ 214{
215 u32 reg_tmp; 215 u32 reg_tmp = readb(priv->sdmmc_base + SDMMC_BUSMODE);
216 if (enable) { 216
217 if (priv->power_inverted) { 217 if (enable ^ priv->power_inverted)
218 reg_tmp = readb(priv->sdmmc_base + SDMMC_BUSMODE); 218 reg_tmp &= ~BM_SD_OFF;
219 writeb(reg_tmp | BM_SD_OFF, 219 else
220 priv->sdmmc_base + SDMMC_BUSMODE); 220 reg_tmp |= BM_SD_OFF;
221 } else { 221
222 reg_tmp = readb(priv->sdmmc_base + SDMMC_BUSMODE); 222 writeb(reg_tmp, priv->sdmmc_base + SDMMC_BUSMODE);
223 writeb(reg_tmp & (~BM_SD_OFF),
224 priv->sdmmc_base + SDMMC_BUSMODE);
225 }
226 } else {
227 if (priv->power_inverted) {
228 reg_tmp = readb(priv->sdmmc_base + SDMMC_BUSMODE);
229 writeb(reg_tmp & (~BM_SD_OFF),
230 priv->sdmmc_base + SDMMC_BUSMODE);
231 } else {
232 reg_tmp = readb(priv->sdmmc_base + SDMMC_BUSMODE);
233 writeb(reg_tmp | BM_SD_OFF,
234 priv->sdmmc_base + SDMMC_BUSMODE);
235 }
236 }
237} 223}
238 224
239static void wmt_mci_read_response(struct mmc_host *mmc) 225static void wmt_mci_read_response(struct mmc_host *mmc)