xref: /freebsd-src/sys/contrib/device-tree/Bindings/cpufreq/ti-cpufreq.txt (revision c66ec88fed842fbaad62c30d510644ceb7bd2d71)
1*c66ec88fSEmmanuel VadotTI CPUFreq and OPP bindings
2*c66ec88fSEmmanuel Vadot================================
3*c66ec88fSEmmanuel Vadot
4*c66ec88fSEmmanuel VadotCertain TI SoCs, like those in the am335x, am437x, am57xx, and dra7xx
5*c66ec88fSEmmanuel Vadotfamilies support different OPPs depending on the silicon variant in use.
6*c66ec88fSEmmanuel VadotThe ti-cpufreq driver can use revision and an efuse value from the SoC to
7*c66ec88fSEmmanuel Vadotprovide the OPP framework with supported hardware information. This is
8*c66ec88fSEmmanuel Vadotused to determine which OPPs from the operating-points-v2 table get enabled
9*c66ec88fSEmmanuel Vadotwhen it is parsed by the OPP framework.
10*c66ec88fSEmmanuel Vadot
11*c66ec88fSEmmanuel VadotRequired properties:
12*c66ec88fSEmmanuel Vadot--------------------
13*c66ec88fSEmmanuel VadotIn 'cpus' nodes:
14*c66ec88fSEmmanuel Vadot- operating-points-v2: Phandle to the operating-points-v2 table to use.
15*c66ec88fSEmmanuel Vadot
16*c66ec88fSEmmanuel VadotIn 'operating-points-v2' table:
17*c66ec88fSEmmanuel Vadot- compatible: Should be
18*c66ec88fSEmmanuel Vadot	- 'operating-points-v2-ti-cpu' for am335x, am43xx, and dra7xx/am57xx,
19*c66ec88fSEmmanuel Vadot	  omap34xx, omap36xx and am3517 SoCs
20*c66ec88fSEmmanuel Vadot- syscon: A phandle pointing to a syscon node representing the control module
21*c66ec88fSEmmanuel Vadot	  register space of the SoC.
22*c66ec88fSEmmanuel Vadot
23*c66ec88fSEmmanuel VadotOptional properties:
24*c66ec88fSEmmanuel Vadot--------------------
25*c66ec88fSEmmanuel Vadot- "vdd-supply", "vbb-supply": to define two regulators for dra7xx
26*c66ec88fSEmmanuel Vadot- "cpu0-supply", "vbb-supply": to define two regulators for omap36xx
27*c66ec88fSEmmanuel Vadot
28*c66ec88fSEmmanuel VadotFor each opp entry in 'operating-points-v2' table:
29*c66ec88fSEmmanuel Vadot- opp-supported-hw: Two bitfields indicating:
30*c66ec88fSEmmanuel Vadot	1. Which revision of the SoC the OPP is supported by
31*c66ec88fSEmmanuel Vadot	2. Which eFuse bits indicate this OPP is available
32*c66ec88fSEmmanuel Vadot
33*c66ec88fSEmmanuel Vadot	A bitwise AND is performed against these values and if any bit
34*c66ec88fSEmmanuel Vadot	matches, the OPP gets enabled.
35*c66ec88fSEmmanuel Vadot
36*c66ec88fSEmmanuel VadotExample:
37*c66ec88fSEmmanuel Vadot--------
38*c66ec88fSEmmanuel Vadot
39*c66ec88fSEmmanuel Vadot/* From arch/arm/boot/dts/am33xx.dtsi */
40*c66ec88fSEmmanuel Vadotcpus {
41*c66ec88fSEmmanuel Vadot	#address-cells = <1>;
42*c66ec88fSEmmanuel Vadot	#size-cells = <0>;
43*c66ec88fSEmmanuel Vadot	cpu@0 {
44*c66ec88fSEmmanuel Vadot		compatible = "arm,cortex-a8";
45*c66ec88fSEmmanuel Vadot		device_type = "cpu";
46*c66ec88fSEmmanuel Vadot		reg = <0>;
47*c66ec88fSEmmanuel Vadot
48*c66ec88fSEmmanuel Vadot		operating-points-v2 = <&cpu0_opp_table>;
49*c66ec88fSEmmanuel Vadot
50*c66ec88fSEmmanuel Vadot		clocks = <&dpll_mpu_ck>;
51*c66ec88fSEmmanuel Vadot		clock-names = "cpu";
52*c66ec88fSEmmanuel Vadot
53*c66ec88fSEmmanuel Vadot		clock-latency = <300000>; /* From omap-cpufreq driver */
54*c66ec88fSEmmanuel Vadot	};
55*c66ec88fSEmmanuel Vadot};
56*c66ec88fSEmmanuel Vadot
57*c66ec88fSEmmanuel Vadot/*
58*c66ec88fSEmmanuel Vadot * cpu0 has different OPPs depending on SoC revision and some on revisions
59*c66ec88fSEmmanuel Vadot * 0x2 and 0x4 have eFuse bits that indicate if they are available or not
60*c66ec88fSEmmanuel Vadot */
61*c66ec88fSEmmanuel Vadotcpu0_opp_table: opp-table {
62*c66ec88fSEmmanuel Vadot	compatible = "operating-points-v2-ti-cpu";
63*c66ec88fSEmmanuel Vadot	syscon = <&scm_conf>;
64*c66ec88fSEmmanuel Vadot
65*c66ec88fSEmmanuel Vadot	/*
66*c66ec88fSEmmanuel Vadot	 * The three following nodes are marked with opp-suspend
67*c66ec88fSEmmanuel Vadot	 * because they can not be enabled simultaneously on a
68*c66ec88fSEmmanuel Vadot	 * single SoC.
69*c66ec88fSEmmanuel Vadot	 */
70*c66ec88fSEmmanuel Vadot	opp50-300000000 {
71*c66ec88fSEmmanuel Vadot		opp-hz = /bits/ 64 <300000000>;
72*c66ec88fSEmmanuel Vadot		opp-microvolt = <950000 931000 969000>;
73*c66ec88fSEmmanuel Vadot		opp-supported-hw = <0x06 0x0010>;
74*c66ec88fSEmmanuel Vadot		opp-suspend;
75*c66ec88fSEmmanuel Vadot	};
76*c66ec88fSEmmanuel Vadot
77*c66ec88fSEmmanuel Vadot	opp100-275000000 {
78*c66ec88fSEmmanuel Vadot		opp-hz = /bits/ 64 <275000000>;
79*c66ec88fSEmmanuel Vadot		opp-microvolt = <1100000 1078000 1122000>;
80*c66ec88fSEmmanuel Vadot		opp-supported-hw = <0x01 0x00FF>;
81*c66ec88fSEmmanuel Vadot		opp-suspend;
82*c66ec88fSEmmanuel Vadot	};
83*c66ec88fSEmmanuel Vadot
84*c66ec88fSEmmanuel Vadot	opp100-300000000 {
85*c66ec88fSEmmanuel Vadot		opp-hz = /bits/ 64 <300000000>;
86*c66ec88fSEmmanuel Vadot		opp-microvolt = <1100000 1078000 1122000>;
87*c66ec88fSEmmanuel Vadot		opp-supported-hw = <0x06 0x0020>;
88*c66ec88fSEmmanuel Vadot		opp-suspend;
89*c66ec88fSEmmanuel Vadot	};
90*c66ec88fSEmmanuel Vadot
91*c66ec88fSEmmanuel Vadot	opp100-500000000 {
92*c66ec88fSEmmanuel Vadot		opp-hz = /bits/ 64 <500000000>;
93*c66ec88fSEmmanuel Vadot		opp-microvolt = <1100000 1078000 1122000>;
94*c66ec88fSEmmanuel Vadot		opp-supported-hw = <0x01 0xFFFF>;
95*c66ec88fSEmmanuel Vadot	};
96*c66ec88fSEmmanuel Vadot
97*c66ec88fSEmmanuel Vadot	opp100-600000000 {
98*c66ec88fSEmmanuel Vadot		opp-hz = /bits/ 64 <600000000>;
99*c66ec88fSEmmanuel Vadot		opp-microvolt = <1100000 1078000 1122000>;
100*c66ec88fSEmmanuel Vadot		opp-supported-hw = <0x06 0x0040>;
101*c66ec88fSEmmanuel Vadot	};
102*c66ec88fSEmmanuel Vadot
103*c66ec88fSEmmanuel Vadot	opp120-600000000 {
104*c66ec88fSEmmanuel Vadot		opp-hz = /bits/ 64 <600000000>;
105*c66ec88fSEmmanuel Vadot		opp-microvolt = <1200000 1176000 1224000>;
106*c66ec88fSEmmanuel Vadot		opp-supported-hw = <0x01 0xFFFF>;
107*c66ec88fSEmmanuel Vadot	};
108*c66ec88fSEmmanuel Vadot
109*c66ec88fSEmmanuel Vadot	opp120-720000000 {
110*c66ec88fSEmmanuel Vadot		opp-hz = /bits/ 64 <720000000>;
111*c66ec88fSEmmanuel Vadot		opp-microvolt = <1200000 1176000 1224000>;
112*c66ec88fSEmmanuel Vadot		opp-supported-hw = <0x06 0x0080>;
113*c66ec88fSEmmanuel Vadot	};
114*c66ec88fSEmmanuel Vadot
115*c66ec88fSEmmanuel Vadot	oppturbo-720000000 {
116*c66ec88fSEmmanuel Vadot		opp-hz = /bits/ 64 <720000000>;
117*c66ec88fSEmmanuel Vadot		opp-microvolt = <1260000 1234800 1285200>;
118*c66ec88fSEmmanuel Vadot		opp-supported-hw = <0x01 0xFFFF>;
119*c66ec88fSEmmanuel Vadot	};
120*c66ec88fSEmmanuel Vadot
121*c66ec88fSEmmanuel Vadot	oppturbo-800000000 {
122*c66ec88fSEmmanuel Vadot		opp-hz = /bits/ 64 <800000000>;
123*c66ec88fSEmmanuel Vadot		opp-microvolt = <1260000 1234800 1285200>;
124*c66ec88fSEmmanuel Vadot		opp-supported-hw = <0x06 0x0100>;
125*c66ec88fSEmmanuel Vadot	};
126*c66ec88fSEmmanuel Vadot
127*c66ec88fSEmmanuel Vadot	oppnitro-1000000000 {
128*c66ec88fSEmmanuel Vadot		opp-hz = /bits/ 64 <1000000000>;
129*c66ec88fSEmmanuel Vadot		opp-microvolt = <1325000 1298500 1351500>;
130*c66ec88fSEmmanuel Vadot		opp-supported-hw = <0x04 0x0200>;
131*c66ec88fSEmmanuel Vadot	};
132*c66ec88fSEmmanuel Vadot};
133