10c59d267STuomas TynkkynenNVIDIA Tegra124 DFLL FCPU clocksource
20c59d267STuomas Tynkkynen
30c59d267STuomas TynkkynenThis binding uses the common clock binding:
40c59d267STuomas TynkkynenDocumentation/devicetree/bindings/clock/clock-bindings.txt
50c59d267STuomas Tynkkynen
60c59d267STuomas TynkkynenThe DFLL IP block on Tegra is a root clocksource designed for clocking
70c59d267STuomas Tynkkynenthe fast CPU cluster. It consists of a free-running voltage controlled
80c59d267STuomas Tynkkynenoscillator connected to the CPU voltage rail (VDD_CPU), and a closed loop
90c59d267STuomas Tynkkynencontrol module that will automatically adjust the VDD_CPU voltage by
100c59d267STuomas Tynkkynencommunicating with an off-chip PMIC either via an I2C bus or via PWM signals.
110c59d267STuomas TynkkynenCurrently only the I2C mode is supported by these bindings.
120c59d267STuomas Tynkkynen
130c59d267STuomas TynkkynenRequired properties:
140c59d267STuomas Tynkkynen- compatible : should be "nvidia,tegra124-dfll"
150c59d267STuomas Tynkkynen- reg : Defines the following set of registers, in the order listed:
160c59d267STuomas Tynkkynen        - registers for the DFLL control logic.
170c59d267STuomas Tynkkynen        - registers for the I2C output logic.
180c59d267STuomas Tynkkynen        - registers for the integrated I2C master controller.
190c59d267STuomas Tynkkynen        - look-up table RAM for voltage register values.
200c59d267STuomas Tynkkynen- interrupts: Should contain the DFLL block interrupt.
210c59d267STuomas Tynkkynen- clocks: Must contain an entry for each entry in clock-names.
220c59d267STuomas Tynkkynen  See clock-bindings.txt for details.
230c59d267STuomas Tynkkynen- clock-names: Must include the following entries:
240c59d267STuomas Tynkkynen  - soc: Clock source for the DFLL control logic.
250c59d267STuomas Tynkkynen  - ref: The closed loop reference clock
260c59d267STuomas Tynkkynen  - i2c: Clock source for the integrated I2C master.
270c59d267STuomas Tynkkynen- resets: Must contain an entry for each entry in reset-names.
280c59d267STuomas Tynkkynen  See ../reset/reset.txt for details.
290c59d267STuomas Tynkkynen- reset-names: Must include the following entries:
300c59d267STuomas Tynkkynen  - dvco: Reset control for the DFLL DVCO.
310c59d267STuomas Tynkkynen- #clock-cells: Must be 0.
320c59d267STuomas Tynkkynen- clock-output-names: Name of the clock output.
330c59d267STuomas Tynkkynen- vdd-cpu-supply: Regulator for the CPU voltage rail that the DFLL
340c59d267STuomas Tynkkynen  hardware will start controlling. The regulator will be queried for
350c59d267STuomas Tynkkynen  the I2C register, control values and supported voltages.
360c59d267STuomas Tynkkynen
370c59d267STuomas TynkkynenRequired properties for the control loop parameters:
380c59d267STuomas Tynkkynen- nvidia,sample-rate: Sample rate of the DFLL control loop.
390c59d267STuomas Tynkkynen- nvidia,droop-ctrl: See the register CL_DVFS_DROOP_CTRL in the TRM.
400c59d267STuomas Tynkkynen- nvidia,force-mode: See the field DFLL_PARAMS_FORCE_MODE in the TRM.
410c59d267STuomas Tynkkynen- nvidia,cf: Numeric value, see the field DFLL_PARAMS_CF_PARAM in the TRM.
420c59d267STuomas Tynkkynen- nvidia,ci: Numeric value, see the field DFLL_PARAMS_CI_PARAM in the TRM.
430c59d267STuomas Tynkkynen- nvidia,cg: Numeric value, see the field DFLL_PARAMS_CG_PARAM in the TRM.
440c59d267STuomas Tynkkynen
450c59d267STuomas TynkkynenOptional properties for the control loop parameters:
460c59d267STuomas Tynkkynen- nvidia,cg-scale: Boolean value, see the field DFLL_PARAMS_CG_SCALE in the TRM.
470c59d267STuomas Tynkkynen
480c59d267STuomas TynkkynenRequired properties for I2C mode:
490c59d267STuomas Tynkkynen- nvidia,i2c-fs-rate: I2C transfer rate, if using full speed mode.
500c59d267STuomas Tynkkynen
510c59d267STuomas TynkkynenExample:
520c59d267STuomas Tynkkynen
530c59d267STuomas Tynkkynenclock@0,70110000 {
540c59d267STuomas Tynkkynen        compatible = "nvidia,tegra124-dfll";
550c59d267STuomas Tynkkynen        reg = <0 0x70110000 0 0x100>, /* DFLL control */
560c59d267STuomas Tynkkynen              <0 0x70110000 0 0x100>, /* I2C output control */
570c59d267STuomas Tynkkynen              <0 0x70110100 0 0x100>, /* Integrated I2C controller */
580c59d267STuomas Tynkkynen              <0 0x70110200 0 0x100>; /* Look-up table RAM */
590c59d267STuomas Tynkkynen        interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
600c59d267STuomas Tynkkynen        clocks = <&tegra_car TEGRA124_CLK_DFLL_SOC>,
610c59d267STuomas Tynkkynen                 <&tegra_car TEGRA124_CLK_DFLL_REF>,
620c59d267STuomas Tynkkynen                 <&tegra_car TEGRA124_CLK_I2C5>;
630c59d267STuomas Tynkkynen        clock-names = "soc", "ref", "i2c";
640c59d267STuomas Tynkkynen        resets = <&tegra_car TEGRA124_RST_DFLL_DVCO>;
650c59d267STuomas Tynkkynen        reset-names = "dvco";
660c59d267STuomas Tynkkynen        #clock-cells = <0>;
670c59d267STuomas Tynkkynen        clock-output-names = "dfllCPU_out";
680c59d267STuomas Tynkkynen        vdd-cpu-supply = <&vdd_cpu>;
690c59d267STuomas Tynkkynen        status = "okay";
700c59d267STuomas Tynkkynen
710c59d267STuomas Tynkkynen        nvidia,sample-rate = <12500>;
720c59d267STuomas Tynkkynen        nvidia,droop-ctrl = <0x00000f00>;
730c59d267STuomas Tynkkynen        nvidia,force-mode = <1>;
740c59d267STuomas Tynkkynen        nvidia,cf = <10>;
750c59d267STuomas Tynkkynen        nvidia,ci = <0>;
760c59d267STuomas Tynkkynen        nvidia,cg = <2>;
770c59d267STuomas Tynkkynen
780c59d267STuomas Tynkkynen        nvidia,i2c-fs-rate = <400000>;
790c59d267STuomas Tynkkynen};
80