From: Rhyland Klein <rklein@nvidia.com>
To: Andrew Bresticker <abrestic@chromium.org>
Cc: Peter De Schrijver <pdeschrijver@nvidia.com>,
Mike Turquette <mturquette@linaro.org>,
Stephen Warren <swarren@wwwdotorg.org>,
Stephen Boyd <sboyd@codeaurora.org>,
Thierry Reding <thierry.reding@gmail.com>,
Alexandre Courbot <gnurou@gmail.com>, <linux-clk@vger.kernel.org>,
"linux-tegra@vger.kernel.org" <linux-tegra@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v2 19/19] clk: tegra210: add support for Tegra210 clocks
Date: Thu, 30 Apr 2015 16:57:30 -0400 [thread overview]
Message-ID: <5542973A.5000402@nvidia.com> (raw)
In-Reply-To: <CAL1qeaHdjb57D8U-NBeyicV=JP2pNkyx3Xfn2RDgWivdw5jWNg@mail.gmail.com>
On 4/30/2015 4:43 PM, Andrew Bresticker wrote:
> Hi Rhyland,
>
> On Wed, Apr 29, 2015 at 10:21 AM, Rhyland Klein <rklein@nvidia.com> wrote:
>> Implement clock support for Tegra210.
>>
>> Signed-off-by: Rhyland Klein <rklein@nvidia.com>
>
>> --- /dev/null
>> +++ b/drivers/clk/tegra/clk-tegra210.c
>
>> + /* PLLU */
>> + val = readl(clk_base + pll_u_params.base_reg);
>> + val &= ~BIT(24); /* disable PLLU_OVERRIDE */
>> + writel(val, clk_base + pll_u_params.base_reg);
>> +
>> + clk = tegra_clk_register_pll("pll_u", "pll_ref", clk_base, pmc, 0,
>> + &pll_u_params, &pll_u_lock);
>> + clk_register_clkdev(clk, "pll_u", NULL);
>> + clks[TEGRA210_CLK_PLL_U] = clk;
>> +
>> + tegra210_utmi_param_configure(clk_base);
>> +
>> + /* PLLU_480M */
>> + clk = clk_register_gate(NULL, "pll_u_480M", "pll_u",
>> + CLK_SET_RATE_PARENT, clk_base + PLLU_BASE,
>> + 22, 0, &pll_u_lock);
>> + clk_register_clkdev(clk, "pll_u_480M", NULL);
>> + clks[TEGRA210_CLK_PLL_U_480M] = clk;
>> +
>> + /* PLLU_60M */
>> + clk = clk_register_fixed_factor(NULL, "pll_u_60M", "pll_u",
>> + CLK_SET_RATE_PARENT, 1, 8);
>> + clk_register_clkdev(clk, "pll_u_60M", NULL);
>> + clks[TEGRA210_CLK_PLL_U_60M] = clk;
>> +
>> + /* PLLU_48M */
>> + clk = clk_register_fixed_factor(NULL, "pll_u_48M", "pll_u",
>> + CLK_SET_RATE_PARENT, 1, 10);
>> + clk_register_clkdev(clk, "pll_u_48M", NULL);
>> + clks[TEGRA210_CLK_PLL_U_48M] = clk;
>> +
>> + /* PLLU_12M */
>> + clk = clk_register_fixed_factor(NULL, "pll_u_12M", "pll_u",
>> + CLK_SET_RATE_PARENT, 1, 40);
>> + clk_register_clkdev(clk, "pll_u_12M", NULL);
>> + clks[TEGRA210_CLK_PLL_U_12M] = clk;
>
> The PLLU hierarchy isn't quite right here. pll_u_480M is derived from
> the VCO output of pll_u (480Mhz) rather than the final output
> (240Mhz). It also looks, from downstream kernels and from the "PLLU
> Configuration Information" table in the TRM, that pll_u_48M and
> pll_u_60M are derived from pll_u_out1 and pll_u_out2, respectively. I
> don't see any mention of a 12Mhz output (pll_u_12M) either.
>
> So I think the PLLU clock tree looks something like this:
>
> pll_u_vco (480Mhz)
> pll_u_480M (480Mhz - gated by PLLU_BASE[22])
> pll_u (240Mhz)
> pll_u_out1 (48Mhz - PLLU_OUTA[15:0])
> pll_u_48M (48Mhz - gated by PLLU_BASE[25])
> pll_u_out2 (60Mhz - PLLU_OUTA[31:16])
> pll_u_60M (60Mhz - gated by PLLU_BASE[23])
>
> -Andrew
>
Thanks for pointing this out, I'll look into it for v3.
-rhyland
--
nvpublic
WARNING: multiple messages have this Message-ID (diff)
From: Rhyland Klein <rklein-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
To: Andrew Bresticker <abrestic-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
Cc: Peter De Schrijver
<pdeschrijver-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
Mike Turquette
<mturquette-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>,
Stephen Boyd <sboyd-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>,
Thierry Reding
<thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
Alexandre Courbot
<gnurou-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
linux-clk-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
"linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: Re: [PATCH v2 19/19] clk: tegra210: add support for Tegra210 clocks
Date: Thu, 30 Apr 2015 16:57:30 -0400 [thread overview]
Message-ID: <5542973A.5000402@nvidia.com> (raw)
In-Reply-To: <CAL1qeaHdjb57D8U-NBeyicV=JP2pNkyx3Xfn2RDgWivdw5jWNg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
On 4/30/2015 4:43 PM, Andrew Bresticker wrote:
> Hi Rhyland,
>
> On Wed, Apr 29, 2015 at 10:21 AM, Rhyland Klein <rklein-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> wrote:
>> Implement clock support for Tegra210.
>>
>> Signed-off-by: Rhyland Klein <rklein-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
>
>> --- /dev/null
>> +++ b/drivers/clk/tegra/clk-tegra210.c
>
>> + /* PLLU */
>> + val = readl(clk_base + pll_u_params.base_reg);
>> + val &= ~BIT(24); /* disable PLLU_OVERRIDE */
>> + writel(val, clk_base + pll_u_params.base_reg);
>> +
>> + clk = tegra_clk_register_pll("pll_u", "pll_ref", clk_base, pmc, 0,
>> + &pll_u_params, &pll_u_lock);
>> + clk_register_clkdev(clk, "pll_u", NULL);
>> + clks[TEGRA210_CLK_PLL_U] = clk;
>> +
>> + tegra210_utmi_param_configure(clk_base);
>> +
>> + /* PLLU_480M */
>> + clk = clk_register_gate(NULL, "pll_u_480M", "pll_u",
>> + CLK_SET_RATE_PARENT, clk_base + PLLU_BASE,
>> + 22, 0, &pll_u_lock);
>> + clk_register_clkdev(clk, "pll_u_480M", NULL);
>> + clks[TEGRA210_CLK_PLL_U_480M] = clk;
>> +
>> + /* PLLU_60M */
>> + clk = clk_register_fixed_factor(NULL, "pll_u_60M", "pll_u",
>> + CLK_SET_RATE_PARENT, 1, 8);
>> + clk_register_clkdev(clk, "pll_u_60M", NULL);
>> + clks[TEGRA210_CLK_PLL_U_60M] = clk;
>> +
>> + /* PLLU_48M */
>> + clk = clk_register_fixed_factor(NULL, "pll_u_48M", "pll_u",
>> + CLK_SET_RATE_PARENT, 1, 10);
>> + clk_register_clkdev(clk, "pll_u_48M", NULL);
>> + clks[TEGRA210_CLK_PLL_U_48M] = clk;
>> +
>> + /* PLLU_12M */
>> + clk = clk_register_fixed_factor(NULL, "pll_u_12M", "pll_u",
>> + CLK_SET_RATE_PARENT, 1, 40);
>> + clk_register_clkdev(clk, "pll_u_12M", NULL);
>> + clks[TEGRA210_CLK_PLL_U_12M] = clk;
>
> The PLLU hierarchy isn't quite right here. pll_u_480M is derived from
> the VCO output of pll_u (480Mhz) rather than the final output
> (240Mhz). It also looks, from downstream kernels and from the "PLLU
> Configuration Information" table in the TRM, that pll_u_48M and
> pll_u_60M are derived from pll_u_out1 and pll_u_out2, respectively. I
> don't see any mention of a 12Mhz output (pll_u_12M) either.
>
> So I think the PLLU clock tree looks something like this:
>
> pll_u_vco (480Mhz)
> pll_u_480M (480Mhz - gated by PLLU_BASE[22])
> pll_u (240Mhz)
> pll_u_out1 (48Mhz - PLLU_OUTA[15:0])
> pll_u_48M (48Mhz - gated by PLLU_BASE[25])
> pll_u_out2 (60Mhz - PLLU_OUTA[31:16])
> pll_u_60M (60Mhz - gated by PLLU_BASE[23])
>
> -Andrew
>
Thanks for pointing this out, I'll look into it for v3.
-rhyland
--
nvpublic
next prev parent reply other threads:[~2015-04-30 20:57 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-29 17:21 [PATCH v2 00/19] Tegra210 Clock Support Rhyland Klein
2015-04-29 17:21 ` [PATCH v2 01/19] clk: tegra: Modify tegra_audio_clk_init to accept more plls Rhyland Klein
2015-04-29 17:21 ` Rhyland Klein
2015-04-29 17:21 ` [PATCH v2 02/19] clk: tegra: periph: add new periph clks and muxes for Tegra210 Rhyland Klein
2015-04-29 17:21 ` [PATCH v2 03/19] clk: tegra: pll: add tegra_pll_wait_for_lock to clk header Rhyland Klein
2015-04-29 17:21 ` Rhyland Klein
2015-04-29 17:21 ` [PATCH v2 04/19] clk: tegra: pll: simplify clk_enable_path Rhyland Klein
2015-04-29 17:21 ` [PATCH v2 05/19] clk: tegra: pll: update warning msg Rhyland Klein
2015-04-29 17:21 ` [PATCH v2 06/19] clk: tegra: pll-params: change misc_reg count from 3 -> 6 Rhyland Klein
2015-04-29 17:21 ` [PATCH v2 07/19] clk: tegra: pll: Don't unconditionally set LOCK flags Rhyland Klein
2015-04-29 17:21 ` [PATCH v2 08/19] clk: tegra: pll: Add logic for handling SDM data Rhyland Klein
2015-04-29 17:21 ` [PATCH v2 09/19] clk: tegra: pll: Add logic for SS Rhyland Klein
2015-04-29 17:21 ` [PATCH v2 10/19] clk: tegra: pll: Add logic for out-of-table rates for T210 Rhyland Klein
2015-04-29 17:21 ` Rhyland Klein
2015-04-29 17:21 ` [PATCH v2 11/19] clk: tegra: pll: Add code to handle if resets are supported by PLL Rhyland Klein
2015-04-29 17:21 ` [PATCH v2 12/19] clk: tegra: pll: Add specialized logic for T210 Rhyland Klein
2015-04-29 18:27 ` Andrew Bresticker
2015-04-29 18:27 ` Andrew Bresticker
2015-04-29 21:42 ` Rhyland Klein
2015-04-29 21:42 ` Rhyland Klein
2015-04-29 17:21 ` [PATCH v2 13/19] clk: tegra: pll: Add support for PLLMB " Rhyland Klein
2015-04-29 17:21 ` Rhyland Klein
2015-04-30 10:11 ` Peter De Schrijver
2015-04-30 10:11 ` Peter De Schrijver
2015-04-29 17:21 ` [PATCH v2 14/19] clk: tegra: pll: Adjust vco_min if SDM present Rhyland Klein
2015-04-29 17:21 ` Rhyland Klein
2015-04-29 17:21 ` [PATCH v2 15/19] clk: tegra: pll: Add dyn_ramp callback Rhyland Klein
2015-04-29 17:21 ` Rhyland Klein
2015-04-29 17:21 ` [PATCH v2 16/19] clk: tegra: pll: Add Set_default logic Rhyland Klein
2015-04-29 17:21 ` Rhyland Klein
2015-04-30 10:12 ` Peter De Schrijver
2015-04-30 10:12 ` Peter De Schrijver
2015-04-30 15:31 ` Rhyland Klein
2015-04-30 15:31 ` Rhyland Klein
2015-05-11 11:50 ` Peter De Schrijver
2015-05-11 11:50 ` Peter De Schrijver
2015-05-11 15:07 ` Rhyland Klein
2015-05-11 15:07 ` Rhyland Klein
2015-04-29 17:21 ` [PATCH v2 17/19] clk: tegra: pll: Fix _pll_ramp_calc_pll logic and _calc_dynamic_ramp_rate Rhyland Klein
2015-04-29 17:21 ` Rhyland Klein
2015-04-29 17:21 ` [PATCH v2 18/19] clk: tegra: Add Super Gen5 Logic Rhyland Klein
2015-04-29 17:21 ` Rhyland Klein
2015-04-29 17:21 ` [PATCH v2 19/19] clk: tegra210: add support for Tegra210 clocks Rhyland Klein
2015-04-29 17:21 ` Rhyland Klein
2015-04-30 20:43 ` Andrew Bresticker
2015-04-30 20:57 ` Rhyland Klein [this message]
2015-04-30 20:57 ` Rhyland Klein
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=5542973A.5000402@nvidia.com \
--to=rklein@nvidia.com \
--cc=abrestic@chromium.org \
--cc=gnurou@gmail.com \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=mturquette@linaro.org \
--cc=pdeschrijver@nvidia.com \
--cc=sboyd@codeaurora.org \
--cc=swarren@wwwdotorg.org \
--cc=thierry.reding@gmail.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.