mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 20:07:46 +09:00
emmc: refixed support for sdio wifi
PD#154260: emmc: refixed support for sdio wifi 1. adjust sdio timing parameters Change-Id: Iecd400b0570c363cc1df450bc09f8dfa2d7fa533 Signed-off-by: Long Yu <long.yu@amlogic.com>
This commit is contained in:
@@ -589,8 +589,8 @@ u32 aml_sd_emmc_tuning_transfer(struct mmc_host *mmc,
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
pr_err("Tuning transfer error: nmatch=%d\n",
|
||||
nmatch);
|
||||
pr_err("Tuning transfer error: nmatch=%d tuning_err:0x%x\n",
|
||||
nmatch, tuning_err);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -241,23 +241,21 @@ static void aml_sd_emmc_set_timing_v3(struct amlsd_host *host,
|
||||
clkc->div = clk_div / 2;
|
||||
if (aml_card_type_mmc(pdata))
|
||||
clkc->core_phase = 2;
|
||||
writel(vclkc, host->base + SD_EMMC_CLOCK_V3);
|
||||
pdata->clkc = vclkc;
|
||||
pr_info("%s: try set sd/emmc to DDR mode\n",
|
||||
mmc_hostname(host->mmc));
|
||||
} else if (timing == MMC_TIMING_MMC_HS) {
|
||||
} else if (timing == MMC_TIMING_MMC_HS)
|
||||
clkc->core_phase = 3;
|
||||
writel(vclkc, host->base + SD_EMMC_CLOCK_V3);
|
||||
pdata->clkc = vclkc;
|
||||
} else if ((timing == MMC_TIMING_MMC_HS200)
|
||||
|| ((timing == MMC_TIMING_MMC_HS)
|
||||
&& aml_card_type_non_sdio(pdata))) {
|
||||
else if ((timing == MMC_TIMING_MMC_HS200)
|
||||
|| ((timing == MMC_TIMING_SD_HS)
|
||||
&& aml_card_type_non_sdio(pdata))
|
||||
|| (timing == MMC_TIMING_UHS_SDR104)) {
|
||||
clkc->core_phase = 2;
|
||||
writel(vclkc, host->base + SD_EMMC_CLOCK_V3);
|
||||
pdata->clkc = vclkc;
|
||||
} else
|
||||
ctrl->ddr = 0;
|
||||
|
||||
writel(vclkc, host->base + SD_EMMC_CLOCK_V3);
|
||||
pdata->clkc = vclkc;
|
||||
|
||||
writel(vctrl, host->base + SD_EMMC_CFG);
|
||||
pr_debug("sd emmc is %s\n",
|
||||
ctrl->ddr?"DDR mode":"SDR mode");
|
||||
@@ -775,8 +773,8 @@ static int emmc_ds_core_align(struct mmc_host *mmc)
|
||||
delay2 += (cmd_count<<24);
|
||||
writel(delay1, host->base + SD_EMMC_DELAY1_V3);
|
||||
writel(delay2, host->base + SD_EMMC_DELAY2_V3);
|
||||
pr_debug("ds_count:%d,delay1:0x%x,delay2:0x%x,count: %u\n",
|
||||
ds_count, readl(host->base + SD_EMMC_DELAY1_V3),
|
||||
pr_debug("cmd_count:%d,delay1:0x%x,delay2:0x%x,count: %u\n",
|
||||
cmd_count, readl(host->base + SD_EMMC_DELAY1_V3),
|
||||
readl(host->base + SD_EMMC_DELAY2_V3), count);
|
||||
return 0;
|
||||
}
|
||||
@@ -1201,10 +1199,11 @@ RETRY:
|
||||
writel(delay1, host->base + SD_EMMC_DELAY1_V3);
|
||||
|
||||
host->is_tunning = 0;
|
||||
pr_info("%s: gadjust=0x%x, gdelay1=0x%x\n",
|
||||
pr_info("%s: gadjust=0x%x, gdelay1=0x%x, gclock=0x%x\n",
|
||||
mmc_hostname(host->mmc),
|
||||
readl(host->base + SD_EMMC_ADJUST_V3),
|
||||
readl(host->base + SD_EMMC_DELAY1_V3));
|
||||
readl(host->base + SD_EMMC_DELAY1_V3),
|
||||
readl(host->base + SD_EMMC_CLOCK_V3));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user