sdio: optimize sdio clk cfg [1/1]

PD#SWPL-9640

Problem:
sdio auto_clk close fail.

Solution:
optimize sdio auto_clk cfg,
add sdio_clk_always_on().

Verify:
G12A_u211

Change-Id: Iec6e9460ad650001f079844f183d905789aa76e7
Signed-off-by: Nan Li <nan.li@amlogic.com>

sdio: optimize sdio clk cfg [2/2]

PD#SWPL-9640

Problem:
sdio auto_clk close fail.

Solution:
optimize sdio auto_clk cfg,
add sdio_clk_always_on(int on).

Verify:
G12A_u211

Change-Id: Id760b41a948c6b7e15f675376084b0cdd4edc151
Signed-off-by: Nan Li <nan.li@amlogic.com>
This commit is contained in:
Nan Li
2019-06-11 14:28:50 +08:00
committed by Luan Yuan
parent 0bcb07a4d8
commit 391be7395f
2 changed files with 28 additions and 0 deletions

View File

@@ -2970,6 +2970,7 @@ static int aml_sd_emmc_card_busy(struct mmc_host *mmc)
vconf = readl(host->base + SD_EMMC_CFG);
pconf->auto_clk = 1;
writel(vconf, host->base + SD_EMMC_CFG);
host->sd_sdio_switch_volat_done = 0;
if ((host->mem->start == host->data->port_b_base)
&& host->data->tdma_f)
host->init_volt = 0;

View File

@@ -275,6 +275,33 @@ void aml_emmc_hw_reset(struct mmc_host *mmc)
#endif
}
void sdio_clk_always_on(int on)
{
u32 vconf = 0;
struct sd_emmc_config *pconf = (struct sd_emmc_config *)&vconf;
struct amlsd_platform *pdata = NULL;
struct amlsd_host *host = NULL;
if (sdio_host) {
pdata = mmc_priv(sdio_host);
host = pdata->host;
vconf = readl(host->base + SD_EMMC_CFG);
if (on) {
pconf->auto_clk = 0;
pconf->spare = 1;
} else {
pconf->auto_clk = 1;
pconf->spare = 0;
}
writel(vconf, host->base + SD_EMMC_CFG);
pr_info("clk always on (%d): cfg = %x\n",
on, readl(host->base + SD_EMMC_CFG));
}
}
EXPORT_SYMBOL(sdio_clk_always_on);
static void sdio_rescan(struct mmc_host *mmc)
{
int ret;