linux/drivers/cpufreq
Nicolas Saenz Julienne d3df18a97e cpufreq: add driver for Raspberry Pi
Raspberry Pi's firmware offers and interface though which update it's
performance requirements. It allows us to request for specific runtime
frequencies, which the firmware might or might not respect, depending on
the firmware configuration and thermals.

As the maximum and minimum frequencies are configurable in the firmware
there is no way to know in advance their values. So the Raspberry Pi
cpufreq driver queries them, builds an opp frequency table to then
launch cpufreq-dt.

Also, as the firmware interface might be configured as a module, making
the cpu clock unavailable during init, this implements a full fledged
driver, as opposed to most drivers registering cpufreq-dt, which only
make use of an init routine.

Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Acked-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Stephen Boyd <sboyd@kernel.org>
Acked-by: Stefan Wahren <stefan.wahren@i2se.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
2019-06-13 08:58:22 +05:30
..
acpi-cpufreq.c drivers/cpufreq/acpi-cpufreq.c: This fixes the following checkpatch warning 2019-04-16 23:09:28 +02:00
amd_freq_sensitivity.c drivers/cpufreq: Convert some slow-path static_cpu_has() callers to boot_cpu_has() 2019-04-08 11:26:09 +02:00
arm_big_little.c cpufreq: arm_big_little: Register an Energy Model 2019-02-07 09:55:11 +05:30
arm_big_little.h cpufreq: arm_big_little: make function arguments and structure pointer const 2017-11-08 23:22:19 +01:00
armada-8k-cpufreq.c cpufreq: ap806: fix possible object reference leak 2019-04-08 15:35:24 +05:30
armada-37xx-cpufreq.c cpufreq: armada-37xx: Remove set but not used variable 'freq' 2019-06-03 11:26:38 +05:30
bmips-cpufreq.c treewide: kmalloc() -> kmalloc_array() 2018-06-12 16:19:22 -07:00
brcmstb-avs-cpufreq.c cpufreq: brcmstb-avs-cpufreq: Fix types for voltage/frequency 2019-06-04 09:31:41 +05:30
cppc_cpufreq.c cpufreq / cppc: Work around for Hisilicon CPPC cpufreq 2019-02-18 11:27:42 +01:00
cpufreq_conservative.c cpufreq: conservative: Take limits changes into account properly 2018-10-16 12:34:45 +02:00
cpufreq_governor_attr_set.c
cpufreq_governor.c cpufreq: Fix kobject memleak 2019-04-30 10:54:23 +02:00
cpufreq_governor.h cpufreq: Replace "max_transition_latency" with "dynamic_switching" 2017-07-26 00:15:45 +02:00
cpufreq_ondemand.c cpufreq: governor: Drop min_sampling_rate 2017-07-22 02:25:20 +02:00
cpufreq_ondemand.h
cpufreq_performance.c
cpufreq_powersave.c
cpufreq_stats.c cpufreq: stats: Use lock by stat to replace global spin lock 2019-04-09 11:31:48 +02:00
cpufreq_userspace.c
cpufreq-dt-platdev.c cpufreq: Switch imx7d to imx-cpufreq-dt for speed grading 2019-06-06 08:37:41 +05:30
cpufreq-dt.c Merge branch 'pm-opp' 2019-03-04 11:19:14 +01:00
cpufreq-dt.h cpufreq: dt: Allow platform specific suspend/resume callbacks 2018-05-10 11:43:59 +02:00
cpufreq-nforce2.c cpufreq: nforce2: Remove meaningless return 2018-12-11 12:11:46 +01:00
cpufreq.c More power management updates for 5.2-rc1 2019-05-15 08:46:44 -07:00
davinci-cpufreq.c cpufreq: davinci: move configuration to include/linux/platform_data 2019-02-18 11:58:08 +05:30
e_powersaver.c cpufreq: e_powersaver: Use struct_size() in kzalloc() 2019-01-15 22:58:59 +01:00
elanfreq.c cpufreq: elanfreq: Don't validate the frequency table twice 2018-03-20 12:07:52 +01:00
freq_table.c cpufreq: boost: Remove CONFIG_CPU_FREQ_BOOST_SW Kconfig option 2019-04-10 10:00:50 +02:00
gx-suspmod.c cpufreq: Add CPUFREQ_NO_AUTO_DYNAMIC_SWITCHING cpufreq driver flag 2017-07-26 00:15:46 +02:00
highbank-cpufreq.c
ia64-acpi-cpufreq.c cpufreq: ia64: Remove unused header files 2018-12-11 12:11:46 +01:00
imx6q-cpufreq.c cpufreq: imx6q: fix possible object reference leak 2019-04-08 15:35:24 +05:30
imx-cpufreq-dt.c cpufreq: imx-cpufreq-dt: Remove global platform match list 2019-06-06 08:37:23 +05:30
intel_pstate.c Merge back cpufreq material for v5.2. 2019-04-08 12:47:41 +02:00
Kconfig cpufreq: boost: Remove CONFIG_CPU_FREQ_BOOST_SW Kconfig option 2019-04-10 10:00:50 +02:00
Kconfig.arm cpufreq: add driver for Raspberry Pi 2019-06-13 08:58:22 +05:30
Kconfig.powerpc
Kconfig.x86
kirkwood-cpufreq.c cpufreq: kirkwood: fix possible object reference leak 2019-04-08 15:35:24 +05:30
longhaul.c cpufreq: longhaul: remove unneeded semicolon 2019-02-18 10:27:38 +05:30
longhaul.h
longrun.c cpufreq: Don't set transition_latency for setpolicy drivers 2017-07-26 00:15:43 +02:00
loongson1-cpufreq.c clk: Remove io.h from clk-provider.h 2019-05-15 13:21:37 -07:00
loongson2_cpufreq.c cpufreq: Loongson2: constify platform_device_id 2017-08-18 01:44:21 +02:00
Makefile cpufreq: add driver for Raspberry Pi 2019-06-13 08:58:22 +05:30
maple-cpufreq.c cpufreq: maple: Remove redundant code from maple_cpufreq_init() 2019-04-08 16:15:10 +05:30
mediatek-cpufreq.c Merge branch 'pm-opp' 2019-03-04 11:19:14 +01:00
mvebu-cpufreq.c cpufreq: mvebu: Remove OPPs using dev_pm_opp_remove() 2018-09-19 14:56:44 -07:00
omap-cpufreq.c cpufreq: OMAP: Register an Energy Model 2019-02-07 10:07:36 +05:30
p4-clockmod.c cpufreq: p4-clockmod: Don't validate the frequency table twice 2018-03-20 12:07:52 +01:00
pasemi-cpufreq.c cpufreq/pasemi: fix possible object reference leak 2019-04-08 15:37:30 +05:30
pcc-cpufreq.c cpufreq: pcc-cpufreq: remove unneeded semicolon 2019-02-18 10:27:38 +05:30
pmac32-cpufreq.c cpufreq: pmac32: fix possible object reference leak 2019-04-08 15:37:30 +05:30
pmac64-cpufreq.c cpufreq: pmac64: add of_node_put() 2018-11-29 22:35:03 +01:00
powernow-k6.c cpufreq: powernow: Don't validate the frequency table twice 2018-03-20 12:07:52 +01:00
powernow-k7.c cpufreq: powernow: Don't validate the frequency table twice 2018-03-20 12:07:52 +01:00
powernow-k7.h
powernow-k8.c drivers/cpufreq: Convert some slow-path static_cpu_has() callers to boot_cpu_has() 2019-04-08 11:26:09 +02:00
powernow-k8.h
powernv-cpufreq.c cpufreq: powernv: fix missing check of return value in init_powernv_pstates() 2019-02-18 10:27:38 +05:30
ppc_cbe_cpufreq_pervasive.c
ppc_cbe_cpufreq_pmi.c
ppc_cbe_cpufreq.c cpufreq: ppc_cbe: fix possible object reference leak 2019-04-08 15:37:30 +05:30
ppc_cbe_cpufreq.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
pxa2xx-cpufreq.c cpufreq: pxa2xx: remove incorrect __init annotation 2019-03-07 21:38:44 +01:00
pxa3xx-cpufreq.c treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00
qcom-cpufreq-hw.c Merge branch 'cpufreq/arm/linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/vireshk/pm into pm-cpufreq 2019-02-13 12:27:23 +01:00
qcom-cpufreq-kryo.c Merge branch 'cpufreq/arm/linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/vireshk/pm into pm-cpufreq 2019-03-01 10:21:18 +01:00
qoriq-cpufreq.c cpufreq: qoriq: add support for lx2160a 2019-04-29 09:41:19 +02:00
raspberrypi-cpufreq.c cpufreq: add driver for Raspberry Pi 2019-06-13 08:58:22 +05:30
s3c24xx-cpufreq-debugfs.c cpufreq: s3c24xx: Change to use DEFINE_SHOW_ATTRIBUTE macro 2018-11-29 22:30:05 +01:00
s3c24xx-cpufreq.c treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00
s3c64xx-cpufreq.c
s3c2410-cpufreq.c
s3c2412-cpufreq.c
s3c2416-cpufreq.c
s3c2440-cpufreq.c cpufreq: s3c2440: fix spelling mistake: "divsiors" -> "divisors" 2018-05-10 11:50:42 +02:00
s5pv210-cpufreq.c cpufreq: s5pv210: Defer probe if getting regulators fail 2019-02-07 10:01:51 +05:30
sa1100-cpufreq.c cpufreq: Add CPUFREQ_NO_AUTO_DYNAMIC_SWITCHING cpufreq driver flag 2017-07-26 00:15:46 +02:00
sa1110-cpufreq.c cpufreq: Add CPUFREQ_NO_AUTO_DYNAMIC_SWITCHING cpufreq driver flag 2017-07-26 00:15:46 +02:00
sc520_freq.c cpufreq: sc520: Don't validate the frequency table twice 2018-03-20 12:07:52 +01:00
scmi-cpufreq.c Merge branch 'pm-opp' 2019-03-04 11:19:14 +01:00
scpi-cpufreq.c cpufreq: scpi: Fix use after free 2019-03-28 11:14:31 +01:00
sfi-cpufreq.c treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00
sh-cpufreq.c cpufreq: sh: Don't validate the frequency table twice 2018-03-20 12:07:52 +01:00
sparc-us2e-cpufreq.c cpufreq: sparc: Don't validate the frequency table twice 2018-03-20 12:07:52 +01:00
sparc-us3-cpufreq.c cpufreq: sparc: Don't validate the frequency table twice 2018-03-20 12:07:52 +01:00
spear-cpufreq.c treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00
speedstep-centrino.c cpufreq: centrino: Fix centrino_setpolicy() kerneldoc comment 2019-04-29 09:43:25 +02:00
speedstep-ich.c cpufreq: speedstep: convert BUG() to BUG_ON() 2019-02-18 10:27:38 +05:30
speedstep-lib.c cpufreq: speedstep: fix speedstep_detect_processor()'s return type 2018-05-10 11:46:00 +02:00
speedstep-lib.h
speedstep-smi.c cpufreq: speedstep: Don't validate the frequency table twice 2018-03-20 12:07:52 +01:00
sti-cpufreq.c cpufreq: Convert to using %pOF instead of full_name 2017-08-25 01:20:46 +02:00
tango-cpufreq.c cpufreq: dt: Don't use generic platdev driver for tango 2017-07-22 02:20:59 +02:00
tegra20-cpufreq.c cpufreq: tegra20: Wrap cpufreq into platform driver 2018-05-21 13:44:24 +02:00
tegra124-cpufreq.c Power management updates for 5.1-rc1 2019-03-06 12:59:46 -08:00
tegra186-cpufreq.c cpufreq: tegra186: don't pass GFP_DMA32 to dma_alloc_coherent() 2018-10-17 09:25:38 +02:00
ti-cpufreq.c cpufreq: ti-cpufreq: Only register platform_device when supported 2018-11-19 11:26:06 +01:00
unicore2-cpufreq.c cpufreq: Add CPUFREQ_NO_AUTO_DYNAMIC_SWITCHING cpufreq driver flag 2017-07-26 00:15:46 +02:00
vexpress-spc-cpufreq.c cpufreq: arm_big_little: make cpufreq_arm_bL_ops structures const 2017-11-08 23:22:20 +01:00