Lines Matching +full:min +full:- +full:freq

1 /* SPDX-License-Identifier: GPL-2.0-only */
6 * (C) 2002 - 2003 Dominik Brodowski <linux@brodo.de>
30 * Maximum transition latency is in nanoseconds - if it's unknown,
34 #define CPUFREQ_ETERNAL (-1)
51 /* in 10^(-9) s = nanoseconds */
68 unsigned int min; /* in kHz */ member
72 unsigned int suspend_freq; /* freq to set during suspend */
96 * - Any routine that wants to read from the policy structure will
98 * - Any routine that will write to the policy structure and/or may take away
106 * - fast_switch_possible should be set by the driver if it can
109 * - fast_switch_enabled is to be set by governors that support fast
157 /* cpufreq-stats */
171 * Used for passing new cpufreq policy data to the cpufreq driver's ->verify()
172 * callback for sanitization. That callback is only expected to modify the min
180 unsigned int min; /* in kHz */ member
194 #define CPUFREQ_SHARED_TYPE_ALL (2) /* All dependent CPUs should set freq */
195 #define CPUFREQ_SHARED_TYPE_ANY (3) /* Freq can be set from any dependent CPU*/
215 return cpumask_empty(policy->cpus); in policy_is_inactive()
220 return cpumask_weight(policy->cpus) > 1; in policy_is_shared()
345 * ->fast_switch() replacement for drivers that use an internal
348 * if ->fast_switch is set too, because in those cases (under specific
370 * In that case core will directly call ->target_index().
413 * the diver if the target frequency does not change, but the policy min or max
428 * This should be set by platforms having multiple clock-domains, i.e.
436 * Driver will do POSTCHANGE notifications from outside of their ->target()
437 * routine and so must set cpufreq_driver->flags with this flag, so that core
444 * frequency present in freq-table exposed by the driver. For these drivers if
445 * CPU is found running at an out of table freq, we will try to set it to a freq
467 (drv->flags & CPUFREQ_IS_COOLING_DEV); in cpufreq_thermal_control_enabled()
471 unsigned int min, in cpufreq_verify_within_limits() argument
474 policy->max = clamp(policy->max, min, max); in cpufreq_verify_within_limits()
475 policy->min = clamp(policy->min, min, policy->max); in cpufreq_verify_within_limits()
481 cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq, in cpufreq_verify_within_cpu_limits()
482 policy->cpuinfo.max_freq); in cpufreq_verify_within_cpu_limits()
532 * cpufreq_scale - "old * mult / div" calculation for large values (32-bit-arch
562 * If (cpufreq_driver->target) exists, the ->governor decides what frequency
563 * within the limits is used. If (cpufreq_driver->setpolicy> exists, these
587 unsigned int freq);
643 if (policy->max < policy->cur) in cpufreq_policy_apply_limits()
644 __cpufreq_driver_target(policy, policy->max, in cpufreq_policy_apply_limits()
646 else if (policy->min > policy->cur) in cpufreq_policy_apply_limits()
647 __cpufreq_driver_target(policy, policy->min, in cpufreq_policy_apply_limits()
693 unsigned int frequency; /* kHz - doesn't need to be in ascending
707 return -EINVAL; in dev_pm_opp_init_cpufreq_table()
718 * cpufreq_for_each_entry - iterate over a cpufreq_frequency_table
724 for (pos = table; pos->frequency != CPUFREQ_TABLE_END; pos++)
727 * cpufreq_for_each_entry_idx - iterate over a cpufreq_frequency_table
735 for (pos = table, idx = 0; pos->frequency != CPUFREQ_TABLE_END; \
739 * cpufreq_for_each_valid_entry - iterate over a cpufreq_frequency_table
746 for (pos = table; pos->frequency != CPUFREQ_TABLE_END; pos++) \
747 if (pos->frequency == CPUFREQ_ENTRY_INVALID) \
752 * cpufreq_for_each_valid_entry_idx - iterate with index over a cpufreq
761 if (pos->frequency == CPUFREQ_ENTRY_INVALID) \
766 * cpufreq_for_each_efficient_entry_idx - iterate with index over a cpufreq
777 if (efficiencies && (pos->flags & CPUFREQ_INEFFICIENT_FREQ)) \
793 unsigned int freq);
803 /* Find lowest freq at or above target in a table in ascending order */
808 struct cpufreq_frequency_table *table = policy->freq_table; in cpufreq_table_find_index_al()
810 unsigned int freq; in cpufreq_table_find_index_al() local
811 int idx, best = -1; in cpufreq_table_find_index_al()
814 freq = pos->frequency; in cpufreq_table_find_index_al()
816 if (freq >= target_freq) in cpufreq_table_find_index_al()
825 /* Find lowest freq at or above target in a table in descending order */
830 struct cpufreq_frequency_table *table = policy->freq_table; in cpufreq_table_find_index_dl()
832 unsigned int freq; in cpufreq_table_find_index_dl() local
833 int idx, best = -1; in cpufreq_table_find_index_dl()
836 freq = pos->frequency; in cpufreq_table_find_index_dl()
838 if (freq == target_freq) in cpufreq_table_find_index_dl()
841 if (freq > target_freq) { in cpufreq_table_find_index_dl()
846 /* No freq found above target_freq */ in cpufreq_table_find_index_dl()
847 if (best == -1) in cpufreq_table_find_index_dl()
856 /* Works only on sorted freq-tables */
861 target_freq = clamp_val(target_freq, policy->min, policy->max); in cpufreq_table_find_index_l()
863 if (policy->freq_table_sorted == CPUFREQ_TABLE_SORTED_ASCENDING) in cpufreq_table_find_index_l()
871 /* Find highest freq at or below target in a table in ascending order */
876 struct cpufreq_frequency_table *table = policy->freq_table; in cpufreq_table_find_index_ah()
878 unsigned int freq; in cpufreq_table_find_index_ah() local
879 int idx, best = -1; in cpufreq_table_find_index_ah()
882 freq = pos->frequency; in cpufreq_table_find_index_ah()
884 if (freq == target_freq) in cpufreq_table_find_index_ah()
887 if (freq < target_freq) { in cpufreq_table_find_index_ah()
892 /* No freq found below target_freq */ in cpufreq_table_find_index_ah()
893 if (best == -1) in cpufreq_table_find_index_ah()
902 /* Find highest freq at or below target in a table in descending order */
907 struct cpufreq_frequency_table *table = policy->freq_table; in cpufreq_table_find_index_dh()
909 unsigned int freq; in cpufreq_table_find_index_dh() local
910 int idx, best = -1; in cpufreq_table_find_index_dh()
913 freq = pos->frequency; in cpufreq_table_find_index_dh()
915 if (freq <= target_freq) in cpufreq_table_find_index_dh()
924 /* Works only on sorted freq-tables */
929 target_freq = clamp_val(target_freq, policy->min, policy->max); in cpufreq_table_find_index_h()
931 if (policy->freq_table_sorted == CPUFREQ_TABLE_SORTED_ASCENDING) in cpufreq_table_find_index_h()
939 /* Find closest freq to target in a table in ascending order */
944 struct cpufreq_frequency_table *table = policy->freq_table; in cpufreq_table_find_index_ac()
946 unsigned int freq; in cpufreq_table_find_index_ac() local
947 int idx, best = -1; in cpufreq_table_find_index_ac()
950 freq = pos->frequency; in cpufreq_table_find_index_ac()
952 if (freq == target_freq) in cpufreq_table_find_index_ac()
955 if (freq < target_freq) { in cpufreq_table_find_index_ac()
960 /* No freq found below target_freq */ in cpufreq_table_find_index_ac()
961 if (best == -1) in cpufreq_table_find_index_ac()
964 /* Choose the closest freq */ in cpufreq_table_find_index_ac()
965 if (target_freq - table[best].frequency > freq - target_freq) in cpufreq_table_find_index_ac()
974 /* Find closest freq to target in a table in descending order */
979 struct cpufreq_frequency_table *table = policy->freq_table; in cpufreq_table_find_index_dc()
981 unsigned int freq; in cpufreq_table_find_index_dc() local
982 int idx, best = -1; in cpufreq_table_find_index_dc()
985 freq = pos->frequency; in cpufreq_table_find_index_dc()
987 if (freq == target_freq) in cpufreq_table_find_index_dc()
990 if (freq > target_freq) { in cpufreq_table_find_index_dc()
995 /* No freq found above target_freq */ in cpufreq_table_find_index_dc()
996 if (best == -1) in cpufreq_table_find_index_dc()
999 /* Choose the closest freq */ in cpufreq_table_find_index_dc()
1000 if (table[best].frequency - target_freq > target_freq - freq) in cpufreq_table_find_index_dc()
1009 /* Works only on sorted freq-tables */
1014 target_freq = clamp_val(target_freq, policy->min, policy->max); in cpufreq_table_find_index_c()
1016 if (policy->freq_table_sorted == CPUFREQ_TABLE_SORTED_ASCENDING) in cpufreq_table_find_index_c()
1028 bool efficiencies = policy->efficiencies_available && in cpufreq_frequency_table_target()
1035 if (unlikely(policy->freq_table_sorted == CPUFREQ_TABLE_UNSORTED)) in cpufreq_frequency_table_target()
1070 if (unlikely(!policy->freq_table)) in cpufreq_table_count_valid_entries()
1073 cpufreq_for_each_valid_entry(pos, policy->freq_table) in cpufreq_table_count_valid_entries()
1080 * cpufreq_table_set_inefficient() - Mark a frequency as inefficient
1096 if (policy->freq_table_sorted == CPUFREQ_TABLE_UNSORTED) in cpufreq_table_set_inefficient()
1097 return -EINVAL; in cpufreq_table_set_inefficient()
1099 cpufreq_for_each_valid_entry(pos, policy->freq_table) { in cpufreq_table_set_inefficient()
1100 if (pos->frequency == frequency) { in cpufreq_table_set_inefficient()
1101 pos->flags |= CPUFREQ_INEFFICIENT_FREQ; in cpufreq_table_set_inefficient()
1102 policy->efficiencies_available = true; in cpufreq_table_set_inefficient()
1107 return -EINVAL; in cpufreq_table_set_inefficient()
1119 return -ENODEV; in parse_perf_domain()
1152 if (pargs->np == args.np && pargs->args_count == args.args_count && in of_perf_domain_get_sharing_cpumask()
1153 !memcmp(pargs->args, args.args, sizeof(args.args[0]) * args.args_count)) in of_perf_domain_get_sharing_cpumask()
1173 return -EINVAL; in cpufreq_enable_boost_support()
1185 return -EINVAL; in cpufreq_table_set_inefficient()
1192 return -EOPNOTSUPP; in of_perf_domain_get_sharing_cpumask()
1220 dev_pm_opp_of_register_em(get_cpu_device(policy->cpu), in cpufreq_register_em_with_opp()
1221 policy->related_cpus); in cpufreq_register_em_with_opp()