linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Thierry Reding <thierry.reding@gmail.com>
To: Mikko Perttunen <mikko.perttunen@kapsi.fi>
Cc: swarren@wwwdotorg.org, gnurou@gmail.com, pdeschrijver@nvidia.com,
	rjw@rjwysocki.net, viresh.kumar@linaro.org,
	mturquette@linaro.org, pwalmsley@nvidia.com, vinceh@nvidia.com,
	pgaikwad@nvidia.com, linux-kernel@vger.kernel.org,
	linux-pm@vger.kernel.org, linux-tegra@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, tuomas.tynkkynen@iki.fi,
	Tuomas Tynkkynen <ttynkkynen@nvidia.com>
Subject: Re: [PATCH v7 01/16] clk: tegra: Add binding for the Tegra124 DFLL clocksource
Date: Thu, 12 Feb 2015 23:42:44 +0100	[thread overview]
Message-ID: <20150212224242.GA23500@mithrandir> (raw)
In-Reply-To: <1420723339-30735-2-git-send-email-mikko.perttunen@kapsi.fi>

[-- Attachment #1: Type: text/plain, Size: 4592 bytes --]

On Thu, Jan 08, 2015 at 03:22:04PM +0200, Mikko Perttunen wrote:
> From: Tuomas Tynkkynen <ttynkkynen@nvidia.com>
> 
> The DFLL is the main clocksource for the fast CPU cluster on Tegra124
> and also provides automatic CPU rail voltage scaling as well. The DFLL
> is a separate IP block from the usual Tegra124 clock-and-reset
> controller, so it gets its own node in the device tree.
> 
> Signed-off-by: Tuomas Tynkkynen <ttynkkynen@nvidia.com>
> Signed-off-by: Mikko Perttunen <mikko.perttunen@kapsi.fi>
> ---
>  .../bindings/clock/nvidia,tegra124-dfll.txt        | 69 ++++++++++++++++++++++
>  1 file changed, 69 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/clock/nvidia,tegra124-dfll.txt
> 
> diff --git a/Documentation/devicetree/bindings/clock/nvidia,tegra124-dfll.txt b/Documentation/devicetree/bindings/clock/nvidia,tegra124-dfll.txt
> new file mode 100644
> index 0000000..54c62ac
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/clock/nvidia,tegra124-dfll.txt
> @@ -0,0 +1,69 @@
> +NVIDIA Tegra124 DFLL FCPU clocksource
> +
> +This binding uses the common clock binding:
> +Documentation/devicetree/bindings/clock/clock-bindings.txt
> +
> +The DFLL IP block on Tegra is a root clocksource designed for clocking
> +the fast CPU cluster. It consists of a free-running voltage controlled
> +oscillator connected to the CPU voltage rail (VDD_CPU), and a closed loop
> +control module that will automatically adjust the VDD_CPU voltage by
> +communicating with an off-chip PMIC either via an I2C bus or via PWM signals.

How would PWM communication work? The documentation below doesn't
describe it, so perhaps either leave that part out until the binding is
updated to support it, or maybe make an explicit note that this mode of
operation isn't supported yet?

> +Required properties:
> +- compatible : should be "nvidia,tegra124-dfll-fcpu"
> +- reg : Defines the following set of registers, in the order listed:
> +        - registers for the DFLL control logic.
> +        - registers for the I2C output logic.
> +        - registers for the integrated I2C master controller.
> +        - look-up table RAM for voltage register values.

Why do these all need to be separate sets? According to the TRM this is
a single IP block with a single register region, why the need to split
them apart?

> +- interrupts: Should contain the DFLL block interrupt.
> +- clocks: Must contain an entry for each entry in clock-names.
> +  See ../clocks/clock-bindings.txt for details.
> +- clock-names: Must include the following entries:
> +  - soc: Clock source for the DFLL control logic.
> +  - ref: The closed loop reference clock
> +  - i2c: Clock source for the integrated I2C master.
> +- #clock-cells: Must be 0.
> +- clock-output-names: Name of the clock output.
> +- vdd-cpu-supply: Regulator for the CPU voltage rail that the DFLL
> +  hardware will start controlling.

How does the hardware control it? How do we go from regulator phandle to
something that the hardware will know how to access?

> +Required properties for the control loop parameters:
> +- nvidia,sample-rate: Sample rate of the DFLL control loop.
> +- nvidia,droop-ctrl: See the register CL_DVFS_DROOP_CTRL in the TRM.
> +- nvidia,force-mode: See the field DFLL_PARAMS_FORCE_MODE in the TRM.
> +- nvidia,cf: Numeric value, see the field DFLL_PARAMS_CF_PARAM in the TRM.
> +- nvidia,ci: Numeric value, see the field DFLL_PARAMS_CI_PARAM in the TRM.
> +- nvidia,cg: Numeric value, see the field DFLL_PARAMS_CG_PARAM in the TRM.
> +- nvidia,cg-scale: Boolean value, see the field DFLL_PARAMS_CG_SCALE in the TRM.
> +
> +Required properties for I2C mode:
> +- nvidia,i2c-fs-rate: I2C transfer rate, if using FS mode.

What's FS mode?

> +
> +Example:
> +
> +dfll@0,70110000 {

Perhaps this should be "clock@0,70110000"?

> +        compatible = "nvidia,tegra124-dfll";
> +        reg = <0 0x70110000 0 0x100>, /* DFLL control */
> +              <0 0x70110000 0 0x100>, /* I2C output control */
> +              <0 0x70110100 0 0x100>, /* Integrated I2C controller */
> +              <0 0x70110200 0 0x100>; /* Look-up table RAM */
> +        interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
> +        clocks = <&tegra_car TEGRA124_CLK_DFLL_SOC>,
> +                 <&tegra_car TEGRA124_CLK_DFLL_REF>,
> +                 <&tegra_car TEGRA124_CLK_I2C5>;

If this controls I2C5 now, should it be documented that we can't use
this controller in software while it is in use by DFLL?

Thierry

[-- Attachment #2: Type: application/pgp-signature, Size: 819 bytes --]

  parent reply	other threads:[~2015-02-12 22:42 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-08 13:22 [PATCH v7 00/16] Tegra124 CL-DVFS / DFLL clocksource + cpufreq Mikko Perttunen
2015-01-08 13:22 ` [PATCH v7 01/16] clk: tegra: Add binding for the Tegra124 DFLL clocksource Mikko Perttunen
2015-02-12 13:54   ` Peter De Schrijver
2015-02-13 10:19     ` Mikko Perttunen
2015-02-12 22:42   ` Thierry Reding [this message]
2015-02-13  9:38     ` Peter De Schrijver
2015-02-13 10:18     ` Mikko Perttunen
2015-02-16  7:11     ` Tuomas Tynkkynen
2015-01-08 13:22 ` [PATCH v7 02/16] clk: tegra: Add library for the DFLL clock source (open-loop mode) Mikko Perttunen
2015-02-12 14:04   ` Peter De Schrijver
2015-01-08 13:22 ` [PATCH v7 03/16] clk: tegra: Add closed loop support for the DFLL Mikko Perttunen
2015-02-12 14:12   ` Peter De Schrijver
2015-01-08 13:22 ` [PATCH v7 04/16] clk: tegra: Add functions for parsing CVB tables Mikko Perttunen
2015-02-12 14:13   ` Peter De Schrijver
2015-01-08 13:22 ` [PATCH v7 05/16] clk: tegra: Add DFLL DVCO reset control for Tegra124 Mikko Perttunen
2015-02-12 14:19   ` Peter De Schrijver
2015-02-13 10:39     ` Mikko Perttunen
2015-02-16  9:40       ` Peter De Schrijver
2015-01-08 13:22 ` [PATCH v7 06/16] clk: tegra: Add Tegra124 DFLL clocksource platform driver Mikko Perttunen
2015-01-08 13:22 ` [PATCH v7 07/16] clk: tegra: Save/restore CCLKG_BURST_POLICY on suspend Mikko Perttunen
2015-02-12 14:24   ` Peter De Schrijver
2015-01-08 13:22 ` [PATCH v7 08/16] clk: tegra: Add the DFLL as a possible parent of the cclk_g clock Mikko Perttunen
2015-01-08 13:22 ` [PATCH v7 09/16] ARM: tegra: Add the DFLL to Tegra124 device tree Mikko Perttunen
2015-01-08 13:22 ` [PATCH v7 10/16] ARM: tegra: Enable the DFLL on the Jetson TK1 Mikko Perttunen
2015-01-08 13:22 ` [PATCH v7 11/16] cpufreq: tegra124: Add device tree bindings Mikko Perttunen
2015-01-08 13:22 ` [PATCH v7 12/16] cpufreq: tegra: Rename tegra-cpufreq to tegra20-cpufreq Mikko Perttunen
2015-01-08 13:22 ` [PATCH v7 13/16] cpufreq: Add cpufreq driver for Tegra124 Mikko Perttunen
2015-01-08 13:22 ` [PATCH v7 14/16] ARM: tegra: Add entries for cpufreq on Tegra124 Mikko Perttunen
2015-01-08 13:22 ` [PATCH v7 15/16] ARM: tegra: Add CPU regulator to the Jetson TK1 device tree Mikko Perttunen
2015-01-08 13:22 ` [PATCH v7 16/16] ARM: tegra: enable Tegra124 cpufreq driver by default Mikko Perttunen

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=20150212224242.GA23500@mithrandir \
    --to=thierry.reding@gmail.com \
    --cc=gnurou@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=mikko.perttunen@kapsi.fi \
    --cc=mturquette@linaro.org \
    --cc=pdeschrijver@nvidia.com \
    --cc=pgaikwad@nvidia.com \
    --cc=pwalmsley@nvidia.com \
    --cc=rjw@rjwysocki.net \
    --cc=swarren@wwwdotorg.org \
    --cc=ttynkkynen@nvidia.com \
    --cc=tuomas.tynkkynen@iki.fi \
    --cc=vinceh@nvidia.com \
    --cc=viresh.kumar@linaro.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).