mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
mmc: dw_mmc-rockchip: Add memory clock auto-gating support
Per design recommendations, the memory clock can be gated when there is no in-flight transfer, which helps save power. This feature is introduced alongside internal phase support, and this patch enables it. Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
This commit is contained in:
@@ -19,6 +19,8 @@
|
||||
#define RK3288_CLKGEN_DIV 2
|
||||
#define SDMMC_TIMING_CON0 0x130
|
||||
#define SDMMC_TIMING_CON1 0x134
|
||||
#define SDMMC_MISC_CON 0x138
|
||||
#define MEM_CLK_AUTOGATE_ENABLE BIT(5)
|
||||
#define ROCKCHIP_MMC_DELAY_SEL BIT(10)
|
||||
#define ROCKCHIP_MMC_DEGREE_MASK 0x3
|
||||
#define ROCKCHIP_MMC_DEGREE_OFFSET 1
|
||||
@@ -470,6 +472,7 @@ static int dw_mci_rk3576_parse_dt(struct dw_mci *host)
|
||||
|
||||
static int dw_mci_rockchip_init(struct dw_mci *host)
|
||||
{
|
||||
struct dw_mci_rockchip_priv_data *priv = host->priv;
|
||||
int ret, i;
|
||||
|
||||
/* It is slot 8 on Rockchip SoCs */
|
||||
@@ -494,6 +497,9 @@ static int dw_mci_rockchip_init(struct dw_mci *host)
|
||||
dev_warn(host->dev, "no valid minimum freq: %d\n", ret);
|
||||
}
|
||||
|
||||
if (priv->internal_phase)
|
||||
mci_writel(host, MISC_CON, MEM_CLK_AUTOGATE_ENABLE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user