sdmmc v2: Add eMMC overclocking
This commit is contained in:
@@ -220,7 +220,7 @@ static void _sdmmc_autocal_execute(sdmmc_t *sdmmc, u32 power)
|
||||
sdmmc->regs->clkcon |= SDHCI_CLOCK_CARD_EN;
|
||||
}
|
||||
|
||||
static int _sdmmc_dll_cal_execute(sdmmc_t *sdmmc)
|
||||
static int _sdmmc_dll_cal_execute(sdmmc_t *sdmmc, bool overclock)
|
||||
{
|
||||
int result = 1, should_disable_sd_clock = 0;
|
||||
|
||||
@@ -230,6 +230,9 @@ static int _sdmmc_dll_cal_execute(sdmmc_t *sdmmc)
|
||||
sdmmc->regs->clkcon |= SDHCI_CLOCK_CARD_EN;
|
||||
}
|
||||
|
||||
if (sdmmc->id == SDMMC_4 && overclock)
|
||||
sdmmc->regs->vendllcalcfg = sdmmc->regs->vendllcalcfg &= 0xFFFFC07F | (0x7C << 7); // Add -4 TX_DLY_CODE_OFFSET if HS533.
|
||||
|
||||
sdmmc->regs->vendllcalcfg |= TEGRA_MMC_DLLCAL_CFG_EN_CALIBRATE;
|
||||
_sdmmc_get_clkcon(sdmmc);
|
||||
|
||||
@@ -343,7 +346,11 @@ int sdmmc_setup_clock(sdmmc_t *sdmmc, u32 type)
|
||||
sdmmc->regs->clkcon |= SDHCI_CLOCK_CARD_EN;
|
||||
|
||||
if (type == SDHCI_TIMING_MMC_HS400)
|
||||
return _sdmmc_dll_cal_execute(sdmmc);
|
||||
{
|
||||
bool overclock_en = clock > 208000;
|
||||
return _sdmmc_dll_cal_execute(sdmmc, overclock_en);
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user