Blame view

include/acpi/acpi_bus.h 11.1 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
  /*
   *  acpi_bus.h - ACPI Bus Driver ($Revision: 22 $)
   *
   *  Copyright (C) 2001, 2002 Andy Grover <andrew.grover@intel.com>
   *  Copyright (C) 2001, 2002 Paul Diefenbaugh <paul.s.diefenbaugh@intel.com>
   *
   * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   *
   *  This program is free software; you can redistribute it and/or modify
   *  it under the terms of the GNU General Public License as published by
   *  the Free Software Foundation; either version 2 of the License, or (at
   *  your option) any later version.
   *
   *  This program is distributed in the hope that it will be useful, but
   *  WITHOUT ANY WARRANTY; without even the implied warranty of
   *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   *  General Public License for more details.
   *
   *  You should have received a copy of the GNU General Public License along
   *  with this program; if not, write to the Free Software Foundation, Inc.,
   *  59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
   *
   * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   */
  
  #ifndef __ACPI_BUS_H__
  #define __ACPI_BUS_H__
5b3272655   Patrick Mochel   ACPI: create acpi...
28
  #include <linux/device.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
29
30
  
  #include <acpi/acpi.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
31
32
33
  /* TBD: Make dynamic */
  #define ACPI_MAX_HANDLES	10
  struct acpi_handle_list {
4be44fcd3   Len Brown   [ACPI] Lindent al...
34
35
  	u32 count;
  	acpi_handle handles[ACPI_MAX_HANDLES];
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
36
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
37
38
  /* acpi_utils.h */
  acpi_status
4be44fcd3   Len Brown   [ACPI] Lindent al...
39
40
  acpi_extract_package(union acpi_object *package,
  		     struct acpi_buffer *format, struct acpi_buffer *buffer);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
41
  acpi_status
4be44fcd3   Len Brown   [ACPI] Lindent al...
42
43
  acpi_evaluate_integer(acpi_handle handle,
  		      acpi_string pathname,
27663c585   Matthew Wilcox   ACPI: Change acpi...
44
  		      struct acpi_object_list *arguments, unsigned long long *data);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
45
  acpi_status
4be44fcd3   Len Brown   [ACPI] Lindent al...
46
47
48
49
  acpi_evaluate_reference(acpi_handle handle,
  			acpi_string pathname,
  			struct acpi_object_list *arguments,
  			struct acpi_handle_list *list);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
50

76f585848   Len Brown   [ACPI] delete CON...
51
  #ifdef CONFIG_ACPI
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
52
53
54
55
  
  #include <linux/proc_fs.h>
  
  #define ACPI_BUS_FILE_ROOT	"acpi"
4be44fcd3   Len Brown   [ACPI] Lindent al...
56
  extern struct proc_dir_entry *acpi_root_dir;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
57
58
  
  enum acpi_bus_removal_type {
4be44fcd3   Len Brown   [ACPI] Lindent al...
59
  	ACPI_BUS_REMOVAL_NORMAL = 0,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
60
61
62
63
64
65
  	ACPI_BUS_REMOVAL_EJECT,
  	ACPI_BUS_REMOVAL_SUPRISE,
  	ACPI_BUS_REMOVAL_TYPE_COUNT
  };
  
  enum acpi_bus_device_type {
4be44fcd3   Len Brown   [ACPI] Lindent al...
66
  	ACPI_BUS_TYPE_DEVICE = 0,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
67
68
69
  	ACPI_BUS_TYPE_POWER,
  	ACPI_BUS_TYPE_PROCESSOR,
  	ACPI_BUS_TYPE_THERMAL,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
70
71
72
73
74
75
76
  	ACPI_BUS_TYPE_POWER_BUTTON,
  	ACPI_BUS_TYPE_SLEEP_BUTTON,
  	ACPI_BUS_DEVICE_TYPE_COUNT
  };
  
  struct acpi_driver;
  struct acpi_device;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
77
78
79
80
  /*
   * ACPI Driver
   * -----------
   */
4be44fcd3   Len Brown   [ACPI] Lindent al...
81
82
  typedef int (*acpi_op_add) (struct acpi_device * device);
  typedef int (*acpi_op_remove) (struct acpi_device * device, int type);
4be44fcd3   Len Brown   [ACPI] Lindent al...
83
  typedef int (*acpi_op_start) (struct acpi_device * device);
fd3509436   Len Brown   ACPICA: Lindent
84
85
  typedef int (*acpi_op_suspend) (struct acpi_device * device,
  				pm_message_t state);
5d9464a46   Patrick Mochel   ACPI: add ACPI bu...
86
  typedef int (*acpi_op_resume) (struct acpi_device * device);
4be44fcd3   Len Brown   [ACPI] Lindent al...
87
88
  typedef int (*acpi_op_bind) (struct acpi_device * device);
  typedef int (*acpi_op_unbind) (struct acpi_device * device);
46ec8598f   Bjorn Helgaas   ACPI: support acp...
89
  typedef void (*acpi_op_notify) (struct acpi_device * device, u32 event);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
90

3fb02738b   Rajesh Shah   [PATCH] acpi brid...
91
  struct acpi_bus_ops {
4be44fcd3   Len Brown   [ACPI] Lindent al...
92
  	u32 acpi_op_add:1;
4be44fcd3   Len Brown   [ACPI] Lindent al...
93
  	u32 acpi_op_start:1;
3fb02738b   Rajesh Shah   [PATCH] acpi brid...
94
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
95
  struct acpi_device_ops {
4be44fcd3   Len Brown   [ACPI] Lindent al...
96
97
  	acpi_op_add add;
  	acpi_op_remove remove;
4be44fcd3   Len Brown   [ACPI] Lindent al...
98
  	acpi_op_start start;
4be44fcd3   Len Brown   [ACPI] Lindent al...
99
100
  	acpi_op_suspend suspend;
  	acpi_op_resume resume;
4be44fcd3   Len Brown   [ACPI] Lindent al...
101
102
  	acpi_op_bind bind;
  	acpi_op_unbind unbind;
46ec8598f   Bjorn Helgaas   ACPI: support acp...
103
  	acpi_op_notify notify;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
104
  };
6d2781310   Bjorn Helgaas   ACPI: allow drive...
105
  #define ACPI_DRIVER_ALL_NOTIFY_EVENTS	0x1	/* system AND device events */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
106
  struct acpi_driver {
4be44fcd3   Len Brown   [ACPI] Lindent al...
107
108
  	char name[80];
  	char class[80];
8c8eb78f6   Thomas Renninger   ACPI: autoload mo...
109
  	const struct acpi_device_id *ids; /* Supported Hardware IDs */
6d2781310   Bjorn Helgaas   ACPI: allow drive...
110
  	unsigned int flags;
4be44fcd3   Len Brown   [ACPI] Lindent al...
111
  	struct acpi_device_ops ops;
d43ec68e9   Patrick Mochel   ACPI: add device_...
112
  	struct device_driver drv;
1890a97ab   Patrick Mochel   ACPI: change regi...
113
  	struct module *owner;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
114
115
116
117
118
119
120
121
122
123
  };
  
  /*
   * ACPI Device
   * -----------
   */
  
  /* Status (_STA) */
  
  struct acpi_device_status {
4be44fcd3   Len Brown   [ACPI] Lindent al...
124
125
126
127
128
129
  	u32 present:1;
  	u32 enabled:1;
  	u32 show_in_ui:1;
  	u32 functional:1;
  	u32 battery_present:1;
  	u32 reserved:27;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
130
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
131
132
133
  /* Flags */
  
  struct acpi_device_flags {
4be44fcd3   Len Brown   [ACPI] Lindent al...
134
  	u32 dynamic_status:1;
4be44fcd3   Len Brown   [ACPI] Lindent al...
135
  	u32 bus_address:1;
4be44fcd3   Len Brown   [ACPI] Lindent al...
136
137
138
139
140
141
  	u32 removable:1;
  	u32 ejectable:1;
  	u32 lockable:1;
  	u32 suprise_removal_ok:1;
  	u32 power_manageable:1;
  	u32 performance_manageable:1;
d57d09a48   Rafael J. Wysocki   ACPI: Drop device...
142
  	u32 reserved:24;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
143
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
144
145
146
  /* File System */
  
  struct acpi_device_dir {
4be44fcd3   Len Brown   [ACPI] Lindent al...
147
  	struct proc_dir_entry *entry;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
148
149
150
  };
  
  #define acpi_device_dir(d)	((d)->dir.entry)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
151
  /* Plug and Play */
24c5c4c2f   Zhao Yakui   ACPI: increase si...
152
  typedef char acpi_bus_id[8];
4be44fcd3   Len Brown   [ACPI] Lindent al...
153
  typedef unsigned long acpi_bus_address;
4be44fcd3   Len Brown   [ACPI] Lindent al...
154
155
  typedef char acpi_device_name[40];
  typedef char acpi_device_class[20];
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
156

7f47fa6c2   Bjorn Helgaas   ACPI: maintain a ...
157
158
159
160
  struct acpi_hardware_id {
  	struct list_head list;
  	char *id;
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
161
  struct acpi_device_pnp {
4be44fcd3   Len Brown   [ACPI] Lindent al...
162
163
  	acpi_bus_id bus_id;	/* Object name */
  	acpi_bus_address bus_address;	/* _ADR */
15b8dd53f   Bob Moore   ACPICA: Major upd...
164
  	char *unique_id;	/* _UID */
7f47fa6c2   Bjorn Helgaas   ACPI: maintain a ...
165
  	struct list_head ids;		/* _HID and _CIDs */
4be44fcd3   Len Brown   [ACPI] Lindent al...
166
167
  	acpi_device_name device_name;	/* Driver-determined */
  	acpi_device_class device_class;	/*        "          */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
168
169
170
171
  };
  
  #define acpi_device_bid(d)	((d)->pnp.bus_id)
  #define acpi_device_adr(d)	((d)->pnp.bus_address)
620e112cf   Thomas Renninger   ACPI/PNP: A HID v...
172
  const char *acpi_device_hid(struct acpi_device *device);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
173
174
  #define acpi_device_name(d)	((d)->pnp.device_name)
  #define acpi_device_class(d)	((d)->pnp.device_class)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
175
176
177
  /* Power Management */
  
  struct acpi_device_power_flags {
4be44fcd3   Len Brown   [ACPI] Lindent al...
178
179
180
181
182
  	u32 explicit_get:1;	/* _PSC present? */
  	u32 power_resources:1;	/* Power resources */
  	u32 inrush_current:1;	/* Serialize Dx->D0 */
  	u32 power_removed:1;	/* Optimize Dx->D0 */
  	u32 reserved:28;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
183
184
185
186
  };
  
  struct acpi_device_power_state {
  	struct {
4be44fcd3   Len Brown   [ACPI] Lindent al...
187
188
189
190
191
192
193
  		u8 valid:1;
  		u8 explicit_set:1;	/* _PSx present? */
  		u8 reserved:6;
  	} flags;
  	int power;		/* % Power (compared to D0) */
  	int latency;		/* Dx->D0 time (microseconds) */
  	struct acpi_handle_list resources;	/* Power resources referenced */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
194
195
196
  };
  
  struct acpi_device_power {
4be44fcd3   Len Brown   [ACPI] Lindent al...
197
  	int state;		/* Current state */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
198
  	struct acpi_device_power_flags flags;
b4a03b9aa   Lin Ming   ACPI: Fixes devic...
199
  	struct acpi_device_power_state states[ACPI_D_STATE_COUNT];	/* Power states (D0-D3Cold) */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
200
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
201
202
203
  /* Performance Management */
  
  struct acpi_device_perf_flags {
4be44fcd3   Len Brown   [ACPI] Lindent al...
204
  	u8 reserved:8;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
205
206
207
208
  };
  
  struct acpi_device_perf_state {
  	struct {
4be44fcd3   Len Brown   [ACPI] Lindent al...
209
210
211
212
213
214
  		u8 valid:1;
  		u8 reserved:7;
  	} flags;
  	u8 power;		/* % Power (compared to P0) */
  	u8 performance;		/* % Performance (    "   ) */
  	int latency;		/* Px->P0 time (microseconds) */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
215
216
217
  };
  
  struct acpi_device_perf {
4be44fcd3   Len Brown   [ACPI] Lindent al...
218
  	int state;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
219
  	struct acpi_device_perf_flags flags;
4be44fcd3   Len Brown   [ACPI] Lindent al...
220
  	int state_count;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
221
222
223
224
225
  	struct acpi_device_perf_state *states;
  };
  
  /* Wakeup Management */
  struct acpi_device_wakeup_flags {
4be44fcd3   Len Brown   [ACPI] Lindent al...
226
227
  	u8 valid:1;		/* Can successfully enable wakeup? */
  	u8 run_wake:1;		/* Run-Wake GPE devices */
b67ea7617   Rafael J. Wysocki   PCI / ACPI / PM: ...
228
  	u8 notifier_present:1;  /* Wake-up notify handler has been installed */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
229
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
230
  struct acpi_device_wakeup {
4be44fcd3   Len Brown   [ACPI] Lindent al...
231
  	acpi_handle gpe_device;
439913fff   Lin Ming   ACPI: replace acp...
232
233
  	u64 gpe_number;
  	u64 sleep_state;
4be44fcd3   Len Brown   [ACPI] Lindent al...
234
  	struct acpi_handle_list resources;
4be44fcd3   Len Brown   [ACPI] Lindent al...
235
  	struct acpi_device_wakeup_flags flags;
9b83ccd2f   Rafael J. Wysocki   ACPI PM: Replace ...
236
  	int prepare_count;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
237
238
239
240
241
  };
  
  /* Device */
  
  struct acpi_device {
caaa6efb3   Bjorn Helgaas   ACPI: save device...
242
243
  	int device_type;
  	acpi_handle handle;		/* no handle for fixed hardware */
4be44fcd3   Len Brown   [ACPI] Lindent al...
244
245
246
247
  	struct acpi_device *parent;
  	struct list_head children;
  	struct list_head node;
  	struct list_head wakeup_list;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
248
249
  	struct acpi_device_status status;
  	struct acpi_device_flags flags;
4be44fcd3   Len Brown   [ACPI] Lindent al...
250
  	struct acpi_device_pnp pnp;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
251
252
  	struct acpi_device_power power;
  	struct acpi_device_wakeup wakeup;
4be44fcd3   Len Brown   [ACPI] Lindent al...
253
254
255
256
257
  	struct acpi_device_perf performance;
  	struct acpi_device_dir dir;
  	struct acpi_device_ops ops;
  	struct acpi_driver *driver;
  	void *driver_data;
5b3272655   Patrick Mochel   ACPI: create acpi...
258
  	struct device dev;
c4168bff3   Li Shaohua   ACPI: add acpi_bu...
259
  	struct acpi_bus_ops bus_ops;	/* workaround for different code path for hotplug */
fd3509436   Len Brown   ACPICA: Lindent
260
  	enum acpi_bus_removal_type removal_type;	/* indicate for different removal type */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
261
  };
db89b4f0d   Pavel Machek   ACPI: catch calls...
262
263
264
265
  static inline void *acpi_driver_data(struct acpi_device *d)
  {
  	return d->driver_data;
  }
d43ec68e9   Patrick Mochel   ACPI: add device_...
266
267
  #define to_acpi_device(d)	container_of(d, struct acpi_device, dev)
  #define to_acpi_driver(d)	container_of(d, struct acpi_driver, drv)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
268

55955aad7   David Brownell   PNPACPI sets pnpd...
269
270
  /* acpi_device.dev.bus == &acpi_bus_type */
  extern struct bus_type acpi_bus_type;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
271
272
273
274
275
276
  /*
   * Events
   * ------
   */
  
  struct acpi_bus_event {
4be44fcd3   Len Brown   [ACPI] Lindent al...
277
278
279
280
281
  	struct list_head node;
  	acpi_device_class device_class;
  	acpi_bus_id bus_id;
  	u32 type;
  	u32 data;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
282
  };
99e0d2fc6   Greg Kroah-Hartman   kobject: convert ...
283
  extern struct kobject *acpi_kobj;
962ce8ca0   Zhang Rui   ACPI: don't dupli...
284
  extern int acpi_bus_generate_netlink_event(const char*, const char*, u8, int);
8e4319c42   Bob Moore   ACPICA: Fix sever...
285
  void acpi_bus_private_data_handler(acpi_handle, void *);
207339398   Zhang Rui   ACPI: attach ther...
286
  int acpi_bus_get_private_data(acpi_handle, void **);
9ee85241f   Zhang Rui   ACPI: create noti...
287
288
289
  extern int acpi_notifier_call_chain(struct acpi_device *, u32, u32);
  extern int register_acpi_notifier(struct notifier_block *);
  extern int unregister_acpi_notifier(struct notifier_block *);
6bd00a61a   Shaohua Li   ACPI: introduce n...
290
291
292
  
  extern int register_acpi_bus_notifier(struct notifier_block *nb);
  extern void unregister_acpi_bus_notifier(struct notifier_block *nb);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
293
294
295
296
297
  /*
   * External Functions
   */
  
  int acpi_bus_get_device(acpi_handle handle, struct acpi_device **device);
8e4319c42   Bob Moore   ACPICA: Fix sever...
298
  void acpi_bus_data_handler(acpi_handle handle, void *context);
402ac5361   Bjorn Helgaas   ACPI: add acpi_bu...
299
300
  acpi_status acpi_bus_get_status_handle(acpi_handle handle,
  				       unsigned long long *sta);
4be44fcd3   Len Brown   [ACPI] Lindent al...
301
  int acpi_bus_get_status(struct acpi_device *device);
4be44fcd3   Len Brown   [ACPI] Lindent al...
302
  int acpi_bus_set_power(acpi_handle handle, int state);
25eed4072   Rafael J. Wysocki   ACPI / PM: Add fu...
303
  int acpi_bus_update_power(acpi_handle handle, int *state_p);
3737b2b10   Rafael J. Wysocki   ACPI: Introduce a...
304
  bool acpi_bus_power_manageable(acpi_handle handle);
eb9d0fe40   Rafael J. Wysocki   PCI ACPI: Rework ...
305
  bool acpi_bus_can_wakeup(acpi_handle handle);
14e04fb34   Len Brown   ACPI: Schedule /p...
306
307
  #ifdef CONFIG_ACPI_PROC_EVENT
  int acpi_bus_generate_proc_event(struct acpi_device *device, u8 type, int data);
8db85d4c9   Alexey Starikovskiy   ACPI: Add acpi_bu...
308
  int acpi_bus_generate_proc_event4(const char *class, const char *bid, u8 type, int data);
4be44fcd3   Len Brown   [ACPI] Lindent al...
309
  int acpi_bus_receive_event(struct acpi_bus_event *event);
14e04fb34   Len Brown   ACPI: Schedule /p...
310
311
312
313
  #else
  static inline int acpi_bus_generate_proc_event(struct acpi_device *device, u8 type, int data)
  	{ return 0; }
  #endif
4be44fcd3   Len Brown   [ACPI] Lindent al...
314
  int acpi_bus_register_driver(struct acpi_driver *driver);
06ea8e08a   Bjorn Helgaas   ACPI: acpi_bus_un...
315
  void acpi_bus_unregister_driver(struct acpi_driver *driver);
4be44fcd3   Len Brown   [ACPI] Lindent al...
316
317
  int acpi_bus_add(struct acpi_device **child, struct acpi_device *parent,
  		 acpi_handle handle, int type);
ceaba6630   Kristen Accardi   [PATCH] acpi: exp...
318
  int acpi_bus_trim(struct acpi_device *start, int rmdevice);
4be44fcd3   Len Brown   [ACPI] Lindent al...
319
  int acpi_bus_start(struct acpi_device *device);
fd3509436   Len Brown   ACPICA: Lindent
320
  acpi_status acpi_bus_get_ejd(acpi_handle handle, acpi_handle * ejd);
8c8eb78f6   Thomas Renninger   ACPI: autoload mo...
321
322
  int acpi_match_device_ids(struct acpi_device *device,
  			  const struct acpi_device_id *ids);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
323
324
  int acpi_create_dir(struct acpi_device *);
  void acpi_remove_dir(struct acpi_device *);
4e10d12a3   David Shaohua Li   [ACPI] Bind PCI d...
325
326
327
  /*
   * Bind physical devices with ACPI devices
   */
4e10d12a3   David Shaohua Li   [ACPI] Bind PCI d...
328
  struct acpi_bus_type {
4be44fcd3   Len Brown   [ACPI] Lindent al...
329
330
331
332
  	struct list_head list;
  	struct bus_type *bus;
  	/* For general devices under the bus */
  	int (*find_device) (struct device *, acpi_handle *);
4e10d12a3   David Shaohua Li   [ACPI] Bind PCI d...
333
  	/* For bridges, such as PCI root bridge, IDE controller */
4be44fcd3   Len Brown   [ACPI] Lindent al...
334
  	int (*find_bridge) (struct device *, acpi_handle *);
4e10d12a3   David Shaohua Li   [ACPI] Bind PCI d...
335
336
337
338
  };
  int register_acpi_bus_type(struct acpi_bus_type *);
  int unregister_acpi_bus_type(struct acpi_bus_type *);
  struct device *acpi_get_physical_device(acpi_handle);
22c13f9d8   Thomas Renninger   ACPI: video: Igno...
339

76d56de57   Alex Chiang   ACPI: export acpi...
340
341
342
343
344
345
  struct acpi_pci_root {
  	struct list_head node;
  	struct acpi_device * device;
  	struct acpi_pci_id id;
  	struct pci_bus *bus;
  	u16 segment;
6ad95513d   Bjorn Helgaas   ACPI: pci_root: s...
346
  	struct resource secondary;	/* downstream bus range */
76d56de57   Alex Chiang   ACPI: export acpi...
347
348
349
  
  	u32 osc_support_set;	/* _OSC state of support bits */
  	u32 osc_control_set;	/* _OSC state of control bits */
76d56de57   Alex Chiang   ACPI: export acpi...
350
  };
4e10d12a3   David Shaohua Li   [ACPI] Bind PCI d...
351
  /* helper */
439913fff   Lin Ming   ACPI: replace acp...
352
  acpi_handle acpi_get_child(acpi_handle, u64);
275582031   Alexander Chiang   ACPI: Introduce a...
353
  int acpi_is_root_bridge(acpi_handle);
4e10d12a3   David Shaohua Li   [ACPI] Bind PCI d...
354
  acpi_handle acpi_get_pci_rootbridge_handle(unsigned int, unsigned int);
76d56de57   Alex Chiang   ACPI: export acpi...
355
  struct acpi_pci_root *acpi_pci_find_root(acpi_handle handle);
465ae641e   Benjamin Herrenschmidt   ACPI: Change ACPI...
356
  #define DEVICE_ACPI_HANDLE(dev) ((acpi_handle)((dev)->archdata.acpi_handle))
4e10d12a3   David Shaohua Li   [ACPI] Bind PCI d...
357

b67ea7617   Rafael J. Wysocki   PCI / ACPI / PM: ...
358
359
  int acpi_enable_wakeup_device_power(struct acpi_device *dev, int state);
  int acpi_disable_wakeup_device_power(struct acpi_device *dev);
aa3386015   Rafael J. Wysocki   PM: Remove CONFIG...
360
  #ifdef CONFIG_PM
06166780e   David Brownell   ACPI PM: acpi_pm_...
361
  int acpi_pm_device_sleep_state(struct device *, int *);
761afb869   Rafael J. Wysocki   ACPI / PM: Fix pr...
362
  #else
06166780e   David Brownell   ACPI PM: acpi_pm_...
363
  static inline int acpi_pm_device_sleep_state(struct device *d, int *p)
296699de6   Rafael J. Wysocki   Introduce CONFIG_...
364
365
366
367
368
  {
  	if (p)
  		*p = ACPI_STATE_D0;
  	return ACPI_STATE_D3;
  }
761afb869   Rafael J. Wysocki   ACPI / PM: Fix pr...
369
370
371
372
373
  #endif
  
  #ifdef CONFIG_PM_SLEEP
  int acpi_pm_device_sleep_wake(struct device *, bool);
  #else
f7a1b8609   David Howells   Fix acpi_pm_devic...
374
375
376
377
  static inline int acpi_pm_device_sleep_wake(struct device *dev, bool enable)
  {
  	return -ENODEV;
  }
761afb869   Rafael J. Wysocki   ACPI / PM: Fix pr...
378
  #endif
fd4aff1a2   Shaohua Li   ACPI: Add acpi_pm...
379

fd3509436   Len Brown   ACPICA: Lindent
380
  #endif				/* CONFIG_ACPI */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
381
382
  
  #endif /*__ACPI_BUS_H__*/