[PATCH] ARM: OMAP3+: dpll: optimize noncore dpll locking logic

Paul Walmsley paul at pwsan.com
Thu May 24 03:49:21 EDT 2012


Hi Nishanth

On Fri, 18 May 2012, Nishanth Menon wrote:

> From: Vikram Pandita <vikram.pandita at ti.com>
> 
> If the dpll is already locked, code can be optimized
> to return much earlier than doing redundent set of lock mode
> and wait on idlest.
> 
> Cc: Tony Lindgren <tony at atomide.com>
> Cc: Jon Hunter <jon-hunter at ti.com>
> Cc: Paul Walmsley <paul at pwsan.com>
> Cc: Mike Turquette <mturquette at ti.com>
> Cc: linux-omap at vger.kernel.org
> Cc: linux-arm-kernel at lists.infradead.org
> 
> Signed-off-by: Vikram Pandita <vikram.pandita at ti.com>

Did you intend to add your Signed-off-by: to this patch?

Also, just FYI, no need to add the Cc: lines for the mailing lists in the 
bottom of the patch description.

- Paul


> ---
>  arch/arm/mach-omap2/dpll3xxx.c |   12 +++++++++++-
>  1 file changed, 11 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/arm/mach-omap2/dpll3xxx.c b/arch/arm/mach-omap2/dpll3xxx.c
> index fc56745..3cfd7c4 100644
> --- a/arch/arm/mach-omap2/dpll3xxx.c
> +++ b/arch/arm/mach-omap2/dpll3xxx.c
> @@ -135,11 +135,20 @@ static u16 _omap3_dpll_compute_freqsel(struct clk *clk, u8 n)
>   */
>  static int _omap3_noncore_dpll_lock(struct clk *clk)
>  {
> +	const struct dpll_data *dd;
>  	u8 ai;
> -	int r;
> +	u8 state = 1;
> +	int r = 0;
>  
>  	pr_debug("clock: locking DPLL %s\n", clk->name);
>  
> +	dd = clk->dpll_data;
> +	state <<= __ffs(dd->idlest_mask);
> +
> +	/* Check if already locked */
> +	if ((__raw_readl(dd->idlest_reg) & dd->idlest_mask) == state)
> +		goto done;
> +
>  	ai = omap3_dpll_autoidle_read(clk);
>  
>  	omap3_dpll_deny_idle(clk);
> @@ -151,6 +160,7 @@ static int _omap3_noncore_dpll_lock(struct clk *clk)
>  	if (ai)
>  		omap3_dpll_allow_idle(clk);
>  
> +done:
>  	return r;
>  }
>  
> -- 
> 1.7.9.5
> 


- Paul



More information about the linux-arm-kernel mailing list