linux/include/linux/apm_bios.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-or-later */
   2/*
   3 * Include file for the interface to an APM BIOS
   4 * Copyright 1994-2001 Stephen Rothwell (sfr@canb.auug.org.au)
   5 */
   6#ifndef _LINUX_APM_H
   7#define _LINUX_APM_H
   8
   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      0x0001
  18#define APM_32_BIT_SUPPORT      0x0002
  19#define APM_IDLE_SLOWS_CLOCK    0x0004
  20#define APM_BIOS_DISABLED       0x0008
  21#define APM_BIOS_DISENGAGED     0x0010
  22
  23/*
  24 * Data for APM that is persistent across module unload/load
  25 */
  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 codes
  39 */
  40#define APM_FUNC_INST_CHECK     0x5300
  41#define APM_FUNC_REAL_CONN      0x5301
  42#define APM_FUNC_16BIT_CONN     0x5302
  43#define APM_FUNC_32BIT_CONN     0x5303
  44#define APM_FUNC_DISCONN        0x5304
  45#define APM_FUNC_IDLE           0x5305
  46#define APM_FUNC_BUSY           0x5306
  47#define APM_FUNC_SET_STATE      0x5307
  48#define APM_FUNC_ENABLE_PM      0x5308
  49#define APM_FUNC_RESTORE_BIOS   0x5309
  50#define APM_FUNC_GET_STATUS     0x530a
  51#define APM_FUNC_GET_EVENT      0x530b
  52#define APM_FUNC_GET_STATE      0x530c
  53#define APM_FUNC_ENABLE_DEV_PM  0x530d
  54#define APM_FUNC_VERSION        0x530e
  55#define APM_FUNC_ENGAGE_PM      0x530f
  56#define APM_FUNC_GET_CAP        0x5310
  57#define APM_FUNC_RESUME_TIMER   0x5311
  58#define APM_FUNC_RESUME_ON_RING 0x5312
  59#define APM_FUNC_TIMER          0x5313
  60
  61/*
  62 * Function code for APM_FUNC_RESUME_TIMER
  63 */
  64#define APM_FUNC_DISABLE_TIMER  0
  65#define APM_FUNC_GET_TIMER      1
  66#define APM_FUNC_SET_TIMER      2
  67
  68/*
  69 * Function code for APM_FUNC_RESUME_ON_RING
  70 */
  71#define APM_FUNC_DISABLE_RING   0
  72#define APM_FUNC_ENABLE_RING    1
  73#define APM_FUNC_GET_RING       2
  74
  75/*
  76 * Function code for APM_FUNC_TIMER_STATUS
  77 */
  78#define APM_FUNC_TIMER_DISABLE  0
  79#define APM_FUNC_TIMER_ENABLE   1
  80#define APM_FUNC_TIMER_GET      2
  81
  82/*
  83 * in arch/i386/kernel/setup.c
  84 */
  85extern struct apm_info  apm_info;
  86
  87/*
  88 * This is the "All Devices" ID communicated to the BIOS
  89 */
  90#define APM_DEVICE_BALL         ((apm_info.connection_version > 0x0100) ? \
  91                                 APM_DEVICE_ALL : APM_DEVICE_OLD_ALL)
  92#endif  /* LINUX_APM_H */
  93