[PATCH] mmc: dw_mmc-rockchip: Add memory clock auto-gating support
Ulf Hansson
ulf.hansson at linaro.org
Tue Nov 11 08:55:26 PST 2025
On Tue, 4 Nov 2025 at 08:41, Shawn Lin <shawn.lin at rock-chips.com> wrote:
>
> 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.
Just to make sure, does this work if the controller is used for SDIO
and has SDIO irqs enabled?
Or perhaps that is taken care of in dw_mci_prepare_sdio_irq()?
>
> Signed-off-by: Shawn Lin <shawn.lin at rock-chips.com>
Kind regards
Uffe
> ---
>
> drivers/mmc/host/dw_mmc-rockchip.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/drivers/mmc/host/dw_mmc-rockchip.c b/drivers/mmc/host/dw_mmc-rockchip.c
> index 6813549..62c68cd 100644
> --- a/drivers/mmc/host/dw_mmc-rockchip.c
> +++ b/drivers/mmc/host/dw_mmc-rockchip.c
> @@ -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;
> }
>
> --
> 2.7.4
>
More information about the Linux-rockchip
mailing list