diff options
| author | John Stultz <johnstul@us.ibm.com> | 2010-07-13 17:56:27 -0700 | 
|---|---|---|
| committer | Thomas Gleixner <tglx@linutronix.de> | 2010-07-27 12:40:55 +0200 | 
| commit | f12a15be63d1de9a35971f35f06b73088fa25c3a (patch) | |
| tree | 444084a06e776f005d52d3214fb35b91b3a8345d | |
| parent | 0fb86b06298b6cd3205cac2e68a499f269282dac (diff) | |
| download | olio-linux-3.10-f12a15be63d1de9a35971f35f06b73088fa25c3a.tar.xz olio-linux-3.10-f12a15be63d1de9a35971f35f06b73088fa25c3a.zip  | |
x86: Convert common clocksources to use clocksource_register_hz/khz
This converts the most common of the x86 clocksources over to use
clocksource_register_hz/khz.
Signed-off-by: John Stultz <johnstul@us.ibm.com>
LKML-Reference: <1279068988-21864-11-git-send-email-johnstul@us.ibm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
| -rw-r--r-- | arch/x86/kernel/hpet.c | 13 | ||||
| -rw-r--r-- | arch/x86/kernel/tsc.c | 5 | ||||
| -rw-r--r-- | drivers/clocksource/acpi_pm.c | 9 | 
3 files changed, 12 insertions, 15 deletions
diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c index ba390d73117..33dbcc4ec5f 100644 --- a/arch/x86/kernel/hpet.c +++ b/arch/x86/kernel/hpet.c @@ -16,7 +16,6 @@  #include <asm/hpet.h>  #define HPET_MASK			CLOCKSOURCE_MASK(32) -#define HPET_SHIFT			22  /* FSEC = 10^-15     NSEC = 10^-9 */ @@ -787,7 +786,6 @@ static struct clocksource clocksource_hpet = {  	.rating		= 250,  	.read		= read_hpet,  	.mask		= HPET_MASK, -	.shift		= HPET_SHIFT,  	.flags		= CLOCK_SOURCE_IS_CONTINUOUS,  	.resume		= hpet_resume_counter,  #ifdef CONFIG_X86_64 @@ -798,6 +796,7 @@ static struct clocksource clocksource_hpet = {  static int hpet_clocksource_register(void)  {  	u64 start, now; +	u64 hpet_freq;  	cycle_t t1;  	/* Start the counter */ @@ -832,9 +831,15 @@ static int hpet_clocksource_register(void)  	 *  mult = (hpet_period * 2^shift)/10^6  	 *  mult = (hpet_period << shift)/FSEC_PER_NSEC  	 */ -	clocksource_hpet.mult = div_sc(hpet_period, FSEC_PER_NSEC, HPET_SHIFT); -	clocksource_register(&clocksource_hpet); +	/* Need to convert hpet_period (fsec/cyc) to cyc/sec: +	 * +	 * cyc/sec = FSEC_PER_SEC/hpet_period(fsec/cyc) +	 * cyc/sec = (FSEC_PER_NSEC * NSEC_PER_SEC)/hpet_period +	 */ +	hpet_freq = FSEC_PER_NSEC * NSEC_PER_SEC; +	do_div(hpet_freq, hpet_period); +	clocksource_register_hz(&clocksource_hpet, (u32)hpet_freq);  	return 0;  } diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c index 9faf91ae184..ce8e5023933 100644 --- a/arch/x86/kernel/tsc.c +++ b/arch/x86/kernel/tsc.c @@ -751,7 +751,6 @@ static struct clocksource clocksource_tsc = {  	.read                   = read_tsc,  	.resume			= resume_tsc,  	.mask                   = CLOCKSOURCE_MASK(64), -	.shift                  = 22,  	.flags                  = CLOCK_SOURCE_IS_CONTINUOUS |  				  CLOCK_SOURCE_MUST_VERIFY,  #ifdef CONFIG_X86_64 @@ -845,8 +844,6 @@ __cpuinit int unsynchronized_tsc(void)  static void __init init_tsc_clocksource(void)  { -	clocksource_tsc.mult = clocksource_khz2mult(tsc_khz, -			clocksource_tsc.shift);  	if (tsc_clocksource_reliable)  		clocksource_tsc.flags &= ~CLOCK_SOURCE_MUST_VERIFY;  	/* lower the rating if we already know its unstable: */ @@ -854,7 +851,7 @@ static void __init init_tsc_clocksource(void)  		clocksource_tsc.rating = 0;  		clocksource_tsc.flags &= ~CLOCK_SOURCE_IS_CONTINUOUS;  	} -	clocksource_register(&clocksource_tsc); +	clocksource_register_khz(&clocksource_tsc, tsc_khz);  }  #ifdef CONFIG_X86_64 diff --git a/drivers/clocksource/acpi_pm.c b/drivers/clocksource/acpi_pm.c index 72a633a6ec9..cfb0f527841 100644 --- a/drivers/clocksource/acpi_pm.c +++ b/drivers/clocksource/acpi_pm.c @@ -68,10 +68,7 @@ static struct clocksource clocksource_acpi_pm = {  	.rating		= 200,  	.read		= acpi_pm_read,  	.mask		= (cycle_t)ACPI_PM_MASK, -	.mult		= 0, /*to be calculated*/ -	.shift		= 22,  	.flags		= CLOCK_SOURCE_IS_CONTINUOUS, -  }; @@ -190,9 +187,6 @@ static int __init init_acpi_pm_clocksource(void)  	if (!pmtmr_ioport)  		return -ENODEV; -	clocksource_acpi_pm.mult = clocksource_hz2mult(PMTMR_TICKS_PER_SEC, -						clocksource_acpi_pm.shift); -  	/* "verify" this timing source: */  	for (j = 0; j < ACPI_PM_MONOTONICITY_CHECKS; j++) {  		udelay(100 * j); @@ -220,7 +214,8 @@ static int __init init_acpi_pm_clocksource(void)  	if (verify_pmtmr_rate() != 0)  		return -ENODEV; -	return clocksource_register(&clocksource_acpi_pm); +	return clocksource_register_hz(&clocksource_acpi_pm, +						PMTMR_TICKS_PER_SEC);  }  /* We use fs_initcall because we want the PCI fixups to have run  |