lkml.org 
[lkml]   [2005]   [Aug]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH 3/9] Generic timekeeping i386 arch specific changes, part 1
    From
    Date
    All,
    The conversion of i386 to use the generic timekeeping subsystem has
    been split into 6 parts. This patch, the first of six, is just a simple
    cleanup for the i386 arch in preperation of moving the the generic
    timekeeping infrastructure. It simply moves some code from timer_pit.c
    to i8259.c.

    It applies on top of my timeofday-core patch. This patch is part the
    timeofday-arch-i386 patchset, so without the following parts it is not
    expected to compile (although just this one should).


    thanks
    -john

    linux-2.6.13-rc6_timeofday-arch-i386-part1_B5.patch
    ============================================
    diff --git a/arch/i386/kernel/i8259.c b/arch/i386/kernel/i8259.c
    --- a/arch/i386/kernel/i8259.c
    +++ b/arch/i386/kernel/i8259.c
    @@ -24,6 +24,7 @@
    #include <asm/apic.h>
    #include <asm/arch_hooks.h>
    #include <asm/i8259.h>
    +#include <asm/i8253.h>

    #include <linux/irq.h>

    @@ -399,6 +400,45 @@ void __init init_ISA_irqs (void)
    }
    }

    +void setup_pit_timer(void)
    +{
    + unsigned long flags;
    +
    + spin_lock_irqsave(&i8253_lock, flags);
    + outb_p(0x34,PIT_MODE); /* binary, mode 2, LSB/MSB, ch 0 */
    + udelay(10);
    + outb_p(LATCH & 0xff , PIT_CH0); /* LSB */
    + udelay(10);
    + outb(LATCH >> 8 , PIT_CH0); /* MSB */
    + spin_unlock_irqrestore(&i8253_lock, flags);
    +}
    +
    +static int timer_resume(struct sys_device *dev)
    +{
    + setup_pit_timer();
    + return 0;
    +}
    +
    +static struct sysdev_class timer_sysclass = {
    + set_kset_name("timer_pit"),
    + .resume = timer_resume,
    +};
    +
    +static struct sys_device device_timer = {
    + .id = 0,
    + .cls = &timer_sysclass,
    +};
    +
    +static int __init init_timer_sysfs(void)
    +{
    + int error = sysdev_class_register(&timer_sysclass);
    + if (!error)
    + error = sysdev_register(&device_timer);
    + return error;
    +}
    +
    +device_initcall(init_timer_sysfs);
    +
    void __init init_IRQ(void)
    {
    int i;
    diff --git a/arch/i386/kernel/timers/timer_pit.c b/arch/i386/kernel/timers/timer_pit.c
    --- a/arch/i386/kernel/timers/timer_pit.c
    +++ b/arch/i386/kernel/timers/timer_pit.c
    @@ -162,43 +162,3 @@ struct init_timer_opts __initdata timer_
    .init = init_pit,
    .opts = &timer_pit,
    };
    -
    -void setup_pit_timer(void)
    -{
    - unsigned long flags;
    -
    - spin_lock_irqsave(&i8253_lock, flags);
    - outb_p(0x34,PIT_MODE); /* binary, mode 2, LSB/MSB, ch 0 */
    - udelay(10);
    - outb_p(LATCH & 0xff , PIT_CH0); /* LSB */
    - udelay(10);
    - outb(LATCH >> 8 , PIT_CH0); /* MSB */
    - spin_unlock_irqrestore(&i8253_lock, flags);
    -}
    -
    -static int timer_resume(struct sys_device *dev)
    -{
    - setup_pit_timer();
    - return 0;
    -}
    -
    -static struct sysdev_class timer_sysclass = {
    - set_kset_name("timer_pit"),
    - .resume = timer_resume,
    -};
    -
    -static struct sys_device device_timer = {
    - .id = 0,
    - .cls = &timer_sysclass,
    -};
    -
    -static int __init init_timer_sysfs(void)
    -{
    - int error = sysdev_class_register(&timer_sysclass);
    - if (!error)
    - error = sysdev_register(&device_timer);
    - return error;
    -}
    -
    -device_initcall(init_timer_sysfs);
    -

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-08-11 04:21    [W:3.886 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site