OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [include/] [acpi/] [acpi_bus.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
/*
2
 *  acpi_bus.h - ACPI Bus Driver ($Revision: 1.1.1.1 $)
3
 *
4
 *  Copyright (C) 2001, 2002 Andy Grover <andrew.grover@intel.com>
5
 *  Copyright (C) 2001, 2002 Paul Diefenbaugh <paul.s.diefenbaugh@intel.com>
6
 *
7
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8
 *
9
 *  This program is free software; you can redistribute it and/or modify
10
 *  it under the terms of the GNU General Public License as published by
11
 *  the Free Software Foundation; either version 2 of the License, or (at
12
 *  your option) any later version.
13
 *
14
 *  This program is distributed in the hope that it will be useful, but
15
 *  WITHOUT ANY WARRANTY; without even the implied warranty of
16
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17
 *  General Public License for more details.
18
 *
19
 *  You should have received a copy of the GNU General Public License along
20
 *  with this program; if not, write to the Free Software Foundation, Inc.,
21
 *  59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
22
 *
23
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
24
 */
25
 
26
#ifndef __ACPI_BUS_H__
27
#define __ACPI_BUS_H__
28
 
29
#include <linux/version.h>
30
 
31
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,4))
32
#include <linux/device.h>
33
#define CONFIG_LDM
34
#endif
35
 
36
#include <acpi/acpi.h>
37
 
38
/* TBD: Make dynamic */
39
#define ACPI_MAX_HANDLES        10
40
struct acpi_handle_list {
41
        u32                     count;
42
        acpi_handle             handles[ACPI_MAX_HANDLES];
43
};
44
 
45
 
46
/* acpi_utils.h */
47
acpi_status
48
acpi_extract_package (
49
        union acpi_object       *package,
50
        struct acpi_buffer      *format,
51
        struct acpi_buffer      *buffer);
52
acpi_status
53
acpi_evaluate_integer (
54
        acpi_handle             handle,
55
        acpi_string             pathname,
56
        struct acpi_object_list *arguments,
57
        unsigned long           *data);
58
acpi_status
59
acpi_evaluate_reference (
60
        acpi_handle             handle,
61
        acpi_string             pathname,
62
        struct acpi_object_list *arguments,
63
        struct acpi_handle_list *list);
64
 
65
 
66
#ifdef CONFIG_ACPI_BUS
67
 
68
#include <linux/proc_fs.h>
69
 
70
#define ACPI_BUS_FILE_ROOT      "acpi"
71
extern struct proc_dir_entry    *acpi_root_dir;
72
extern FADT_DESCRIPTOR          acpi_fadt;
73
 
74
enum acpi_bus_removal_type {
75
        ACPI_BUS_REMOVAL_NORMAL = 0,
76
        ACPI_BUS_REMOVAL_EJECT,
77
        ACPI_BUS_REMOVAL_SUPRISE,
78
        ACPI_BUS_REMOVAL_TYPE_COUNT
79
};
80
 
81
enum acpi_bus_device_type {
82
        ACPI_BUS_TYPE_DEVICE    = 0,
83
        ACPI_BUS_TYPE_POWER,
84
        ACPI_BUS_TYPE_PROCESSOR,
85
        ACPI_BUS_TYPE_THERMAL,
86
        ACPI_BUS_TYPE_SYSTEM,
87
        ACPI_BUS_TYPE_POWER_BUTTON,
88
        ACPI_BUS_TYPE_SLEEP_BUTTON,
89
        ACPI_BUS_DEVICE_TYPE_COUNT
90
};
91
 
92
struct acpi_driver;
93
struct acpi_device;
94
 
95
 
96
/*
97
 * ACPI Driver
98
 * -----------
99
 */
100
 
101
typedef int (*acpi_op_add)      (struct acpi_device *device);
102
typedef int (*acpi_op_remove)   (struct acpi_device *device, int type);
103
typedef int (*acpi_op_lock)     (struct acpi_device *device, int type);
104
typedef int (*acpi_op_start)    (struct acpi_device *device);
105
typedef int (*acpi_op_stop)     (struct acpi_device *device, int type);
106
typedef int (*acpi_op_suspend)  (struct acpi_device *device, int state);
107
typedef int (*acpi_op_resume)   (struct acpi_device *device, int state);
108
typedef int (*acpi_op_scan)     (struct acpi_device *device);
109
typedef int (*acpi_op_bind)     (struct acpi_device *device);
110
 
111
struct acpi_device_ops {
112
        acpi_op_add             add;
113
        acpi_op_remove          remove;
114
        acpi_op_lock            lock;
115
        acpi_op_start           start;
116
        acpi_op_stop            stop;
117
        acpi_op_suspend         suspend;
118
        acpi_op_resume          resume;
119
        acpi_op_scan            scan;
120
        acpi_op_bind            bind;
121
};
122
 
123
struct acpi_driver {
124
        struct list_head        node;
125
        char                    name[80];
126
        char                    class[80];
127
        int                     references;
128
        char                    *ids;           /* Supported Hardware IDs */
129
        struct acpi_device_ops  ops;
130
};
131
 
132
/*
133
 * ACPI Device
134
 * -----------
135
 */
136
 
137
/* Status (_STA) */
138
 
139
struct acpi_device_status {
140
        u32                     present:1;
141
        u32                     enabled:1;
142
        u32                     show_in_ui:1;
143
        u32                     functional:1;
144
        u32                     battery_present:1;
145
        u32                     reserved:27;
146
};
147
 
148
 
149
/* Flags */
150
 
151
struct acpi_device_flags {
152
        u32                     dynamic_status:1;
153
        u32                     hardware_id:1;
154
        u32                     compatible_ids:1;
155
        u32                     bus_address:1;
156
        u32                     unique_id:1;
157
        u32                     removable:1;
158
        u32                     ejectable:1;
159
        u32                     lockable:1;
160
        u32                     suprise_removal_ok:1;
161
        u32                     power_manageable:1;
162
        u32                     performance_manageable:1;
163
        u32                     reserved:21;
164
};
165
 
166
 
167
/* File System */
168
 
169
struct acpi_device_dir {
170
        struct proc_dir_entry   *entry;
171
};
172
 
173
#define acpi_device_dir(d)      ((d)->dir.entry)
174
 
175
 
176
/* Plug and Play */
177
 
178
typedef char                    acpi_bus_id[5];
179
typedef unsigned long           acpi_bus_address;
180
typedef char                    acpi_hardware_id[9];
181
typedef char                    acpi_unique_id[9];
182
typedef char                    acpi_device_name[40];
183
typedef char                    acpi_device_class[20];
184
 
185
struct acpi_device_pnp {
186
        acpi_bus_id             bus_id;                        /* Object name */
187
        acpi_bus_address        bus_address;                          /* _ADR */
188
        acpi_hardware_id        hardware_id;                          /* _HID */
189
        struct acpi_compatible_id_list *cid_list;                    /* _CIDs */
190
        acpi_unique_id          unique_id;                            /* _UID */
191
        acpi_device_name        device_name;             /* Driver-determined */
192
        acpi_device_class       device_class;            /*        "          */
193
};
194
 
195
#define acpi_device_bid(d)      ((d)->pnp.bus_id)
196
#define acpi_device_adr(d)      ((d)->pnp.bus_address)
197
#define acpi_device_hid(d)      ((d)->pnp.hardware_id)
198
#define acpi_device_uid(d)      ((d)->pnp.unique_id)
199
#define acpi_device_name(d)     ((d)->pnp.device_name)
200
#define acpi_device_class(d)    ((d)->pnp.device_class)
201
 
202
 
203
/* Power Management */
204
 
205
struct acpi_device_power_flags {
206
        u32                     explicit_get:1;              /* _PSC present? */
207
        u32                     power_resources:1;         /* Power resources */
208
        u32                     inrush_current:1;         /* Serialize Dx->D0 */
209
        u32                     wake_capable:1;          /* Wakeup supported? */
210
        u32                     wake_enabled:1;         /* Enabled for wakeup */
211
        u32                     power_removed:1;           /* Optimize Dx->D0 */
212
        u32                     reserved:26;
213
};
214
 
215
struct acpi_device_power_state {
216
        struct {
217
                u8                      valid:1;
218
                u8                      explicit_set:1;      /* _PSx present? */
219
                u8                      reserved:6;
220
        }                       flags;
221
        int                     power;            /* % Power (compared to D0) */
222
        int                     latency;        /* Dx->D0 time (microseconds) */
223
        struct acpi_handle_list resources;      /* Power resources referenced */
224
};
225
 
226
struct acpi_device_power {
227
        int                     state;                       /* Current state */
228
        struct acpi_device_power_flags flags;
229
        struct acpi_device_power_state states[4];     /* Power states (D0-D3) */
230
};
231
 
232
 
233
/* Performance Management */
234
 
235
struct acpi_device_perf_flags {
236
        u8                      reserved:8;
237
};
238
 
239
struct acpi_device_perf_state {
240
        struct {
241
                u8                      valid:1;
242
                u8                      reserved:7;
243
        }                       flags;
244
        u8                      power;            /* % Power (compared to P0) */
245
        u8                      performance;      /* % Performance (    "   ) */
246
        int                     latency;        /* Px->P0 time (microseconds) */
247
};
248
 
249
struct acpi_device_perf {
250
        int                     state;
251
        struct acpi_device_perf_flags flags;
252
        int                     state_count;
253
        struct acpi_device_perf_state *states;
254
};
255
 
256
 
257
/* Device */
258
 
259
struct acpi_device {
260
        acpi_handle             handle;
261
        struct acpi_device      *parent;
262
        struct list_head        children;
263
        struct list_head        node;
264
        struct acpi_device_status status;
265
        struct acpi_device_flags flags;
266
        struct acpi_device_pnp  pnp;
267
        struct acpi_device_power power;
268
        struct acpi_device_perf performance;
269
        struct acpi_device_dir  dir;
270
        struct acpi_device_ops  ops;
271
        struct acpi_driver      *driver;
272
        void                    *driver_data;
273
#ifdef CONFIG_LDM
274
        struct device           dev;
275
#endif
276
};
277
 
278
#define acpi_driver_data(d)     ((d)->driver_data)
279
 
280
 
281
/*
282
 * Events
283
 * ------
284
 */
285
 
286
struct acpi_bus_event {
287
        struct list_head        node;
288
        acpi_device_class       device_class;
289
        acpi_bus_id             bus_id;
290
        u32                     type;
291
        u32                     data;
292
};
293
 
294
 
295
/*
296
 * External Functions
297
 */
298
 
299
int acpi_bus_get_device(acpi_handle, struct acpi_device **device);
300
int acpi_bus_get_status (struct acpi_device *device);
301
int acpi_bus_get_power (acpi_handle handle, int *state);
302
int acpi_bus_set_power (acpi_handle handle, int state);
303
int acpi_bus_generate_event (struct acpi_device *device, u8 type, int data);
304
int acpi_bus_receive_event (struct acpi_bus_event *event);
305
int acpi_bus_register_driver (struct acpi_driver *driver);
306
int acpi_bus_unregister_driver (struct acpi_driver *driver);
307
int acpi_bus_scan (struct acpi_device *device);
308
int acpi_init (void);
309
void acpi_exit (void);
310
 
311
 
312
#endif /*CONFIG_ACPI_BUS*/
313
 
314
#endif /*__ACPI_BUS_H__*/

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.