Merge branch 'master' of git://git.denx.de/u-boot-sh
This commit is contained in:
commit
1a9c8f12f2
2 changed files with 16 additions and 11 deletions
|
@ -103,20 +103,18 @@ static int mmcif_wait_interrupt_flag(struct sh_mmcif_host *host)
|
|||
|
||||
static void sh_mmcif_clock_control(struct sh_mmcif_host *host, unsigned int clk)
|
||||
{
|
||||
int i;
|
||||
|
||||
sh_mmcif_bitclr(CLK_ENABLE, &host->regs->ce_clk_ctrl);
|
||||
sh_mmcif_bitclr(CLK_CLEAR, &host->regs->ce_clk_ctrl);
|
||||
|
||||
if (!clk)
|
||||
return;
|
||||
if (clk == CLKDEV_EMMC_DATA) {
|
||||
|
||||
if (clk == CLKDEV_EMMC_DATA)
|
||||
sh_mmcif_bitset(CLK_PCLK, &host->regs->ce_clk_ctrl);
|
||||
} else {
|
||||
for (i = 1; (unsigned int)host->clk / (1 << i) >= clk; i++)
|
||||
;
|
||||
sh_mmcif_bitset((i - 1) << 16, &host->regs->ce_clk_ctrl);
|
||||
}
|
||||
else
|
||||
sh_mmcif_bitset((fls(DIV_ROUND_UP(host->clk,
|
||||
clk) - 1) - 1) << 16,
|
||||
&host->regs->ce_clk_ctrl);
|
||||
sh_mmcif_bitset(CLK_ENABLE, &host->regs->ce_clk_ctrl);
|
||||
}
|
||||
|
||||
|
@ -581,8 +579,6 @@ static struct mmc_config sh_mmcif_cfg = {
|
|||
.host_caps = MMC_MODE_HS | MMC_MODE_HS_52MHz | MMC_MODE_4BIT |
|
||||
MMC_MODE_8BIT | MMC_MODE_HC,
|
||||
.voltages = MMC_VDD_32_33 | MMC_VDD_33_34,
|
||||
.f_min = CLKDEV_MMC_INIT,
|
||||
.f_max = CLKDEV_EMMC_DATA,
|
||||
.b_max = CONFIG_SYS_MMC_MAX_BLK_COUNT,
|
||||
};
|
||||
|
||||
|
@ -599,6 +595,9 @@ int mmcif_mmc_init(void)
|
|||
host->regs = (struct sh_mmcif_regs *)CONFIG_SH_MMCIF_ADDR;
|
||||
host->clk = CONFIG_SH_MMCIF_CLK;
|
||||
|
||||
sh_mmcif_cfg.f_min = MMC_CLK_DIV_MIN(host->clk);
|
||||
sh_mmcif_cfg.f_max = MMC_CLK_DIV_MAX(host->clk);
|
||||
|
||||
mmc = mmc_create(&sh_mmcif_cfg, host);
|
||||
if (mmc == NULL) {
|
||||
free(host);
|
||||
|
|
|
@ -199,7 +199,13 @@ struct sh_mmcif_regs {
|
|||
#define SOFT_RST_OFF (0 << 31)
|
||||
|
||||
#define CLKDEV_EMMC_DATA 52000000 /* 52MHz */
|
||||
#define CLKDEV_MMC_INIT 400000 /* 100 - 400 KHz */
|
||||
#ifdef CONFIG_RMOBILE
|
||||
#define MMC_CLK_DIV_MIN(clk) (clk / (1 << 9))
|
||||
#define MMC_CLK_DIV_MAX(clk) (clk / (1 << 1))
|
||||
#else
|
||||
#define MMC_CLK_DIV_MIN(clk) (clk / (1 << 8))
|
||||
#define MMC_CLK_DIV_MAX(clk) CLKDEV_EMMC_DATA
|
||||
#endif
|
||||
|
||||
#define MMC_BUS_WIDTH_1 0
|
||||
#define MMC_BUS_WIDTH_4 2
|
||||
|
|
Loading…
Reference in a new issue