From: Mike Turquette <mturquette@linaro.org>
To: Paul Walmsley <paul@pwsan.com>, Tero Kristo <t-kristo@ti.com>
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>,
Stefan Roese <stefan.roese@gmail.com>,
linux-omap <linux-omap@vger.kernel.org>
Subject: Re: Odd behavior with dpll4_m4x2_ck on omap3 + DT
Date: Mon, 07 Oct 2013 18:35:37 -0700 [thread overview]
Message-ID: <20131008013537.7445.35847@quantum> (raw)
In-Reply-To: <alpine.DEB.2.02.1310070807320.20589@utopia.booyaka.com>
Quoting Paul Walmsley (2013-10-07 01:21:16)
> On Tue, 10 Sep 2013, Tero Kristo wrote:
>
> > In theory, DPLLs can also be used in their bypass mode to feed customer nodes
> > clocks. I just think the check in the clkoutx2_recalc is wrong, and should be
> > enhanced to actually check what is the target mode for the clock once it is
> > enabled. Maybe something like this would work properly:
> >
> > diff --git a/arch/arm/mach-omap2/dpll3xxx.c b/arch/arm/mach-omap2/dpll3xxx.c
> > index 3a0296c..ba218fb 100644
> > --- a/arch/arm/mach-omap2/dpll3xxx.c
> > +++ b/arch/arm/mach-omap2/dpll3xxx.c
> > @@ -658,14 +658,12 @@ unsigned long omap3_clkoutx2_recalc(struct clk_hw *hw,
> >
> > dd = pclk->dpll_data;
> >
> > - WARN_ON(!dd->enable_mask);
> > -
> > - v = __raw_readl(dd->control_reg) & dd->enable_mask;
> > - v >>= __ffs(dd->enable_mask);
> > - if ((v != OMAP3XXX_EN_DPLL_LOCKED) || (dd->flags & DPLL_J_TYPE))
> > + if ((dd->flags & DPLL_J_TYPE) ||
> > + __clk_get_rate(dd->clk_bypass) == __clk_get_rate(pclk))
> > rate = parent_rate;
> > else
> > rate = parent_rate * 2;
> > +
> > return rate;
> > }
> >
>
> [...]
>
> > Getting comment from someone like Paul would probably help here.
>
> Looks like this is a regression from the CCF port.
>
> Seems to me that the code above assumes that when the DPLL's rate is set
> to the same rate as the bypass clock's rate, we can assume that the DPLL
> is in bypass. I wonder if that's valid in a case where a previous OS or
> bootloader may have programmed the DPLL.
Well it used to be that calling clk_set_rate(dpll, bypass_rate) would
put it in bypass, I don't know if that is still the case. But you are
right that having the implicit assumption that 'bypass rate' == 'DPLL in
bypass' is not safe since a bootloader could lock this PLL to the same
rate as it's bypass rate.
I hope that the bypass rate stuff does not get swept away in the changes
since it is an interesting way to save a little power.
Regards,
Mike
>
> Sounds to me like the best way to fix it would be to test whether this
> code is intended to return the "target rate" (when the struct clk
> representing the DPLL is disabled), versus the "current rate" (when the
> struct clk representing the DPLL is enabled). If it's the target rate,
> then there's no point checking the current state of the hardware. A check
> similar to the above would probably be fine. Otherwise, seems best to use
> the existing code that does test the PLL state.
>
>
>
> - Paul
next prev parent reply other threads:[~2013-10-08 1:35 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-28 9:22 Odd behavior with dpll4_m4x2_ck on omap3 + DT Tomi Valkeinen
2013-08-28 9:48 ` Tero Kristo
2013-08-28 10:14 ` Tomi Valkeinen
2013-08-28 11:40 ` Tero Kristo
2013-09-10 11:33 ` Stefan Roese
2013-09-10 12:12 ` Tero Kristo
2013-09-10 12:19 ` Tomi Valkeinen
2013-09-10 12:24 ` Tero Kristo
2013-09-10 12:40 ` Tomi Valkeinen
2013-09-10 13:17 ` Tero Kristo
2013-09-10 21:17 ` Mike Turquette
2013-09-10 21:57 ` Mike Turquette
2013-09-11 7:21 ` Tomi Valkeinen
2013-09-13 7:51 ` Stefan Roese
2013-09-13 11:34 ` Tero Kristo
2013-09-16 19:45 ` Mike Turquette
2013-09-27 8:41 ` Tomi Valkeinen
2013-09-27 11:24 ` Tero Kristo
2013-09-30 7:56 ` Tomi Valkeinen
2013-10-07 8:21 ` Paul Walmsley
2013-10-08 1:35 ` Mike Turquette [this message]
2013-10-13 20:17 ` Paul Walmsley
2013-09-10 12:25 ` Stefan Roese
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=20131008013537.7445.35847@quantum \
--to=mturquette@linaro.org \
--cc=linux-omap@vger.kernel.org \
--cc=paul@pwsan.com \
--cc=stefan.roese@gmail.com \
--cc=t-kristo@ti.com \
--cc=tomi.valkeinen@ti.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.