Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 55ffe163 authored by Vikram Pandita's avatar Vikram Pandita Committed by Paul Walmsley
Browse files

ARM: OMAP3+: dpll: optimize noncore dpll locking logic



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@atomide.com>
Cc: Jon Hunter <jon-hunter@ti.com>
Cc: Paul Walmsley <paul@pwsan.com>
Cc: Mike Turquette <mturquette@ti.com>
Signed-off-by: default avatarVikram Pandita <vikram.pandita@ti.com>
Signed-off-by: default avatarNishanth Menon <nm@ti.com>
Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
parent f0d3d821
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -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);

	if (ai)
@@ -152,6 +161,7 @@ static int _omap3_noncore_dpll_lock(struct clk *clk)
	if (ai)
		omap3_dpll_allow_idle(clk);

done:
	return r;
}