dt-bindings: tegra: Changes for v5.1-rc1

This contains device tree binding updates for CPU frequency scaling on
 Tegra210, BPMP support on Tegra210 and support for NVIDIA Shield TV.
 -----BEGIN PGP SIGNATURE-----
 
 iQJHBAABCAAxFiEEiOrDCAFJzPfAjcif3SOs138+s6EFAlxdmAITHHRyZWRpbmdA
 bnZpZGlhLmNvbQAKCRDdI6zXfz6zoRH5D/9mL1momHpLBgEVPpMS5L6UWlgzLHUj
 Ji69q4U2d2KYIclxVD2J8aCc9pmWI+tR0MIUmf1d60NgJfXwC41T9aVndw1yDwQ2
 LFOLW05hcISTghPvP2kFAPh/bkYFcDOlKHAk2mc8ITWgOpJWXhP3iLwKmDsLKkg9
 +nZjoJjZD6DP618Nqu2SzeFClHWjcS+x1PxuZ6e6iQyMgCyp6JDEGArclVx6mAi6
 CnBJjsyHNFUvQ+PkgVW5y+pMVfrs1Q5iUvLGD5Nqi1RniqI9m1j5PZDb6vDUeoX5
 l3O5SxwTf+x3FhqBf//AoQlUdzVVRILR23ncgc9G9513lSQX6ruodB0C0tvuRKoC
 l5Wc3+S3obVNMyF2SZVYkdaqCzids8K8TbK576c8brQ5/Gn7JSAhYm0Cxc5Yw5qd
 SBj3Ubw337BEsfpI8gntMwgOaXPpD6OqQ+2Tybz5cnYtPcLxJicN1qJMm6zxOx0y
 9MknaynXdOMEy3Od5KaHQHPcwOYx3+883thM5VB+2pzD2OapTL36AwxcT/5qwy/X
 TjcHNOj+mIpxZ40W5yJf0u0kq2JuQNh2MsvW93cXA6XB+GDu3qps6PqD4gk/nVhY
 elsC+XGFxV+7J5eMSVeJrCsd9eSxkDlFdmvh/AJ/1+jxOsiLYutamjG0JpmML0Rl
 +RZcMO5ZZNJXIQ==
 =CP31
 -----END PGP SIGNATURE-----

Merge tag 'tegra-for-5.1-dt-bindings' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into arm/dt

dt-bindings: tegra: Changes for v5.1-rc1

This contains device tree binding updates for CPU frequency scaling on
Tegra210, BPMP support on Tegra210 and support for NVIDIA Shield TV.

* tag 'tegra-for-5.1-dt-bindings' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux:
  dt-bindings: cpufreq: tegra124: remove cpu_lp clock from required properties
  dt-bindings: cpufreq: tegra124: remove vdd-cpu-supply from required properties
  dt-bindings: clock: tegra124-dfll: add Tegra210 support
  dt-bindings: clock: tegra124-dfll: Update DFLL binding for PWM regulator
  dt-bindings: firmware: tegra186-bpmp: Remove name property
  dt-bindings: firmware: Add bindings for Tegra210 BPMP
  dt-bindings: tegra: Add Shield TV device tree binding documentation

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
Arnd Bergmann 2019-02-15 15:49:56 +01:00
commit 14ab4f4330
5 changed files with 118 additions and 9 deletions

View File

@ -87,9 +87,11 @@ properties:
- const: nvidia,tegra124 - const: nvidia,tegra124
- items: - items:
- enum: - enum:
- nvidia,darcy
- nvidia,p2371-0000 - nvidia,p2371-0000
- nvidia,p2371-2180 - nvidia,p2371-2180
- nvidia,p2571 - nvidia,p2571
- nvidia,p2894-0050-a08
- const: nvidia,tegra210 - const: nvidia,tegra210
- items: - items:
- enum: - enum:

View File

@ -8,10 +8,11 @@ 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 oscillator connected to the CPU voltage rail (VDD_CPU), and a closed loop
control module that will automatically adjust the VDD_CPU voltage by 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. 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: 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: - reg : Defines the following set of registers, in the order listed:
- registers for the DFLL control logic. - registers for the DFLL control logic.
- registers for the I2C output logic. - registers for the I2C output logic.
@ -45,10 +46,31 @@ Required properties for the control loop parameters:
Optional 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. - 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: Required properties for I2C mode:
- nvidia,i2c-fs-rate: I2C transfer rate, if using full speed 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 { clock@70110000 {
compatible = "nvidia,tegra124-dfll"; compatible = "nvidia,tegra124-dfll";
@ -76,3 +98,58 @@ clock@70110000 {
nvidia,i2c-fs-rate = <400000>; 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>;
};
};
};

View File

@ -9,11 +9,9 @@ Required properties:
See ../clocks/clock-bindings.txt for details. See ../clocks/clock-bindings.txt for details.
- clock-names: Must include the following entries: - clock-names: Must include the following entries:
- cpu_g: Clock mux for the fast CPU cluster. - 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_x: Fast PLL clocksource.
- pll_p: Auxiliary PLL used during fast PLL rate changes. - pll_p: Auxiliary PLL used during fast PLL rate changes.
- dfll: Fast DFLL clocksource that also automatically scales CPU voltage. - dfll: Fast DFLL clocksource that also automatically scales CPU voltage.
- vdd-cpu-supply: Regulator for CPU voltage
Optional properties: Optional properties:
- clock-latency: Specify the possible maximum transition latency for clock, - clock-latency: Specify the possible maximum transition latency for clock,
@ -31,13 +29,11 @@ cpus {
reg = <0>; reg = <0>;
clocks = <&tegra_car TEGRA124_CLK_CCLK_G>, clocks = <&tegra_car TEGRA124_CLK_CCLK_G>,
<&tegra_car TEGRA124_CLK_CCLK_LP>,
<&tegra_car TEGRA124_CLK_PLL_X>, <&tegra_car TEGRA124_CLK_PLL_X>,
<&tegra_car TEGRA124_CLK_PLL_P>, <&tegra_car TEGRA124_CLK_PLL_P>,
<&dfll>; <&dfll>;
clock-names = "cpu_g", "cpu_lp", "pll_x", "pll_p", "dfll"; clock-names = "cpu_g", "pll_x", "pll_p", "dfll";
clock-latency = <300000>; clock-latency = <300000>;
vdd-cpu-supply: <&vdd_cpu>;
}; };
<...> <...>

View File

@ -8,7 +8,6 @@ which can create the interprocessor communication (IPC) between the CPU
and BPMP. and BPMP.
Required properties: Required properties:
- name : Should be bpmp
- compatible - compatible
Array of strings Array of strings
One of: One of:

View File

@ -0,0 +1,35 @@
NVIDIA Tegra210 Boot and Power Management Processor (BPMP)
The Boot and Power Management Processor (BPMP) is a co-processor found
in Tegra210 SoC. It is designed to handle the early stages of the boot
process as well as to assisting in entering deep low power state
(suspend to ram), and also offloading DRAM memory clock scaling on
some platforms. The binding document defines the resources that would
be used by the BPMP T210 firmware driver, which can create the
interprocessor communication (IPC) between the CPU and BPMP.
Required properties:
- compatible
Array of strings
One of:
- "nvidia,tegra210-bpmp"
- reg: physical base address and length for HW synchornization primitives
1) base address and length to Tegra 'atomics' hardware
2) base address and length to Tegra 'semaphore' hardware
- interrupts: specifies the interrupt number for receiving messages ("rx")
and for triggering messages ("tx")
Optional properties:
- #clock-cells : Should be 1 for platforms where DRAM clock control is
offloaded to bpmp.
Example:
bpmp@70016000 {
compatible = "nvidia,tegra210-bpmp";
reg = <0x0 0x70016000 0x0 0x2000
0x0 0x60001000 0x0 0x1000>;
interrupts = <GIC_SPI 6 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 4 IRQ_TYPE_EDGE_RISING>;
interrupt-names = "tx", "rx";
};