93 lines · c
1/* SPDX-License-Identifier: GPL-2.0-or-later */2/*3 * Include file for the interface to an APM BIOS4 * Copyright 1994-2001 Stephen Rothwell (sfr@canb.auug.org.au)5 */6#ifndef _LINUX_APM_H7#define _LINUX_APM_H8 9#include <uapi/linux/apm_bios.h>10 11 12#define APM_CS (GDT_ENTRY_APMBIOS_BASE * 8)13#define APM_CS_16 (APM_CS + 8)14#define APM_DS (APM_CS_16 + 8)15 16/* Results of APM Installation Check */17#define APM_16_BIT_SUPPORT 0x000118#define APM_32_BIT_SUPPORT 0x000219#define APM_IDLE_SLOWS_CLOCK 0x000420#define APM_BIOS_DISABLED 0x000821#define APM_BIOS_DISENGAGED 0x001022 23/*24 * Data for APM that is persistent across module unload/load25 */26struct apm_info {27 struct apm_bios_info bios;28 unsigned short connection_version;29 int get_power_status_broken;30 int get_power_status_swabinminutes;31 int allow_ints;32 int forbid_idle;33 int realmode_power_off;34 int disabled;35};36 37/*38 * The APM function codes39 */40#define APM_FUNC_INST_CHECK 0x530041#define APM_FUNC_REAL_CONN 0x530142#define APM_FUNC_16BIT_CONN 0x530243#define APM_FUNC_32BIT_CONN 0x530344#define APM_FUNC_DISCONN 0x530445#define APM_FUNC_IDLE 0x530546#define APM_FUNC_BUSY 0x530647#define APM_FUNC_SET_STATE 0x530748#define APM_FUNC_ENABLE_PM 0x530849#define APM_FUNC_RESTORE_BIOS 0x530950#define APM_FUNC_GET_STATUS 0x530a51#define APM_FUNC_GET_EVENT 0x530b52#define APM_FUNC_GET_STATE 0x530c53#define APM_FUNC_ENABLE_DEV_PM 0x530d54#define APM_FUNC_VERSION 0x530e55#define APM_FUNC_ENGAGE_PM 0x530f56#define APM_FUNC_GET_CAP 0x531057#define APM_FUNC_RESUME_TIMER 0x531158#define APM_FUNC_RESUME_ON_RING 0x531259#define APM_FUNC_TIMER 0x531360 61/*62 * Function code for APM_FUNC_RESUME_TIMER63 */64#define APM_FUNC_DISABLE_TIMER 065#define APM_FUNC_GET_TIMER 166#define APM_FUNC_SET_TIMER 267 68/*69 * Function code for APM_FUNC_RESUME_ON_RING70 */71#define APM_FUNC_DISABLE_RING 072#define APM_FUNC_ENABLE_RING 173#define APM_FUNC_GET_RING 274 75/*76 * Function code for APM_FUNC_TIMER_STATUS77 */78#define APM_FUNC_TIMER_DISABLE 079#define APM_FUNC_TIMER_ENABLE 180#define APM_FUNC_TIMER_GET 281 82/*83 * in arch/i386/kernel/setup.c84 */85extern struct apm_info apm_info;86 87/*88 * This is the "All Devices" ID communicated to the BIOS89 */90#define APM_DEVICE_BALL ((apm_info.connection_version > 0x0100) ? \91 APM_DEVICE_ALL : APM_DEVICE_OLD_ALL)92#endif /* LINUX_APM_H */93