lkml.org 
[lkml]   [2010]   [Jul]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 10/11] Convert common x86 clocksources to use clocksource_register_hz/khz
    Date
    This converts the most common of the x86 clocksources over to use
    clocksource_register_hz/khz.

    CC: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: John Stultz <johnstul@us.ibm.com>
    ---
    arch/x86/kernel/hpet.c | 13 +++++++++----
    arch/x86/kernel/tsc.c | 6 ++----
    drivers/clocksource/acpi_pm.c | 9 ++-------
    3 files changed, 13 insertions(+), 15 deletions(-)

    diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c
    index a198b7c..54dac04 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 9faf91a..5ca6370 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,8 @@ 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 72a633a..cfb0f52 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
    --
    1.6.0.4


    \
     
     \ /
      Last update: 2010-07-14 03:01    [W:0.026 / U:30.792 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site