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 53*f43521e9SThierry Redingclock@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