Simplify source file names and go from .c to .cpp
[haiku.git] / src / add-ons / kernel / bus_managers / acpi / ACPIPrivate.h
blob5bf47e5271428f7f8cf48079020a8eb8cf8c50c3
1 /*
2 * Copyright 2009, Clemens Zeidler. All rights reserved.
3 * Copyright 2006, Jérôme Duval. All rights reserved.
4 * Distributed under the terms of the MIT License.
5 */
6 #ifndef __ACPI_PRIV_H__
7 #define __ACPI_PRIV_H__
10 #include <sys/cdefs.h>
12 #include <device_manager.h>
13 #include <KernelExport.h>
14 #include <ACPI.h>
15 #include <PCI.h>
17 // name of ACPI root module
18 #define ACPI_ROOT_MODULE_NAME "bus_managers/acpi/root/driver_v1"
20 // name of ACPI device modules
21 #define ACPI_DEVICE_MODULE_NAME "bus_managers/acpi/driver_v1"
23 // name of the ACPI namespace device
24 #define ACPI_NS_DUMP_DEVICE_MODULE_NAME "bus_managers/acpi/namespace/device_v1"
27 __BEGIN_DECLS
29 extern device_manager_info* gDeviceManager;
30 extern pci_module_info* gPCIManager;
32 // information about one ACPI device
33 typedef struct acpi_device_cookie {
34 char* path; // path
35 acpi_handle handle;
36 uint32 type; // type
37 device_node* node;
38 char name[32]; // name (for fast log)
39 } acpi_device_cookie;
42 // ACPI root.
43 typedef struct acpi_root_info {
44 driver_module_info info;
46 status_t (*get_handle)(acpi_handle parent, const char *pathname,
47 acpi_handle *retHandle);
49 /* Global Lock */
51 status_t (*acquire_global_lock)(uint16 timeout, uint32 *handle);
52 status_t (*release_global_lock)(uint32 handle);
54 /* Notify Handler */
56 status_t (*install_notify_handler)(acpi_handle device,
57 uint32 handlerType, acpi_notify_handler handler,
58 void *context);
59 status_t (*remove_notify_handler)(acpi_handle device,
60 uint32 handlerType, acpi_notify_handler handler);
62 /* GPE Handler */
63 status_t (*update_all_gpes)();
64 status_t (*enable_gpe)(acpi_handle handle, uint32 gpeNumber);
65 status_t (*disable_gpe)(acpi_handle handle, uint32 gpeNumber);
66 status_t (*clear_gpe)(acpi_handle handle, uint32 gpeNumber);
67 status_t (*set_gpe)(acpi_handle handle, uint32 gpeNumber,
68 uint8 action);
69 status_t (*finish_gpe)(acpi_handle handle, uint32 gpeNumber);
70 status_t (*install_gpe_handler)(acpi_handle handle, uint32 gpeNumber,
71 uint32 type, acpi_gpe_handler handler, void *data);
72 status_t (*remove_gpe_handler)(acpi_handle handle, uint32 gpeNumber,
73 acpi_gpe_handler address);
75 /* Address Space Handler */
77 status_t (*install_address_space_handler)(acpi_handle handle,
78 uint32 spaceId,
79 acpi_adr_space_handler handler,
80 acpi_adr_space_setup setup, void *data);
81 status_t (*remove_address_space_handler)(acpi_handle handle,
82 uint32 spaceId,
83 acpi_adr_space_handler handler);
85 /* Fixed Event Management */
87 void (*enable_fixed_event)(uint32 event);
88 void (*disable_fixed_event)(uint32 event);
90 uint32 (*fixed_event_status) (uint32 event);
91 /* Returns 1 if event set, 0 otherwise */
92 void (*reset_fixed_event) (uint32 event);
94 status_t (*install_fixed_event_handler)(uint32 event,
95 interrupt_handler *handler, void *data);
96 status_t (*remove_fixed_event_handler)(uint32 event,
97 interrupt_handler *handler);
99 /* Namespace Access */
101 status_t (*get_next_entry)(uint32 objectType, const char *base,
102 char *result, size_t length, void **_counter);
103 status_t (*get_device)(const char *hid, uint32 index, char *result,
104 size_t resultLength);
106 status_t (*get_device_hid)(const char *path, char *hid,
107 size_t hidLength);
108 uint32 (*get_object_type)(const char *path);
109 status_t (*get_object)(const char *path,
110 acpi_object_type **_returnValue);
111 status_t (*get_object_typed)(const char *path,
112 acpi_object_type **_returnValue, uint32 objectType);
113 status_t (*ns_handle_to_pathname)(acpi_handle targetHandle,
114 acpi_data *buffer);
116 /* Control method execution and data acquisition */
118 status_t (*evaluate_object)(const char* object,
119 acpi_object_type *returnValue, size_t bufferLength);
120 status_t (*evaluate_method)(acpi_handle handle, const char *method,
121 acpi_objects *args, acpi_data *returnValue);
123 /* Resource info */
125 status_t (*get_irq_routing_table)(acpi_handle busDeviceHandle,
126 acpi_data *retBuffer);
127 status_t (*get_current_resources)(acpi_handle busDeviceHandle,
128 acpi_data *retBuffer);
129 status_t (*get_possible_resources)(acpi_handle busDeviceHandle,
130 acpi_data *retBuffer);
131 status_t (*set_current_resources)(acpi_handle busDeviceHandle,
132 acpi_data *buffer);
134 /* Power state setting */
136 status_t (*prepare_sleep_state)(uint8 state, void (*wakeFunc)(void),
137 size_t size);
138 status_t (*enter_sleep_state)(uint8 state, uint8 flags);
139 status_t (*reboot)(void);
141 /* Table Access */
142 status_t (*get_table)(const char *signature, uint32 instance,
143 void **tableHeader);
144 } acpi_root_info;
147 extern struct acpi_module_info gACPIModule;
149 extern struct device_module_info acpi_ns_dump_module;
151 extern struct driver_module_info embedded_controller_driver_module;
152 extern struct device_module_info embedded_controller_device_module;
154 extern acpi_device_module_info gACPIDeviceModule;
157 status_t get_handle(acpi_handle parent, const char* pathname,
158 acpi_handle* retHandle);
160 status_t acquire_global_lock(uint16 timeout, uint32* handle);
161 status_t release_global_lock(uint32 handle);
163 status_t install_notify_handler(acpi_handle device, uint32 handlerType,
164 acpi_notify_handler handler, void* context);
165 status_t remove_notify_handler(acpi_handle device, uint32 handlerType,
166 acpi_notify_handler handler);
168 status_t update_all_gpes();
169 status_t enable_gpe(acpi_handle handle, uint32 gpeNumber);
170 status_t disable_gpe(acpi_handle handle, uint32 gpeNumber);
171 status_t clear_gpe(acpi_handle handle, uint32 gpeNumber);
172 status_t set_gpe(acpi_handle handle, uint32 gpeNumber, uint8 action);
173 status_t finish_gpe(acpi_handle handle, uint32 gpeNumber);
174 status_t install_gpe_handler(acpi_handle handle, uint32 gpeNumber, uint32 type,
175 acpi_gpe_handler handler, void* data);
176 status_t remove_gpe_handler(acpi_handle handle, uint32 gpeNumber,
177 acpi_gpe_handler address);
179 status_t install_address_space_handler(acpi_handle handle, uint32 spaceID,
180 acpi_adr_space_handler handler, acpi_adr_space_setup setup, void* data);
181 status_t remove_address_space_handler(acpi_handle handle, uint32 spaceID,
182 acpi_adr_space_handler handler);
184 void enable_fixed_event(uint32 event);
185 void disable_fixed_event(uint32 event);
187 uint32 fixed_event_status(uint32 event);
188 void reset_fixed_event(uint32 event);
190 status_t install_fixed_event_handler(uint32 event, interrupt_handler* handler,
191 void* data);
192 status_t remove_fixed_event_handler(uint32 event, interrupt_handler* handler);
194 status_t get_next_entry(uint32 object_type, const char* base, char* result,
195 size_t length, void** _counter);
196 status_t get_device(const char* hid, uint32 index, char* result,
197 size_t resultLength);
199 status_t get_device_hid(const char* path, char* hid, size_t hidLength);
200 uint32 get_object_type(const char* path);
201 status_t get_object(const char* path, acpi_object_type** _returnValue);
202 status_t get_object_typed(const char* path, acpi_object_type** _returnValue,
203 uint32 object_type);
204 status_t ns_handle_to_pathname(acpi_handle targetHandle, acpi_data* buffer);
206 status_t evaluate_object(const char* object, acpi_object_type* returnValue,
207 size_t bufferLength);
208 status_t evaluate_method(acpi_handle handle, const char* method,
209 acpi_objects* args, acpi_data* returnValue);
211 status_t get_irq_routing_table(acpi_handle busDeviceHandle,
212 acpi_data* returnValue);
213 status_t get_current_resources(acpi_handle busDeviceHandle,
214 acpi_data* returnValue);
215 status_t get_possible_resources(acpi_handle busDeviceHandle,
216 acpi_data* returnValue);
217 status_t set_current_resources(acpi_handle busDeviceHandle,
218 acpi_data* buffer);
220 status_t prepare_sleep_state(uint8 state, void (*wakeFunc)(void), size_t size);
221 status_t enter_sleep_state(uint8 state, uint8 flags);
223 status_t reboot(void);
225 status_t get_table(const char* signature, uint32 instance, void** tableHeader);
227 __END_DECLS
230 #endif /* __ACPI_PRIV_H__ */