* [PATCH V4 01/20] dt-bindings: clock: tegra124-dfll: Update DFLL binding for PWM regulator
[not found] <20190104030702.8684-1-josephl@nvidia.com>
@ 2019-01-04 3:06 ` Joseph Lo
2019-01-08 0:35 ` Joseph Lo
2019-01-11 19:32 ` Rob Herring
2019-01-04 3:06 ` [PATCH V4 02/20] dt-bindings: clock: tegra124-dfll: add Tegra210 support Joseph Lo
` (2 subsequent siblings)
3 siblings, 2 replies; 7+ messages in thread
From: Joseph Lo @ 2019-01-04 3:06 UTC (permalink / raw)
To: Thierry Reding, Peter De Schrijver, Jonathan Hunter
Cc: linux-tegra, devicetree, linux-clk, linux-arm-kernel, Joseph Lo
From: Peter De Schrijver <pdeschrijver@nvidia.com>
Add new properties to configure the DFLL PWM regulator support.
Cc: devicetree@vger.kernel.org
Signed-off-by: Peter De Schrijver <pdeschrijver@nvidia.com>
Signed-off-by: Joseph Lo <josephl@nvidia.com>
Acked-by: Jon Hunter <jonathanh@nvidia.com>
---
*V4:
- s/nvidia,pwm-period/nvidia,pwm-period-nanoseconds/
*V3:
- no change
*V2:
- update the binding strings and descriptions for
nvidia,pwm-tristate-microvolts
nvidia,pwm-min-microvolts
nvidia,pwm-voltage-step-microvolts
---
.../bindings/clock/nvidia,tegra124-dfll.txt | 79 ++++++++++++++++++-
1 file changed, 77 insertions(+), 2 deletions(-)
diff --git a/Documentation/devicetree/bindings/clock/nvidia,tegra124-dfll.txt b/Documentation/devicetree/bindings/clock/nvidia,tegra124-dfll.txt
index dff236f524a7..5558bb5fcf2c 100644
--- a/Documentation/devicetree/bindings/clock/nvidia,tegra124-dfll.txt
+++ b/Documentation/devicetree/bindings/clock/nvidia,tegra124-dfll.txt
@@ -8,7 +8,6 @@ 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.
-Currently only the I2C mode is supported by these bindings.
Required properties:
- compatible : should be "nvidia,tegra124-dfll"
@@ -45,10 +44,31 @@ Required properties for the control loop parameters:
Optional properties for the control loop parameters:
- nvidia,cg-scale: Boolean value, see the field DFLL_PARAMS_CG_SCALE in the TRM.
+Optional properties for mode selection:
+- nvidia,pwm-to-pmic: Use PWM to control regulator rather then I2C.
+
Required properties for I2C mode:
- nvidia,i2c-fs-rate: I2C transfer rate, if using full speed mode.
-Example:
+Required properties for PWM mode:
+- nvidia,pwm-period-nanoseconds: period of PWM square wave in nanoseconds.
+- nvidia,pwm-tristate-microvolts: Regulator voltage in micro volts when PWM
+ control is disabled and the PWM output is tristated. Note that this voltage is
+ configured in hardware, typically via a resistor divider.
+- nvidia,pwm-min-microvolts: Regulator voltage in micro volts when PWM control
+ is enabled and PWM output is low. Hence, this is the minimum output voltage
+ that the regulator supports when PWM control is enabled.
+- nvidia,pwm-voltage-step-microvolts: Voltage increase in micro volts
+ corresponding to a 1/33th increase in duty cycle. Eg the voltage for 2/33th
+ duty cycle would be: nvidia,pwm-min-microvolts +
+ nvidia,pwm-voltage-step-microvolts * 2.
+- pinctrl-0: I/O pad configuration when PWM control is enabled.
+- pinctrl-1: I/O pad configuration when PWM control is disabled.
+- pinctrl-names: must include the following entries:
+ - dvfs_pwm_enable: I/O pad configuration when PWM control is enabled.
+ - dvfs_pwm_disable: I/O pad configuration when PWM control is disabled.
+
+Example for I2C:
clock@70110000 {
compatible = "nvidia,tegra124-dfll";
@@ -76,3 +96,58 @@ clock@70110000 {
nvidia,i2c-fs-rate = <400000>;
};
+
+Example for PWM:
+
+clock@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 TEGRA210_CLK_DFLL_SOC>,
+ <&tegra_car TEGRA210_CLK_DFLL_REF>,
+ <&tegra_car TEGRA124_CLK_I2C5>;;
+ clock-names = "soc", "ref", "i2c";
+ resets = <&tegra_car TEGRA124_RST_DFLL_DVCO>;
+ reset-names = "dvco";
+ #clock-cells = <0>;
+ clock-output-names = "dfllCPU_out";
+
+ nvidia,sample-rate = <25000>;
+ nvidia,droop-ctrl = <0x00000f00>;
+ nvidia,force-mode = <1>;
+ nvidia,cf = <6>;
+ nvidia,ci = <0>;
+ nvidia,cg = <2>;
+
+ nvidia,pwm-min-microvolts = <708000>; /* 708mV */
+ nvidia,pwm-period-nanoseconds = <2500>; /* 2.5us */
+ nvidia,pwm-to-pmic;
+ nvidia,pwm-tristate-microvolts = <1000000>;
+ nvidia,pwm-voltage-step-microvolts = <19200>; /* 19.2mV */
+
+ pinctrl-names = "dvfs_pwm_enable", "dvfs_pwm_disable";
+ pinctrl-0 = <&dvfs_pwm_active_state>;
+ pinctrl-1 = <&dvfs_pwm_inactive_state>;
+};
+
+/* pinmux nodes added for completeness. Binding doc can be found in:
+ * Documentation/devicetree/bindings/pinctrl/nvidia,tegra210-pinmux.txt
+ */
+
+pinmux: pinmux@700008d4 {
+ dvfs_pwm_active_state: dvfs_pwm_active {
+ dvfs_pwm_pbb1 {
+ nvidia,pins = "dvfs_pwm_pbb1";
+ nvidia,tristate = <TEGRA_PIN_DISABLE>;
+ };
+ };
+ dvfs_pwm_inactive_state: dvfs_pwm_inactive {
+ dvfs_pwm_pbb1 {
+ nvidia,pins = "dvfs_pwm_pbb1";
+ nvidia,tristate = <TEGRA_PIN_ENABLE>;
+ };
+ };
+};
--
2.20.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH V4 02/20] dt-bindings: clock: tegra124-dfll: add Tegra210 support
[not found] <20190104030702.8684-1-josephl@nvidia.com>
2019-01-04 3:06 ` [PATCH V4 01/20] dt-bindings: clock: tegra124-dfll: Update DFLL binding for PWM regulator Joseph Lo
@ 2019-01-04 3:06 ` Joseph Lo
2019-01-04 3:06 ` [PATCH V4 03/20] dt-bindings: cpufreq: tegra124: remove vdd-cpu-supply from required properties Joseph Lo
2019-01-04 3:06 ` [PATCH V4 04/20] dt-bindings: cpufreq: tegra124: remove cpu_lp clock " Joseph Lo
3 siblings, 0 replies; 7+ messages in thread
From: Joseph Lo @ 2019-01-04 3:06 UTC (permalink / raw)
To: Thierry Reding, Peter De Schrijver, Jonathan Hunter
Cc: devicetree, Rob Herring, Stephen Boyd, Joseph Lo, linux-tegra,
linux-clk, linux-arm-kernel
Add Tegra210 support for DFLL clock.
Cc: devicetree@vger.kernel.org
Signed-off-by: Joseph Lo <josephl@nvidia.com>
Acked-by: Jon Hunter <jonathanh@nvidia.com>
Acked-by: Stephen Boyd <sboyd@kernel.org>
Reviewed-by: Rob Herring <robh@kernel.org>
---
*V4:
- add more ack and RB tags
*V3:
- no change
*V2:
- add ack tag
---
.../devicetree/bindings/clock/nvidia,tegra124-dfll.txt | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/clock/nvidia,tegra124-dfll.txt b/Documentation/devicetree/bindings/clock/nvidia,tegra124-dfll.txt
index 5558bb5fcf2c..958e0ad78c52 100644
--- a/Documentation/devicetree/bindings/clock/nvidia,tegra124-dfll.txt
+++ b/Documentation/devicetree/bindings/clock/nvidia,tegra124-dfll.txt
@@ -10,7 +10,9 @@ 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.
Required properties:
-- compatible : should be "nvidia,tegra124-dfll"
+- compatible : should be one of:
+ - "nvidia,tegra124-dfll": for Tegra124
+ - "nvidia,tegra210-dfll": for Tegra210
- reg : Defines the following set of registers, in the order listed:
- registers for the DFLL control logic.
- registers for the I2C output logic.
--
2.20.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH V4 03/20] dt-bindings: cpufreq: tegra124: remove vdd-cpu-supply from required properties
[not found] <20190104030702.8684-1-josephl@nvidia.com>
2019-01-04 3:06 ` [PATCH V4 01/20] dt-bindings: clock: tegra124-dfll: Update DFLL binding for PWM regulator Joseph Lo
2019-01-04 3:06 ` [PATCH V4 02/20] dt-bindings: clock: tegra124-dfll: add Tegra210 support Joseph Lo
@ 2019-01-04 3:06 ` Joseph Lo
2019-01-04 3:06 ` [PATCH V4 04/20] dt-bindings: cpufreq: tegra124: remove cpu_lp clock " Joseph Lo
3 siblings, 0 replies; 7+ messages in thread
From: Joseph Lo @ 2019-01-04 3:06 UTC (permalink / raw)
To: Thierry Reding, Peter De Schrijver, Jonathan Hunter
Cc: devicetree, Rob Herring, Joseph Lo, linux-tegra, linux-clk,
linux-arm-kernel
The Tegra124 cpufreq driver works only with DFLL clock, which is a
hardware-based frequency/voltage controller. The driver doesn't need to
control the regulator itself. Hence remove that.
Cc: devicetree@vger.kernel.org
Signed-off-by: Joseph Lo <josephl@nvidia.com>
Acked-by: Jon Hunter <jonathanh@nvidia.com>
Reviewed-by: Rob Herring <robh@kernel.org>
---
*V4:
- add RB tag
*V3:
- no change
*V2:
- add ack tag
---
.../devicetree/bindings/cpufreq/nvidia,tegra124-cpufreq.txt | 2 --
1 file changed, 2 deletions(-)
diff --git a/Documentation/devicetree/bindings/cpufreq/nvidia,tegra124-cpufreq.txt b/Documentation/devicetree/bindings/cpufreq/nvidia,tegra124-cpufreq.txt
index b1669fbfb740..031545a29caf 100644
--- a/Documentation/devicetree/bindings/cpufreq/nvidia,tegra124-cpufreq.txt
+++ b/Documentation/devicetree/bindings/cpufreq/nvidia,tegra124-cpufreq.txt
@@ -13,7 +13,6 @@ Required properties:
- pll_x: Fast PLL clocksource.
- pll_p: Auxiliary PLL used during fast PLL rate changes.
- dfll: Fast DFLL clocksource that also automatically scales CPU voltage.
-- vdd-cpu-supply: Regulator for CPU voltage
Optional properties:
- clock-latency: Specify the possible maximum transition latency for clock,
@@ -37,7 +36,6 @@ cpus {
<&dfll>;
clock-names = "cpu_g", "cpu_lp", "pll_x", "pll_p", "dfll";
clock-latency = <300000>;
- vdd-cpu-supply: <&vdd_cpu>;
};
<...>
--
2.20.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH V4 04/20] dt-bindings: cpufreq: tegra124: remove cpu_lp clock from required properties
[not found] <20190104030702.8684-1-josephl@nvidia.com>
` (2 preceding siblings ...)
2019-01-04 3:06 ` [PATCH V4 03/20] dt-bindings: cpufreq: tegra124: remove vdd-cpu-supply from required properties Joseph Lo
@ 2019-01-04 3:06 ` Joseph Lo
3 siblings, 0 replies; 7+ messages in thread
From: Joseph Lo @ 2019-01-04 3:06 UTC (permalink / raw)
To: Thierry Reding, Peter De Schrijver, Jonathan Hunter
Cc: devicetree, Rob Herring, Joseph Lo, linux-tegra, linux-clk,
linux-arm-kernel
The cpu_lp clock property is only needed when the CPUfreq driver
supports CPU cluster switching. But it was not a design for this driver
and it didn't handle that as well. So removing this property.
Cc: devicetree@vger.kernel.org
Signed-off-by: Joseph Lo <josephl@nvidia.com>
Acked-by: Jon Hunter <jonathanh@nvidia.com>
Reviewed-by: Rob Herring <robh@kernel.org>
---
*V4:
- add RB tag
*V3:
- no change
*V2:
- add ack tag
---
.../devicetree/bindings/cpufreq/nvidia,tegra124-cpufreq.txt | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/Documentation/devicetree/bindings/cpufreq/nvidia,tegra124-cpufreq.txt b/Documentation/devicetree/bindings/cpufreq/nvidia,tegra124-cpufreq.txt
index 031545a29caf..03196d5ea515 100644
--- a/Documentation/devicetree/bindings/cpufreq/nvidia,tegra124-cpufreq.txt
+++ b/Documentation/devicetree/bindings/cpufreq/nvidia,tegra124-cpufreq.txt
@@ -9,7 +9,6 @@ Required properties:
See ../clocks/clock-bindings.txt for details.
- clock-names: Must include the following entries:
- cpu_g: Clock mux for the fast CPU cluster.
- - cpu_lp: Clock mux for the low-power CPU cluster.
- pll_x: Fast PLL clocksource.
- pll_p: Auxiliary PLL used during fast PLL rate changes.
- dfll: Fast DFLL clocksource that also automatically scales CPU voltage.
@@ -30,11 +29,10 @@ cpus {
reg = <0>;
clocks = <&tegra_car TEGRA124_CLK_CCLK_G>,
- <&tegra_car TEGRA124_CLK_CCLK_LP>,
<&tegra_car TEGRA124_CLK_PLL_X>,
<&tegra_car TEGRA124_CLK_PLL_P>,
<&dfll>;
- clock-names = "cpu_g", "cpu_lp", "pll_x", "pll_p", "dfll";
+ clock-names = "cpu_g", "pll_x", "pll_p", "dfll";
clock-latency = <300000>;
};
--
2.20.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH V4 01/20] dt-bindings: clock: tegra124-dfll: Update DFLL binding for PWM regulator
2019-01-04 3:06 ` [PATCH V4 01/20] dt-bindings: clock: tegra124-dfll: Update DFLL binding for PWM regulator Joseph Lo
@ 2019-01-08 0:35 ` Joseph Lo
2019-01-11 8:14 ` Joseph Lo
2019-01-11 19:32 ` Rob Herring
1 sibling, 1 reply; 7+ messages in thread
From: Joseph Lo @ 2019-01-08 0:35 UTC (permalink / raw)
To: Thierry Reding, Rob Herring, Peter De Schrijver, Jonathan Hunter
Cc: linux-tegra, devicetree, linux-clk, linux-arm-kernel
On 1/4/19 11:06 AM, Joseph Lo wrote:
> From: Peter De Schrijver <pdeschrijver@nvidia.com>
>
> Add new properties to configure the DFLL PWM regulator support.
>
> Cc: devicetree@vger.kernel.org
> Signed-off-by: Peter De Schrijver <pdeschrijver@nvidia.com>
> Signed-off-by: Joseph Lo <josephl@nvidia.com>
> Acked-by: Jon Hunter <jonathanh@nvidia.com>
> ---
> *V4:
> - s/nvidia,pwm-period/nvidia,pwm-period-nanoseconds/
> *V3:
> - no change
> *V2:
> - update the binding strings and descriptions for
> nvidia,pwm-tristate-microvolts
> nvidia,pwm-min-microvolts
> nvidia,pwm-voltage-step-microvolts
> ---
Hi Rob,
Could you help me to review this patch again?
Thanks,
Joseph
> .../bindings/clock/nvidia,tegra124-dfll.txt | 79 ++++++++++++++++++-
> 1 file changed, 77 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/clock/nvidia,tegra124-dfll.txt b/Documentation/devicetree/bindings/clock/nvidia,tegra124-dfll.txt
> index dff236f524a7..5558bb5fcf2c 100644
> --- a/Documentation/devicetree/bindings/clock/nvidia,tegra124-dfll.txt
> +++ b/Documentation/devicetree/bindings/clock/nvidia,tegra124-dfll.txt
> @@ -8,7 +8,6 @@ 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.
> -Currently only the I2C mode is supported by these bindings.
>
> Required properties:
> - compatible : should be "nvidia,tegra124-dfll"
> @@ -45,10 +44,31 @@ Required properties for the control loop parameters:
> Optional properties for the control loop parameters:
> - nvidia,cg-scale: Boolean value, see the field DFLL_PARAMS_CG_SCALE in the TRM.
>
> +Optional properties for mode selection:
> +- nvidia,pwm-to-pmic: Use PWM to control regulator rather then I2C.
> +
> Required properties for I2C mode:
> - nvidia,i2c-fs-rate: I2C transfer rate, if using full speed mode.
>
> -Example:
> +Required properties for PWM mode:
> +- nvidia,pwm-period-nanoseconds: period of PWM square wave in nanoseconds.
> +- nvidia,pwm-tristate-microvolts: Regulator voltage in micro volts when PWM
> + control is disabled and the PWM output is tristated. Note that this voltage is
> + configured in hardware, typically via a resistor divider.
> +- nvidia,pwm-min-microvolts: Regulator voltage in micro volts when PWM control
> + is enabled and PWM output is low. Hence, this is the minimum output voltage
> + that the regulator supports when PWM control is enabled.
> +- nvidia,pwm-voltage-step-microvolts: Voltage increase in micro volts
> + corresponding to a 1/33th increase in duty cycle. Eg the voltage for 2/33th
> + duty cycle would be: nvidia,pwm-min-microvolts +
> + nvidia,pwm-voltage-step-microvolts * 2.
> +- pinctrl-0: I/O pad configuration when PWM control is enabled.
> +- pinctrl-1: I/O pad configuration when PWM control is disabled.
> +- pinctrl-names: must include the following entries:
> + - dvfs_pwm_enable: I/O pad configuration when PWM control is enabled.
> + - dvfs_pwm_disable: I/O pad configuration when PWM control is disabled.
> +
> +Example for I2C:
>
> clock@70110000 {
> compatible = "nvidia,tegra124-dfll";
> @@ -76,3 +96,58 @@ clock@70110000 {
>
> nvidia,i2c-fs-rate = <400000>;
> };
> +
> +Example for PWM:
> +
> +clock@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 TEGRA210_CLK_DFLL_SOC>,
> + <&tegra_car TEGRA210_CLK_DFLL_REF>,
> + <&tegra_car TEGRA124_CLK_I2C5>;;
> + clock-names = "soc", "ref", "i2c";
> + resets = <&tegra_car TEGRA124_RST_DFLL_DVCO>;
> + reset-names = "dvco";
> + #clock-cells = <0>;
> + clock-output-names = "dfllCPU_out";
> +
> + nvidia,sample-rate = <25000>;
> + nvidia,droop-ctrl = <0x00000f00>;
> + nvidia,force-mode = <1>;
> + nvidia,cf = <6>;
> + nvidia,ci = <0>;
> + nvidia,cg = <2>;
> +
> + nvidia,pwm-min-microvolts = <708000>; /* 708mV */
> + nvidia,pwm-period-nanoseconds = <2500>; /* 2.5us */
> + nvidia,pwm-to-pmic;
> + nvidia,pwm-tristate-microvolts = <1000000>;
> + nvidia,pwm-voltage-step-microvolts = <19200>; /* 19.2mV */
> +
> + pinctrl-names = "dvfs_pwm_enable", "dvfs_pwm_disable";
> + pinctrl-0 = <&dvfs_pwm_active_state>;
> + pinctrl-1 = <&dvfs_pwm_inactive_state>;
> +};
> +
> +/* pinmux nodes added for completeness. Binding doc can be found in:
> + * Documentation/devicetree/bindings/pinctrl/nvidia,tegra210-pinmux.txt
> + */
> +
> +pinmux: pinmux@700008d4 {
> + dvfs_pwm_active_state: dvfs_pwm_active {
> + dvfs_pwm_pbb1 {
> + nvidia,pins = "dvfs_pwm_pbb1";
> + nvidia,tristate = <TEGRA_PIN_DISABLE>;
> + };
> + };
> + dvfs_pwm_inactive_state: dvfs_pwm_inactive {
> + dvfs_pwm_pbb1 {
> + nvidia,pins = "dvfs_pwm_pbb1";
> + nvidia,tristate = <TEGRA_PIN_ENABLE>;
> + };
> + };
> +};
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH V4 01/20] dt-bindings: clock: tegra124-dfll: Update DFLL binding for PWM regulator
2019-01-08 0:35 ` Joseph Lo
@ 2019-01-11 8:14 ` Joseph Lo
0 siblings, 0 replies; 7+ messages in thread
From: Joseph Lo @ 2019-01-11 8:14 UTC (permalink / raw)
To: Thierry Reding, Rob Herring, Peter De Schrijver, Jonathan Hunter
Cc: linux-tegra, devicetree, linux-clk, linux-arm-kernel
On 1/8/19 8:35 AM, Joseph Lo wrote:
> On 1/4/19 11:06 AM, Joseph Lo wrote:
>> From: Peter De Schrijver <pdeschrijver@nvidia.com>
>>
>> Add new properties to configure the DFLL PWM regulator support.
>>
>> Cc: devicetree@vger.kernel.org
>> Signed-off-by: Peter De Schrijver <pdeschrijver@nvidia.com>
>> Signed-off-by: Joseph Lo <josephl@nvidia.com>
>> Acked-by: Jon Hunter <jonathanh@nvidia.com>
>> ---
>> *V4:
>> - s/nvidia,pwm-period/nvidia,pwm-period-nanoseconds/
>> *V3:
>> - no change
>> *V2:
>> - update the binding strings and descriptions for
>> nvidia,pwm-tristate-microvolts
>> nvidia,pwm-min-microvolts
>> nvidia,pwm-voltage-step-microvolts
>> ---
>
> Hi Rob,
>
> Could you help me to review this patch again?
Gentle ping.
Thanks,
Joseph
>
> Thanks,
> Joseph
>
>> .../bindings/clock/nvidia,tegra124-dfll.txt | 79 ++++++++++++++++++-
>> 1 file changed, 77 insertions(+), 2 deletions(-)
>>
>> diff --git
>> a/Documentation/devicetree/bindings/clock/nvidia,tegra124-dfll.txt
>> b/Documentation/devicetree/bindings/clock/nvidia,tegra124-dfll.txt
>> index dff236f524a7..5558bb5fcf2c 100644
>> --- a/Documentation/devicetree/bindings/clock/nvidia,tegra124-dfll.txt
>> +++ b/Documentation/devicetree/bindings/clock/nvidia,tegra124-dfll.txt
>> @@ -8,7 +8,6 @@ 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.
>> -Currently only the I2C mode is supported by these bindings.
>> Required properties:
>> - compatible : should be "nvidia,tegra124-dfll"
>> @@ -45,10 +44,31 @@ Required properties for the control loop parameters:
>> Optional properties for the control loop parameters:
>> - nvidia,cg-scale: Boolean value, see the field DFLL_PARAMS_CG_SCALE
>> in the TRM.
>> +Optional properties for mode selection:
>> +- nvidia,pwm-to-pmic: Use PWM to control regulator rather then I2C.
>> +
>> Required properties for I2C mode:
>> - nvidia,i2c-fs-rate: I2C transfer rate, if using full speed mode.
>> -Example:
>> +Required properties for PWM mode:
>> +- nvidia,pwm-period-nanoseconds: period of PWM square wave in
>> nanoseconds.
>> +- nvidia,pwm-tristate-microvolts: Regulator voltage in micro volts
>> when PWM
>> + control is disabled and the PWM output is tristated. Note that this
>> voltage is
>> + configured in hardware, typically via a resistor divider.
>> +- nvidia,pwm-min-microvolts: Regulator voltage in micro volts when
>> PWM control
>> + is enabled and PWM output is low. Hence, this is the minimum output
>> voltage
>> + that the regulator supports when PWM control is enabled.
>> +- nvidia,pwm-voltage-step-microvolts: Voltage increase in micro volts
>> + corresponding to a 1/33th increase in duty cycle. Eg the voltage
>> for 2/33th
>> + duty cycle would be: nvidia,pwm-min-microvolts +
>> + nvidia,pwm-voltage-step-microvolts * 2.
>> +- pinctrl-0: I/O pad configuration when PWM control is enabled.
>> +- pinctrl-1: I/O pad configuration when PWM control is disabled.
>> +- pinctrl-names: must include the following entries:
>> + - dvfs_pwm_enable: I/O pad configuration when PWM control is enabled.
>> + - dvfs_pwm_disable: I/O pad configuration when PWM control is
>> disabled.
>> +
>> +Example for I2C:
>> clock@70110000 {
>> compatible = "nvidia,tegra124-dfll";
>> @@ -76,3 +96,58 @@ clock@70110000 {
>> nvidia,i2c-fs-rate = <400000>;
>> };
>> +
>> +Example for PWM:
>> +
>> +clock@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 TEGRA210_CLK_DFLL_SOC>,
>> + <&tegra_car TEGRA210_CLK_DFLL_REF>,
>> + <&tegra_car TEGRA124_CLK_I2C5>;;
>> + clock-names = "soc", "ref", "i2c";
>> + resets = <&tegra_car TEGRA124_RST_DFLL_DVCO>;
>> + reset-names = "dvco";
>> + #clock-cells = <0>;
>> + clock-output-names = "dfllCPU_out";
>> +
>> + nvidia,sample-rate = <25000>;
>> + nvidia,droop-ctrl = <0x00000f00>;
>> + nvidia,force-mode = <1>;
>> + nvidia,cf = <6>;
>> + nvidia,ci = <0>;
>> + nvidia,cg = <2>;
>> +
>> + nvidia,pwm-min-microvolts = <708000>; /* 708mV */
>> + nvidia,pwm-period-nanoseconds = <2500>; /* 2.5us */
>> + nvidia,pwm-to-pmic;
>> + nvidia,pwm-tristate-microvolts = <1000000>;
>> + nvidia,pwm-voltage-step-microvolts = <19200>; /* 19.2mV */
>> +
>> + pinctrl-names = "dvfs_pwm_enable", "dvfs_pwm_disable";
>> + pinctrl-0 = <&dvfs_pwm_active_state>;
>> + pinctrl-1 = <&dvfs_pwm_inactive_state>;
>> +};
>> +
>> +/* pinmux nodes added for completeness. Binding doc can be found in:
>> + * Documentation/devicetree/bindings/pinctrl/nvidia,tegra210-pinmux.txt
>> + */
>> +
>> +pinmux: pinmux@700008d4 {
>> + dvfs_pwm_active_state: dvfs_pwm_active {
>> + dvfs_pwm_pbb1 {
>> + nvidia,pins = "dvfs_pwm_pbb1";
>> + nvidia,tristate = <TEGRA_PIN_DISABLE>;
>> + };
>> + };
>> + dvfs_pwm_inactive_state: dvfs_pwm_inactive {
>> + dvfs_pwm_pbb1 {
>> + nvidia,pins = "dvfs_pwm_pbb1";
>> + nvidia,tristate = <TEGRA_PIN_ENABLE>;
>> + };
>> + };
>> +};
>>
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH V4 01/20] dt-bindings: clock: tegra124-dfll: Update DFLL binding for PWM regulator
2019-01-04 3:06 ` [PATCH V4 01/20] dt-bindings: clock: tegra124-dfll: Update DFLL binding for PWM regulator Joseph Lo
2019-01-08 0:35 ` Joseph Lo
@ 2019-01-11 19:32 ` Rob Herring
1 sibling, 0 replies; 7+ messages in thread
From: Rob Herring @ 2019-01-11 19:32 UTC (permalink / raw)
Cc: devicetree, Peter De Schrijver, Jonathan Hunter, Thierry Reding,
Joseph Lo, linux-tegra, linux-clk, linux-arm-kernel
On Fri, 4 Jan 2019 11:06:43 +0800, Joseph Lo wrote:
> From: Peter De Schrijver <pdeschrijver@nvidia.com>
>
> Add new properties to configure the DFLL PWM regulator support.
>
> Cc: devicetree@vger.kernel.org
> Signed-off-by: Peter De Schrijver <pdeschrijver@nvidia.com>
> Signed-off-by: Joseph Lo <josephl@nvidia.com>
> Acked-by: Jon Hunter <jonathanh@nvidia.com>
> ---
> *V4:
> - s/nvidia,pwm-period/nvidia,pwm-period-nanoseconds/
> *V3:
> - no change
> *V2:
> - update the binding strings and descriptions for
> nvidia,pwm-tristate-microvolts
> nvidia,pwm-min-microvolts
> nvidia,pwm-voltage-step-microvolts
> ---
> .../bindings/clock/nvidia,tegra124-dfll.txt | 79 ++++++++++++++++++-
> 1 file changed, 77 insertions(+), 2 deletions(-)
>
Reviewed-by: Rob Herring <robh@kernel.org>
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2019-01-11 19:32 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20190104030702.8684-1-josephl@nvidia.com>
2019-01-04 3:06 ` [PATCH V4 01/20] dt-bindings: clock: tegra124-dfll: Update DFLL binding for PWM regulator Joseph Lo
2019-01-08 0:35 ` Joseph Lo
2019-01-11 8:14 ` Joseph Lo
2019-01-11 19:32 ` Rob Herring
2019-01-04 3:06 ` [PATCH V4 02/20] dt-bindings: clock: tegra124-dfll: add Tegra210 support Joseph Lo
2019-01-04 3:06 ` [PATCH V4 03/20] dt-bindings: cpufreq: tegra124: remove vdd-cpu-supply from required properties Joseph Lo
2019-01-04 3:06 ` [PATCH V4 04/20] dt-bindings: cpufreq: tegra124: remove cpu_lp clock " Joseph Lo
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox