xref: /linux-6.15/include/linux/apm-emulation.h (revision f0aa4fa4)
1*f0aa4fa4SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
27726942fSRalf Baechle /* -*- linux-c -*-
37726942fSRalf Baechle  *
47726942fSRalf Baechle  * (C) 2003 [email protected]
57726942fSRalf Baechle  *
67726942fSRalf Baechle  * based on arch/arm/kernel/apm.c
77726942fSRalf Baechle  * factor out the information needed by architectures to provide
87726942fSRalf Baechle  * apm status
97726942fSRalf Baechle  */
107726942fSRalf Baechle #ifndef __LINUX_APM_EMULATION_H
117726942fSRalf Baechle #define __LINUX_APM_EMULATION_H
127726942fSRalf Baechle 
137726942fSRalf Baechle #include <linux/apm_bios.h>
147726942fSRalf Baechle 
157726942fSRalf Baechle /*
167726942fSRalf Baechle  * This structure gets filled in by the machine specific 'get_power_status'
177726942fSRalf Baechle  * implementation.  Any fields which are not set default to a safe value.
187726942fSRalf Baechle  */
197726942fSRalf Baechle struct apm_power_info {
207726942fSRalf Baechle 	unsigned char	ac_line_status;
217726942fSRalf Baechle #define APM_AC_OFFLINE			0
227726942fSRalf Baechle #define APM_AC_ONLINE			1
237726942fSRalf Baechle #define APM_AC_BACKUP			2
247726942fSRalf Baechle #define APM_AC_UNKNOWN			0xff
257726942fSRalf Baechle 
267726942fSRalf Baechle 	unsigned char	battery_status;
277726942fSRalf Baechle #define APM_BATTERY_STATUS_HIGH		0
287726942fSRalf Baechle #define APM_BATTERY_STATUS_LOW		1
297726942fSRalf Baechle #define APM_BATTERY_STATUS_CRITICAL	2
307726942fSRalf Baechle #define APM_BATTERY_STATUS_CHARGING	3
317726942fSRalf Baechle #define APM_BATTERY_STATUS_NOT_PRESENT	4
327726942fSRalf Baechle #define APM_BATTERY_STATUS_UNKNOWN	0xff
337726942fSRalf Baechle 
347726942fSRalf Baechle 	unsigned char	battery_flag;
357726942fSRalf Baechle #define APM_BATTERY_FLAG_HIGH		(1 << 0)
367726942fSRalf Baechle #define APM_BATTERY_FLAG_LOW		(1 << 1)
377726942fSRalf Baechle #define APM_BATTERY_FLAG_CRITICAL	(1 << 2)
387726942fSRalf Baechle #define APM_BATTERY_FLAG_CHARGING	(1 << 3)
397726942fSRalf Baechle #define APM_BATTERY_FLAG_NOT_PRESENT	(1 << 7)
407726942fSRalf Baechle #define APM_BATTERY_FLAG_UNKNOWN	0xff
417726942fSRalf Baechle 
427726942fSRalf Baechle 	int		battery_life;
437726942fSRalf Baechle 	int		time;
447726942fSRalf Baechle 	int		units;
457726942fSRalf Baechle #define APM_UNITS_MINS			0
467726942fSRalf Baechle #define APM_UNITS_SECS			1
477726942fSRalf Baechle #define APM_UNITS_UNKNOWN		-1
487726942fSRalf Baechle 
497726942fSRalf Baechle };
507726942fSRalf Baechle 
517726942fSRalf Baechle /*
527726942fSRalf Baechle  * This allows machines to provide their own "apm get power status" function.
537726942fSRalf Baechle  */
547726942fSRalf Baechle extern void (*apm_get_power_status)(struct apm_power_info *);
557726942fSRalf Baechle 
567726942fSRalf Baechle /*
577726942fSRalf Baechle  * Queue an event (APM_SYS_SUSPEND or APM_CRITICAL_SUSPEND)
587726942fSRalf Baechle  */
597726942fSRalf Baechle void apm_queue_event(apm_event_t event);
607726942fSRalf Baechle 
617726942fSRalf Baechle #endif /* __LINUX_APM_EMULATION_H */
62