The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/apm/apmbios.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*      $NetBSD: apmbios.h,v 1.1 2002/10/14 02:08:40 takemura Exp $     */
    2 /*-
    3  * Copyright (c) 1995 The NetBSD Foundation, Inc.
    4  * All rights reserved.
    5  *
    6  * This code is derived from software contributed to The NetBSD Foundation
    7  * by John Kohl.
    8  *
    9  * Redistribution and use in source and binary forms, with or without
   10  * modification, are permitted provided that the following conditions
   11  * are met:
   12  * 1. Redistributions of source code must retain the above copyright
   13  *    notice, this list of conditions and the following disclaimer.
   14  * 2. Redistributions in binary form must reproduce the above copyright
   15  *    notice, this list of conditions and the following disclaimer in the
   16  *    documentation and/or other materials provided with the distribution.
   17  * 3. All advertising materials mentioning features or use of this software
   18  *    must display the following acknowledgement:
   19  *        This product includes software developed by the NetBSD
   20  *        Foundation, Inc. and its contributors.
   21  * 4. Neither the name of The NetBSD Foundation nor the names of its
   22  *    contributors may be used to endorse or promote products derived
   23  *    from this software without specific prior written permission.
   24  *
   25  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
   26  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
   27  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   28  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
   29  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
   30  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
   31  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
   32  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
   33  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   34  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   35  * POSSIBILITY OF SUCH DAMAGE.
   36  */
   37 #ifndef __DEV_APM_APMBIOS_H__
   38 #define __DEV_APM_APMBIOS_H__
   39 
   40 /* Advanced Power Management (v1.0 and v1.1 specification)
   41  * functions/defines/etc.
   42  */
   43 #define APM_BIOS_FNCODE (0x53)
   44 #define APM_SYSTEM_BIOS (0x15)
   45 #define APM_BIOS_FN(x)  ((APM_BIOS_FNCODE<<8)|(x))
   46 
   47 /*
   48  * APM info bits from BIOS
   49  */
   50 #define APM_16BIT_SUPPORT       0x01
   51 #define APM_32BIT_SUPPORT       0x02
   52 #define APM_CPUIDLE_SLOW        0x04
   53 #define APM_DISABLED            0x08
   54 #define APM_DISENGAGED          0x10
   55 
   56 #define APM_ERR_LIMIT           10
   57 
   58 #define APM_ERR_CODE(regs)      (((regs)->AX & 0xff00) >> 8)
   59 #define APM_ERR_PM_DISABLED     0x01
   60 #define APM_ERR_REALALREADY     0x02
   61 #define APM_ERR_NOTCONN         0x03
   62 #define APM_ERR_16ALREADY       0x05
   63 #define APM_ERR_16NOTSUPP       0x06
   64 #define APM_ERR_32ALREADY       0x07
   65 #define APM_ERR_32NOTSUPP       0x08
   66 #define APM_ERR_UNRECOG_DEV     0x09
   67 #define APM_ERR_ERANGE          0x0A
   68 #define APM_ERR_NOTENGAGED      0x0B
   69 #define APM_ERR_EOPNOTSUPP      0x0C
   70 #define APM_ERR_RTIMER_DISABLED 0x0D
   71 #define APM_ERR_UNABLE          0x60
   72 #define APM_ERR_NOEVENTS        0x80
   73 #define APM_ERR_NOT_PRESENT     0x86
   74 
   75 #define APM_DEV_APM_BIOS        0x0000
   76 #define APM_DEV_ALLDEVS         0x0001
   77 /* device classes are high byte; device IDs go in low byte */
   78 #define         APM_DEV_DISPLAY(x)      (0x0100|((x)&0xff))
   79 #define         APM_DEV_DISK(x)         (0x0200|((x)&0xff))
   80 #define         APM_DEV_PARALLEL(x)     (0x0300|((x)&0xff))
   81 #define         APM_DEV_SERIAL(x)       (0x0400|((x)&0xff))
   82 #define         APM_DEV_NETWORK(x)      (0x0500|((x)&0xff))
   83 #define         APM_DEV_PCMCIA(x)       (0x0600|((x)&0xff))
   84 #define         APM_DEV_BATTERY(x)      (0x8000|((x)&0xff))     /* V1.2 */
   85 #define         APM_DEV_ALLUNITS        0xff
   86 
   87 #define APM_INSTALLATION_CHECK  0x00    /* int15 only */
   88 #define         APM_INSTALL_SIGNATURE   0x504d  /* %bh = 'P', %bl = 'M' */
   89 #define APM_REALMODE_CONNECT    0x01    /* int15 only */
   90 #define APM_16BIT_CONNECT       0x02    /* int15 only */
   91 #define APM_32BIT_CONNECT       0x03    /* int15 only */
   92 #define APM_DISCONNECT          0x04    /* %bx = APM_DEV_APM_BIOS */
   93 #define APM_CPU_IDLE            0x05
   94 #define APM_CPU_BUSY            0x06
   95 #define APM_SET_PWR_STATE       0x07
   96 #define         APM_SYS_READY   0x0000  /* %cx */
   97 #define         APM_SYS_STANDBY 0x0001
   98 #define         APM_SYS_SUSPEND 0x0002
   99 #define         APM_SYS_OFF     0x0003
  100 #define         APM_LASTREQ_INPROG      0x0004
  101 #define         APM_LASTREQ_REJECTED    0x0005
  102 
  103 /* system standby is device ID (%bx) 0x0001, APM_SYS_STANDBY */
  104 /* system suspend is device ID (%bx) 0x0001, APM_SYS_SUSPEND */
  105 
  106 #define APM_PWR_MGT_ENABLE      0x08
  107 #define         APM_MGT_ALL     0xffff  /* %bx */
  108 #define         APM_MGT_DISABLE 0x0     /* %cx */
  109 #define         APM_MGT_ENABLE  0x1
  110 
  111 #define APM_SYSTEM_DEFAULTS     0x09
  112 #define         APM_DEFAULTS_ALL        0xffff  /* %bx */
  113 #define         APM_DEFAULTS_ALL_V12    0x0001  /* %bx */
  114 
  115 #define APM_POWER_STATUS        0x0a
  116 #define         APM_AC_OFF              0x00
  117 #define         APM_AC_ON               0x01
  118 #define         APM_AC_BACKUP           0x02
  119 #define         APM_AC_UNKNOWN          0xff
  120 /* the first set of battery constants is 1.0 style values;
  121    the second set is 1.1 style bit definitions */
  122 #define         APM_BATT_HIGH           0x00
  123 #define         APM_BATT_LOW            0x01
  124 #define         APM_BATT_CRITICAL       0x02
  125 #define         APM_BATT_CHARGING       0x03
  126 #define         APM_BATT_ABSENT         0x04 /* Software only--not in spec! */
  127 #define         APM_BATT_UNKNOWN        0xff
  128 
  129 #define         APM_BATT_FLAG_HIGH      0x01
  130 #define         APM_BATT_FLAG_LOW       0x02
  131 #define         APM_BATT_FLAG_CRITICAL  0x04
  132 #define         APM_BATT_FLAG_CHARGING  0x08
  133 #define         APM_BATT_FLAG_NOBATTERY 0x10
  134 #define         APM_BATT_FLAG_NO_SYSTEM_BATTERY 0x80
  135 #define         APM_BATT_FLAG_UNKNOWN   0xff
  136 
  137 #define         APM_BATT_LIFE_UNKNOWN   0xff
  138 #define         APM_BATT_STATE(regp) ((regp)->BX & 0xff)
  139 #define         APM_BATT_FLAGS(regp) (((regp)->CX & 0xff00) >> 8)
  140 #define         APM_AC_STATE(regp) (((regp)->BX & 0xff00) >> 8)
  141 #define         APM_BATT_LIFE(regp) ((regp)->CX & 0xff) /* in % */
  142 /* BATT_REMAINING returns minutes remaining */
  143 #define         APM_BATT_REMAINING(regp) (((regp)->DX & 0x8000) ? \
  144                                           ((regp)->DX & 0x7fff) : \
  145                                           ((regp)->DX & 0x7fff)/60)
  146 #define         APM_BATT_REM_VALID(regp) (((regp)->DX & 0xffff) != 0xffff)
  147 #define         APM_BATTERY_COUNT(regp) ((regp)->SI)
  148 
  149 #define APM_GET_PM_EVENT        0x0b
  150 #define         APM_STANDBY_REQ         0x0001 /* %bx on return */
  151 #define         APM_SUSPEND_REQ         0x0002
  152 #define         APM_NORMAL_RESUME       0x0003
  153 #define         APM_CRIT_RESUME         0x0004 /* suspend/resume happened
  154                                                   without us */
  155      /* If set, the pccard sockets were powered off in the
  156         suspend/standby state (V1.2 only) */
  157 #define         APM_PCCARD_POWEREDOFF(regp) ((regp)->CX & 0x0001)
  158 
  159 #define         APM_BATTERY_LOW         0x0005
  160 #define         APM_POWER_CHANGE        0x0006
  161 #define         APM_UPDATE_TIME         0x0007
  162 #define         APM_CRIT_SUSPEND_REQ    0x0008
  163 #define         APM_USER_STANDBY_REQ    0x0009
  164 #define         APM_USER_SUSPEND_REQ    0x000A
  165 #define         APM_SYS_STANDBY_RESUME  0x000B
  166 #define         APM_CAP_CHANGE          0x000C  /* V1.2 */
  167 
  168 #define APM_GET_POWER_STATE     0x0c
  169      /* device to query in %bx */
  170      /* returns power states in %cx */
  171 #define APM_DEVICE_MGMT_ENABLE  0x0d
  172      /* device to enable/disable in %bx */
  173 
  174 #define APM_DRIVER_VERSION      0x0e
  175 /* %bx should be DEV value (APM_DEV_APM_BIOS)
  176    %ch = driver major vno
  177    %cl = driver minor vno
  178    return: %ah = conn major; %al = conn minor
  179    */
  180 #define         APM_CONN_MINOR(regp) ((regp)->AX & 0xff)
  181 #define         APM_CONN_MAJOR(regp) (((regp)->AX & 0xff00) >> 8)
  182 
  183 #define APM_PWR_MGT_ENGAGE      0x0F
  184      /* device in %bx */
  185 #define         APM_MGT_DISENGAGE       0x0     /* %cx */
  186 #define         APM_MGT_ENGAGE          0x1
  187 
  188 #define APM_GET_CAPABILITIES    0x10
  189      /* device in %bx (APM_DEV_APM_BIOS) */
  190      /* %bl: number of batteries */
  191 #define         APM_NBATTERIES(regp) ((regp)->BX & 0xff)
  192      /* %cx capabilities */
  193 #define         APM_GLOBAL_STANDBY      0x0001
  194 #define         APM_GLOBAL_SUSPEND      0x0002
  195 #define         APM_RTIMER_STANDBY      0x0004 /* resume timer wakes standby */
  196 #define         APM_RTIMER_SUSPEND      0x0008 /* resume timer wakes suspend */
  197 #define         APM_IRRING_SUSPEND      0x0010 /* internal ring wakes suspend */
  198 #define         APM_IRRING_STANDBY      0x0020 /* internal ring wakes standby */
  199 #define         APM_PCRING_SUSPEND      0x0040 /* pccard ring wakes suspend */
  200 #define         APM_PCRING_STANDBY      0x0080 /* pccard ring wakes standby */
  201 
  202 #define APM_RESUME_TIMER_CTL    0x11    /* get/set/disable resume timer */
  203      /* device in %bx (APM_DEV_APM_BIOS) */
  204      /* function code in %cl */
  205 #define         APM_RTIMER_DISABLE      0x00
  206 #define         APM_RTIMER_GET          0x01
  207 #define         APM_RTIMER_SET          0x02
  208      /* if %cl = set, or %cl = get, then: */
  209      /* %ch: seconds */
  210      /* %dh: hours */
  211      /* %dl: minutes */
  212      /* %sih: month (bcd), %sil: day (bcd) */
  213      /* %di: year (bcd, 4 digits) */
  214 #define APM_RESUME_RING_CTL             0x12
  215      /* device in %bx (APM_DEV_APM_BIOS) */
  216      /* %cx: function code */
  217 #define         APM_RRING_DISABLE       0x0000
  218 #define         APM_RRING_ENABLE        0x0001
  219 #define         APM_RRING_GET           0x0002
  220      /* returns state in %cx */
  221 #define         APM_RRING_DISABLED      0x0000
  222 #define         APM_RRING_ENABLED       0x0001
  223 
  224 #define APM_TIMER_REQS_CTL      0x13
  225      /* device in %bx (APM_DEV_APM_BIOS) */
  226      /* %cx: function code */
  227 #define         APM_TIMER_REQS_DISABLE  0x0000
  228 #define         APM_TIMER_REQS_ENABLE   0x0001
  229 #define         APM_TIMER_REQS_GET      0x0002
  230      /* returns state in %cx */
  231 #define         APM_TIMER_REQS_DISABLED 0x0000
  232 #define         APM_TIEMR_REQS_ENABLED  0x0001
  233 
  234 #define APM_OEM                 0x80
  235 
  236 /*
  237  * APM info word from the real-mode handler is adjusted to put
  238  * major/minor version in low half and support bits in upper half.
  239  */
  240 #define APM_MAJOR_VERS(info) (((info)&0xff00)>>8)
  241 #define APM_MINOR_VERS(info) ((info)&0xff)
  242 
  243 #define APM_16BIT_SUPPORTED     (APM_16BIT_SUPPORT << 16)
  244 #define APM_32BIT_SUPPORTED     (APM_32BIT_SUPPORT << 16)
  245 #define APM_IDLE_SLOWS          (APM_CPUIDLE_SLOW << 16)
  246 #define APM_BIOS_PM_DISABLED    (APM_DISABLED << 16)
  247 #define APM_BIOS_PM_DISENGAGED  (APM_DISENGAGED << 16)
  248 
  249 #endif /* __DEV_APM_APMBIOS_H__ */

Cache object: 51f15a08ee7f4bbd60efa152bc0f539f


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.