Subject: [PATCH v4] clk: ti: Add support for dm814x ADPLL

From: [email-masked] (Tony Lindgren)
Date: Tue, 22 Dec 2015 12:32:25 -0800

* Tero Kristo <[email-masked]> [151222 12:28]:
> On 12/22/2015 05:27 PM, Tony Lindgren wrote:
> >On dm814x we have 13 ADPLLs with 3 to 4 outputs on each. The
> >ADPLLs have several dividers and muxes controlled by a shared
> >control register for each PLL.
> >
> >Note that for the clocks to work as device drivers for booting on
> >dm814x, this patch depends on "ARM: OMAP2+: Change core_initcall
> >levels to postcore_initcall".
> >
> >Also note that this patch does not implement clk_set_rate for the
> >PLL, that will be posted later on when available.
> >
> >Cc: Michael Turquette <[email-masked]>
> >Cc: Stephen Boyd <[email-masked]>
> >Cc: Tero Kristo <[email-masked]>
> >Signed-off-by: Tony Lindgren <[email-masked]>
> >---
> >
> >If no more comments, Tero can you please apply into an immutable
> >branch against v4.4-rc1 that I can merge in too?
> >
> >Changes since v3:
> >
> >- We want to create the clkdev entry for all clocks, not just outputs
> >- ti_adpll_wait_lock loops did not do the right thing
> >- We want to use CLK_GET_RATE_NOCACHE in ti_adpll_init_dco
> 
> I have just one comment below still, once that is addressed:
> 
> Conditionally-acked-by: Tero Kristo <[email-masked]>
> 
> Stephen / Michael, can you pick this up for next merge? I don't have
> anything else coming for the window this time, and I am probably going to be
> on vacation just nicely to not be able to push anything anyway.

Also, I managed to remove the dependency to the dts changes. So there's
no longer any need to set up an immutable branch for this patch.

> <snip>
> 
> >+
> >+/* Warn if clkout or clkoutx2 try to set unavailable parent */
> >+static int ti_adpll_clkout_set_parent(struct clk_hw *hw, u8 index)
> >+{
> >+	struct ti_adpll_clkout_data *co = to_clkout(hw);
> >+	struct ti_adpll_data *d = co->adpll;
> >+
> >+	if (ti_adpll_clock_is_bypass(d) != index)
> >+		return -EAGAIN;
> >+
> 
> I think this part is still somewhat weird. You are not doing anything useful
> in this function, so do you need to implement it at all? Just returning
> -EINVAL always might work also. EAGAIN is wrong return value anyway as it
> can pretty much never succeed.

OK thanks sounds good to me, I'll check it this after lunch.

Also noticed the do_div should be div64_u64 so v5 coming later
today.

Regards,

Tony