mirror of
https://github.com/CTCaer/hekate
synced 2024-12-22 19:31:12 +00:00
bdk: sdmmc: rename divisor param to card clock
This commit is contained in:
parent
298893f404
commit
9a222e0e49
3 changed files with 14 additions and 11 deletions
|
@ -675,7 +675,8 @@ int sdmmc_storage_init_mmc(sdmmc_storage_t *storage, sdmmc_t *sdmmc, u32 bus_wid
|
||||||
return 0;
|
return 0;
|
||||||
DPRINTF("[MMC] after init\n");
|
DPRINTF("[MMC] after init\n");
|
||||||
|
|
||||||
usleep(1000 + (74000 + sdmmc->divisor - 1) / sdmmc->divisor);
|
// Wait 1ms + 74 cycles.
|
||||||
|
usleep(1000 + (74 * 1000 + sdmmc->card_clock - 1) / sdmmc->card_clock);
|
||||||
|
|
||||||
if (!_sdmmc_storage_go_idle_state(storage))
|
if (!_sdmmc_storage_go_idle_state(storage))
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1383,7 +1384,8 @@ int sdmmc_storage_init_sd(sdmmc_storage_t *storage, sdmmc_t *sdmmc, u32 bus_widt
|
||||||
return 0;
|
return 0;
|
||||||
DPRINTF("[SD] after init\n");
|
DPRINTF("[SD] after init\n");
|
||||||
|
|
||||||
usleep(1000 + (74000 + sdmmc->divisor - 1) / sdmmc->divisor);
|
// Wait 1ms + 74 cycles.
|
||||||
|
usleep(1000 + (74 * 1000 + sdmmc->card_clock - 1) / sdmmc->card_clock);
|
||||||
|
|
||||||
if (!_sdmmc_storage_go_idle_state(storage))
|
if (!_sdmmc_storage_go_idle_state(storage))
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1527,7 +1529,8 @@ int sdmmc_storage_init_gc(sdmmc_storage_t *storage, sdmmc_t *sdmmc)
|
||||||
return 0;
|
return 0;
|
||||||
DPRINTF("[GC] after init\n");
|
DPRINTF("[GC] after init\n");
|
||||||
|
|
||||||
usleep(1000 + (10000 + sdmmc->divisor - 1) / sdmmc->divisor);
|
// Wait 1ms + 10 clock cycles.
|
||||||
|
usleep(1000 + (10 * 1000 + sdmmc->card_clock - 1) / sdmmc->card_clock);
|
||||||
|
|
||||||
if (!sdmmc_tuning_execute(storage->sdmmc, SDHCI_TIMING_MMC_DDR100, MMC_SEND_TUNING_BLOCK_HS200))
|
if (!sdmmc_tuning_execute(storage->sdmmc, SDHCI_TIMING_MMC_DDR100, MMC_SEND_TUNING_BLOCK_HS200))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -367,7 +367,7 @@ int sdmmc_setup_clock(sdmmc_t *sdmmc, u32 type)
|
||||||
u16 divisor;
|
u16 divisor;
|
||||||
clock_sdmmc_get_card_clock_div(&clock, &divisor, type);
|
clock_sdmmc_get_card_clock_div(&clock, &divisor, type);
|
||||||
clock_sdmmc_config_clock_source(&clock, sdmmc->id, clock);
|
clock_sdmmc_config_clock_source(&clock, sdmmc->id, clock);
|
||||||
sdmmc->divisor = (clock + divisor - 1) / divisor;
|
sdmmc->card_clock = (clock + divisor - 1) / divisor;
|
||||||
|
|
||||||
//if divisor != 1 && divisor << 31 -> error
|
//if divisor != 1 && divisor << 31 -> error
|
||||||
|
|
||||||
|
@ -657,7 +657,7 @@ static int _sdmmc_tuning_execute_once(sdmmc_t *sdmmc, u32 cmd)
|
||||||
sdmmc->regs->norintsts = SDHCI_INT_DATA_AVAIL;
|
sdmmc->regs->norintsts = SDHCI_INT_DATA_AVAIL;
|
||||||
sdmmc->regs->norintstsen &= ~SDHCI_INT_DATA_AVAIL;
|
sdmmc->regs->norintstsen &= ~SDHCI_INT_DATA_AVAIL;
|
||||||
_sdmmc_commit_changes(sdmmc);
|
_sdmmc_commit_changes(sdmmc);
|
||||||
usleep((1000 * 8 + sdmmc->divisor - 1) / sdmmc->divisor);
|
usleep((8 * 1000 + sdmmc->card_clock - 1) / sdmmc->card_clock); // Wait 8 cycles.
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -666,7 +666,7 @@ static int _sdmmc_tuning_execute_once(sdmmc_t *sdmmc, u32 cmd)
|
||||||
|
|
||||||
sdmmc->regs->norintstsen &= ~SDHCI_INT_DATA_AVAIL;
|
sdmmc->regs->norintstsen &= ~SDHCI_INT_DATA_AVAIL;
|
||||||
_sdmmc_commit_changes(sdmmc);
|
_sdmmc_commit_changes(sdmmc);
|
||||||
usleep((1000 * 8 + sdmmc->divisor - 1) / sdmmc->divisor);
|
usleep((8 * 1000 + sdmmc->card_clock - 1) / sdmmc->card_clock); // Wait 8 cycles.
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -897,11 +897,11 @@ int sdmmc_stop_transmission(sdmmc_t *sdmmc, u32 *rsp)
|
||||||
should_disable_sd_clock = true;
|
should_disable_sd_clock = true;
|
||||||
sdmmc->regs->clkcon |= SDHCI_CLOCK_CARD_EN;
|
sdmmc->regs->clkcon |= SDHCI_CLOCK_CARD_EN;
|
||||||
_sdmmc_commit_changes(sdmmc);
|
_sdmmc_commit_changes(sdmmc);
|
||||||
usleep((8000 + sdmmc->divisor - 1) / sdmmc->divisor);
|
usleep((8 * 1000 + sdmmc->card_clock - 1) / sdmmc->card_clock); // Wait 8 cycles.
|
||||||
}
|
}
|
||||||
|
|
||||||
int result = _sdmmc_stop_transmission_inner(sdmmc, rsp);
|
int result = _sdmmc_stop_transmission_inner(sdmmc, rsp);
|
||||||
usleep((8000 + sdmmc->divisor - 1) / sdmmc->divisor);
|
usleep((8 * 1000 + sdmmc->card_clock - 1) / sdmmc->card_clock); // Wait 8 cycles.
|
||||||
|
|
||||||
if (should_disable_sd_clock)
|
if (should_disable_sd_clock)
|
||||||
sdmmc->regs->clkcon &= ~SDHCI_CLOCK_CARD_EN;
|
sdmmc->regs->clkcon &= ~SDHCI_CLOCK_CARD_EN;
|
||||||
|
@ -1408,11 +1408,11 @@ int sdmmc_execute_cmd(sdmmc_t *sdmmc, sdmmc_cmd_t *cmd, sdmmc_req_t *req, u32 *b
|
||||||
should_disable_sd_clock = 1;
|
should_disable_sd_clock = 1;
|
||||||
sdmmc->regs->clkcon |= SDHCI_CLOCK_CARD_EN;
|
sdmmc->regs->clkcon |= SDHCI_CLOCK_CARD_EN;
|
||||||
_sdmmc_commit_changes(sdmmc);
|
_sdmmc_commit_changes(sdmmc);
|
||||||
usleep((8000 + sdmmc->divisor - 1) / sdmmc->divisor);
|
usleep((8 * 1000 + sdmmc->card_clock - 1) / sdmmc->card_clock); // Wait 8 cycles.
|
||||||
}
|
}
|
||||||
|
|
||||||
int result = _sdmmc_execute_cmd_inner(sdmmc, cmd, req, blkcnt_out);
|
int result = _sdmmc_execute_cmd_inner(sdmmc, cmd, req, blkcnt_out);
|
||||||
usleep((8000 + sdmmc->divisor - 1) / sdmmc->divisor);
|
usleep((8 * 1000 + sdmmc->card_clock - 1) / sdmmc->card_clock); // Wait 8 cycles.
|
||||||
|
|
||||||
if (should_disable_sd_clock)
|
if (should_disable_sd_clock)
|
||||||
sdmmc->regs->clkcon &= ~SDHCI_CLOCK_CARD_EN;
|
sdmmc->regs->clkcon &= ~SDHCI_CLOCK_CARD_EN;
|
||||||
|
|
|
@ -225,7 +225,7 @@ typedef struct _sdmmc_t
|
||||||
{
|
{
|
||||||
t210_sdmmc_t *regs;
|
t210_sdmmc_t *regs;
|
||||||
u32 id;
|
u32 id;
|
||||||
u32 divisor;
|
u32 card_clock;
|
||||||
u32 clock_stopped;
|
u32 clock_stopped;
|
||||||
int powersave_enabled;
|
int powersave_enabled;
|
||||||
int manual_cal;
|
int manual_cal;
|
||||||
|
|
Loading…
Reference in a new issue