Skip to content

Commit 80fe4e9

Browse files
XBurststorulf
authored andcommitted
mmc: jz4740: Add support for Low Power Mode (LPM)
Add support for low power mode to the Ingenic's MMC/SD Controller. Signed-off-by: Zhou Yanjie <[email protected]> Signed-off-by: Ulf Hansson <[email protected]>
1 parent fea5fcc commit 80fe4e9

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

drivers/mmc/host/jz4740_mmc.c

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
#define JZ_REG_MMC_RESP_FIFO 0x34
4242
#define JZ_REG_MMC_RXFIFO 0x38
4343
#define JZ_REG_MMC_TXFIFO 0x3C
44+
#define JZ_REG_MMC_LPM 0x40
4445
#define JZ_REG_MMC_DMAC 0x44
4546

4647
#define JZ_MMC_STRPCL_EXIT_MULTIPLE BIT(7)
@@ -100,6 +101,12 @@
100101
#define JZ_MMC_DMAC_DMA_SEL BIT(1)
101102
#define JZ_MMC_DMAC_DMA_EN BIT(0)
102103

104+
#define JZ_MMC_LPM_DRV_RISING BIT(31)
105+
#define JZ_MMC_LPM_DRV_RISING_QTR_PHASE_DLY BIT(31)
106+
#define JZ_MMC_LPM_DRV_RISING_1NS_DLY BIT(30)
107+
#define JZ_MMC_LPM_SMP_RISING_QTR_OR_HALF_PHASE_DLY BIT(29)
108+
#define JZ_MMC_LPM_LOW_POWER_MODE_EN BIT(0)
109+
103110
#define JZ_MMC_CLK_RATE 24000000
104111

105112
enum jz4740_mmc_version {
@@ -856,6 +863,22 @@ static int jz4740_mmc_set_clock_rate(struct jz4740_mmc_host *host, int rate)
856863
}
857864

858865
writew(div, host->base + JZ_REG_MMC_CLKRT);
866+
867+
if (real_rate > 25000000) {
868+
if (host->version >= JZ_MMC_X1000) {
869+
writel(JZ_MMC_LPM_DRV_RISING_QTR_PHASE_DLY |
870+
JZ_MMC_LPM_SMP_RISING_QTR_OR_HALF_PHASE_DLY |
871+
JZ_MMC_LPM_LOW_POWER_MODE_EN,
872+
host->base + JZ_REG_MMC_LPM);
873+
} else if (host->version >= JZ_MMC_JZ4760) {
874+
writel(JZ_MMC_LPM_DRV_RISING |
875+
JZ_MMC_LPM_LOW_POWER_MODE_EN,
876+
host->base + JZ_REG_MMC_LPM);
877+
} else if (host->version >= JZ_MMC_JZ4725B)
878+
writel(JZ_MMC_LPM_LOW_POWER_MODE_EN,
879+
host->base + JZ_REG_MMC_LPM);
880+
}
881+
859882
return real_rate;
860883
}
861884

0 commit comments

Comments
 (0)