mirror of
https://github.com/Atmosphere-NX/Atmosphere.git
synced 2024-11-10 14:11:43 +00:00
fusee: actually obey the SD spec when switching voltage
This commit is contained in:
parent
5b5aa38486
commit
402b69c549
1 changed files with 8 additions and 1 deletions
|
@ -321,6 +321,8 @@ enum sdmmc_command_magic {
|
||||||
|
|
||||||
/* Misc constants */
|
/* Misc constants */
|
||||||
MMC_DEFAULT_BLOCK_ORDER = 9,
|
MMC_DEFAULT_BLOCK_ORDER = 9,
|
||||||
|
MMC_VOLTAGE_SWITCH_TIME = 5000, // 5mS
|
||||||
|
MMC_POST_CLOCK_DELAY = 1000, // 1mS
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -789,12 +791,17 @@ static int sdmmc1_switch_to_low_voltage(struct mmc *mmc)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Rerun the main clock calibration...
|
// Rerun the main clock calibration...
|
||||||
rc = sdmmc_run_autocal(mmc, true);
|
rc = sdmmc_run_autocal(mmc, false);
|
||||||
if (rc)
|
if (rc)
|
||||||
mmc_print(mmc, "WARNING: failed to re-calibrate after voltage switch!");
|
mmc_print(mmc, "WARNING: failed to re-calibrate after voltage switch!");
|
||||||
|
|
||||||
// ... and ensure the host is set up to apply the relevant change.
|
// ... and ensure the host is set up to apply the relevant change.
|
||||||
sdmmc_set_working_voltage(mmc, MMC_VOLTAGE_1V8);
|
sdmmc_set_working_voltage(mmc, MMC_VOLTAGE_1V8);
|
||||||
|
udelay(MMC_VOLTAGE_SWITCH_TIME);
|
||||||
|
|
||||||
|
// Enable the SD clock.
|
||||||
|
sdmmc_clock_enable(mmc, true);
|
||||||
|
udelay(MMC_POST_CLOCK_DELAY);
|
||||||
|
|
||||||
mmc_debug(mmc, "now running from 1V8");
|
mmc_debug(mmc, "now running from 1V8");
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in a new issue