mmc: dw_mmc: control the power-enable register
authorJaehoon Chung <jh80.chung@samsung.com>
Tue, 26 Mar 2013 12:36:14 +0000 (21:36 +0900)
committerChris Ball <cjb@laptop.org>
Thu, 4 Apr 2013 14:08:37 +0000 (10:08 -0400)
When card is power-on/off, need to control the power-enable register.

Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Reviewed-by: James Hogan <james.hogan@imgtec.com>
Acked-by: Seungwon Jeon <tgih.jun@samsung.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
drivers/mmc/host/dw_mmc.c

index 753c55c..c6caedc 100644 (file)
@@ -821,11 +821,17 @@ static void dw_mci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
                /* Power up slot */
                if (slot->host->pdata->setpower)
                        slot->host->pdata->setpower(slot->id, mmc->ocr_avail);
+               regs = mci_readl(slot->host, PWREN);
+               regs |= (1 << slot->id);
+               mci_writel(slot->host, PWREN, regs);
                break;
        case MMC_POWER_OFF:
                /* Power down slot */
                if (slot->host->pdata->setpower)
                        slot->host->pdata->setpower(slot->id, 0);
+               regs = mci_readl(slot->host, PWREN);
+               regs &= ~(1 << slot->id);
+               mci_writel(slot->host, PWREN, regs);
                break;
        default:
                break;