From: ambresh <a0393775@ti.com>
To: "Gurav , Pramod" <pramod.gurav@ti.com>
Cc: "K, Ambresh" <ambresh@ti.com>, "Reddy, Teerth" <teerth@ti.com>,
"linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>,
"Sripathy, Vishwanath" <vishwanath.bs@ti.com>,
Paul Walmsley <paul@pwsan.com>,
Kevin Hilman <khilman@deeprootsystems.com>,
"Kandasamy, Rajkumar" <rajkumark@ti.com>
Subject: Re: [PATCH RFC]OMAP3:PM:Dynamic Calculation of SDRC stall latency during DVFS
Date: Wed, 10 Mar 2010 12:38:16 +0530 [thread overview]
Message-ID: <4B974560.5070704@ti.com> (raw)
In-Reply-To: <5A47E75E594F054BAF48C5E4FC4B92AB0321DCB3DC@dbde02.ent.ti.com>
Gurav , Pramod wrote:
> Hi Ambresh,
>
>>> + clk_sel_regval = cm_read_mod_reg(PLL_MOD, CM_CLKSEL);
>> *clk already as reference to CM_CLKSEL:
>>
>> static struct clk dpll3_m2_ck = {
>> [...]
>> .clksel_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKSEL1),
>> .clksel_mask = OMAP3430_CORE_DPLL_CLKOUT_DIV_MASK,
>> [...]
>>
>> so please use .clksel_reg to read the register content.
>>
>
> This will be done.
>
>>> + sys_clk_rate = clk_get_rate(clk_get(NULL, "osc_sys_ck"));
>> Should it be "sys_ck" instead of "osc_sys_ck"?
>>
>> According to my understanding from trm, I guess CLKINP represents DPLL3
>> reference clock (DPLL3_ALWON_FCLK) which is nothing but "sys_ck".
>>
>> Should not make a difference when the sys_clk divisor is 1, but if it is
>> 2, then sys_ck=osc_sys_ck/2.
>
>
> Yes, it has to be sys_ck and it will be taken care.
>
>>> + /* wait time for L3 clk stabilization = 4*REFCLK + 8*CLKOUTX2 */
>>> + nr1 = (4 * (core_dpll_div_n + 1) * 2 * core_dpll_clkoutdiv_m2 *
>>> + core_dpll_mul_m);
>>> + nr2 = 8 * (core_dpll_div_n + 1);
>>> + nr = nr1 + nr2;
>>> +
>>> + dr = 2 * sys_clk_rate * core_dpll_mul_m * core_dpll_clkoutdiv_m2;
>>> +
>> I am not able to understand the calculations completely for
>> (nr1 + nr2) / dr. and I guess you could simplify the calculation a bit
>> by removing the redundant multiplications and divisions.
>> And also may be you can use m, n & m2 instead of core_dpll_xxx_xx, to
>> make code more readable.
>>
We can get ride of the steps used to calculate CLKOUTX2, by simply
calling parent's (dpll3_ck) clk->recalc function pointer.
recalc function will return CLKOUT, so CLKOUTX2 = CLKOUT * 2.
pseudo code
------------
struct clk *parent = clk->parent;
clkout = parent->recalc();
clkoutx2 = clkout * 2;
To derive REFCLK. the only unknown parameter will be N, which can be
read from .clksel_reg.
Why can't we use do_div() api to calculate REFCLK, instead of manual
calculation?
Regards,
Ambresh
>
> I am restructuring the formula with appropriate variable names.
>
>
> Thank you for your comments.
>
> Regards,
> Pramod
next prev parent reply other threads:[~2010-03-10 7:08 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-11 11:50 [PATCH RFC]OMAP3:PM:Dynamic Calculation of SDRC stall latency during DVFS Reddy, Teerth
2010-02-15 8:57 ` Högander Jouni
2010-02-23 9:59 ` Reddy, Teerth
2010-03-02 6:56 ` Högander Jouni
2010-03-08 10:06 ` ambresh
2010-03-10 5:33 ` Gurav , Pramod
2010-03-10 7:08 ` ambresh [this message]
2010-03-10 10:37 ` Gurav , Pramod
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=4B974560.5070704@ti.com \
--to=a0393775@ti.com \
--cc=ambresh@ti.com \
--cc=khilman@deeprootsystems.com \
--cc=linux-omap@vger.kernel.org \
--cc=paul@pwsan.com \
--cc=pramod.gurav@ti.com \
--cc=rajkumark@ti.com \
--cc=teerth@ti.com \
--cc=vishwanath.bs@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.