Commit e44252f4 authored by Thomas Gleixner's avatar Thomas Gleixner
Browse files

x86/hpet: Use channel for legacy clockevent storage



All preparations are done. Use the channel storage for the legacy
clockevent and remove the static variable.

Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Reviewed-by: default avatarIngo Molnar <mingo@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Ricardo Neri <ricardo.neri-calderon@linux.intel.com>
Cc: Ashok Raj <ashok.raj@intel.com>
Cc: Andi Kleen <andi.kleen@intel.com>
Cc: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>
Cc: Stephane Eranian <eranian@google.com>
Cc: Ravi Shankar <ravi.v.shankar@intel.com>
Link: https://lkml.kernel.org/r/20190623132436.737689919@linutronix.de
parent 49adaa60
Loading
Loading
Loading
Loading
+3 −8
Original line number Original line Diff line number Diff line
@@ -66,11 +66,6 @@ bool boot_hpet_disable;
bool					hpet_force_user;
bool					hpet_force_user;
static bool				hpet_verbose;
static bool				hpet_verbose;


/*
 * The HPET clock event device wrapped in a channel for conversion
 */
static struct hpet_channel		hpet_channel0;

static inline
static inline
struct hpet_channel *clockevent_to_channel(struct clock_event_device *evt)
struct hpet_channel *clockevent_to_channel(struct clock_event_device *evt)
{
{
@@ -904,7 +899,7 @@ int __init hpet_enable(void)
	clocksource_register_hz(&clocksource_hpet, (u32)hpet_freq);
	clocksource_register_hz(&clocksource_hpet, (u32)hpet_freq);


	if (id & HPET_ID_LEGSUP) {
	if (id & HPET_ID_LEGSUP) {
		hpet_legacy_clockevent_register(&hpet_channel0);
		hpet_legacy_clockevent_register(&hpet_base.channels[0]);
		hpet_base.channels[0].mode = HPET_MODE_LEGACY;
		hpet_base.channels[0].mode = HPET_MODE_LEGACY;
		if (IS_ENABLED(CONFIG_HPET_EMULATE_RTC))
		if (IS_ENABLED(CONFIG_HPET_EMULATE_RTC))
			hpet_base.channels[1].mode = HPET_MODE_LEGACY;
			hpet_base.channels[1].mode = HPET_MODE_LEGACY;
@@ -1089,7 +1084,7 @@ int hpet_rtc_timer_init(void)
		return 0;
		return 0;


	if (!hpet_default_delta) {
	if (!hpet_default_delta) {
		struct clock_event_device *evt = &hpet_channel0.evt;
		struct clock_event_device *evt = &hpet_base.channels[0].evt;
		uint64_t clc;
		uint64_t clc;


		clc = (uint64_t) evt->mult * NSEC_PER_SEC;
		clc = (uint64_t) evt->mult * NSEC_PER_SEC;
@@ -1187,7 +1182,7 @@ int hpet_set_periodic_freq(unsigned long freq)
	if (freq <= DEFAULT_RTC_INT_FREQ) {
	if (freq <= DEFAULT_RTC_INT_FREQ) {
		hpet_pie_limit = DEFAULT_RTC_INT_FREQ / freq;
		hpet_pie_limit = DEFAULT_RTC_INT_FREQ / freq;
	} else {
	} else {
		struct clock_event_device *evt = &hpet_channel0.evt;
		struct clock_event_device *evt = &hpet_base.channels[0].evt;


		clc = (uint64_t) evt->mult * NSEC_PER_SEC;
		clc = (uint64_t) evt->mult * NSEC_PER_SEC;
		do_div(clc, freq);
		do_div(clc, freq);