diff options
author | Nishanth Menon <nm@ti.com> | 2014-05-05 09:33:50 -0400 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2014-05-06 18:39:03 -0400 |
commit | a0dd7b79657bd6644b914d16ce7f23468c44a7b4 (patch) | |
tree | 471993f62816ed76d5cb7f96b32659f5bed439a6 /Documentation | |
parent | 0f5c890e9b9754d9aa5bf6ae2fc00cae65780d23 (diff) |
PM / OPP: Move cpufreq specific OPP functions out of generic OPP library
CPUFreq specific helper functions for OPP (Operating Performance Points)
now use generic OPP functions that allow CPUFreq to be be moved back
into CPUFreq framework. This allows for independent modifications
or future enhancements as needed isolated to just CPUFreq framework
alone.
Here, we just move relevant code and documentation to make this part of
CPUFreq infrastructure.
Cc: Kevin Hilman <khilman@deeprootsystems.com>
Signed-off-by: Nishanth Menon <nm@ti.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/cpu-freq/core.txt | 29 | ||||
-rw-r--r-- | Documentation/power/opp.txt | 40 |
2 files changed, 34 insertions, 35 deletions
diff --git a/Documentation/cpu-freq/core.txt b/Documentation/cpu-freq/core.txt index 0060d76b445f..70933eadc308 100644 --- a/Documentation/cpu-freq/core.txt +++ b/Documentation/cpu-freq/core.txt | |||
@@ -20,6 +20,7 @@ Contents: | |||
20 | --------- | 20 | --------- |
21 | 1. CPUFreq core and interfaces | 21 | 1. CPUFreq core and interfaces |
22 | 2. CPUFreq notifiers | 22 | 2. CPUFreq notifiers |
23 | 3. CPUFreq Table Generation with Operating Performance Point (OPP) | ||
23 | 24 | ||
24 | 1. General Information | 25 | 1. General Information |
25 | ======================= | 26 | ======================= |
@@ -92,3 +93,31 @@ values: | |||
92 | cpu - number of the affected CPU | 93 | cpu - number of the affected CPU |
93 | old - old frequency | 94 | old - old frequency |
94 | new - new frequency | 95 | new - new frequency |
96 | |||
97 | 3. CPUFreq Table Generation with Operating Performance Point (OPP) | ||
98 | ================================================================== | ||
99 | For details about OPP, see Documentation/power/opp.txt | ||
100 | |||
101 | dev_pm_opp_init_cpufreq_table - cpufreq framework typically is initialized with | ||
102 | cpufreq_frequency_table_cpuinfo which is provided with the list of | ||
103 | frequencies that are available for operation. This function provides | ||
104 | a ready to use conversion routine to translate the OPP layer's internal | ||
105 | information about the available frequencies into a format readily | ||
106 | providable to cpufreq. | ||
107 | |||
108 | WARNING: Do not use this function in interrupt context. | ||
109 | |||
110 | Example: | ||
111 | soc_pm_init() | ||
112 | { | ||
113 | /* Do things */ | ||
114 | r = dev_pm_opp_init_cpufreq_table(dev, &freq_table); | ||
115 | if (!r) | ||
116 | cpufreq_frequency_table_cpuinfo(policy, freq_table); | ||
117 | /* Do other things */ | ||
118 | } | ||
119 | |||
120 | NOTE: This function is available only if CONFIG_CPU_FREQ is enabled in | ||
121 | addition to CONFIG_PM_OPP. | ||
122 | |||
123 | dev_pm_opp_free_cpufreq_table - Free up the table allocated by dev_pm_opp_init_cpufreq_table | ||
diff --git a/Documentation/power/opp.txt b/Documentation/power/opp.txt index b8a907dc0169..a9adad828cdc 100644 --- a/Documentation/power/opp.txt +++ b/Documentation/power/opp.txt | |||
@@ -10,8 +10,7 @@ Contents | |||
10 | 3. OPP Search Functions | 10 | 3. OPP Search Functions |
11 | 4. OPP Availability Control Functions | 11 | 4. OPP Availability Control Functions |
12 | 5. OPP Data Retrieval Functions | 12 | 5. OPP Data Retrieval Functions |
13 | 6. Cpufreq Table Generation | 13 | 6. Data Structures |
14 | 7. Data Structures | ||
15 | 14 | ||
16 | 1. Introduction | 15 | 1. Introduction |
17 | =============== | 16 | =============== |
@@ -72,7 +71,6 @@ operations until that OPP could be re-enabled if possible. | |||
72 | OPP library facilitates this concept in it's implementation. The following | 71 | OPP library facilitates this concept in it's implementation. The following |
73 | operational functions operate only on available opps: | 72 | operational functions operate only on available opps: |
74 | opp_find_freq_{ceil, floor}, dev_pm_opp_get_voltage, dev_pm_opp_get_freq, dev_pm_opp_get_opp_count | 73 | opp_find_freq_{ceil, floor}, dev_pm_opp_get_voltage, dev_pm_opp_get_freq, dev_pm_opp_get_opp_count |
75 | and dev_pm_opp_init_cpufreq_table | ||
76 | 74 | ||
77 | dev_pm_opp_find_freq_exact is meant to be used to find the opp pointer which can then | 75 | dev_pm_opp_find_freq_exact is meant to be used to find the opp pointer which can then |
78 | be used for dev_pm_opp_enable/disable functions to make an opp available as required. | 76 | be used for dev_pm_opp_enable/disable functions to make an opp available as required. |
@@ -96,10 +94,9 @@ using RCU read locks. The opp_find_freq_{exact,ceil,floor}, | |||
96 | opp_get_{voltage, freq, opp_count} fall into this category. | 94 | opp_get_{voltage, freq, opp_count} fall into this category. |
97 | 95 | ||
98 | opp_{add,enable,disable} are updaters which use mutex and implement it's own | 96 | opp_{add,enable,disable} are updaters which use mutex and implement it's own |
99 | RCU locking mechanisms. dev_pm_opp_init_cpufreq_table acts as an updater and uses | 97 | RCU locking mechanisms. These functions should *NOT* be called under RCU locks |
100 | mutex to implment RCU updater strategy. These functions should *NOT* be called | 98 | and other contexts that prevent blocking functions in RCU or mutex operations |
101 | under RCU locks and other contexts that prevent blocking functions in RCU or | 99 | from working. |
102 | mutex operations from working. | ||
103 | 100 | ||
104 | 2. Initial OPP List Registration | 101 | 2. Initial OPP List Registration |
105 | ================================ | 102 | ================================ |
@@ -311,34 +308,7 @@ dev_pm_opp_get_opp_count - Retrieve the number of available opps for a device | |||
311 | /* Do other things */ | 308 | /* Do other things */ |
312 | } | 309 | } |
313 | 310 | ||
314 | 6. Cpufreq Table Generation | 311 | 6. Data Structures |
315 | =========================== | ||
316 | dev_pm_opp_init_cpufreq_table - cpufreq framework typically is initialized with | ||
317 | cpufreq_frequency_table_cpuinfo which is provided with the list of | ||
318 | frequencies that are available for operation. This function provides | ||
319 | a ready to use conversion routine to translate the OPP layer's internal | ||
320 | information about the available frequencies into a format readily | ||
321 | providable to cpufreq. | ||
322 | |||
323 | WARNING: Do not use this function in interrupt context. | ||
324 | |||
325 | Example: | ||
326 | soc_pm_init() | ||
327 | { | ||
328 | /* Do things */ | ||
329 | r = dev_pm_opp_init_cpufreq_table(dev, &freq_table); | ||
330 | if (!r) | ||
331 | cpufreq_frequency_table_cpuinfo(policy, freq_table); | ||
332 | /* Do other things */ | ||
333 | } | ||
334 | |||
335 | NOTE: This function is available only if CONFIG_CPU_FREQ is enabled in | ||
336 | addition to CONFIG_PM as power management feature is required to | ||
337 | dynamically scale voltage and frequency in a system. | ||
338 | |||
339 | dev_pm_opp_free_cpufreq_table - Free up the table allocated by dev_pm_opp_init_cpufreq_table | ||
340 | |||
341 | 7. Data Structures | ||
342 | ================== | 312 | ================== |
343 | Typically an SoC contains multiple voltage domains which are variable. Each | 313 | Typically an SoC contains multiple voltage domains which are variable. Each |
344 | domain is represented by a device pointer. The relationship to OPP can be | 314 | domain is represented by a device pointer. The relationship to OPP can be |