mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-11-03 21:48:15 +00:00 
			
		
		
		
	Merge branch 'master' of git://git.denx.de/u-boot-sh
This commit is contained in:
		
						commit
						1a9c8f12f2
					
				@ -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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user