linux/include/linux/apm_bios.h
<<
>>
Prefs
   1/*
   2 * Include file for the interface to an APM BIOS
   3 * Copyright 1994-2001 Stephen Rothwell (sfr@canb.auug.org.au)
   4 *
   5 * This program is free software; you can redistribute it and/or modify it
   6 * under the terms of the GNU General Public License as published by the
   7 * Free Software Foundation; either version 2, or (at your option) any
   8 * later version.
   9 *
  10 * This program is distributed in the hope that it will be useful, but
  11 * WITHOUT ANY WARRANTY; without even the implied warranty of
  12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  13 * General Public License for more details.
  14 */
  15#ifndef _LINUX_APM_H
  16#define _LINUX_APM_H
  17
  18#include <uapi/linux/apm_bios.h>
  19
  20
  21#define APM_CS          (GDT_ENTRY_APMBIOS_BASE * 8)
  22#define APM_CS_16       (APM_CS + 8)
  23#define APM_DS          (APM_CS_16 + 8)
  24
  25/* Results of APM Installation Check */
  26#define APM_16_BIT_SUPPORT      0x0001
  27#define APM_32_BIT_SUPPORT      0x0002
  28#define APM_IDLE_SLOWS_CLOCK    0x0004
  29#define APM_BIOS_DISABLED       0x0008
  30#define APM_BIOS_DISENGAGED     0x0010
  31
  32/*
  33 * Data for APM that is persistent across module unload/load
  34 */
  35struct apm_info {
  36        struct apm_bios_info    bios;
  37        unsigned short          connection_version;
  38        int                     get_power_status_broken;
  39        int                     get_power_status_swabinminutes;
  40        int                     allow_ints;
  41        int                     forbid_idle;
  42        int                     realmode_power_off;
  43        int                     disabled;
  44};
  45
  46/*
  47 * The APM function codes
  48 */
  49#define APM_FUNC_INST_CHECK     0x5300
  50#define APM_FUNC_REAL_CONN      0x5301
  51#define APM_FUNC_16BIT_CONN     0x5302
  52#define APM_FUNC_32BIT_CONN     0x5303
  53#define APM_FUNC_DISCONN        0x5304
  54#define APM_FUNC_IDLE           0x5305
  55#define APM_FUNC_BUSY           0x5306
  56#define APM_FUNC_SET_STATE      0x5307
  57#define APM_FUNC_ENABLE_PM      0x5308
  58#define APM_FUNC_RESTORE_BIOS   0x5309
  59#define APM_FUNC_GET_STATUS     0x530a
  60#define APM_FUNC_GET_EVENT      0x530b
  61#define APM_FUNC_GET_STATE      0x530c
  62#define APM_FUNC_ENABLE_DEV_PM  0x530d
  63#define APM_FUNC_VERSION        0x530e
  64#define APM_FUNC_ENGAGE_PM      0x530f
  65#define APM_FUNC_GET_CAP        0x5310
  66#define APM_FUNC_RESUME_TIMER   0x5311
  67#define APM_FUNC_RESUME_ON_RING 0x5312
  68#define APM_FUNC_TIMER          0x5313
  69
  70/*
  71 * Function code for APM_FUNC_RESUME_TIMER
  72 */
  73#define APM_FUNC_DISABLE_TIMER  0
  74#define APM_FUNC_GET_TIMER      1
  75#define APM_FUNC_SET_TIMER      2
  76
  77/*
  78 * Function code for APM_FUNC_RESUME_ON_RING
  79 */
  80#define APM_FUNC_DISABLE_RING   0
  81#define APM_FUNC_ENABLE_RING    1
  82#define APM_FUNC_GET_RING       2
  83
  84/*
  85 * Function code for APM_FUNC_TIMER_STATUS
  86 */
  87#define APM_FUNC_TIMER_DISABLE  0
  88#define APM_FUNC_TIMER_ENABLE   1
  89#define APM_FUNC_TIMER_GET      2
  90
  91/*
  92 * in arch/i386/kernel/setup.c
  93 */
  94extern struct apm_info  apm_info;
  95
  96/*
  97 * This is the "All Devices" ID communicated to the BIOS
  98 */
  99#define APM_DEVICE_BALL         ((apm_info.connection_version > 0x0100) ? \
 100                                 APM_DEVICE_ALL : APM_DEVICE_OLD_ALL)
 101#endif  /* LINUX_APM_H */
 102