Subversion Repositories shark

Rev

Rev 422 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
422 giacomo 1
#ifndef _LINUX_APM_H
2
#define _LINUX_APM_H
3
 
4
/*
5
 * Include file for the interface to an APM BIOS
6
 * Copyright 1994-2001 Stephen Rothwell (sfr@canb.auug.org.au)
7
 *
8
 * This program is free software; you can redistribute it and/or modify it
9
 * under the terms of the GNU General Public License as published by the
10
 * Free Software Foundation; either version 2, or (at your option) any
11
 * later version.
12
 *
13
 * This program is distributed in the hope that it will be useful, but
14
 * WITHOUT ANY WARRANTY; without even the implied warranty of
15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16
 * General Public License for more details.
17
 */
18
 
19
typedef unsigned short  apm_event_t;
20
typedef unsigned short  apm_eventinfo_t;
21
 
22
#ifdef __KERNEL__
23
 
24
#define APM_CS          (GDT_ENTRY_APMBIOS_BASE * 8)
25
#define APM_CS_16       (APM_CS + 8)
26
#define APM_DS          (APM_CS_16 + 8)
27
 
28
struct apm_bios_info {
29
        unsigned short  version;
30
        unsigned short  cseg;
31
        unsigned long   offset;
32
        unsigned short  cseg_16;
33
        unsigned short  dseg;
34
        unsigned short  flags;
35
        unsigned short  cseg_len;
36
        unsigned short  cseg_16_len;
37
        unsigned short  dseg_len;
38
};
39
 
40
/* Results of APM Installation Check */
41
#define APM_16_BIT_SUPPORT      0x0001
42
#define APM_32_BIT_SUPPORT      0x0002
43
#define APM_IDLE_SLOWS_CLOCK    0x0004
44
#define APM_BIOS_DISABLED       0x0008
45
#define APM_BIOS_DISENGAGED     0x0010
46
 
47
/*
48
 * Data for APM that is persistent across module unload/load
49
 */
50
struct apm_info {
51
        struct apm_bios_info    bios;
52
        unsigned short          connection_version;
53
        int                     get_power_status_broken;
54
        int                     get_power_status_swabinminutes;
55
        int                     allow_ints;
56
        int                     realmode_power_off;
57
        int                     disabled;
58
};
59
 
60
/*
61
 * The APM function codes
62
 */
63
#define APM_FUNC_INST_CHECK     0x5300
64
#define APM_FUNC_REAL_CONN      0x5301
65
#define APM_FUNC_16BIT_CONN     0x5302
66
#define APM_FUNC_32BIT_CONN     0x5303
67
#define APM_FUNC_DISCONN        0x5304
68
#define APM_FUNC_IDLE           0x5305
69
#define APM_FUNC_BUSY           0x5306
70
#define APM_FUNC_SET_STATE      0x5307
71
#define APM_FUNC_ENABLE_PM      0x5308
72
#define APM_FUNC_RESTORE_BIOS   0x5309
73
#define APM_FUNC_GET_STATUS     0x530a
74
#define APM_FUNC_GET_EVENT      0x530b
75
#define APM_FUNC_GET_STATE      0x530c
76
#define APM_FUNC_ENABLE_DEV_PM  0x530d
77
#define APM_FUNC_VERSION        0x530e
78
#define APM_FUNC_ENGAGE_PM      0x530f
79
#define APM_FUNC_GET_CAP        0x5310
80
#define APM_FUNC_RESUME_TIMER   0x5311
81
#define APM_FUNC_RESUME_ON_RING 0x5312
82
#define APM_FUNC_TIMER          0x5313
83
 
84
/*
85
 * Function code for APM_FUNC_RESUME_TIMER
86
 */
87
#define APM_FUNC_DISABLE_TIMER  0
88
#define APM_FUNC_GET_TIMER      1
89
#define APM_FUNC_SET_TIMER      2
90
 
91
/*
92
 * Function code for APM_FUNC_RESUME_ON_RING
93
 */
94
#define APM_FUNC_DISABLE_RING   0
95
#define APM_FUNC_ENABLE_RING    1
96
#define APM_FUNC_GET_RING       2
97
 
98
/*
99
 * Function code for APM_FUNC_TIMER_STATUS
100
 */
101
#define APM_FUNC_TIMER_DISABLE  0
102
#define APM_FUNC_TIMER_ENABLE   1
103
#define APM_FUNC_TIMER_GET      2
104
 
105
/*
106
 * in arch/i386/kernel/setup.c
107
 */
108
extern struct apm_info  apm_info;
109
 
110
#endif  /* __KERNEL__ */
111
 
112
/*
113
 * Power states
114
 */
115
#define APM_STATE_READY         0x0000
116
#define APM_STATE_STANDBY       0x0001
117
#define APM_STATE_SUSPEND       0x0002
118
#define APM_STATE_OFF           0x0003
119
#define APM_STATE_BUSY          0x0004
120
#define APM_STATE_REJECT        0x0005
121
#define APM_STATE_OEM_SYS       0x0020
122
#define APM_STATE_OEM_DEV       0x0040
123
 
124
#define APM_STATE_DISABLE       0x0000
125
#define APM_STATE_ENABLE        0x0001
126
 
127
#define APM_STATE_DISENGAGE     0x0000
128
#define APM_STATE_ENGAGE        0x0001
129
 
130
/*
131
 * Events (results of Get PM Event)
132
 */
133
#define APM_SYS_STANDBY         0x0001
134
#define APM_SYS_SUSPEND         0x0002
135
#define APM_NORMAL_RESUME       0x0003
136
#define APM_CRITICAL_RESUME     0x0004
137
#define APM_LOW_BATTERY         0x0005
138
#define APM_POWER_STATUS_CHANGE 0x0006
139
#define APM_UPDATE_TIME         0x0007
140
#define APM_CRITICAL_SUSPEND    0x0008
141
#define APM_USER_STANDBY        0x0009
142
#define APM_USER_SUSPEND        0x000a
143
#define APM_STANDBY_RESUME      0x000b
144
#define APM_CAPABILITY_CHANGE   0x000c
145
 
146
/*
147
 * Error codes
148
 */
149
#define APM_SUCCESS             0x00
150
#define APM_DISABLED            0x01
151
#define APM_CONNECTED           0x02
152
#define APM_NOT_CONNECTED       0x03
153
#define APM_16_CONNECTED        0x05
154
#define APM_16_UNSUPPORTED      0x06
155
#define APM_32_CONNECTED        0x07
156
#define APM_32_UNSUPPORTED      0x08
157
#define APM_BAD_DEVICE          0x09
158
#define APM_BAD_PARAM           0x0a
159
#define APM_NOT_ENGAGED         0x0b
160
#define APM_BAD_FUNCTION        0x0c
161
#define APM_RESUME_DISABLED     0x0d
162
#define APM_NO_ERROR            0x53
163
#define APM_BAD_STATE           0x60
164
#define APM_NO_EVENTS           0x80
165
#define APM_NOT_PRESENT         0x86
166
 
167
/*
168
 * APM Device IDs
169
 */
170
#define APM_DEVICE_BIOS         0x0000
171
#define APM_DEVICE_ALL          0x0001
172
#define APM_DEVICE_DISPLAY      0x0100
173
#define APM_DEVICE_STORAGE      0x0200
174
#define APM_DEVICE_PARALLEL     0x0300
175
#define APM_DEVICE_SERIAL       0x0400
176
#define APM_DEVICE_NETWORK      0x0500
177
#define APM_DEVICE_PCMCIA       0x0600
178
#define APM_DEVICE_BATTERY      0x8000
179
#define APM_DEVICE_OEM          0xe000
180
#define APM_DEVICE_OLD_ALL      0xffff
181
#define APM_DEVICE_CLASS        0x00ff
182
#define APM_DEVICE_MASK         0xff00
183
 
184
#ifdef __KERNEL__
185
/*
186
 * This is the "All Devices" ID communicated to the BIOS
187
 */
188
#define APM_DEVICE_BALL         ((apm_info.connection_version > 0x0100) ? \
189
                                 APM_DEVICE_ALL : APM_DEVICE_OLD_ALL)
190
#endif
191
 
192
/*
193
 * Battery status
194
 */
195
#define APM_MAX_BATTERIES       2
196
 
197
/*
198
 * APM defined capability bit flags
199
 */
200
#define APM_CAP_GLOBAL_STANDBY          0x0001
201
#define APM_CAP_GLOBAL_SUSPEND          0x0002
202
#define APM_CAP_RESUME_STANDBY_TIMER    0x0004 /* Timer resume from standby */
203
#define APM_CAP_RESUME_SUSPEND_TIMER    0x0008 /* Timer resume from suspend */
204
#define APM_CAP_RESUME_STANDBY_RING     0x0010 /* Resume on Ring fr standby */
205
#define APM_CAP_RESUME_SUSPEND_RING     0x0020 /* Resume on Ring fr suspend */
206
#define APM_CAP_RESUME_STANDBY_PCMCIA   0x0040 /* Resume on PCMCIA Ring */
207
#define APM_CAP_RESUME_SUSPEND_PCMCIA   0x0080 /* Resume on PCMCIA Ring */
208
 
209
/*
210
 * ioctl operations
211
 */
212
#include <linux/ioctl.h>
213
 
214
#define APM_IOC_STANDBY         _IO('A', 1)
215
#define APM_IOC_SUSPEND         _IO('A', 2)
216
 
217
#endif  /* LINUX_APM_H */