xref: /openbmc/linux/include/linux/acpi_pmtmr.h (revision b2441318)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2d66bea57SThomas Gleixner #ifndef _ACPI_PMTMR_H_
3d66bea57SThomas Gleixner #define _ACPI_PMTMR_H_
4d66bea57SThomas Gleixner 
5d66bea57SThomas Gleixner #include <linux/clocksource.h>
6d66bea57SThomas Gleixner 
7d66bea57SThomas Gleixner /* Number of PMTMR ticks expected during calibration run */
8d66bea57SThomas Gleixner #define PMTMR_TICKS_PER_SEC 3579545
9d66bea57SThomas Gleixner 
10d66bea57SThomas Gleixner /* limit it to 24 bits */
11d66bea57SThomas Gleixner #define ACPI_PM_MASK CLOCKSOURCE_MASK(24)
12d66bea57SThomas Gleixner 
13d66bea57SThomas Gleixner /* Overrun value */
14d66bea57SThomas Gleixner #define ACPI_PM_OVRRUN	(1<<24)
15d66bea57SThomas Gleixner 
16d66bea57SThomas Gleixner #ifdef CONFIG_X86_PM_TIMER
17d66bea57SThomas Gleixner 
18d66bea57SThomas Gleixner extern u32 acpi_pm_read_verified(void);
19d66bea57SThomas Gleixner extern u32 pmtmr_ioport;
20d66bea57SThomas Gleixner 
acpi_pm_read_early(void)21d66bea57SThomas Gleixner static inline u32 acpi_pm_read_early(void)
22d66bea57SThomas Gleixner {
23d66bea57SThomas Gleixner 	if (!pmtmr_ioport)
24d66bea57SThomas Gleixner 		return 0;
25d66bea57SThomas Gleixner 	/* mask the output to 24 bits */
26d66bea57SThomas Gleixner 	return acpi_pm_read_verified() & ACPI_PM_MASK;
27d66bea57SThomas Gleixner }
28d66bea57SThomas Gleixner 
29d66bea57SThomas Gleixner #else
30d66bea57SThomas Gleixner 
acpi_pm_read_early(void)31d66bea57SThomas Gleixner static inline u32 acpi_pm_read_early(void)
32d66bea57SThomas Gleixner {
33d66bea57SThomas Gleixner 	return 0;
34d66bea57SThomas Gleixner }
35d66bea57SThomas Gleixner 
36d66bea57SThomas Gleixner #endif
37d66bea57SThomas Gleixner 
38d66bea57SThomas Gleixner #endif
39d66bea57SThomas Gleixner 
40