Skip to content

Commit

Permalink
rtc: fix reported IRQ rate for when HPET is enabled
Browse files Browse the repository at this point in the history
The IRQ rate reported back by the RTC is incorrect when HPET is enabled.

Newer hardware that has HPET to emulate the legacy RTC device gets this value
wrong since after it sets the rate, it returns before setting the variable
used to report the IRQ rate back to users of the device -- so the set rate and
the reported rate get out of sync.

Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: David Brownell <david-b@pacbell.net>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: <stable@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
Paul Gortmaker authored and Linus Torvalds committed Jul 11, 2008
1 parent ac310bb commit 61ca9da
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion drivers/char/rtc.c
Original file line number Diff line number Diff line change
Expand Up @@ -678,12 +678,13 @@ static int rtc_do_ioctl(unsigned int cmd, unsigned long arg, int kernel)
if (arg != (1<<tmp))
return -EINVAL;

rtc_freq = arg;

spin_lock_irqsave(&rtc_lock, flags);
if (hpet_set_periodic_freq(arg)) {
spin_unlock_irqrestore(&rtc_lock, flags);
return 0;
}
rtc_freq = arg;

val = CMOS_READ(RTC_FREQ_SELECT) & 0xf0;
val |= (16 - tmp);
Expand Down

0 comments on commit 61ca9da

Please sign in to comment.