Merge branch 'address-masking'
[linux-2.6-block.git] / include / linux / acpi_pmtmr.h
CommitLineData
b2441318 1/* SPDX-License-Identifier: GPL-2.0 */
d66bea57
TG
2#ifndef _ACPI_PMTMR_H_
3#define _ACPI_PMTMR_H_
4
5#include <linux/clocksource.h>
6
7/* Number of PMTMR ticks expected during calibration run */
8#define PMTMR_TICKS_PER_SEC 3579545
9
10/* limit it to 24 bits */
11#define ACPI_PM_MASK CLOCKSOURCE_MASK(24)
12
13/* Overrun value */
14#define ACPI_PM_OVRRUN (1<<24)
15
16#ifdef CONFIG_X86_PM_TIMER
17
18extern u32 acpi_pm_read_verified(void);
19extern u32 pmtmr_ioport;
20
21static inline u32 acpi_pm_read_early(void)
22{
23 if (!pmtmr_ioport)
24 return 0;
25 /* mask the output to 24 bits */
26 return acpi_pm_read_verified() & ACPI_PM_MASK;
27}
28
56bd72e9
MM
29/**
30 * Register callback for suspend and resume event
31 *
32 * @cb Callback triggered on suspend and resume
33 * @data Data passed with the callback
34 */
35void acpi_pmtmr_register_suspend_resume_callback(void (*cb)(void *data, bool suspend), void *data);
36
37/**
38 * Remove registered callback for suspend and resume event
39 */
40void acpi_pmtmr_unregister_suspend_resume_callback(void);
41
d66bea57
TG
42#else
43
44static inline u32 acpi_pm_read_early(void)
45{
46 return 0;
47}
48
49#endif
50
51#endif
52