Re: [PATCH] OMAP3 clock: disable DPLL autoidle while waiting for DPLL to lock

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



* Paul Walmsley <paul@xxxxxxxxx> [081114 09:46]:
> 
> During _omap3_noncore_dpll_lock(), if a DPLL has no active downstream
> clocks and DPLL autoidle is enabled, the DPLL may never lock, since it
> will enter autoidle immediately.  To resolve this, disable DPLL
> autoidle while locking the DPLL, and unconditionally wait for the DPLL
> to lock.  This fixes some bugs where the kernel would hang when returning
> from retention or return the wrong rate for the DPLL.
> 
> This patch is a collaboration with Peter de Schrijver 
> <peter.de-schrijver@xxxxxxxxx> and Kevin Hilman 
> <khilman@xxxxxxxxxxxxxxxxxxx>.

Pushing to l-o tree today.

Tony


> Signed-off-by: Paul Walmsley <paul@xxxxxxxxx>
> Cc: Peter de Schrijver <peter.de-schrijver@xxxxxxxxx>
> Cc: Kevin Hilman <khilman@xxxxxxxxxxxxxxxxxxx>
> ---
>  arch/arm/mach-omap2/clock34xx.c |   15 +++++----------
>  1 files changed, 5 insertions(+), 10 deletions(-)
> 
> diff --git a/arch/arm/mach-omap2/clock34xx.c b/arch/arm/mach-omap2/clock34xx.c
> index 3a4e160..b8b4494 100644
> --- a/arch/arm/mach-omap2/clock34xx.c
> +++ b/arch/arm/mach-omap2/clock34xx.c
> @@ -163,19 +163,14 @@ static int _omap3_noncore_dpll_lock(struct clk *clk)
>  
>  	ai = omap3_dpll_autoidle_read(clk);
>  
> +	omap3_dpll_deny_idle(clk);
> +
>  	_omap3_dpll_write_clken(clk, DPLL_LOCKED);
>  
> -	if (ai) {
> -		/*
> -		 * If no downstream clocks are enabled, CM_IDLEST bit
> -		 * may never become active, so don't wait for DPLL to lock.
> -		 */
> -		r = 0;
> +	r = _omap3_wait_dpll_status(clk, 1);
> +
> +	if (ai)
>  		omap3_dpll_allow_idle(clk);
> -	} else {
> -		r = _omap3_wait_dpll_status(clk, 1);
> -		omap3_dpll_deny_idle(clk);
> -	};
>  
>  	return r;
>  }
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux