1 /*
2  *  acpi_drivers.h  ($Revision: 32 $)
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_DRIVERS_H__
27 #define __ACPI_DRIVERS_H__
28 
29 #define ACPI_MAX_STRING			80
30 
31 
32 /* --------------------------------------------------------------------------
33                                     ACPI Bus
34    -------------------------------------------------------------------------- */
35 
36 #define ACPI_BUS_COMPONENT		0x00010000
37 #define ACPI_BUS_CLASS			"system_bus"
38 #define ACPI_BUS_HID			"ACPI_BUS"
39 #define ACPI_BUS_DRIVER_NAME		"ACPI Bus Driver"
40 #define ACPI_BUS_DEVICE_NAME		"System Bus"
41 
42 
43 /* --------------------------------------------------------------------------
44                                   AC Adapter
45    -------------------------------------------------------------------------- */
46 
47 #define ACPI_AC_COMPONENT		0x00020000
48 #define ACPI_AC_CLASS			"ac_adapter"
49 #define ACPI_AC_HID 			"ACPI0003"
50 #define ACPI_AC_DRIVER_NAME		"ACPI AC Adapter Driver"
51 #define ACPI_AC_DEVICE_NAME		"AC Adapter"
52 #define ACPI_AC_FILE_STATE		"state"
53 #define ACPI_AC_NOTIFY_STATUS		0x80
54 #define ACPI_AC_STATUS_OFFLINE		0x00
55 #define ACPI_AC_STATUS_ONLINE		0x01
56 #define ACPI_AC_STATUS_UNKNOWN		0xFF
57 
58 
59 /* --------------------------------------------------------------------------
60                                      Battery
61    -------------------------------------------------------------------------- */
62 
63 #define ACPI_BATTERY_COMPONENT		0x00040000
64 #define ACPI_BATTERY_CLASS		"battery"
65 #define ACPI_BATTERY_HID		"PNP0C0A"
66 #define ACPI_BATTERY_DRIVER_NAME	"ACPI Battery Driver"
67 #define ACPI_BATTERY_DEVICE_NAME	"Battery"
68 #define ACPI_BATTERY_FILE_INFO		"info"
69 #define ACPI_BATTERY_FILE_STATUS	"state"
70 #define ACPI_BATTERY_FILE_ALARM		"alarm"
71 #define ACPI_BATTERY_NOTIFY_STATUS	0x80
72 #define ACPI_BATTERY_NOTIFY_INFO	0x81
73 #define ACPI_BATTERY_UNITS_WATTS	"mW"
74 #define ACPI_BATTERY_UNITS_AMPS		"mA"
75 
76 
77 /* --------------------------------------------------------------------------
78                                       Button
79    -------------------------------------------------------------------------- */
80 
81 #define ACPI_BUTTON_COMPONENT		0x00080000
82 #define ACPI_BUTTON_DRIVER_NAME		"ACPI Button Driver"
83 #define ACPI_BUTTON_CLASS		"button"
84 #define ACPI_BUTTON_FILE_INFO		"info"
85 #define ACPI_BUTTON_FILE_STATE		"state"
86 #define ACPI_BUTTON_TYPE_UNKNOWN	0x00
87 #define ACPI_BUTTON_NOTIFY_STATUS	0x80
88 
89 #define ACPI_BUTTON_SUBCLASS_POWER	"power"
90 #define ACPI_BUTTON_HID_POWER		"PNP0C0C"
91 #define ACPI_BUTTON_HID_POWERF		"ACPI_FPB"
92 #define ACPI_BUTTON_DEVICE_NAME_POWER	"Power Button (CM)"
93 #define ACPI_BUTTON_DEVICE_NAME_POWERF	"Power Button (FF)"
94 #define ACPI_BUTTON_TYPE_POWER		0x01
95 #define ACPI_BUTTON_TYPE_POWERF		0x02
96 
97 #define ACPI_BUTTON_SUBCLASS_SLEEP	"sleep"
98 #define ACPI_BUTTON_HID_SLEEP		"PNP0C0E"
99 #define ACPI_BUTTON_HID_SLEEPF		"ACPI_FSB"
100 #define ACPI_BUTTON_DEVICE_NAME_SLEEP	"Sleep Button (CM)"
101 #define ACPI_BUTTON_DEVICE_NAME_SLEEPF	"Sleep Button (FF)"
102 #define ACPI_BUTTON_TYPE_SLEEP		0x03
103 #define ACPI_BUTTON_TYPE_SLEEPF		0x04
104 
105 #define ACPI_BUTTON_SUBCLASS_LID	"lid"
106 #define ACPI_BUTTON_HID_LID		"PNP0C0D"
107 #define ACPI_BUTTON_DEVICE_NAME_LID	"Lid Switch"
108 #define ACPI_BUTTON_TYPE_LID		0x05
109 
110 int acpi_button_init (void);
111 void acpi_button_exit (void);
112 
113 /* --------------------------------------------------------------------------
114                                 Embedded Controller
115    -------------------------------------------------------------------------- */
116 
117 #define ACPI_EC_COMPONENT		0x00100000
118 #define ACPI_EC_CLASS			"embedded_controller"
119 #define ACPI_EC_HID			"PNP0C09"
120 #define ACPI_EC_DRIVER_NAME		"ACPI Embedded Controller Driver"
121 #define ACPI_EC_DEVICE_NAME		"Embedded Controller"
122 #define ACPI_EC_FILE_INFO		"info"
123 
124 #ifdef CONFIG_ACPI_EC
125 
126 int acpi_ec_ecdt_probe (void);
127 int acpi_ec_init (void);
128 void acpi_ec_exit (void);
129 
130 #endif
131 
132 
133 /* --------------------------------------------------------------------------
134                                        Fan
135    -------------------------------------------------------------------------- */
136 
137 #define ACPI_FAN_COMPONENT		0x00200000
138 #define ACPI_FAN_CLASS			"fan"
139 #define ACPI_FAN_HID			"PNP0C0B"
140 #define ACPI_FAN_DRIVER_NAME		"ACPI Fan Driver"
141 #define ACPI_FAN_DEVICE_NAME		"Fan"
142 #define ACPI_FAN_FILE_STATE		"state"
143 #define ACPI_FAN_NOTIFY_STATUS		0x80
144 
145 
146 /* --------------------------------------------------------------------------
147                                        PCI
148    -------------------------------------------------------------------------- */
149 
150 #ifdef CONFIG_ACPI_PCI
151 
152 #define ACPI_PCI_COMPONENT		0x00400000
153 
154 /* ACPI PCI Root Bridge (pci_root.c) */
155 
156 #define ACPI_PCI_ROOT_CLASS		"pci_bridge"
157 #define ACPI_PCI_ROOT_HID		"PNP0A03"
158 #define ACPI_PCI_ROOT_DRIVER_NAME	"ACPI PCI Root Bridge Driver"
159 #define ACPI_PCI_ROOT_DEVICE_NAME	"PCI Root Bridge"
160 
161 int acpi_pci_root_init (void);
162 void acpi_pci_root_exit (void);
163 
164 /* ACPI PCI Interrupt Link (pci_link.c) */
165 
166 #define ACPI_PCI_LINK_CLASS		"pci_irq_routing"
167 #define ACPI_PCI_LINK_HID		"PNP0C0F"
168 #define ACPI_PCI_LINK_DRIVER_NAME	"ACPI PCI Interrupt Link Driver"
169 #define ACPI_PCI_LINK_DEVICE_NAME	"PCI Interrupt Link"
170 #define ACPI_PCI_LINK_FILE_INFO		"info"
171 #define ACPI_PCI_LINK_FILE_STATUS	"state"
172 
173 int acpi_pci_link_check (void);
174 int acpi_pci_link_get_irq (ACPI_HANDLE handle, int index, int* edge_level, int* active_high_low);
175 int acpi_pci_link_init (void);
176 void acpi_pci_link_exit (void);
177 
178 /* ACPI PCI Interrupt Routing (pci_irq.c) */
179 
180 int acpi_pci_irq_add_prt (ACPI_HANDLE handle, int segment, int bus);
181 
182 /* ACPI PCI Device Binding (pci_bind.c) */
183 
184 struct pci_bus;
185 
186 int acpi_pci_bind (struct acpi_device *device);
187 int acpi_pci_bind_root (struct acpi_device *device, struct acpi_pci_id *id, struct pci_bus *bus);
188 
189 #endif /*CONFIG_ACPI_PCI*/
190 
191 
192 /* --------------------------------------------------------------------------
193                                   Power Resource
194    -------------------------------------------------------------------------- */
195 
196 #define ACPI_POWER_COMPONENT		0x00800000
197 #define ACPI_POWER_CLASS		"power_resource"
198 #define ACPI_POWER_HID			"ACPI_PWR"
199 #define ACPI_POWER_DRIVER_NAME		"ACPI Power Resource Driver"
200 #define ACPI_POWER_DEVICE_NAME		"Power Resource"
201 #define ACPI_POWER_FILE_INFO		"info"
202 #define ACPI_POWER_FILE_STATUS		"state"
203 #define ACPI_POWER_RESOURCE_STATE_OFF	0x00
204 #define ACPI_POWER_RESOURCE_STATE_ON	0x01
205 #define ACPI_POWER_RESOURCE_STATE_UNKNOWN 0xFF
206 
207 
208 
209 int acpi_power_get_inferred_state (struct acpi_device *device);
210 int acpi_power_transition (struct acpi_device *device, int state);
211 int acpi_power_init (void);
212 void acpi_power_exit (void);
213 
214 
215 /* --------------------------------------------------------------------------
216                                     Processor
217    -------------------------------------------------------------------------- */
218 
219 #define ACPI_PROCESSOR_COMPONENT	0x01000000
220 #define ACPI_PROCESSOR_CLASS		"processor"
221 #define ACPI_PROCESSOR_HID		"Processor"
222 #define ACPI_PROCESSOR_DRIVER_NAME	"ACPI Processor Driver"
223 #define ACPI_PROCESSOR_DEVICE_NAME	"Processor"
224 #define ACPI_PROCESSOR_FILE_INFO	"info"
225 #define ACPI_PROCESSOR_FILE_POWER	"power"
226 #define ACPI_PROCESSOR_FILE_PERFORMANCE	"performance"
227 #define ACPI_PROCESSOR_FILE_THROTTLING	"throttling"
228 #define ACPI_PROCESSOR_FILE_LIMIT	"limit"
229 #define ACPI_PROCESSOR_NOTIFY_PERFORMANCE 0x80
230 #define ACPI_PROCESSOR_NOTIFY_POWER	0x81
231 #define ACPI_PROCESSOR_LIMIT_NONE	0x00
232 #define ACPI_PROCESSOR_LIMIT_INCREMENT	0x01
233 #define ACPI_PROCESSOR_LIMIT_DECREMENT	0x02
234 
235 int acpi_processor_set_thermal_limit(ACPI_HANDLE handle, int type);
236 
237 
238 /* --------------------------------------------------------------------------
239                                      System
240    -------------------------------------------------------------------------- */
241 
242 #define ACPI_SYSTEM_COMPONENT		0x02000000
243 #define ACPI_SYSTEM_CLASS		"system"
244 #define ACPI_SYSTEM_HID			"ACPI_SYS"
245 #define ACPI_SYSTEM_DRIVER_NAME		"ACPI System Driver"
246 #define ACPI_SYSTEM_DEVICE_NAME		"System"
247 #define ACPI_SYSTEM_FILE_INFO		"info"
248 #define ACPI_SYSTEM_FILE_EVENT		"event"
249 #define ACPI_SYSTEM_FILE_ALARM		"alarm"
250 #define ACPI_SYSTEM_FILE_DSDT		"dsdt"
251 #define ACPI_SYSTEM_FILE_FADT		"fadt"
252 #define ACPI_SYSTEM_FILE_SLEEP		"sleep"
253 #define ACPI_SYSTEM_FILE_DEBUG_LAYER	"debug_layer"
254 #define ACPI_SYSTEM_FILE_DEBUG_LEVEL	"debug_level"
255 
256 int acpi_system_init (void);
257 void acpi_system_exit (void);
258 
259 
260 /* --------------------------------------------------------------------------
261                                  Thermal Zone
262    -------------------------------------------------------------------------- */
263 
264 #define ACPI_THERMAL_COMPONENT		0x04000000
265 #define ACPI_THERMAL_CLASS		"thermal_zone"
266 #define ACPI_THERMAL_HID		"ThermalZone"
267 #define ACPI_THERMAL_DRIVER_NAME	"ACPI Thermal Zone Driver"
268 #define ACPI_THERMAL_DEVICE_NAME	"Thermal Zone"
269 #define ACPI_THERMAL_FILE_STATE		"state"
270 #define ACPI_THERMAL_FILE_TEMPERATURE	"temperature"
271 #define ACPI_THERMAL_FILE_TRIP_POINTS	"trip_points"
272 #define ACPI_THERMAL_FILE_COOLING_MODE	"cooling_mode"
273 #define ACPI_THERMAL_FILE_POLLING_FREQ	"polling_frequency"
274 #define ACPI_THERMAL_NOTIFY_TEMPERATURE	0x80
275 #define ACPI_THERMAL_NOTIFY_THRESHOLDS	0x81
276 #define ACPI_THERMAL_NOTIFY_DEVICES	0x82
277 #define ACPI_THERMAL_NOTIFY_CRITICAL	0xF0
278 #define ACPI_THERMAL_NOTIFY_HOT		0xF1
279 #define ACPI_THERMAL_MODE_ACTIVE	0x00
280 #define ACPI_THERMAL_MODE_PASSIVE	0x01
281 #define ACPI_THERMAL_PATH_POWEROFF	"/sbin/poweroff"
282 
283 /* Motherboard devices */
284 int acpi_motherboard_init(void);
285 /* --------------------------------------------------------------------------
286                                 Debug Support
287    -------------------------------------------------------------------------- */
288 
289 #define ACPI_DEBUG_RESTORE	0
290 #define ACPI_DEBUG_LOW		1
291 #define ACPI_DEBUG_MEDIUM	2
292 #define ACPI_DEBUG_HIGH		3
293 #define ACPI_DEBUG_DRIVERS	4
294 
295 extern UINT32 acpi_dbg_level;
296 extern UINT32 acpi_dbg_layer;
297 
298 static inline void
299 acpi_set_debug (
300 	UINT32			flag)
301 {
302 	static UINT32		layer_save;
303 	static UINT32		level_save;
304 
305 	switch (flag) {
306 	case ACPI_DEBUG_RESTORE:
307 		acpi_dbg_layer = layer_save;
308 		acpi_dbg_level = level_save;
309 		break;
310 	case ACPI_DEBUG_LOW:
311 	case ACPI_DEBUG_MEDIUM:
312 	case ACPI_DEBUG_HIGH:
313 	case ACPI_DEBUG_DRIVERS:
314 		layer_save = acpi_dbg_layer;
315 		level_save = acpi_dbg_level;
316 		break;
317 	}
318 
319 	switch (flag) {
320 	case ACPI_DEBUG_LOW:
321 		acpi_dbg_layer = ACPI_COMPONENT_DEFAULT | ACPI_ALL_DRIVERS;
322 		acpi_dbg_level = ACPI_DEBUG_DEFAULT;
323 		break;
324 	case ACPI_DEBUG_MEDIUM:
325 		acpi_dbg_layer = ACPI_COMPONENT_DEFAULT | ACPI_ALL_DRIVERS;
326 		acpi_dbg_level = ACPI_LV_FUNCTIONS | ACPI_LV_ALL_EXCEPTIONS;
327 		break;
328 	case ACPI_DEBUG_HIGH:
329 		acpi_dbg_layer = 0xFFFFFFFF;
330 		acpi_dbg_level = 0xFFFFFFFF;
331 		break;
332 	case ACPI_DEBUG_DRIVERS:
333 		acpi_dbg_layer = ACPI_ALL_DRIVERS;
334 		acpi_dbg_level = 0xFFFFFFFF;
335 		break;
336 	}
337 }
338 
339 
340 #endif /*__ACPI_DRIVERS_H__*/
341