mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-04 09:34:12 +08:00
x86/apb_timer: Drop unused TSC calibration
Drop the APB-timer TSC calibration, which hasn't been used since the
removal of Moorestown support by commit
1a8359e411
("x86/mid: Remove Intel Moorestown").
Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Borislav Petkov <bp@suse.de>
Acked-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lkml.kernel.org/r/20200513100944.9171-1-johan@kernel.org
This commit is contained in:
parent
fd52a75ca3
commit
003d805351
@ -28,7 +28,6 @@
|
||||
#define APBT_DEV_USED 1
|
||||
|
||||
extern void apbt_time_init(void);
|
||||
extern unsigned long apbt_quick_calibrate(void);
|
||||
extern int arch_setup_apbt_irqs(int irq, int trigger, int mask, int cpu);
|
||||
extern void apbt_setup_secondary_clock(void);
|
||||
|
||||
@ -38,7 +37,6 @@ extern int sfi_mtimer_num;
|
||||
|
||||
#else /* CONFIG_APB_TIMER */
|
||||
|
||||
static inline unsigned long apbt_quick_calibrate(void) {return 0; }
|
||||
static inline void apbt_time_init(void) { }
|
||||
|
||||
#endif
|
||||
|
@ -345,56 +345,3 @@ out_noapbt:
|
||||
apb_timer_block_enabled = 0;
|
||||
panic("failed to enable APB timer\n");
|
||||
}
|
||||
|
||||
/* called before apb_timer_enable, use early map */
|
||||
unsigned long apbt_quick_calibrate(void)
|
||||
{
|
||||
int i, scale;
|
||||
u64 old, new;
|
||||
u64 t1, t2;
|
||||
unsigned long khz = 0;
|
||||
u32 loop, shift;
|
||||
|
||||
apbt_set_mapping();
|
||||
dw_apb_clocksource_start(clocksource_apbt);
|
||||
|
||||
/* check if the timer can count down, otherwise return */
|
||||
old = dw_apb_clocksource_read(clocksource_apbt);
|
||||
i = 10000;
|
||||
while (--i) {
|
||||
if (old != dw_apb_clocksource_read(clocksource_apbt))
|
||||
break;
|
||||
}
|
||||
if (!i)
|
||||
goto failed;
|
||||
|
||||
/* count 16 ms */
|
||||
loop = (apbt_freq / 1000) << 4;
|
||||
|
||||
/* restart the timer to ensure it won't get to 0 in the calibration */
|
||||
dw_apb_clocksource_start(clocksource_apbt);
|
||||
|
||||
old = dw_apb_clocksource_read(clocksource_apbt);
|
||||
old += loop;
|
||||
|
||||
t1 = rdtsc();
|
||||
|
||||
do {
|
||||
new = dw_apb_clocksource_read(clocksource_apbt);
|
||||
} while (new < old);
|
||||
|
||||
t2 = rdtsc();
|
||||
|
||||
shift = 5;
|
||||
if (unlikely(loop >> shift == 0)) {
|
||||
printk(KERN_INFO
|
||||
"APBT TSC calibration failed, not enough resolution\n");
|
||||
return 0;
|
||||
}
|
||||
scale = (int)div_u64((t2 - t1), loop >> shift);
|
||||
khz = (scale * (apbt_freq / 1000)) >> shift;
|
||||
printk(KERN_INFO "TSC freq calculated by APB timer is %lu khz\n", khz);
|
||||
return khz;
|
||||
failed:
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user