aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/time
diff options
context:
space:
mode:
authorMagnus Damm <magnus.damm@gmail.com>2009-05-01 14:45:46 +0900
committerThomas Gleixner <tglx@linutronix.de>2009-05-02 11:45:15 +0200
commita25cbd045a2ffc42787d4dbcbb9c7118f5f42732 (patch)
treecefbaaf38cd09ffb3c96cacf2b93b6d9caaa4fe2 /kernel/time
parent091438dd5668396328a3419abcbc6591159eb8d1 (diff)
downloadkernel_samsung_espresso10-a25cbd045a2ffc42787d4dbcbb9c7118f5f42732.zip
kernel_samsung_espresso10-a25cbd045a2ffc42787d4dbcbb9c7118f5f42732.tar.gz
kernel_samsung_espresso10-a25cbd045a2ffc42787d4dbcbb9c7118f5f42732.tar.bz2
clocksource: setup mult_orig in clocksource_enable()
Setup clocksource mult_orig in clocksource_enable(). Clocksource drivers can save power by using keeping the device clock disabled while the clocksource is unused. In practice this means that the enable() and disable() callbacks perform clk_enable() and clk_disable(). The enable() callback may also use clk_get_rate() to get the clock rate from the clock framework. This information can then be used to calculate the shift and mult variables. Currently the mult_orig variable is setup from mult at registration time only. This is conflicting with the above case since the clock is disabled and the mult variable is not yet calculated at the time of registration. Moving the mult_orig setup code to clocksource_enable() allows us to both handle the common case with no enable() callback and the mult-changed-after-enable() case. [ Impact: allow dynamic clock source usage ] Signed-off-by: Magnus Damm <damm@igel.co.jp> LKML-Reference: <20090501054546.8193.10688.sendpatchset@rx1.opensource.se> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'kernel/time')
-rw-r--r--kernel/time/clocksource.c3
1 files changed, 0 insertions, 3 deletions
diff --git a/kernel/time/clocksource.c b/kernel/time/clocksource.c
index ecfd7b5..80189f6 100644
--- a/kernel/time/clocksource.c
+++ b/kernel/time/clocksource.c
@@ -402,9 +402,6 @@ int clocksource_register(struct clocksource *c)
unsigned long flags;
int ret;
- /* save mult_orig on registration */
- c->mult_orig = c->mult;
-
spin_lock_irqsave(&clocksource_lock, flags);
ret = clocksource_enqueue(c);
if (!ret)