Lines Matching +full:max +full:- +full:freq

1 // SPDX-License-Identifier: GPL-2.0-only
5 * Copyright (C) 2002 - 2003 Dominik Brodowski
19 struct cpufreq_frequency_table *pos, *table = policy->freq_table; in policy_has_boost_freq()
25 if (pos->flags & CPUFREQ_BOOST_FREQ) in policy_has_boost_freq()
37 unsigned int freq; in cpufreq_frequency_table_cpuinfo() local
40 freq = pos->frequency; in cpufreq_frequency_table_cpuinfo()
42 if ((!cpufreq_boost_enabled() || !policy->boost_enabled) in cpufreq_frequency_table_cpuinfo()
43 && (pos->flags & CPUFREQ_BOOST_FREQ)) in cpufreq_frequency_table_cpuinfo()
46 pr_debug("table entry %u: %u kHz\n", (int)(pos - table), freq); in cpufreq_frequency_table_cpuinfo()
47 if (freq < min_freq) in cpufreq_frequency_table_cpuinfo()
48 min_freq = freq; in cpufreq_frequency_table_cpuinfo()
49 if (freq > max_freq) in cpufreq_frequency_table_cpuinfo()
50 max_freq = freq; in cpufreq_frequency_table_cpuinfo()
53 policy->min = policy->cpuinfo.min_freq = min_freq; in cpufreq_frequency_table_cpuinfo()
54 policy->max = max_freq; in cpufreq_frequency_table_cpuinfo()
59 if (policy->cpuinfo.max_freq < max_freq) in cpufreq_frequency_table_cpuinfo()
60 policy->max = policy->cpuinfo.max_freq = max_freq; in cpufreq_frequency_table_cpuinfo()
62 if (policy->min == ~0) in cpufreq_frequency_table_cpuinfo()
63 return -EINVAL; in cpufreq_frequency_table_cpuinfo()
72 unsigned int freq, prev_smaller = 0; in cpufreq_frequency_table_verify() local
75 pr_debug("request for verification of policy (%u - %u kHz) for cpu %u\n", in cpufreq_frequency_table_verify()
76 policy->min, policy->max, policy->cpu); in cpufreq_frequency_table_verify()
81 freq = pos->frequency; in cpufreq_frequency_table_verify()
83 if ((freq >= policy->min) && (freq <= policy->max)) { in cpufreq_frequency_table_verify()
88 if ((prev_smaller < freq) && (freq <= policy->max)) in cpufreq_frequency_table_verify()
89 prev_smaller = freq; in cpufreq_frequency_table_verify()
93 policy->max = prev_smaller; in cpufreq_frequency_table_verify()
97 pr_debug("verification lead to (%u - %u kHz) for cpu %u\n", in cpufreq_frequency_table_verify()
98 policy->min, policy->max, policy->cpu); in cpufreq_frequency_table_verify()
106 * policy->freq_table prior to it.
110 if (!policy->freq_table) in cpufreq_generic_frequency_table_verify()
111 return -ENODEV; in cpufreq_generic_frequency_table_verify()
113 return cpufreq_frequency_table_verify(policy, policy->freq_table); in cpufreq_generic_frequency_table_verify()
119 unsigned int max, unsigned int relation) in cpufreq_table_index_unsorted() argument
130 struct cpufreq_frequency_table *table = policy->freq_table; in cpufreq_table_index_unsorted()
131 unsigned int freq, diff, i = 0; in cpufreq_table_index_unsorted() local
135 target_freq, relation, policy->cpu); in cpufreq_table_index_unsorted()
148 freq = pos->frequency; in cpufreq_table_index_unsorted()
150 if (freq < min || freq > max) in cpufreq_table_index_unsorted()
152 if (freq == target_freq) { in cpufreq_table_index_unsorted()
158 if (freq < target_freq) { in cpufreq_table_index_unsorted()
159 if (freq >= optimal.frequency) { in cpufreq_table_index_unsorted()
160 optimal.frequency = freq; in cpufreq_table_index_unsorted()
164 if (freq <= suboptimal.frequency) { in cpufreq_table_index_unsorted()
165 suboptimal.frequency = freq; in cpufreq_table_index_unsorted()
171 if (freq > target_freq) { in cpufreq_table_index_unsorted()
172 if (freq <= optimal.frequency) { in cpufreq_table_index_unsorted()
173 optimal.frequency = freq; in cpufreq_table_index_unsorted()
177 if (freq >= suboptimal.frequency) { in cpufreq_table_index_unsorted()
178 suboptimal.frequency = freq; in cpufreq_table_index_unsorted()
184 diff = abs(freq - target_freq); in cpufreq_table_index_unsorted()
187 freq > table[optimal.driver_data].frequency)) { in cpufreq_table_index_unsorted()
196 WARN(1, "Invalid frequency table: %u\n", policy->cpu); in cpufreq_table_index_unsorted()
204 pr_debug("target index is %u, freq is:%u kHz\n", index, in cpufreq_table_index_unsorted()
211 unsigned int freq) in cpufreq_frequency_table_get_index() argument
213 struct cpufreq_frequency_table *pos, *table = policy->freq_table; in cpufreq_frequency_table_get_index()
218 return -ENOENT; in cpufreq_frequency_table_get_index()
222 if (pos->frequency == freq) in cpufreq_frequency_table_get_index()
225 return -EINVAL; in cpufreq_frequency_table_get_index()
230 * show_available_freqs - show available frequencies for the specified CPU
236 struct cpufreq_frequency_table *pos, *table = policy->freq_table; in show_available_freqs()
239 return -ENODEV; in show_available_freqs()
243 * show_boost = true and driver_data = BOOST freq in show_available_freqs()
246 * show_boost = false and driver_data = BOOST freq in show_available_freqs()
247 * show_boost = true and driver_data != BOOST freq in show_available_freqs()
248 * continue - do not display anything in show_available_freqs()
250 * show_boost = false and driver_data != BOOST freq in show_available_freqs()
253 if (show_boost ^ (pos->flags & CPUFREQ_BOOST_FREQ)) in show_available_freqs()
256 count += sprintf(&buf[count], "%u ", pos->frequency); in show_available_freqs()
269 * scaling_available_frequencies_show - show available normal frequencies for
280 * scaling_boost_frequencies_show - show available boost frequencies for
292 struct cpufreq_frequency_table *pos, *table = policy->freq_table; in set_freq_table_sorted()
296 policy->freq_table_sorted = CPUFREQ_TABLE_UNSORTED; in set_freq_table_sorted()
304 if (pos->frequency == prev->frequency) { in set_freq_table_sorted()
305 pr_warn("Duplicate freq-table entries: %u\n", in set_freq_table_sorted()
306 pos->frequency); in set_freq_table_sorted()
307 return -EINVAL; in set_freq_table_sorted()
311 if (pos->frequency > prev->frequency) { in set_freq_table_sorted()
314 pr_debug("Freq table is unsorted\n"); in set_freq_table_sorted()
324 pr_debug("Freq table is unsorted\n"); in set_freq_table_sorted()
328 ascending--; in set_freq_table_sorted()
335 policy->freq_table_sorted = CPUFREQ_TABLE_SORTED_ASCENDING; in set_freq_table_sorted()
337 policy->freq_table_sorted = CPUFREQ_TABLE_SORTED_DESCENDING; in set_freq_table_sorted()
339 pr_debug("Freq table is sorted in %s order\n", in set_freq_table_sorted()
349 if (!policy->freq_table) { in cpufreq_table_validate_and_sort()
350 /* Freq table must be passed by drivers with target_index() */ in cpufreq_table_validate_and_sort()
352 return -EINVAL; in cpufreq_table_validate_and_sort()
357 ret = cpufreq_frequency_table_cpuinfo(policy, policy->freq_table); in cpufreq_table_validate_and_sort()
363 policy->boost_supported = true; in cpufreq_table_validate_and_sort()