提交 866a1c8c 编写于 作者: H Heiko Stuebner 提交者: Kukjin Kim

ARM: S3C2443: Accommodate cpufreq frequency scheme in armdiv

Cpufreq uses frequencies in kHz and not Hz, so set_rate and round_rate
would be called with a frequency of 266666000 instead of 266666666 but
the clock functions check for rates smaller or equal to the targetrate.

As the armdiv does not support steps this small we can accommodate
this by simply also setting the last 3 digits of the calculated rate
to zero.
Signed-off-by: NHeiko Stuebner <heiko@sntech.de>
Signed-off-by: NKukjin Kim <kgene.kim@samsung.com>
上级 f9f7c750
...@@ -185,7 +185,8 @@ static unsigned long s3c2443_armclk_roundrate(struct clk *clk, ...@@ -185,7 +185,8 @@ static unsigned long s3c2443_armclk_roundrate(struct clk *clk,
for (ptr = 0; ptr < nr_armdiv; ptr++) { for (ptr = 0; ptr < nr_armdiv; ptr++) {
div = armdiv[ptr]; div = armdiv[ptr];
if (div) { if (div) {
calc = parent / div; /* cpufreq provides 266mhz as 266666000 not 266666666 */
calc = (parent / div / 1000) * 1000;
if (calc <= rate && div < best) if (calc <= rate && div < best)
best = div; best = div;
} }
...@@ -225,7 +226,8 @@ static int s3c2443_armclk_setrate(struct clk *clk, unsigned long rate) ...@@ -225,7 +226,8 @@ static int s3c2443_armclk_setrate(struct clk *clk, unsigned long rate)
for (ptr = 0; ptr < nr_armdiv; ptr++) { for (ptr = 0; ptr < nr_armdiv; ptr++) {
div = armdiv[ptr]; div = armdiv[ptr];
if (div) { if (div) {
calc = parent / div; /* cpufreq provides 266mhz as 266666000 not 266666666 */
calc = (parent / div / 1000) * 1000;
if (calc <= rate && div < best) { if (calc <= rate && div < best) {
best = div; best = div;
val = ptr; val = ptr;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册