|
@@ -37,22 +37,17 @@
|
|
|
|
|
|
static void tmio_mmc_set_clock(struct tmio_mmc_host *host, int new_clock)
|
|
static void tmio_mmc_set_clock(struct tmio_mmc_host *host, int new_clock)
|
|
{
|
|
{
|
|
- u32 clk = 0, clock, f_min = host->mmc->f_min;
|
|
|
|
|
|
+ u32 clk = 0, clock;
|
|
|
|
|
|
if (new_clock) {
|
|
if (new_clock) {
|
|
- for (clock = f_min, clk = 0x100; new_clock >= (clock<<1); ) {
|
|
|
|
|
|
+ for (clock = host->mmc->f_min, clk = 0x80000080;
|
|
|
|
+ new_clock >= (clock<<1); clk >>= 1)
|
|
clock <<= 1;
|
|
clock <<= 1;
|
|
- clk >>= 1;
|
|
|
|
- }
|
|
|
|
- if (clk & 0x1)
|
|
|
|
- clk = 0x20000;
|
|
|
|
-
|
|
|
|
- clk >>= 2;
|
|
|
|
- sd_config_write8(host, CNF_SD_CLK_MODE, (clk & 0x8000) ? 0 : 1);
|
|
|
|
clk |= 0x100;
|
|
clk |= 0x100;
|
|
}
|
|
}
|
|
|
|
|
|
- sd_ctrl_write16(host, CTL_SD_CARD_CLK_CTL, clk);
|
|
|
|
|
|
+ sd_config_write8(host, CNF_SD_CLK_MODE, clk >> 22);
|
|
|
|
+ sd_ctrl_write16(host, CTL_SD_CARD_CLK_CTL, clk & 0x1ff);
|
|
}
|
|
}
|
|
|
|
|
|
static void tmio_mmc_clk_stop(struct tmio_mmc_host *host)
|
|
static void tmio_mmc_clk_stop(struct tmio_mmc_host *host)
|