1  /* SPDX-License-Identifier: GPL-2.0 */
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  
18  extern u32 acpi_pm_read_verified(void);
19  extern u32 pmtmr_ioport;
20  
acpi_pm_read_early(void)21  static 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  
29  #else
30  
acpi_pm_read_early(void)31  static inline u32 acpi_pm_read_early(void)
32  {
33  	return 0;
34  }
35  
36  #endif
37  
38  #endif
39  
40