summaryrefslogtreecommitdiffstats
path: root/Documentation/devicetree/bindings/cpufreq/cpufreq-st.txt
blob: d91a02a3b6b0721a3e3ccb59367cc47f2f062c1f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
Binding for ST's CPUFreq driver
===============================

ST's CPUFreq driver attempts to read 'process' and 'version' attributes
from the SoC, then supplies the OPP framework with 'prop' and 'supported
hardware' information respectively.  The framework is then able to read
the DT and operate in the usual way.

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

Frequency Scaling only
----------------------

No vendor specific driver required for this.

Located in CPU's node:

- operating-points		: [See: ../power/opp.txt]

Example [safe]
--------------

cpus {
	cpu@0 {
				 /* kHz     uV   */
		operating-points = <1500000 0
				    1200000 0
				    800000  0
				    500000  0>;
	};
};

Dynamic Voltage and Frequency Scaling (DVFS)
--------------------------------------------

This requires the ST CPUFreq driver to supply 'process' and 'version' info.

Located in CPU's node:

- operating-points-v2		: [See ../power/opp.txt]

Example [unsafe]
----------------

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

cpu0_opp_table: opp_table {
	compatible = "operating-points-v2";

	/* ############################################################### */
	/* # WARNING: Do not attempt to copy/replicate these nodes,      # */
	/* #          they are only to be supplied by the bootloader !!! # */
	/* ############################################################### */
	opp0 {
		/*			   Major       Minor       Substrate */
		/*			   2           all         all       */
		opp-supported-hw	= <0x00000004  0xffffffff  0xffffffff>;
		opp-hz			= /bits/ 64 <1500000000>;
		clock-latency-ns	= <10000000>;

		opp-microvolt-pcode0	= <1200000>;
		opp-microvolt-pcode1	= <1200000>;
		opp-microvolt-pcode2	= <1200000>;
		opp-microvolt-pcode3	= <1200000>;
		opp-microvolt-pcode4	= <1170000>;
		opp-microvolt-pcode5	= <1140000>;
		opp-microvolt-pcode6	= <1100000>;
		opp-microvolt-pcode7	= <1070000>;
	};

	opp1 {
		/*			   Major       Minor       Substrate */
		/*			   all         all         all       */
		opp-supported-hw	= <0xffffffff  0xffffffff  0xffffffff>;
		opp-hz			= /bits/ 64 <1200000000>;
		clock-latency-ns	= <10000000>;

		opp-microvolt-pcode0	= <1110000>;
		opp-microvolt-pcode1	= <1150000>;
		opp-microvolt-pcode2	= <1100000>;
		opp-microvolt-pcode3	= <1080000>;
		opp-microvolt-pcode4	= <1040000>;
		opp-microvolt-pcode5	= <1020000>;
		opp-microvolt-pcode6	= <980000>;
		opp-microvolt-pcode7	= <930000>;
	};
};