mirror of
https://github.com/CTCaer/hekate
synced 2024-11-09 21:36:35 +00:00
bdk: sdmmc: small changes
- Log warning for comp pad calibration timeout - Rename some func/defines - Increase SDMMC1 power disable wait to 10ms No real perceived functionality change.
This commit is contained in:
parent
4a24fe0b35
commit
a34206df5b
3 changed files with 12 additions and 9 deletions
|
@ -46,7 +46,7 @@
|
||||||
|
|
||||||
/* OCR bit definitions */
|
/* OCR bit definitions */
|
||||||
#define SD_OCR_VDD_18 (1U << 7) /* VDD voltage 1.8 */
|
#define SD_OCR_VDD_18 (1U << 7) /* VDD voltage 1.8 */
|
||||||
#define SD_VHD_27_36 (1U << 8) /* VDD voltage 2.7 ~ 3.6 */
|
#define SD_VHS_27_36 (1U << 8) /* VDD voltage 2.7 ~ 3.6 */
|
||||||
#define SD_OCR_VDD_32_33 (1U << 20) /* VDD voltage 3.2 ~ 3.3 */
|
#define SD_OCR_VDD_32_33 (1U << 20) /* VDD voltage 3.2 ~ 3.3 */
|
||||||
#define SD_OCR_S18R (1U << 24) /* 1.8V switching request */
|
#define SD_OCR_S18R (1U << 24) /* 1.8V switching request */
|
||||||
#define SD_ROCR_S18A SD_OCR_S18R /* 1.8V switching accepted by card */
|
#define SD_ROCR_S18A SD_OCR_S18R /* 1.8V switching accepted by card */
|
||||||
|
|
|
@ -910,7 +910,7 @@ void _sd_storage_debug_print_ssr(u8 *raw_ssr)
|
||||||
static int _sd_storage_send_if_cond(sdmmc_storage_t *storage, bool *is_sdsc)
|
static int _sd_storage_send_if_cond(sdmmc_storage_t *storage, bool *is_sdsc)
|
||||||
{
|
{
|
||||||
sdmmc_cmd_t cmdbuf;
|
sdmmc_cmd_t cmdbuf;
|
||||||
u16 vhd_pattern = SD_VHD_27_36 | 0xAA;
|
u16 vhd_pattern = SD_VHS_27_36 | 0xAA;
|
||||||
sdmmc_init_cmd(&cmdbuf, SD_SEND_IF_COND, vhd_pattern, SDMMC_RSP_TYPE_5, 0);
|
sdmmc_init_cmd(&cmdbuf, SD_SEND_IF_COND, vhd_pattern, SDMMC_RSP_TYPE_5, 0);
|
||||||
if (!sdmmc_execute_cmd(storage->sdmmc, &cmdbuf, NULL, NULL))
|
if (!sdmmc_execute_cmd(storage->sdmmc, &cmdbuf, NULL, NULL))
|
||||||
{
|
{
|
||||||
|
|
|
@ -222,6 +222,9 @@ static void _sdmmc_autocal_execute(sdmmc_t *sdmmc, u32 power)
|
||||||
{
|
{
|
||||||
sdmmc->regs->autocalcfg &= ~SDHCI_TEGRA_AUTOCAL_ENABLE;
|
sdmmc->regs->autocalcfg &= ~SDHCI_TEGRA_AUTOCAL_ENABLE;
|
||||||
_sdmmc_pad_config_fallback(sdmmc, power);
|
_sdmmc_pad_config_fallback(sdmmc, power);
|
||||||
|
#ifdef ERROR_EXTRA_PRINTING
|
||||||
|
EPRINTFARGS("SDMMC%d: Comp Pad cal timeout!", sdmmc->id + 1);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// Disable E_INPUT (SD) or enable E_PWRD (eMMC) to conserve power.
|
// Disable E_INPUT (SD) or enable E_PWRD (eMMC) to conserve power.
|
||||||
|
@ -403,7 +406,7 @@ static void _sdmmc_card_clock_enable(sdmmc_t *sdmmc)
|
||||||
sdmmc->card_clock_enabled = 1;
|
sdmmc->card_clock_enabled = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _sdmmc_sd_clock_disable(sdmmc_t *sdmmc)
|
static void _sdmmc_card_clock_disable(sdmmc_t *sdmmc)
|
||||||
{
|
{
|
||||||
sdmmc->card_clock_enabled = 0;
|
sdmmc->card_clock_enabled = 0;
|
||||||
sdmmc->regs->clkcon &= ~SDHCI_CLOCK_CARD_EN;
|
sdmmc->regs->clkcon &= ~SDHCI_CLOCK_CARD_EN;
|
||||||
|
@ -934,7 +937,7 @@ static u32 _sdmmc_check_mask_interrupt(sdmmc_t *sdmmc, u16 *pout, u16 mask)
|
||||||
if (norintsts & SDHCI_INT_ERROR)
|
if (norintsts & SDHCI_INT_ERROR)
|
||||||
{
|
{
|
||||||
#ifdef ERROR_EXTRA_PRINTING
|
#ifdef ERROR_EXTRA_PRINTING
|
||||||
EPRINTFARGS("SDMMC%d: norintsts %08X, errintsts %08X\n", sdmmc->id + 1, norintsts, errintsts);
|
EPRINTFARGS("SDMMC%d: norintsts %08X, errintsts %08X", sdmmc->id + 1, norintsts, errintsts);
|
||||||
#endif
|
#endif
|
||||||
sdmmc->regs->errintsts = errintsts;
|
sdmmc->regs->errintsts = errintsts;
|
||||||
return SDMMC_MASKINT_ERROR;
|
return SDMMC_MASKINT_ERROR;
|
||||||
|
@ -1403,7 +1406,7 @@ int sdmmc_init(sdmmc_t *sdmmc, u32 id, u32 power, u32 bus_width, u32 type)
|
||||||
// Disable clock if enabled.
|
// Disable clock if enabled.
|
||||||
if (clock_sdmmc_is_not_reset_and_enabled(id))
|
if (clock_sdmmc_is_not_reset_and_enabled(id))
|
||||||
{
|
{
|
||||||
_sdmmc_sd_clock_disable(sdmmc);
|
_sdmmc_card_clock_disable(sdmmc);
|
||||||
_sdmmc_commit_changes(sdmmc);
|
_sdmmc_commit_changes(sdmmc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1456,16 +1459,16 @@ void sdmmc1_disable_power()
|
||||||
// T210B01 WAR: Set pads to discharge state.
|
// T210B01 WAR: Set pads to discharge state.
|
||||||
_sdmmc_config_sdmmc1_pads(true);
|
_sdmmc_config_sdmmc1_pads(true);
|
||||||
|
|
||||||
// Disable SD card IO power regulator.
|
// Disable SD card IO power.
|
||||||
max7762x_regulator_enable(REGULATOR_LDO2, false);
|
max7762x_regulator_enable(REGULATOR_LDO2, false);
|
||||||
usleep(4000);
|
usleep(4000);
|
||||||
|
|
||||||
// Disable SD card IO power pin.
|
// Disable SD card power.
|
||||||
gpio_write(GPIO_PORT_E, GPIO_PIN_4, GPIO_LOW);
|
gpio_write(GPIO_PORT_E, GPIO_PIN_4, GPIO_LOW);
|
||||||
|
|
||||||
// T210/T210B01 WAR: Set start timer for IO and Controller power discharge.
|
// T210/T210B01 WAR: Set start timer for IO and Controller power discharge.
|
||||||
sd_power_cycle_time_start = get_tmr_ms();
|
sd_power_cycle_time_start = get_tmr_ms();
|
||||||
usleep(1000); // To power cycle, min 1ms without power is needed.
|
usleep(10000); // To power cycle, min 1ms without power is needed.
|
||||||
|
|
||||||
// Disable SDMMC1 controller power.
|
// Disable SDMMC1 controller power.
|
||||||
PMC(APBDEV_PMC_NO_IOPOWER) |= PMC_NO_IOPOWER_SDMMC1_IO_EN;
|
PMC(APBDEV_PMC_NO_IOPOWER) |= PMC_NO_IOPOWER_SDMMC1_IO_EN;
|
||||||
|
@ -1486,7 +1489,7 @@ void sdmmc_end(sdmmc_t *sdmmc)
|
||||||
{
|
{
|
||||||
if (!sdmmc->clock_stopped)
|
if (!sdmmc->clock_stopped)
|
||||||
{
|
{
|
||||||
_sdmmc_sd_clock_disable(sdmmc);
|
_sdmmc_card_clock_disable(sdmmc);
|
||||||
// Disable SDMMC power.
|
// Disable SDMMC power.
|
||||||
_sdmmc_set_io_power(sdmmc, SDMMC_POWER_OFF);
|
_sdmmc_set_io_power(sdmmc, SDMMC_POWER_OFF);
|
||||||
_sdmmc_commit_changes(sdmmc);
|
_sdmmc_commit_changes(sdmmc);
|
||||||
|
|
Loading…
Reference in a new issue