diff options
Diffstat (limited to 'arch/arm/plat-s3c24xx/s3c2443-clock.c')
| -rw-r--r-- | arch/arm/plat-s3c24xx/s3c2443-clock.c | 39 | 
1 files changed, 26 insertions, 13 deletions
diff --git a/arch/arm/plat-s3c24xx/s3c2443-clock.c b/arch/arm/plat-s3c24xx/s3c2443-clock.c index 5a21b15b2a9..95e68190d59 100644 --- a/arch/arm/plat-s3c24xx/s3c2443-clock.c +++ b/arch/arm/plat-s3c24xx/s3c2443-clock.c @@ -297,13 +297,6 @@ static struct clksrc_clk clk_usb_bus_host = {  static struct clksrc_clk clksrc_clks[] = {  	{ -		/* ART baud-rate clock sourced from esysclk via a divisor */ -		.clk	= { -			.name		= "uartclk", -			.parent		= &clk_esysclk.clk, -		}, -		.reg_div = { .reg = S3C2443_CLKDIV1, .size = 4, .shift = 8 }, -	}, {  		/* camera interface bus-clock, divided down from esysclk */  		.clk	= {  			.name		= "camif-upll",	/* same as 2440 name */ @@ -323,6 +316,15 @@ static struct clksrc_clk clksrc_clks[] = {  	},  }; +static struct clksrc_clk clk_esys_uart = { +	/* ART baud-rate clock sourced from esysclk via a divisor */ +	.clk	= { +		.name		= "uartclk", +		.parent		= &clk_esysclk.clk, +	}, +	.reg_div = { .reg = S3C2443_CLKDIV1, .size = 4, .shift = 8 }, +}; +  static struct clk clk_i2s_ext = {  	.name		= "i2s-ext",  }; @@ -425,12 +427,6 @@ static struct clk init_clocks[] = {  		.enable		= s3c2443_clkcon_enable_h,  		.ctrlbit	= S3C2443_HCLKCON_DMA5,  	}, { -		.name		= "hsmmc", -		.devname	= "s3c-sdhci.1", -		.parent		= &clk_h, -		.enable		= s3c2443_clkcon_enable_h, -		.ctrlbit	= S3C2443_HCLKCON_HSMMC, -	}, {  		.name		= "gpio",  		.parent		= &clk_p,  		.enable		= s3c2443_clkcon_enable_p, @@ -512,6 +508,14 @@ static struct clk init_clocks[] = {  	}  }; +static struct clk hsmmc1_clk = { +	.name		= "hsmmc", +	.devname	= "s3c-sdhci.1", +	.parent		= &clk_h, +	.enable		= s3c2443_clkcon_enable_h, +	.ctrlbit	= S3C2443_HCLKCON_HSMMC, +}; +  static inline unsigned long s3c2443_get_hdiv(unsigned long clkcon0)  {  	clkcon0 &= S3C2443_CLKDIV0_HCLKDIV_MASK; @@ -577,6 +581,7 @@ static struct clk *clks[] __initdata = {  	&clk_epll,  	&clk_usb_bus,  	&clk_armdiv, +	&hsmmc1_clk,  };  static struct clksrc_clk *clksrcs[] __initdata = { @@ -589,6 +594,13 @@ static struct clksrc_clk *clksrcs[] __initdata = {  	&clk_arm,  }; +static struct clk_lookup s3c2443_clk_lookup[] = { +	CLKDEV_INIT(NULL, "clk_uart_baud1", &s3c24xx_uclk), +	CLKDEV_INIT(NULL, "clk_uart_baud2", &clk_p), +	CLKDEV_INIT(NULL, "clk_uart_baud3", &clk_esys_uart.clk), +	CLKDEV_INIT("s3c-sdhci.1", "mmc_busclk.0", &hsmmc1_clk), +}; +  void __init s3c2443_common_init_clocks(int xtal, pll_fn get_mpll,  				       unsigned int *divs, int nr_divs,  				       int divmask) @@ -618,6 +630,7 @@ void __init s3c2443_common_init_clocks(int xtal, pll_fn get_mpll,  	/* See s3c2443/etc notes on disabling clocks at init time */  	s3c_register_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off));  	s3c_disable_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off)); +	clkdev_add_table(s3c2443_clk_lookup, ARRAY_SIZE(s3c2443_clk_lookup));  	s3c2443_common_setup_clocks(get_mpll);  }  |