xref: /openbmc/linux/include/linux/apm_bios.h (revision 3e0a4e85)
13e0a4e85SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
21da177e4SLinus Torvalds /*
31da177e4SLinus Torvalds  * Include file for the interface to an APM BIOS
41da177e4SLinus Torvalds  * Copyright 1994-2001 Stephen Rothwell (sfr@canb.auug.org.au)
51da177e4SLinus Torvalds  */
6607ca46eSDavid Howells #ifndef _LINUX_APM_H
7607ca46eSDavid Howells #define _LINUX_APM_H
81da177e4SLinus Torvalds 
9607ca46eSDavid Howells #include <uapi/linux/apm_bios.h>
10ee8e7cfeSRusty Russell 
111da177e4SLinus Torvalds 
121da177e4SLinus Torvalds #define APM_CS		(GDT_ENTRY_APMBIOS_BASE * 8)
131da177e4SLinus Torvalds #define APM_CS_16	(APM_CS + 8)
141da177e4SLinus Torvalds #define APM_DS		(APM_CS_16 + 8)
151da177e4SLinus Torvalds 
161da177e4SLinus Torvalds /* Results of APM Installation Check */
171da177e4SLinus Torvalds #define APM_16_BIT_SUPPORT	0x0001
181da177e4SLinus Torvalds #define APM_32_BIT_SUPPORT	0x0002
191da177e4SLinus Torvalds #define APM_IDLE_SLOWS_CLOCK	0x0004
201da177e4SLinus Torvalds #define APM_BIOS_DISABLED      	0x0008
211da177e4SLinus Torvalds #define APM_BIOS_DISENGAGED     0x0010
221da177e4SLinus Torvalds 
231da177e4SLinus Torvalds /*
241da177e4SLinus Torvalds  * Data for APM that is persistent across module unload/load
251da177e4SLinus Torvalds  */
261da177e4SLinus Torvalds struct apm_info {
271da177e4SLinus Torvalds 	struct apm_bios_info	bios;
281da177e4SLinus Torvalds 	unsigned short		connection_version;
291da177e4SLinus Torvalds 	int			get_power_status_broken;
301da177e4SLinus Torvalds 	int			get_power_status_swabinminutes;
311da177e4SLinus Torvalds 	int			allow_ints;
321da177e4SLinus Torvalds 	int			forbid_idle;
331da177e4SLinus Torvalds 	int			realmode_power_off;
341da177e4SLinus Torvalds 	int			disabled;
351da177e4SLinus Torvalds };
361da177e4SLinus Torvalds 
371da177e4SLinus Torvalds /*
381da177e4SLinus Torvalds  * The APM function codes
391da177e4SLinus Torvalds  */
401da177e4SLinus Torvalds #define	APM_FUNC_INST_CHECK	0x5300
411da177e4SLinus Torvalds #define	APM_FUNC_REAL_CONN	0x5301
421da177e4SLinus Torvalds #define	APM_FUNC_16BIT_CONN	0x5302
431da177e4SLinus Torvalds #define	APM_FUNC_32BIT_CONN	0x5303
441da177e4SLinus Torvalds #define	APM_FUNC_DISCONN	0x5304
451da177e4SLinus Torvalds #define	APM_FUNC_IDLE		0x5305
461da177e4SLinus Torvalds #define	APM_FUNC_BUSY		0x5306
471da177e4SLinus Torvalds #define	APM_FUNC_SET_STATE	0x5307
481da177e4SLinus Torvalds #define	APM_FUNC_ENABLE_PM	0x5308
491da177e4SLinus Torvalds #define	APM_FUNC_RESTORE_BIOS	0x5309
501da177e4SLinus Torvalds #define	APM_FUNC_GET_STATUS	0x530a
511da177e4SLinus Torvalds #define	APM_FUNC_GET_EVENT	0x530b
521da177e4SLinus Torvalds #define	APM_FUNC_GET_STATE	0x530c
531da177e4SLinus Torvalds #define	APM_FUNC_ENABLE_DEV_PM	0x530d
541da177e4SLinus Torvalds #define	APM_FUNC_VERSION	0x530e
551da177e4SLinus Torvalds #define	APM_FUNC_ENGAGE_PM	0x530f
561da177e4SLinus Torvalds #define	APM_FUNC_GET_CAP	0x5310
571da177e4SLinus Torvalds #define	APM_FUNC_RESUME_TIMER	0x5311
581da177e4SLinus Torvalds #define	APM_FUNC_RESUME_ON_RING	0x5312
591da177e4SLinus Torvalds #define	APM_FUNC_TIMER		0x5313
601da177e4SLinus Torvalds 
611da177e4SLinus Torvalds /*
621da177e4SLinus Torvalds  * Function code for APM_FUNC_RESUME_TIMER
631da177e4SLinus Torvalds  */
641da177e4SLinus Torvalds #define	APM_FUNC_DISABLE_TIMER	0
651da177e4SLinus Torvalds #define	APM_FUNC_GET_TIMER	1
661da177e4SLinus Torvalds #define	APM_FUNC_SET_TIMER	2
671da177e4SLinus Torvalds 
681da177e4SLinus Torvalds /*
691da177e4SLinus Torvalds  * Function code for APM_FUNC_RESUME_ON_RING
701da177e4SLinus Torvalds  */
711da177e4SLinus Torvalds #define	APM_FUNC_DISABLE_RING	0
721da177e4SLinus Torvalds #define	APM_FUNC_ENABLE_RING	1
731da177e4SLinus Torvalds #define	APM_FUNC_GET_RING	2
741da177e4SLinus Torvalds 
751da177e4SLinus Torvalds /*
761da177e4SLinus Torvalds  * Function code for APM_FUNC_TIMER_STATUS
771da177e4SLinus Torvalds  */
781da177e4SLinus Torvalds #define	APM_FUNC_TIMER_DISABLE	0
791da177e4SLinus Torvalds #define	APM_FUNC_TIMER_ENABLE	1
801da177e4SLinus Torvalds #define	APM_FUNC_TIMER_GET	2
811da177e4SLinus Torvalds 
821da177e4SLinus Torvalds /*
831da177e4SLinus Torvalds  * in arch/i386/kernel/setup.c
841da177e4SLinus Torvalds  */
851da177e4SLinus Torvalds extern struct apm_info	apm_info;
861da177e4SLinus Torvalds 
871da177e4SLinus Torvalds /*
881da177e4SLinus Torvalds  * This is the "All Devices" ID communicated to the BIOS
891da177e4SLinus Torvalds  */
901da177e4SLinus Torvalds #define APM_DEVICE_BALL		((apm_info.connection_version > 0x0100) ? \
911da177e4SLinus Torvalds 				 APM_DEVICE_ALL : APM_DEVICE_OLD_ALL)
921da177e4SLinus Torvalds #endif	/* LINUX_APM_H */
93