aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChanwoo Choi <cw00.choi@samsung.com>2015-11-23 09:18:52 -0500
committerMyungJoo Ham <myungjoo.ham@samsung.com>2016-05-02 22:20:08 -0400
commita296cb5c35ce5429415043a22a385c24673e4aeb (patch)
tree6d757d03456c97b2583b5babee0067cbd44691c7
parent403e0689d2a9eb33d9281db4079e964eb65ba9ef (diff)
PM / devfreq: exynos: Update documentation for bus devices using passive governor
This patch updates the documentation for passive bus devices and adds the detailed example of Exynos3250. Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com> Acked-by: MyungJoo Ham <myungjoo.ham@samsung.com> Acked-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
-rw-r--r--Documentation/devicetree/bindings/devfreq/exynos-bus.txt250
1 files changed, 247 insertions, 3 deletions
diff --git a/Documentation/devicetree/bindings/devfreq/exynos-bus.txt b/Documentation/devicetree/bindings/devfreq/exynos-bus.txt
index 7200817b78dc..2fa15dc08fe6 100644
--- a/Documentation/devicetree/bindings/devfreq/exynos-bus.txt
+++ b/Documentation/devicetree/bindings/devfreq/exynos-bus.txt
@@ -8,22 +8,46 @@ of the bus in runtime. To monitor the usage of each bus in runtime,
8the driver uses the PPMU (Platform Performance Monitoring Unit), which 8the driver uses the PPMU (Platform Performance Monitoring Unit), which
9is able to measure the current load of sub-blocks. 9is able to measure the current load of sub-blocks.
10 10
11The Exynos SoC includes the various sub-blocks which have the each AXI bus.
12The each AXI bus has the owned source clock but, has not the only owned
13power line. The power line might be shared among one more sub-blocks.
14So, we can divide into two type of device as the role of each sub-block.
15There are two type of bus devices as following:
16- parent bus device
17- passive bus device
18
19Basically, parent and passive bus device share the same power line.
20The parent bus device can only change the voltage of shared power line
21and the rest bus devices (passive bus device) depend on the decision of
22the parent bus device. If there are three blocks which share the VDD_xxx
23power line, Only one block should be parent device and then the rest blocks
24should depend on the parent device as passive device.
25
26 VDD_xxx |--- A block (parent)
27 |--- B block (passive)
28 |--- C block (passive)
29
11There are a little different composition among Exynos SoC because each Exynos 30There are a little different composition among Exynos SoC because each Exynos
12SoC has different sub-blocks. Therefore, such difference should be specified 31SoC has different sub-blocks. Therefore, such difference should be specified
13in devicetree file instead of each device driver. In result, this driver 32in devicetree file instead of each device driver. In result, this driver
14is able to support the bus frequency for all Exynos SoCs. 33is able to support the bus frequency for all Exynos SoCs.
15 34
16Required properties for bus device: 35Required properties for all bus devices:
17- compatible: Should be "samsung,exynos-bus". 36- compatible: Should be "samsung,exynos-bus".
18- clock-names : the name of clock used by the bus, "bus". 37- clock-names : the name of clock used by the bus, "bus".
19- clocks : phandles for clock specified in "clock-names" property. 38- clocks : phandles for clock specified in "clock-names" property.
20- operating-points-v2: the OPP table including frequency/voltage information 39- operating-points-v2: the OPP table including frequency/voltage information
21 to support DVFS (Dynamic Voltage/Frequency Scaling) feature. 40 to support DVFS (Dynamic Voltage/Frequency Scaling) feature.
41
42Required properties only for parent bus device:
22- vdd-supply: the regulator to provide the buses with the voltage. 43- vdd-supply: the regulator to provide the buses with the voltage.
23- devfreq-events: the devfreq-event device to monitor the current utilization 44- devfreq-events: the devfreq-event device to monitor the current utilization
24 of buses. 45 of buses.
25 46
26Optional properties for bus device: 47Required properties only for passive bus device:
48- devfreq: the parent bus device.
49
50Optional properties only for parent bus device:
27- exynos,saturation-ratio: the percentage value which is used to calibrate 51- exynos,saturation-ratio: the percentage value which is used to calibrate
28 the performance count against total cycle count. 52 the performance count against total cycle count.
29- exynos,voltage-tolerance: the percentage value for bus voltage tolerance 53- exynos,voltage-tolerance: the percentage value for bus voltage tolerance
@@ -34,7 +58,20 @@ Example1:
34 power line (regulator). The MIF (Memory Interface) AXI bus is used to 58 power line (regulator). The MIF (Memory Interface) AXI bus is used to
35 transfer data between DRAM and CPU and uses the VDD_MIF regulator. 59 transfer data between DRAM and CPU and uses the VDD_MIF regulator.
36 60
37 - power line(VDD_MIF) --> bus for DMC (Dynamic Memory Controller) block 61 - MIF (Memory Interface) block
62 : VDD_MIF |--- DMC (Dynamic Memory Controller)
63
64 - INT (Internal) block
65 : VDD_INT |--- LEFTBUS (parent device)
66 |--- PERIL
67 |--- MFC
68 |--- G3D
69 |--- RIGHTBUS
70 |--- FSYS
71 |--- LCD0
72 |--- PERIR
73 |--- ISP
74 |--- CAM
38 75
39 - MIF bus's frequency/voltage table 76 - MIF bus's frequency/voltage table
40 ----------------------- 77 -----------------------
@@ -47,6 +84,24 @@ Example1:
47 |L5| 400000 |875000 | 84 |L5| 400000 |875000 |
48 ----------------------- 85 -----------------------
49 86
87 - INT bus's frequency/voltage table
88 ----------------------------------------------------------
89 |Block|LEFTBUS|RIGHTBUS|MCUISP |ISP |PERIL ||VDD_INT |
90 | name| |LCD0 | | | || |
91 | | |FSYS | | | || |
92 | | |MFC | | | || |
93 ----------------------------------------------------------
94 |Mode |*parent|passive |passive|passive|passive|| |
95 ----------------------------------------------------------
96 |Lv |Frequency ||Voltage |
97 ----------------------------------------------------------
98 |L1 |50000 |50000 |50000 |50000 |50000 ||900000 |
99 |L2 |80000 |80000 |80000 |80000 |80000 ||900000 |
100 |L3 |100000 |100000 |100000 |100000 |100000 ||1000000 |
101 |L4 |134000 |134000 |200000 |200000 | ||1000000 |
102 |L5 |200000 |200000 |400000 |300000 | ||1000000 |
103 ----------------------------------------------------------
104
50Example2 : 105Example2 :
51 The bus of DMC (Dynamic Memory Controller) block in exynos3250.dtsi 106 The bus of DMC (Dynamic Memory Controller) block in exynos3250.dtsi
52 is listed below: 107 is listed below:
@@ -85,6 +140,154 @@ Example2 :
85 }; 140 };
86 }; 141 };
87 142
143 bus_leftbus: bus_leftbus {
144 compatible = "samsung,exynos-bus";
145 clocks = <&cmu CLK_DIV_GDL>;
146 clock-names = "bus";
147 operating-points-v2 = <&bus_leftbus_opp_table>;
148 status = "disabled";
149 };
150
151 bus_rightbus: bus_rightbus {
152 compatible = "samsung,exynos-bus";
153 clocks = <&cmu CLK_DIV_GDR>;
154 clock-names = "bus";
155 operating-points-v2 = <&bus_leftbus_opp_table>;
156 status = "disabled";
157 };
158
159 bus_lcd0: bus_lcd0 {
160 compatible = "samsung,exynos-bus";
161 clocks = <&cmu CLK_DIV_ACLK_160>;
162 clock-names = "bus";
163 operating-points-v2 = <&bus_leftbus_opp_table>;
164 status = "disabled";
165 };
166
167 bus_fsys: bus_fsys {
168 compatible = "samsung,exynos-bus";
169 clocks = <&cmu CLK_DIV_ACLK_200>;
170 clock-names = "bus";
171 operating-points-v2 = <&bus_leftbus_opp_table>;
172 status = "disabled";
173 };
174
175 bus_mcuisp: bus_mcuisp {
176 compatible = "samsung,exynos-bus";
177 clocks = <&cmu CLK_DIV_ACLK_400_MCUISP>;
178 clock-names = "bus";
179 operating-points-v2 = <&bus_mcuisp_opp_table>;
180 status = "disabled";
181 };
182
183 bus_isp: bus_isp {
184 compatible = "samsung,exynos-bus";
185 clocks = <&cmu CLK_DIV_ACLK_266>;
186 clock-names = "bus";
187 operating-points-v2 = <&bus_isp_opp_table>;
188 status = "disabled";
189 };
190
191 bus_peril: bus_peril {
192 compatible = "samsung,exynos-bus";
193 clocks = <&cmu CLK_DIV_ACLK_100>;
194 clock-names = "bus";
195 operating-points-v2 = <&bus_peril_opp_table>;
196 status = "disabled";
197 };
198
199 bus_mfc: bus_mfc {
200 compatible = "samsung,exynos-bus";
201 clocks = <&cmu CLK_SCLK_MFC>;
202 clock-names = "bus";
203 operating-points-v2 = <&bus_leftbus_opp_table>;
204 status = "disabled";
205 };
206
207 bus_leftbus_opp_table: opp_table1 {
208 compatible = "operating-points-v2";
209 opp-shared;
210
211 opp@50000000 {
212 opp-hz = /bits/ 64 <50000000>;
213 opp-microvolt = <900000>;
214 };
215 opp@80000000 {
216 opp-hz = /bits/ 64 <80000000>;
217 opp-microvolt = <900000>;
218 };
219 opp@100000000 {
220 opp-hz = /bits/ 64 <100000000>;
221 opp-microvolt = <1000000>;
222 };
223 opp@134000000 {
224 opp-hz = /bits/ 64 <134000000>;
225 opp-microvolt = <1000000>;
226 };
227 opp@200000000 {
228 opp-hz = /bits/ 64 <200000000>;
229 opp-microvolt = <1000000>;
230 };
231 };
232
233 bus_mcuisp_opp_table: opp_table2 {
234 compatible = "operating-points-v2";
235 opp-shared;
236
237 opp@50000000 {
238 opp-hz = /bits/ 64 <50000000>;
239 };
240 opp@80000000 {
241 opp-hz = /bits/ 64 <80000000>;
242 };
243 opp@100000000 {
244 opp-hz = /bits/ 64 <100000000>;
245 };
246 opp@200000000 {
247 opp-hz = /bits/ 64 <200000000>;
248 };
249 opp@400000000 {
250 opp-hz = /bits/ 64 <400000000>;
251 };
252 };
253
254 bus_isp_opp_table: opp_table3 {
255 compatible = "operating-points-v2";
256 opp-shared;
257
258 opp@50000000 {
259 opp-hz = /bits/ 64 <50000000>;
260 };
261 opp@80000000 {
262 opp-hz = /bits/ 64 <80000000>;
263 };
264 opp@100000000 {
265 opp-hz = /bits/ 64 <100000000>;
266 };
267 opp@200000000 {
268 opp-hz = /bits/ 64 <200000000>;
269 };
270 opp@300000000 {
271 opp-hz = /bits/ 64 <300000000>;
272 };
273 };
274
275 bus_peril_opp_table: opp_table4 {
276 compatible = "operating-points-v2";
277 opp-shared;
278
279 opp@50000000 {
280 opp-hz = /bits/ 64 <50000000>;
281 };
282 opp@80000000 {
283 opp-hz = /bits/ 64 <80000000>;
284 };
285 opp@100000000 {
286 opp-hz = /bits/ 64 <100000000>;
287 };
288 };
289
290
88 Usage case to handle the frequency and voltage of bus on runtime 291 Usage case to handle the frequency and voltage of bus on runtime
89 in exynos3250-rinato.dts is listed below: 292 in exynos3250-rinato.dts is listed below:
90 293
@@ -93,3 +296,44 @@ Example2 :
93 vdd-supply = <&buck1_reg>; /* VDD_MIF */ 296 vdd-supply = <&buck1_reg>; /* VDD_MIF */
94 status = "okay"; 297 status = "okay";
95 }; 298 };
299
300 &bus_leftbus {
301 devfreq-events = <&ppmu_leftbus_3>, <&ppmu_rightbus_3>;
302 vdd-supply = <&buck3_reg>;
303 status = "okay";
304 };
305
306 &bus_rightbus {
307 devfreq = <&bus_leftbus>;
308 status = "okay";
309 };
310
311 &bus_lcd0 {
312 devfreq = <&bus_leftbus>;
313 status = "okay";
314 };
315
316 &bus_fsys {
317 devfreq = <&bus_leftbus>;
318 status = "okay";
319 };
320
321 &bus_mcuisp {
322 devfreq = <&bus_leftbus>;
323 status = "okay";
324 };
325
326 &bus_isp {
327 devfreq = <&bus_leftbus>;
328 status = "okay";
329 };
330
331 &bus_peril {
332 devfreq = <&bus_leftbus>;
333 status = "okay";
334 };
335
336 &bus_mfc {
337 devfreq = <&bus_leftbus>;
338 status = "okay";
339 };