x86/platform: Add a wallclock_init func to x86_init.timers ops

Some wall clock devices use MMIO based HW register, this new
function will give them a chance to do some initialization work
before their get/set_time service get called, which is usually
in early kernel boot phase.

Signed-off-by: Feng Tang <feng.tang@intel.com>
Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
Feng Tang 2011-02-15 00:13:31 +08:00 committed by Thomas Gleixner
parent 991cfffa7c
commit 6b617e224d
3 changed files with 5 additions and 0 deletions

View File

@ -83,11 +83,13 @@ struct x86_init_paging {
* boot cpu * boot cpu
* @tsc_pre_init: platform function called before TSC init * @tsc_pre_init: platform function called before TSC init
* @timer_init: initialize the platform timer (default PIT/HPET) * @timer_init: initialize the platform timer (default PIT/HPET)
* @wallclock_init: init the wallclock device
*/ */
struct x86_init_timers { struct x86_init_timers {
void (*setup_percpu_clockev)(void); void (*setup_percpu_clockev)(void);
void (*tsc_pre_init)(void); void (*tsc_pre_init)(void);
void (*timer_init)(void); void (*timer_init)(void);
void (*wallclock_init)(void);
}; };
/** /**

View File

@ -1059,6 +1059,8 @@ void __init setup_arch(char **cmdline_p)
#endif #endif
x86_init.oem.banner(); x86_init.oem.banner();
x86_init.timers.wallclock_init();
mcheck_init(); mcheck_init();
local_irq_save(flags); local_irq_save(flags);

View File

@ -70,6 +70,7 @@ struct x86_init_ops x86_init __initdata = {
.setup_percpu_clockev = setup_boot_APIC_clock, .setup_percpu_clockev = setup_boot_APIC_clock,
.tsc_pre_init = x86_init_noop, .tsc_pre_init = x86_init_noop,
.timer_init = hpet_time_init, .timer_init = hpet_time_init,
.wallclock_init = x86_init_noop,
}, },
.iommu = { .iommu = {