forked from luck/tmp_suning_uos_patched
35b69a420b
Add support for platforms where pit_shutdown() doesn't work because of a quirk in the PIT emulation. On these platforms setting the counter register to zero causes the PIT to start running again, negating the shutdown. Provide a global variable that controls whether the counter register is zero'ed, which platform specific code can override. Signed-off-by: Michael Kelley <mikelley@microsoft.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: "gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org> Cc: "devel@linuxdriverproject.org" <devel@linuxdriverproject.org> Cc: "daniel.lezcano@linaro.org" <daniel.lezcano@linaro.org> Cc: "virtualization@lists.linux-foundation.org" <virtualization@lists.linux-foundation.org> Cc: "jgross@suse.com" <jgross@suse.com> Cc: "akataria@vmware.com" <akataria@vmware.com> Cc: "olaf@aepfle.de" <olaf@aepfle.de> Cc: "apw@canonical.com" <apw@canonical.com> Cc: vkuznets <vkuznets@redhat.com> Cc: "jasowang@redhat.com" <jasowang@redhat.com> Cc: "marcelo.cerri@canonical.com" <marcelo.cerri@canonical.com> Cc: KY Srinivasan <kys@microsoft.com> Cc: stable@vger.kernel.org Link: https://lkml.kernel.org/r/1541303219-11142-2-git-send-email-mikelley@microsoft.com
31 lines
809 B
C
31 lines
809 B
C
/*
|
|
* This file is subject to the terms and conditions of the GNU General Public
|
|
* License. See the file "COPYING" in the main directory of this archive
|
|
* for more details.
|
|
*
|
|
* Machine specific IO port address definition for generic.
|
|
* Written by Osamu Tomita <tomita@cinet.co.jp>
|
|
*/
|
|
#ifndef __LINUX_I8253_H
|
|
#define __LINUX_I8253_H
|
|
|
|
#include <linux/param.h>
|
|
#include <linux/spinlock.h>
|
|
#include <linux/timex.h>
|
|
|
|
/* i8253A PIT registers */
|
|
#define PIT_MODE 0x43
|
|
#define PIT_CH0 0x40
|
|
#define PIT_CH2 0x42
|
|
|
|
#define PIT_LATCH ((PIT_TICK_RATE + HZ/2) / HZ)
|
|
|
|
extern raw_spinlock_t i8253_lock;
|
|
extern bool i8253_clear_counter_on_shutdown;
|
|
extern struct clock_event_device i8253_clockevent;
|
|
extern void clockevent_i8253_init(bool oneshot);
|
|
|
|
extern void setup_pit_timer(void);
|
|
|
|
#endif /* __LINUX_I8253_H */
|