All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kukjin Kim <kgene.kim@samsung.com>
To: 'Naveen Krishna Chatradhi' <ch.naveen@samsung.com>,
	jassisinghbrar@gmail.com, sbkim73@samsung.com,
	linux-samsung-soc@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org
Cc: sw.youn@samsung.com
Subject: RE: [PATCH v2 3/3] ARM: EXYNOS4: Add EPLL clock operations
Date: Mon, 18 Jul 2011 14:52:03 +0900	[thread overview]
Message-ID: <048501cc450e$d4d7e880$7e87b980$%kim@samsung.com> (raw)
In-Reply-To: <1308655463-8787-4-git-send-email-ch.naveen@samsung.com>

Naveen Krishna Chatradhi wrote:
> 
> S5PV210 and EXYNOS4 uses similar PLL(PLL46XX) for EPLL.
> So, The EPLL set rate function is duplicated.
> 
> Note: Moved common code to plat-s5p, as commented by Kukjin Kim.
> 
Since if you want to keep this in git log, this should be moved after below
'---' :(

> Signed-off-by: Naveen Krishna Chatradhi <ch.naveen@samsung.com>
> ---
>  arch/arm/mach-exynos4/clock.c        |    1 +
>  arch/arm/mach-s5pv210/clock.c        |   78
+---------------------------------
>  arch/arm/plat-s5p/clock.c            |   77
> +++++++++++++++++++++++++++++++++
>  arch/arm/plat-s5p/include/plat/pll.h |    3 +
>  4 files changed, 82 insertions(+), 77 deletions(-)
> 
> diff --git a/arch/arm/mach-exynos4/clock.c b/arch/arm/mach-exynos4/clock.c
> index feeb27e..7687087 100644
> --- a/arch/arm/mach-exynos4/clock.c
> +++ b/arch/arm/mach-exynos4/clock.c
> @@ -1294,6 +1294,7 @@ void __init_or_cpufreq exynos4_setup_clocks(void)
>  				__raw_readl(S5P_VPLL_CON1), pll_4650);
> 
>  	clk_fout_apll.ops = &exynos4_fout_apll_ops;
> +	clk_fout_epll.ops = &pll46xx_epll_ops;
>  	clk_fout_mpll.rate = mpll;
>  	clk_fout_epll.rate = epll;
>  	clk_fout_vpll.rate = vpll;
> diff --git a/arch/arm/mach-s5pv210/clock.c b/arch/arm/mach-s5pv210/clock.c
> index ae72f87..dd77c2c 100644
> --- a/arch/arm/mach-s5pv210/clock.c
> +++ b/arch/arm/mach-s5pv210/clock.c
> @@ -979,82 +979,6 @@ static struct clksrc_clk *sysclks[] = {
>  	&clk_sclk_spdif,
>  };
> 
> -static u32 epll_div[][6] = {
> -	{  48000000, 0, 48, 3, 3, 0 },
> -	{  96000000, 0, 48, 3, 2, 0 },
> -	{ 144000000, 1, 72, 3, 2, 0 },
> -	{ 192000000, 0, 48, 3, 1, 0 },
> -	{ 288000000, 1, 72, 3, 1, 0 },
> -	{  32750000, 1, 65, 3, 4, 35127 },
> -	{  32768000, 1, 65, 3, 4, 35127 },
> -	{  45158400, 0, 45, 3, 3, 10355 },
> -	{  45000000, 0, 45, 3, 3, 10355 },
> -	{  45158000, 0, 45, 3, 3, 10355 },
> -	{  49125000, 0, 49, 3, 3, 9961 },
> -	{  49152000, 0, 49, 3, 3, 9961 },
> -	{  67737600, 1, 67, 3, 3, 48366 },
> -	{  67738000, 1, 67, 3, 3, 48366 },
> -	{  73800000, 1, 73, 3, 3, 47710 },
> -	{  73728000, 1, 73, 3, 3, 47710 },
> -	{  36000000, 1, 32, 3, 4, 0 },
> -	{  60000000, 1, 60, 3, 3, 0 },
> -	{  72000000, 1, 72, 3, 3, 0 },
> -	{  80000000, 1, 80, 3, 3, 0 },
> -	{  84000000, 0, 42, 3, 2, 0 },
> -	{  50000000, 0, 50, 3, 3, 0 },
> -};
> -
> -static int s5pv210_epll_set_rate(struct clk *clk, unsigned long rate)
> -{
> -	unsigned int epll_con, epll_con_k;
> -	unsigned int i;
> -
> -	/* Return if nothing changed */
> -	if (clk->rate == rate)
> -		return 0;
> -
> -	epll_con = __raw_readl(S5P_EPLL_CON);
> -	epll_con_k = __raw_readl(S5P_EPLL_CON1);
> -
> -	epll_con_k &= ~PLL46XX_KDIV_MASK;
> -	epll_con &= ~(1 << 27 |
> -			PLL46XX_MDIV_MASK << PLL46XX_MDIV_SHIFT |
> -			PLL46XX_PDIV_MASK << PLL46XX_PDIV_SHIFT |
> -			PLL46XX_SDIV_MASK << PLL46XX_SDIV_SHIFT);
> -
> -	for (i = 0; i < ARRAY_SIZE(epll_div); i++) {
> -		if (epll_div[i][0] == rate) {
> -			epll_con_k |= epll_div[i][5] << 0;
> -			epll_con |= (epll_div[i][1] << 27 |
> -					epll_div[i][2] <<
> PLL46XX_MDIV_SHIFT |
> -					epll_div[i][3] <<
> PLL46XX_PDIV_SHIFT |
> -					epll_div[i][4] <<
> PLL46XX_SDIV_SHIFT);
> -			break;
> -		}
> -	}
> -
> -	if (i == ARRAY_SIZE(epll_div)) {
> -		printk(KERN_ERR "%s: Invalid Clock EPLL Frequency\n",
> -				__func__);
> -		return -EINVAL;
> -	}
> -
> -	__raw_writel(epll_con, S5P_EPLL_CON);
> -	__raw_writel(epll_con_k, S5P_EPLL_CON1);
> -
> -	printk(KERN_WARNING "EPLL Rate changes from %lu to %lu\n",
> -			clk->rate, rate);
> -
> -	clk->rate = rate;
> -
> -	return 0;
> -}
> -
> -static struct clk_ops s5pv210_epll_ops = {
> -	.set_rate = s5pv210_epll_set_rate,
> -	.get_rate = s5p_epll_get_rate,
> -};
> -
>  void __init_or_cpufreq s5pv210_setup_clocks(void)
>  {
>  	struct clk *xtal_clk;
> @@ -1075,7 +999,7 @@ void __init_or_cpufreq s5pv210_setup_clocks(void)
> 
>  	/* Set functions for clk_fout_epll */
>  	clk_fout_epll.enable = s5p_epll_enable;
> -	clk_fout_epll.ops = &s5pv210_epll_ops;
> +	clk_fout_epll.ops = &pll46xx_epll_ops;
> 
>  	printk(KERN_DEBUG "%s: registering clocks\n", __func__);
> 
> diff --git a/arch/arm/plat-s5p/clock.c b/arch/arm/plat-s5p/clock.c
> index 02af235..2a4678d 100644
> --- a/arch/arm/plat-s5p/clock.c
> +++ b/arch/arm/plat-s5p/clock.c
> @@ -24,6 +24,7 @@
>  #include <mach/regs-clock.h>
> 
>  #include <plat/clock.h>
> +#include <plat/pll.h>
>  #include <plat/clock-clksrc.h>
>  #include <plat/s5p-clock.h>
> 
> @@ -203,6 +204,82 @@ struct clk_ops s5p_sclk_spdif_ops = {
>  	.get_rate	= s5p_spdif_get_rate,
>  };
> 
> +static u32 epll_div[][6] = {
> +	{  48000000, 0, 48, 3, 3, 0 },
> +	{  96000000, 0, 48, 3, 2, 0 },
> +	{ 144000000, 1, 72, 3, 2, 0 },
> +	{ 192000000, 0, 48, 3, 1, 0 },
> +	{ 288000000, 1, 72, 3, 1, 0 },
> +	{  32750000, 1, 65, 3, 4, 35127 },
> +	{  32768000, 1, 65, 3, 4, 35127 },
> +	{  45158400, 0, 45, 3, 3, 10355 },
> +	{  45000000, 0, 45, 3, 3, 10355 },
> +	{  45158000, 0, 45, 3, 3, 10355 },
> +	{  49125000, 0, 49, 3, 3, 9961 },
> +	{  49152000, 0, 49, 3, 3, 9961 },
> +	{  67737600, 1, 67, 3, 3, 48366 },
> +	{  67738000, 1, 67, 3, 3, 48366 },
> +	{  73800000, 1, 73, 3, 3, 47710 },
> +	{  73728000, 1, 73, 3, 3, 47710 },
> +	{  36000000, 1, 32, 3, 4, 0 },
> +	{  60000000, 1, 60, 3, 3, 0 },
> +	{  72000000, 1, 72, 3, 3, 0 },
> +	{  80000000, 1, 80, 3, 3, 0 },
> +	{  84000000, 0, 42, 3, 2, 0 },
> +	{  50000000, 0, 50, 3, 3, 0 },
> +};

Hmm, ok for now. But as Seungwhan Youn said, you have to know it can be
changed according to input clock for EPLL when you add this into common
plat-s5p.

> +
> +int pll46xx_epll_set_rate(struct clk *clk, unsigned long rate)

How about to move this in plat-s5p/include/plat/pll.h like other pll helper
functions?

> +{
> +	unsigned int epll_con, epll_con_k;
> +	unsigned int i;
> +
> +	/* Return if nothing changed */
> +	if (clk->rate == rate)
> +		return 0;
> +
> +	epll_con = __raw_readl(S5P_EPLL_CON);
> +	epll_con_k = __raw_readl(S5P_EPLL_CON1);
> +
> +	epll_con_k &= ~PLL46XX_KDIV_MASK;
> +	epll_con &= ~(1 << 27 |
> +			PLL46XX_MDIV_MASK << PLL46XX_MDIV_SHIFT |
> +			PLL46XX_PDIV_MASK << PLL46XX_PDIV_SHIFT |
> +			PLL46XX_SDIV_MASK << PLL46XX_SDIV_SHIFT);
> +
> +	for (i = 0; i < ARRAY_SIZE(epll_div); i++) {
> +		if (epll_div[i][0] == rate) {
> +			epll_con_k |= epll_div[i][5] << 0;
> +			epll_con |= (epll_div[i][1] << 27 |
> +					epll_div[i][2] <<
> PLL46XX_MDIV_SHIFT |
> +					epll_div[i][3] <<
> PLL46XX_PDIV_SHIFT |
> +					epll_div[i][4] <<
> PLL46XX_SDIV_SHIFT);
> +			break;
> +		}
> +	}
> +
> +	if (i == ARRAY_SIZE(epll_div)) {
> +		printk(KERN_ERR "%s: Invalid Clock EPLL Frequency\n",
> +				__func__);
> +		return -EINVAL;
> +	}
> +
> +	__raw_writel(epll_con, S5P_EPLL_CON);
> +	__raw_writel(epll_con_k, S5P_EPLL_CON1);

Basically, need to add check of pll locking after changing PLL value.

> +
> +	printk(KERN_WARNING "EPLL Rate changes from %lu to %lu\n",
> +			clk->rate, rate);
> +
> +	clk->rate = rate;
> +
> +	return 0;
> +}
> +
> +struct clk_ops pll46xx_epll_ops = {
> +	.set_rate = pll46xx_epll_set_rate,
> +	.get_rate = s5p_epll_get_rate,

I'm not sure we need .get_rate here.
Could you please test without this?

> +};
> +
>  static struct clk *s5p_clks[] __initdata = {
>  	&clk_ext_xtal_mux,
>  	&clk_48m,
> diff --git a/arch/arm/plat-s5p/include/plat/pll.h
b/arch/arm/plat-s5p/include/plat/pll.h
> index bf28fad..911a20e 100644
> --- a/arch/arm/plat-s5p/include/plat/pll.h
> +++ b/arch/arm/plat-s5p/include/plat/pll.h
> @@ -94,6 +94,9 @@ static inline unsigned long s5p_get_pll46xx(unsigned
long
> baseclk,
>  	return result;
>  }
> 
> +extern int pll46xx_epll_set_rate(struct clk *clk, unsigned long rate);
> +extern struct clk_ops pll46xx_epll_ops;
> +
>  #define PLL90XX_MDIV_MASK	(0xFF)
>  #define PLL90XX_PDIV_MASK	(0x3F)
>  #define PLL90XX_SDIV_MASK	(0x7)
> --
> 1.7.2.3

Thanks.

Best regards,
Kgene.
--
Kukjin Kim <kgene.kim@samsung.com>, Senior Engineer,
SW Solution Development Team, Samsung Electronics Co., Ltd.

WARNING: multiple messages have this Message-ID (diff)
From: kgene.kim@samsung.com (Kukjin Kim)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 3/3] ARM: EXYNOS4: Add EPLL clock operations
Date: Mon, 18 Jul 2011 14:52:03 +0900	[thread overview]
Message-ID: <048501cc450e$d4d7e880$7e87b980$%kim@samsung.com> (raw)
In-Reply-To: <1308655463-8787-4-git-send-email-ch.naveen@samsung.com>

Naveen Krishna Chatradhi wrote:
> 
> S5PV210 and EXYNOS4 uses similar PLL(PLL46XX) for EPLL.
> So, The EPLL set rate function is duplicated.
> 
> Note: Moved common code to plat-s5p, as commented by Kukjin Kim.
> 
Since if you want to keep this in git log, this should be moved after below
'---' :(

> Signed-off-by: Naveen Krishna Chatradhi <ch.naveen@samsung.com>
> ---
>  arch/arm/mach-exynos4/clock.c        |    1 +
>  arch/arm/mach-s5pv210/clock.c        |   78
+---------------------------------
>  arch/arm/plat-s5p/clock.c            |   77
> +++++++++++++++++++++++++++++++++
>  arch/arm/plat-s5p/include/plat/pll.h |    3 +
>  4 files changed, 82 insertions(+), 77 deletions(-)
> 
> diff --git a/arch/arm/mach-exynos4/clock.c b/arch/arm/mach-exynos4/clock.c
> index feeb27e..7687087 100644
> --- a/arch/arm/mach-exynos4/clock.c
> +++ b/arch/arm/mach-exynos4/clock.c
> @@ -1294,6 +1294,7 @@ void __init_or_cpufreq exynos4_setup_clocks(void)
>  				__raw_readl(S5P_VPLL_CON1), pll_4650);
> 
>  	clk_fout_apll.ops = &exynos4_fout_apll_ops;
> +	clk_fout_epll.ops = &pll46xx_epll_ops;
>  	clk_fout_mpll.rate = mpll;
>  	clk_fout_epll.rate = epll;
>  	clk_fout_vpll.rate = vpll;
> diff --git a/arch/arm/mach-s5pv210/clock.c b/arch/arm/mach-s5pv210/clock.c
> index ae72f87..dd77c2c 100644
> --- a/arch/arm/mach-s5pv210/clock.c
> +++ b/arch/arm/mach-s5pv210/clock.c
> @@ -979,82 +979,6 @@ static struct clksrc_clk *sysclks[] = {
>  	&clk_sclk_spdif,
>  };
> 
> -static u32 epll_div[][6] = {
> -	{  48000000, 0, 48, 3, 3, 0 },
> -	{  96000000, 0, 48, 3, 2, 0 },
> -	{ 144000000, 1, 72, 3, 2, 0 },
> -	{ 192000000, 0, 48, 3, 1, 0 },
> -	{ 288000000, 1, 72, 3, 1, 0 },
> -	{  32750000, 1, 65, 3, 4, 35127 },
> -	{  32768000, 1, 65, 3, 4, 35127 },
> -	{  45158400, 0, 45, 3, 3, 10355 },
> -	{  45000000, 0, 45, 3, 3, 10355 },
> -	{  45158000, 0, 45, 3, 3, 10355 },
> -	{  49125000, 0, 49, 3, 3, 9961 },
> -	{  49152000, 0, 49, 3, 3, 9961 },
> -	{  67737600, 1, 67, 3, 3, 48366 },
> -	{  67738000, 1, 67, 3, 3, 48366 },
> -	{  73800000, 1, 73, 3, 3, 47710 },
> -	{  73728000, 1, 73, 3, 3, 47710 },
> -	{  36000000, 1, 32, 3, 4, 0 },
> -	{  60000000, 1, 60, 3, 3, 0 },
> -	{  72000000, 1, 72, 3, 3, 0 },
> -	{  80000000, 1, 80, 3, 3, 0 },
> -	{  84000000, 0, 42, 3, 2, 0 },
> -	{  50000000, 0, 50, 3, 3, 0 },
> -};
> -
> -static int s5pv210_epll_set_rate(struct clk *clk, unsigned long rate)
> -{
> -	unsigned int epll_con, epll_con_k;
> -	unsigned int i;
> -
> -	/* Return if nothing changed */
> -	if (clk->rate == rate)
> -		return 0;
> -
> -	epll_con = __raw_readl(S5P_EPLL_CON);
> -	epll_con_k = __raw_readl(S5P_EPLL_CON1);
> -
> -	epll_con_k &= ~PLL46XX_KDIV_MASK;
> -	epll_con &= ~(1 << 27 |
> -			PLL46XX_MDIV_MASK << PLL46XX_MDIV_SHIFT |
> -			PLL46XX_PDIV_MASK << PLL46XX_PDIV_SHIFT |
> -			PLL46XX_SDIV_MASK << PLL46XX_SDIV_SHIFT);
> -
> -	for (i = 0; i < ARRAY_SIZE(epll_div); i++) {
> -		if (epll_div[i][0] == rate) {
> -			epll_con_k |= epll_div[i][5] << 0;
> -			epll_con |= (epll_div[i][1] << 27 |
> -					epll_div[i][2] <<
> PLL46XX_MDIV_SHIFT |
> -					epll_div[i][3] <<
> PLL46XX_PDIV_SHIFT |
> -					epll_div[i][4] <<
> PLL46XX_SDIV_SHIFT);
> -			break;
> -		}
> -	}
> -
> -	if (i == ARRAY_SIZE(epll_div)) {
> -		printk(KERN_ERR "%s: Invalid Clock EPLL Frequency\n",
> -				__func__);
> -		return -EINVAL;
> -	}
> -
> -	__raw_writel(epll_con, S5P_EPLL_CON);
> -	__raw_writel(epll_con_k, S5P_EPLL_CON1);
> -
> -	printk(KERN_WARNING "EPLL Rate changes from %lu to %lu\n",
> -			clk->rate, rate);
> -
> -	clk->rate = rate;
> -
> -	return 0;
> -}
> -
> -static struct clk_ops s5pv210_epll_ops = {
> -	.set_rate = s5pv210_epll_set_rate,
> -	.get_rate = s5p_epll_get_rate,
> -};
> -
>  void __init_or_cpufreq s5pv210_setup_clocks(void)
>  {
>  	struct clk *xtal_clk;
> @@ -1075,7 +999,7 @@ void __init_or_cpufreq s5pv210_setup_clocks(void)
> 
>  	/* Set functions for clk_fout_epll */
>  	clk_fout_epll.enable = s5p_epll_enable;
> -	clk_fout_epll.ops = &s5pv210_epll_ops;
> +	clk_fout_epll.ops = &pll46xx_epll_ops;
> 
>  	printk(KERN_DEBUG "%s: registering clocks\n", __func__);
> 
> diff --git a/arch/arm/plat-s5p/clock.c b/arch/arm/plat-s5p/clock.c
> index 02af235..2a4678d 100644
> --- a/arch/arm/plat-s5p/clock.c
> +++ b/arch/arm/plat-s5p/clock.c
> @@ -24,6 +24,7 @@
>  #include <mach/regs-clock.h>
> 
>  #include <plat/clock.h>
> +#include <plat/pll.h>
>  #include <plat/clock-clksrc.h>
>  #include <plat/s5p-clock.h>
> 
> @@ -203,6 +204,82 @@ struct clk_ops s5p_sclk_spdif_ops = {
>  	.get_rate	= s5p_spdif_get_rate,
>  };
> 
> +static u32 epll_div[][6] = {
> +	{  48000000, 0, 48, 3, 3, 0 },
> +	{  96000000, 0, 48, 3, 2, 0 },
> +	{ 144000000, 1, 72, 3, 2, 0 },
> +	{ 192000000, 0, 48, 3, 1, 0 },
> +	{ 288000000, 1, 72, 3, 1, 0 },
> +	{  32750000, 1, 65, 3, 4, 35127 },
> +	{  32768000, 1, 65, 3, 4, 35127 },
> +	{  45158400, 0, 45, 3, 3, 10355 },
> +	{  45000000, 0, 45, 3, 3, 10355 },
> +	{  45158000, 0, 45, 3, 3, 10355 },
> +	{  49125000, 0, 49, 3, 3, 9961 },
> +	{  49152000, 0, 49, 3, 3, 9961 },
> +	{  67737600, 1, 67, 3, 3, 48366 },
> +	{  67738000, 1, 67, 3, 3, 48366 },
> +	{  73800000, 1, 73, 3, 3, 47710 },
> +	{  73728000, 1, 73, 3, 3, 47710 },
> +	{  36000000, 1, 32, 3, 4, 0 },
> +	{  60000000, 1, 60, 3, 3, 0 },
> +	{  72000000, 1, 72, 3, 3, 0 },
> +	{  80000000, 1, 80, 3, 3, 0 },
> +	{  84000000, 0, 42, 3, 2, 0 },
> +	{  50000000, 0, 50, 3, 3, 0 },
> +};

Hmm, ok for now. But as Seungwhan Youn said, you have to know it can be
changed according to input clock for EPLL when you add this into common
plat-s5p.

> +
> +int pll46xx_epll_set_rate(struct clk *clk, unsigned long rate)

How about to move this in plat-s5p/include/plat/pll.h like other pll helper
functions?

> +{
> +	unsigned int epll_con, epll_con_k;
> +	unsigned int i;
> +
> +	/* Return if nothing changed */
> +	if (clk->rate == rate)
> +		return 0;
> +
> +	epll_con = __raw_readl(S5P_EPLL_CON);
> +	epll_con_k = __raw_readl(S5P_EPLL_CON1);
> +
> +	epll_con_k &= ~PLL46XX_KDIV_MASK;
> +	epll_con &= ~(1 << 27 |
> +			PLL46XX_MDIV_MASK << PLL46XX_MDIV_SHIFT |
> +			PLL46XX_PDIV_MASK << PLL46XX_PDIV_SHIFT |
> +			PLL46XX_SDIV_MASK << PLL46XX_SDIV_SHIFT);
> +
> +	for (i = 0; i < ARRAY_SIZE(epll_div); i++) {
> +		if (epll_div[i][0] == rate) {
> +			epll_con_k |= epll_div[i][5] << 0;
> +			epll_con |= (epll_div[i][1] << 27 |
> +					epll_div[i][2] <<
> PLL46XX_MDIV_SHIFT |
> +					epll_div[i][3] <<
> PLL46XX_PDIV_SHIFT |
> +					epll_div[i][4] <<
> PLL46XX_SDIV_SHIFT);
> +			break;
> +		}
> +	}
> +
> +	if (i == ARRAY_SIZE(epll_div)) {
> +		printk(KERN_ERR "%s: Invalid Clock EPLL Frequency\n",
> +				__func__);
> +		return -EINVAL;
> +	}
> +
> +	__raw_writel(epll_con, S5P_EPLL_CON);
> +	__raw_writel(epll_con_k, S5P_EPLL_CON1);

Basically, need to add check of pll locking after changing PLL value.

> +
> +	printk(KERN_WARNING "EPLL Rate changes from %lu to %lu\n",
> +			clk->rate, rate);
> +
> +	clk->rate = rate;
> +
> +	return 0;
> +}
> +
> +struct clk_ops pll46xx_epll_ops = {
> +	.set_rate = pll46xx_epll_set_rate,
> +	.get_rate = s5p_epll_get_rate,

I'm not sure we need .get_rate here.
Could you please test without this?

> +};
> +
>  static struct clk *s5p_clks[] __initdata = {
>  	&clk_ext_xtal_mux,
>  	&clk_48m,
> diff --git a/arch/arm/plat-s5p/include/plat/pll.h
b/arch/arm/plat-s5p/include/plat/pll.h
> index bf28fad..911a20e 100644
> --- a/arch/arm/plat-s5p/include/plat/pll.h
> +++ b/arch/arm/plat-s5p/include/plat/pll.h
> @@ -94,6 +94,9 @@ static inline unsigned long s5p_get_pll46xx(unsigned
long
> baseclk,
>  	return result;
>  }
> 
> +extern int pll46xx_epll_set_rate(struct clk *clk, unsigned long rate);
> +extern struct clk_ops pll46xx_epll_ops;
> +
>  #define PLL90XX_MDIV_MASK	(0xFF)
>  #define PLL90XX_PDIV_MASK	(0x3F)
>  #define PLL90XX_SDIV_MASK	(0x7)
> --
> 1.7.2.3

Thanks.

Best regards,
Kgene.
--
Kukjin Kim <kgene.kim@samsung.com>, Senior Engineer,
SW Solution Development Team, Samsung Electronics Co., Ltd.

  parent reply	other threads:[~2011-07-18  5:52 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-21 11:24 [PATCH V2 0/3] ARM: Add SPDIF support for EXYNOS4 Naveen Krishna Chatradhi
2011-06-21 11:24 ` Naveen Krishna Chatradhi
2011-06-21 11:24 ` [PATCH v2 1/3] ARM: Samsung: Move duplicate code Naveen Krishna Chatradhi
2011-06-21 11:24   ` Naveen Krishna Chatradhi
2011-07-18  5:35   ` Kukjin Kim
2011-07-18  5:35     ` Kukjin Kim
2011-06-21 11:24 ` [PATCH v2 2/3] ARM: EXYNOS4: Add sclk_spdif clocks Naveen Krishna Chatradhi
2011-06-21 11:24   ` Naveen Krishna Chatradhi
2011-07-18  5:33   ` Kukjin Kim
2011-07-18  5:33     ` Kukjin Kim
2011-07-18 11:25     ` Naveen Krishna Ch
2011-07-18 11:25       ` Naveen Krishna Ch
2011-07-20  9:52       ` Naveen Krishna Ch
2011-07-20  9:52         ` Naveen Krishna Ch
2011-06-21 11:24 ` [PATCH v2 3/3] ARM: EXYNOS4: Add EPLL clock operations Naveen Krishna Chatradhi
2011-06-21 11:24   ` Naveen Krishna Chatradhi
2011-06-22  6:51   ` Naveen Krishna Ch
2011-06-22  6:51     ` Naveen Krishna Ch
2011-06-22  8:01     ` Seungwhan Youn
2011-06-22  8:01       ` Seungwhan Youn
2011-06-30  5:51       ` Naveen Krishna Ch
2011-06-30  5:51         ` Naveen Krishna Ch
2011-06-30  7:28         ` Seungwhan Youn
2011-06-30  7:28           ` Seungwhan Youn
2011-07-18  5:52   ` Kukjin Kim [this message]
2011-07-18  5:52     ` Kukjin Kim
2011-07-18 11:44     ` Naveen Krishna Ch
2011-07-18 11:44       ` Naveen Krishna Ch
2011-06-30  5:54 ` [PATCH V2 0/3] ARM: Add SPDIF support for EXYNOS4 Naveen Krishna Ch
2011-06-30  5:54   ` Naveen Krishna Ch

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='048501cc450e$d4d7e880$7e87b980$%kim@samsung.com' \
    --to=kgene.kim@samsung.com \
    --cc=ch.naveen@samsung.com \
    --cc=jassisinghbrar@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=sbkim73@samsung.com \
    --cc=sw.youn@samsung.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.