Lines Matching +full:max +full:- +full:frequency
1 // SPDX-License-Identifier: GPL-2.0-only
5 * Copyright (C) 2002 - 2003 Dominik Brodowski
15 * FREQUENCY TABLE HELPERS *
20 struct cpufreq_frequency_table *pos, *table = policy->freq_table; in policy_has_boost_freq()
26 if (pos->flags & CPUFREQ_BOOST_FREQ) in policy_has_boost_freq()
42 freq = pos->frequency; in cpufreq_frequency_table_cpuinfo()
45 && (pos->flags & CPUFREQ_BOOST_FREQ)) in cpufreq_frequency_table_cpuinfo()
48 pr_debug("table entry %u: %u kHz\n", (int)(pos - table), freq); in cpufreq_frequency_table_cpuinfo()
56 policy->min = policy->cpuinfo.min_freq = min_freq; in cpufreq_frequency_table_cpuinfo()
57 policy->max = max_freq; in cpufreq_frequency_table_cpuinfo()
62 if (policy->cpuinfo.max_freq < max_freq) in cpufreq_frequency_table_cpuinfo()
63 policy->max = policy->cpuinfo.max_freq = max_freq; in cpufreq_frequency_table_cpuinfo()
65 if (policy->min == ~0) in cpufreq_frequency_table_cpuinfo()
66 return -EINVAL; in cpufreq_frequency_table_cpuinfo()
78 pr_debug("request for verification of policy (%u - %u kHz) for cpu %u\n", in cpufreq_frequency_table_verify()
79 policy->min, policy->max, policy->cpu); in cpufreq_frequency_table_verify()
84 freq = pos->frequency; in cpufreq_frequency_table_verify()
86 if ((freq >= policy->min) && (freq <= policy->max)) { in cpufreq_frequency_table_verify()
91 if ((next_larger > freq) && (freq > policy->max)) in cpufreq_frequency_table_verify()
96 policy->max = next_larger; in cpufreq_frequency_table_verify()
100 pr_debug("verification lead to (%u - %u kHz) for cpu %u\n", in cpufreq_frequency_table_verify()
101 policy->min, policy->max, policy->cpu); in cpufreq_frequency_table_verify()
108 * Generic routine to verify policy & frequency table, requires driver to set
109 * policy->freq_table prior to it.
113 if (!policy->freq_table) in cpufreq_generic_frequency_table_verify()
114 return -ENODEV; in cpufreq_generic_frequency_table_verify()
116 return cpufreq_frequency_table_verify(policy, policy->freq_table); in cpufreq_generic_frequency_table_verify()
126 .frequency = 0, in cpufreq_table_index_unsorted()
130 .frequency = 0, in cpufreq_table_index_unsorted()
133 struct cpufreq_frequency_table *table = policy->freq_table; in cpufreq_table_index_unsorted()
138 target_freq, relation, policy->cpu); in cpufreq_table_index_unsorted()
142 suboptimal.frequency = ~0; in cpufreq_table_index_unsorted()
146 optimal.frequency = ~0; in cpufreq_table_index_unsorted()
151 freq = pos->frequency; in cpufreq_table_index_unsorted()
153 if ((freq < policy->min) || (freq > policy->max)) in cpufreq_table_index_unsorted()
162 if (freq >= optimal.frequency) { in cpufreq_table_index_unsorted()
163 optimal.frequency = freq; in cpufreq_table_index_unsorted()
167 if (freq <= suboptimal.frequency) { in cpufreq_table_index_unsorted()
168 suboptimal.frequency = freq; in cpufreq_table_index_unsorted()
175 if (freq <= optimal.frequency) { in cpufreq_table_index_unsorted()
176 optimal.frequency = freq; in cpufreq_table_index_unsorted()
180 if (freq >= suboptimal.frequency) { in cpufreq_table_index_unsorted()
181 suboptimal.frequency = freq; in cpufreq_table_index_unsorted()
187 diff = abs(freq - target_freq); in cpufreq_table_index_unsorted()
188 if (diff < optimal.frequency || in cpufreq_table_index_unsorted()
189 (diff == optimal.frequency && in cpufreq_table_index_unsorted()
190 freq > table[optimal.driver_data].frequency)) { in cpufreq_table_index_unsorted()
191 optimal.frequency = diff; in cpufreq_table_index_unsorted()
199 WARN(1, "Invalid frequency table: %d\n", policy->cpu); in cpufreq_table_index_unsorted()
208 table[index].frequency); in cpufreq_table_index_unsorted()
216 struct cpufreq_frequency_table *pos, *table = policy->freq_table; in cpufreq_frequency_table_get_index()
220 pr_debug("%s: Unable to find frequency table\n", __func__); in cpufreq_frequency_table_get_index()
221 return -ENOENT; in cpufreq_frequency_table_get_index()
225 if (pos->frequency == freq) in cpufreq_frequency_table_get_index()
228 return -EINVAL; in cpufreq_frequency_table_get_index()
233 * show_available_freqs - show available frequencies for the specified CPU
239 struct cpufreq_frequency_table *pos, *table = policy->freq_table; in show_available_freqs()
242 return -ENODEV; in show_available_freqs()
251 * continue - do not display anything in show_available_freqs()
256 if (show_boost ^ (pos->flags & CPUFREQ_BOOST_FREQ)) in show_available_freqs()
259 count += sprintf(&buf[count], "%d ", pos->frequency); in show_available_freqs()
272 * show_scaling_available_frequencies - show available normal frequencies for
284 * show_available_boost_freqs - show available boost frequencies for
303 struct cpufreq_frequency_table *pos, *table = policy->freq_table; in set_freq_table_sorted()
307 policy->freq_table_sorted = CPUFREQ_TABLE_UNSORTED; in set_freq_table_sorted()
315 if (pos->frequency == prev->frequency) { in set_freq_table_sorted()
316 pr_warn("Duplicate freq-table entries: %u\n", in set_freq_table_sorted()
317 pos->frequency); in set_freq_table_sorted()
318 return -EINVAL; in set_freq_table_sorted()
321 /* Frequency increased from prev to pos */ in set_freq_table_sorted()
322 if (pos->frequency > prev->frequency) { in set_freq_table_sorted()
323 /* But frequency was decreasing earlier */ in set_freq_table_sorted()
331 /* Frequency decreased from prev to pos */ in set_freq_table_sorted()
333 /* But frequency was increasing earlier */ in set_freq_table_sorted()
339 ascending--; in set_freq_table_sorted()
346 policy->freq_table_sorted = CPUFREQ_TABLE_SORTED_ASCENDING; in set_freq_table_sorted()
348 policy->freq_table_sorted = CPUFREQ_TABLE_SORTED_DESCENDING; in set_freq_table_sorted()
360 if (!policy->freq_table) in cpufreq_table_validate_and_sort()
363 ret = cpufreq_frequency_table_cpuinfo(policy, policy->freq_table); in cpufreq_table_validate_and_sort()
371 MODULE_DESCRIPTION("CPUfreq frequency table helpers");