[CPUFREQ] Add S3C2416/S3C2450 cpufreq driver
authorHeiko Stübner <heiko@sntech.de>
Thu, 16 Feb 2012 10:42:32 +0000 (11:42 +0100)
committerDave Jones <davej@redhat.com>
Thu, 1 Mar 2012 03:24:39 +0000 (22:24 -0500)
commit34ee55075265d68ca858f2426e165733664385b4
tree38179f54326bfe7e56c76768d561b78552c0565c
parent063b0ee4026fe87ead0c5528b9c3186635268ec7
[CPUFREQ] Add S3C2416/S3C2450 cpufreq driver

The S3C2416/S3C2450 SoCs support two sources for the armclk.

The first source is the so called armdiv which divides the msysclk down
to provide necessary cpu rates. In this mode the core voltage must be
always at 1.3V. The frequency from the armdiv is not allowed to be
lower than the hclk frequency.

In the second mode the armclk can be sourced directly from the hclk in
the so called "dynamic voltags scaling" (dvs) mode. Here the armdiv
isn't used at all. Also in this mode the core voltage may be lowered.
Existing hardware and tests with it suggest 1.0V as sufficient.

When changing the clock source to the armdiv from the hclk, the SoC
shows stability issues if the new frequency is higher than the current
hclk frequency. Hence the driver always forces the armdiv to the hclk
frequency before the source change and lets the cpufreq issue another
set_target call for higher frequencies.

To mark the hclk frequency as lower as the corresponding armdiv
frequency it is set 1MHz below the real frequency. This lets the cpufreq
framework change between 133MHz based on hclk and 133MHz based on armdiv
at will.

Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Tested-by: Andrey Gusakov <dron0gus@gmail.com>
Signed-off-by: Dave Jones <davej@redhat.com>
drivers/cpufreq/Kconfig.arm
drivers/cpufreq/Makefile
drivers/cpufreq/s3c2416-cpufreq.c [new file with mode: 0644]