Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
Binding for Rockchip's CPUFreq driver
===============================

Rockchip's CPUFreq driver attempts to read leakage value from eFuse
and get frequency count from pvtm, then supplies the OPP framework
with 'prop' information which is used to determine opp-microvolt-<name>
property of OPPS when it is parsed by the OPP framework. This is based
on operating-points-v2, but the driver can also create the "cpufreq-dt"
platform_device to compatibility with operating-points.

For more information about the expected DT format [See: ../opp/opp.txt].

Optional properties:
In 'operating-points-v2' table:
- rockchip,leakage-voltage-sel: The property is an array of 3-tuples items, and
                       each item consists of leakage and voltage selector like
                       <min-leakage max-leakage volt-selector>.
                       min-leakage: minimum leakage in mA, ranges from 1 to 254.
                       max-leakage: maximum leakage in mA, ranges from 1 to 254.
                       voltage-selector: a sequence number which is used to math
                       opp-microvolt-L<number> roperty in OPP node.

- rockchip,pvtm-voltage-sel: The property is an array of 3-tuples items, and
                       each item consists of pvtm and voltage selector like
                       <min-pvtm max-pvtm volt-selector>.
                       min-pvtm: minimum frequency count in KHz.
                       max-pvtm: maximum frequency count in KHz.
                       voltage-selector: a sequence number which is used to math
                       opp-microvolt-L<number> roperty in OPP node.
- rockchip,pvtm-freq: Clock frequency in KHz, which is used to set the cpu clock
                       frequency before get frequency count of pvtm.
- rockchip,pvtm-volt: Voltage in uV, which is used to set the cpu voltage before
                       get frequency count of pvtm.
- rockchip,pvtm-ch: An array of two integers containing pvtm channel and clock
                       oscillation ring.
- rockchip,pvtm-sample-time: The number of milliseconds to wait for pvtm to
                       finish counting.
- rockchip,pvtm-number: An integer indicating the number of sampling points.
- rockchip,pvtm-error: An integer indicating the error between the sample
                       results.
- rockchip,pvtm-ref-temp: The SoC internal temperature in degree centigrade, the
                       min-pvtm and max-pvtm in 'leakage-voltage-sel' are
                       measured at reference temperature.
- rockchip,pvtm-temp-prop: An array of two integers containing proportional
                       constants which is used to convert the value at current
                       temperature to reference temperature. The first one is
                       used when current temperature is below reference
                       temperature. Conversely, The second one is used when
                       current temperature is above reference temperature.
- rockchip,pvtm-thermal-zone: A thermal zone node containing thermal sensor,
                       it's used to get the current temperature.
- rockchip,thermal-zone: A thermal zone node containing thermal sensor,
                       it's used to get the current temperature.

- nvmem-cells: A phandle to cpu_leakage data provided by a nvmem device.
- nvmem-cell-names: Should be "cpu_leakage"

- rockchip,threshold-freq: Clock frequency in KHz, it's used to reduce power
                       for SoCs with two clusters.
- rockchip,freq-limit: Only one cluster can contain the property, and the
                       cluster's maximum frequency will be limited to its
                       threshold frequency, if the other cluster's frequency
                       is geater than or equal to its threshold frequency.

Examples:

cpus {
	cpu@0 {
		operating-points-v2 = <&cluster0_opp>;
	};
}

cluster0_opp: opp_table0 {
	compatible = "operating-points-v2";
	opp-shared;
	rockchip,leakage-voltage-sel = <
		1   24   0
		25  254  1
	>;
	nvmem-cells = <&cpu_leakage>;
	nvmem-cell-names = "cpu_leakage";

	opp@216000000 {
		opp-hz = /bits/ 64 <216000000>;
		opp-microvolt = <950000 950000 1350000>;
		opp-microvolt-L0 = <1050000 1050000 1350000>;
		opp-microvolt-L1 = <950000 950000 1350000>;
		opp-suspend;
	}
};