diff options
author | Axel Lin <axel.lin@ingics.com> | 2013-10-03 05:04:40 -0400 |
---|---|---|
committer | Chris Ball <chris@printf.net> | 2013-10-21 15:57:15 -0400 |
commit | 7b2399034af31d934ce3efc898e023e027f110bd (patch) | |
tree | 371580f9ba6a9b07a0f97837420f436c22157357 | |
parent | 8776a165d152d57a3a58895d55204614abe93d7f (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.c | 30 |
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 | ||
213 | static void wmt_set_sd_power(struct wmt_mci_priv *priv, int enable) | 213 | static 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 | ||
239 | static void wmt_mci_read_response(struct mmc_host *mmc) | 225 | static void wmt_mci_read_response(struct mmc_host *mmc) |