Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

cpufreq: Fix build error on some platforms that use cpufreq_for_each_*

On platforms that use cpufreq_for_each_* macros, build fails if
CONFIG_CPU_FREQ=n, e.g. ARM/shmobile/koelsch/non-multiplatform:

drivers/built-in.o: In function `clk_round_parent':
clkdev.c:(.text+0xcf168): undefined reference to `cpufreq_next_valid'
drivers/built-in.o: In function `clk_rate_table_find':
clkdev.c:(.text+0xcf820): undefined reference to `cpufreq_next_valid'
make[3]: *** [vmlinux] Error 1

Fix this making cpufreq_next_valid function inline and move it to
cpufreq.h.

Fixes: 27e289dce297 (cpufreq: Introduce macros for cpufreq_frequency_table iteration)
Reported-and-tested-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

authored by

Stratos Karafotis and committed by
Rafael J. Wysocki
5eeaf1f1 37c14794

+9 -13
-11
drivers/cpufreq/cpufreq.c
··· 237 237 } 238 238 EXPORT_SYMBOL_GPL(cpufreq_cpu_put); 239 239 240 - bool cpufreq_next_valid(struct cpufreq_frequency_table **pos) 241 - { 242 - while ((*pos)->frequency != CPUFREQ_TABLE_END) 243 - if ((*pos)->frequency != CPUFREQ_ENTRY_INVALID) 244 - return true; 245 - else 246 - (*pos)++; 247 - return false; 248 - } 249 - EXPORT_SYMBOL_GPL(cpufreq_next_valid); 250 - 251 240 /********************************************************************* 252 241 * EXTERNALLY AFFECTING FREQUENCY CHANGES * 253 242 *********************************************************************/
+9 -2
include/linux/cpufreq.h
··· 489 489 } 490 490 #endif 491 491 492 - 493 - bool cpufreq_next_valid(struct cpufreq_frequency_table **pos); 492 + static inline bool cpufreq_next_valid(struct cpufreq_frequency_table **pos) 493 + { 494 + while ((*pos)->frequency != CPUFREQ_TABLE_END) 495 + if ((*pos)->frequency != CPUFREQ_ENTRY_INVALID) 496 + return true; 497 + else 498 + (*pos)++; 499 + return false; 500 + } 494 501 495 502 /* 496 503 * cpufreq_for_each_entry - iterate over a cpufreq_frequency_table