diff options
Diffstat (limited to 'target/linux/bcm27xx/patches-5.4/950-0356-raspberrypi-cpufreq-Only-report-integer-pll-divisor-.patch')
-rw-r--r-- | target/linux/bcm27xx/patches-5.4/950-0356-raspberrypi-cpufreq-Only-report-integer-pll-divisor-.patch | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-5.4/950-0356-raspberrypi-cpufreq-Only-report-integer-pll-divisor-.patch b/target/linux/bcm27xx/patches-5.4/950-0356-raspberrypi-cpufreq-Only-report-integer-pll-divisor-.patch new file mode 100644 index 0000000000..192b13b69a --- /dev/null +++ b/target/linux/bcm27xx/patches-5.4/950-0356-raspberrypi-cpufreq-Only-report-integer-pll-divisor-.patch @@ -0,0 +1,40 @@ +From 814af1a008845b61a08111f2f9cf7e66511ab362 Mon Sep 17 00:00:00 2001 +From: popcornmix <popcornmix@gmail.com> +Date: Fri, 13 Sep 2019 13:45:11 +0100 +Subject: [PATCH] raspberrypi-cpufreq: Only report integer pll divisor + frequencies + +--- + drivers/cpufreq/raspberrypi-cpufreq.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +--- a/drivers/cpufreq/raspberrypi-cpufreq.c ++++ b/drivers/cpufreq/raspberrypi-cpufreq.c +@@ -8,6 +8,7 @@ + #include <linux/clk.h> + #include <linux/cpu.h> + #include <linux/cpufreq.h> ++#include <linux/math64.h> + #include <linux/module.h> + #include <linux/platform_device.h> + #include <linux/pm_opp.h> +@@ -22,6 +23,7 @@ static int raspberrypi_cpufreq_probe(str + unsigned long min, max; + unsigned long rate; + struct clk *clk; ++ int div; + int ret; + + cpu_dev = get_cpu_device(0); +@@ -44,7 +46,10 @@ static int raspberrypi_cpufreq_probe(str + max = roundup(clk_round_rate(clk, ULONG_MAX), RASPBERRYPI_FREQ_INTERVAL); + clk_put(clk); + +- for (rate = min; rate <= max; rate += RASPBERRYPI_FREQ_INTERVAL) { ++ for (div = 2; ; div++) { ++ rate = div_u64((u64)max * 2, div); ++ if (rate < min) ++ break; + ret = dev_pm_opp_add(cpu_dev, rate, 0); + if (ret) + goto remove_opp; |