mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 19:30:30 +09:00
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:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user