acpivar.h (f8335e3a97801ebb49d091a7e09a33711d56a76c) | acpivar.h (be2b179704218e240b66f023545f8e97d4c29a08) |
---|---|
1/*- 2 * Copyright (c) 2000 Mitsuru IWASAKI <iwasaki@jp.freebsd.org> 3 * Copyright (c) 2000 Michael Smith <msmith@freebsd.org> 4 * Copyright (c) 2000 BSDi 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions --- 128 unchanged lines hidden (view full) --- 137 * Note that the low ivar values are reserved to provide 138 * interface compatibility with ISA drivers which can also 139 * attach to ACPI. 140 */ 141#define ACPI_IVAR_HANDLE 0x100 142#define ACPI_IVAR_MAGIC 0x101 143#define ACPI_IVAR_PRIVATE 0x102 144 | 1/*- 2 * Copyright (c) 2000 Mitsuru IWASAKI <iwasaki@jp.freebsd.org> 3 * Copyright (c) 2000 Michael Smith <msmith@freebsd.org> 4 * Copyright (c) 2000 BSDi 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions --- 128 unchanged lines hidden (view full) --- 137 * Note that the low ivar values are reserved to provide 138 * interface compatibility with ISA drivers which can also 139 * attach to ACPI. 140 */ 141#define ACPI_IVAR_HANDLE 0x100 142#define ACPI_IVAR_MAGIC 0x101 143#define ACPI_IVAR_PRIVATE 0x102 144 |
145static __inline ACPI_HANDLE 146acpi_get_handle(device_t dev) 147{ 148 uintptr_t up; 149 ACPI_HANDLE h; | 145extern ACPI_HANDLE acpi_get_handle(device_t dev); 146extern int acpi_set_handle(device_t dev, ACPI_HANDLE h); 147extern int acpi_get_magic(device_t dev); 148extern int acpi_set_magic(device_t dev, int m); 149extern void * acpi_get_private(device_t dev); 150extern int acpi_set_private(device_t dev, void *p); 151extern ACPI_OBJECT_TYPE acpi_get_type(device_t dev); |
150 | 152 |
151 if (BUS_READ_IVAR(device_get_parent(dev), dev, ACPI_IVAR_HANDLE, &up)) 152 return(NULL); 153 h = (ACPI_HANDLE)up; 154 return(h); 155} 156 157static __inline int 158acpi_set_handle(device_t dev, ACPI_HANDLE h) 159{ 160 uintptr_t up; 161 162 up = (uintptr_t)h; 163 return(BUS_WRITE_IVAR(device_get_parent(dev), dev, ACPI_IVAR_HANDLE, up)); 164} 165 166static __inline int 167acpi_get_magic(device_t dev) 168{ 169 uintptr_t up; 170 int m; 171 172 if (BUS_READ_IVAR(device_get_parent(dev), dev, ACPI_IVAR_MAGIC, &up)) 173 return(0); 174 m = (int)up; 175 return(m); 176} 177 178static __inline int 179acpi_set_magic(device_t dev, int m) 180{ 181 uintptr_t up; 182 183 up = (uintptr_t)m; 184 return(BUS_WRITE_IVAR(device_get_parent(dev), dev, ACPI_IVAR_MAGIC, up)); 185} 186 187static __inline void * 188acpi_get_private(device_t dev) 189{ 190 uintptr_t up; 191 void *p; 192 193 if (BUS_READ_IVAR(device_get_parent(dev), dev, ACPI_IVAR_PRIVATE, &up)) 194 return(NULL); 195 p = (void *)up; 196 return(p); 197} 198 199static __inline int 200acpi_set_private(device_t dev, void *p) 201{ 202 uintptr_t up; 203 204 up = (uintptr_t)p; 205 return(BUS_WRITE_IVAR(device_get_parent(dev), dev, ACPI_IVAR_PRIVATE, up)); 206} 207 208static __inline ACPI_OBJECT_TYPE 209acpi_get_type(device_t dev) 210{ 211 ACPI_HANDLE h; 212 ACPI_OBJECT_TYPE t; 213 214 if ((h = acpi_get_handle(dev)) == NULL) 215 return(ACPI_TYPE_NOT_FOUND); 216 if (AcpiGetType(h, &t) != AE_OK) 217 return(ACPI_TYPE_NOT_FOUND); 218 return(t); 219} 220 | |
221#ifdef ACPI_DEBUGGER 222extern void acpi_EnterDebugger(void); 223#endif 224 225#ifdef ACPI_DEBUG 226#include <sys/cons.h> 227#define STEP(x) do {printf x, printf("\n"); cngetc();} while (0) 228#else 229#define STEP(x) 230#endif 231 | 153#ifdef ACPI_DEBUGGER 154extern void acpi_EnterDebugger(void); 155#endif 156 157#ifdef ACPI_DEBUG 158#include <sys/cons.h> 159#define STEP(x) do {printf x, printf("\n"); cngetc();} while (0) 160#else 161#define STEP(x) 162#endif 163 |
232#define ACPI_VPRINT(dev, acpi_sc, x...) do { \ 233 if (acpi_get_verbose(acpi_sc)) \ 234 device_printf(dev, x); \ | 164#define ACPI_VPRINT(dev, acpi_sc, x...) do { \ 165 if (acpi_get_verbose(acpi_sc)) \ 166 device_printf(dev, x); \ |
235} while (0) 236 237#define ACPI_DEVINFO_PRESENT(x) (((x) & 0x9) == 9) 238extern BOOLEAN acpi_DeviceIsPresent(device_t dev); 239extern BOOLEAN acpi_BatteryIsPresent(device_t dev); 240extern BOOLEAN acpi_MatchHid(device_t dev, char *hid); | 167} while (0) 168 169#define ACPI_DEVINFO_PRESENT(x) (((x) & 0x9) == 9) 170extern BOOLEAN acpi_DeviceIsPresent(device_t dev); 171extern BOOLEAN acpi_BatteryIsPresent(device_t dev); 172extern BOOLEAN acpi_MatchHid(device_t dev, char *hid); |
241extern ACPI_STATUS acpi_GetHandleInScope(ACPI_HANDLE parent, char *path, ACPI_HANDLE *result); | 173extern ACPI_STATUS acpi_GetHandleInScope(ACPI_HANDLE parent, char *path, 174 ACPI_HANDLE *result); |
242extern ACPI_BUFFER *acpi_AllocBuffer(int size); | 175extern ACPI_BUFFER *acpi_AllocBuffer(int size); |
243extern ACPI_STATUS acpi_EvaluateInteger(ACPI_HANDLE handle, char *path, int *number); 244extern ACPI_STATUS acpi_ConvertBufferToInteger(ACPI_BUFFER *bufp, int *number); | 176extern ACPI_STATUS acpi_EvaluateInteger(ACPI_HANDLE handle, char *path, 177 int *number); 178extern ACPI_STATUS acpi_ConvertBufferToInteger(ACPI_BUFFER *bufp, 179 int *number); |
245extern ACPI_STATUS acpi_ForeachPackageObject(ACPI_OBJECT *obj, | 180extern ACPI_STATUS acpi_ForeachPackageObject(ACPI_OBJECT *obj, |
246 void (* func)(ACPI_OBJECT *comp, void *arg), 247 void *arg); 248extern ACPI_STATUS acpi_FindIndexedResource(ACPI_BUFFER *buf, int index, ACPI_RESOURCE **resp); 249extern ACPI_STATUS acpi_AppendBufferResource(ACPI_BUFFER *buf, ACPI_RESOURCE *res); | 181 void (*func)(ACPI_OBJECT *comp, void *arg), 182 void *arg); 183extern ACPI_STATUS acpi_FindIndexedResource(ACPI_BUFFER *buf, int index, 184 ACPI_RESOURCE **resp); 185extern ACPI_STATUS acpi_AppendBufferResource(ACPI_BUFFER *buf, 186 ACPI_RESOURCE *res); |
250extern ACPI_STATUS acpi_SetIntrModel(int model); | 187extern ACPI_STATUS acpi_SetIntrModel(int model); |
251 | |
252extern ACPI_STATUS acpi_SetSleepState(struct acpi_softc *sc, int state); 253extern ACPI_STATUS acpi_Enable(struct acpi_softc *sc); 254extern ACPI_STATUS acpi_Disable(struct acpi_softc *sc); 255 256struct acpi_parse_resource_set { | 188extern ACPI_STATUS acpi_SetSleepState(struct acpi_softc *sc, int state); 189extern ACPI_STATUS acpi_Enable(struct acpi_softc *sc); 190extern ACPI_STATUS acpi_Disable(struct acpi_softc *sc); 191 192struct acpi_parse_resource_set { |
257 void (* set_init)(device_t dev, void **context); 258 void (* set_done)(device_t dev, void *context); 259 void (* set_ioport)(device_t dev, void *context, u_int32_t base, u_int32_t length); 260 void (* set_iorange)(device_t dev, void *context, u_int32_t low, u_int32_t high, 261 u_int32_t length, u_int32_t align); 262 void (* set_memory)(device_t dev, void *context, u_int32_t base, u_int32_t length); 263 void (* set_memoryrange)(device_t dev, void *context, u_int32_t low, u_int32_t high, 264 u_int32_t length, u_int32_t align); 265 void (* set_irq)(device_t dev, void *context, u_int32_t *irq, int cout); 266 void (* set_drq)(device_t dev, void *context, u_int32_t *drq, int count); 267 void (* set_start_dependant)(device_t dev, void *context, int preference); 268 void (* set_end_dependant)(device_t dev, void *context); | 193 void (*set_init)(device_t dev, void **context); 194 void (*set_done)(device_t dev, void *context); 195 void (*set_ioport)(device_t dev, void *context, u_int32_t base, 196 u_int32_t length); 197 void (*set_iorange)(device_t dev, void *context, 198 u_int32_t low, u_int32_t high, 199 u_int32_t length, u_int32_t align); 200 void (*set_memory)(device_t dev, void *context, u_int32_t base, 201 u_int32_t length); 202 void (*set_memoryrange)(device_t dev, void *context, u_int32_t low, 203 u_int32_t high, u_int32_t length, 204 u_int32_t align); 205 void (*set_irq)(device_t dev, void *context, u_int32_t *irq, 206 int cout); 207 void (*set_drq)(device_t dev, void *context, u_int32_t *drq, 208 int count); 209 void (*set_start_dependant)(device_t dev, void *context, 210 int preference); 211 void (*set_end_dependant)(device_t dev, void *context); |
269}; 270 271extern struct acpi_parse_resource_set acpi_res_parse_set; 272extern ACPI_STATUS acpi_parse_resources(device_t dev, ACPI_HANDLE handle, | 212}; 213 214extern struct acpi_parse_resource_set acpi_res_parse_set; 215extern ACPI_STATUS acpi_parse_resources(device_t dev, ACPI_HANDLE handle, |
273 struct acpi_parse_resource_set *set); | 216 struct acpi_parse_resource_set *set); |
274/* XXX until Intel fix this in their headers, based on NEXT_RESOURCE */ | 217/* XXX until Intel fix this in their headers, based on NEXT_RESOURCE */ |
275#define ACPI_RESOURCE_NEXT(Res) (ACPI_RESOURCE *)((UINT8 *) Res + Res->Length) | 218#define ACPI_RESOURCE_NEXT(Res) (ACPI_RESOURCE *)((UINT8 *)Res + Res->Length) |
276 | 219 |
277/* 278 * ACPI event handling 279 */ 280extern UINT32 acpi_eventhandler_power_button_for_sleep(void *context); 281extern UINT32 acpi_eventhandler_power_button_for_wakeup(void *context); 282extern UINT32 acpi_eventhandler_sleep_button_for_sleep(void *context); 283extern UINT32 acpi_eventhandler_sleep_button_for_wakeup(void *context); | 220/* ACPI event handling */ 221extern UINT32 acpi_eventhandler_power_button_for_sleep(void *context); 222extern UINT32 acpi_eventhandler_power_button_for_wakeup(void *context); 223extern UINT32 acpi_eventhandler_sleep_button_for_sleep(void *context); 224extern UINT32 acpi_eventhandler_sleep_button_for_wakeup(void *context); |
284 285#define ACPI_EVENT_PRI_FIRST 0 286#define ACPI_EVENT_PRI_DEFAULT 10000 287#define ACPI_EVENT_PRI_LAST 20000 288 289typedef void (*acpi_event_handler_t)(void *, int); 290 291EVENTHANDLER_DECLARE(acpi_sleep_event, acpi_event_handler_t); 292EVENTHANDLER_DECLARE(acpi_wakeup_event, acpi_event_handler_t); 293 | 225 226#define ACPI_EVENT_PRI_FIRST 0 227#define ACPI_EVENT_PRI_DEFAULT 10000 228#define ACPI_EVENT_PRI_LAST 20000 229 230typedef void (*acpi_event_handler_t)(void *, int); 231 232EVENTHANDLER_DECLARE(acpi_sleep_event, acpi_event_handler_t); 233EVENTHANDLER_DECLARE(acpi_wakeup_event, acpi_event_handler_t); 234 |
294/* 295 * Device power control. 296 */ 297extern ACPI_STATUS acpi_pwr_switch_consumer(ACPI_HANDLE consumer, int state); | 235/* Device power control. */ 236extern ACPI_STATUS acpi_pwr_switch_consumer(ACPI_HANDLE consumer, 237 int state); |
298 | 238 |
299/* 300 * Misc. 301 */ | 239/* Misc. */ |
302static __inline struct acpi_softc * 303acpi_device_get_parent_softc(device_t child) 304{ 305 device_t parent; 306 307 parent = device_get_parent(child); | 240static __inline struct acpi_softc * 241acpi_device_get_parent_softc(device_t child) 242{ 243 device_t parent; 244 245 parent = device_get_parent(child); |
308 if (parent == NULL) { 309 return(NULL); 310 } 311 return(device_get_softc(parent)); | 246 if (parent == NULL) 247 return (NULL); 248 return (device_get_softc(parent)); |
312} 313 314static __inline int 315acpi_get_verbose(struct acpi_softc *sc) 316{ 317 if (sc) | 249} 250 251static __inline int 252acpi_get_verbose(struct acpi_softc *sc) 253{ 254 if (sc) |
318 return(sc->acpi_verbose); 319 return(0); | 255 return (sc->acpi_verbose); 256 return (0); |
320} 321 322extern char *acpi_name(ACPI_HANDLE handle); 323extern int acpi_avoid(ACPI_HANDLE handle); 324extern int acpi_disabled(char *subsys); | 257} 258 259extern char *acpi_name(ACPI_HANDLE handle); 260extern int acpi_avoid(ACPI_HANDLE handle); 261extern int acpi_disabled(char *subsys); |
325 | |
326extern void acpi_device_enable_wake_capability(ACPI_HANDLE h, int enable); 327extern void acpi_device_enable_wake_event(ACPI_HANDLE h); | 262extern void acpi_device_enable_wake_capability(ACPI_HANDLE h, int enable); 263extern void acpi_device_enable_wake_event(ACPI_HANDLE h); |
328 | |
329extern int acpi_machdep_init(device_t dev); 330extern void acpi_install_wakeup_handler(struct acpi_softc *sc); 331extern int acpi_sleep_machdep(struct acpi_softc *sc, int state); 332 | 264extern int acpi_machdep_init(device_t dev); 265extern void acpi_install_wakeup_handler(struct acpi_softc *sc); 266extern int acpi_sleep_machdep(struct acpi_softc *sc, int state); 267 |
333/* 334 * Battery Abstraction. 335 */ | 268/* Battery Abstraction. */ |
336struct acpi_battinfo; 337struct acpi_battdesc; 338 339extern int acpi_battery_register(int, int); 340extern int acpi_battery_get_battinfo(int, struct acpi_battinfo *); 341extern int acpi_battery_get_units(void); 342extern int acpi_battery_get_info_expire(void); 343extern int acpi_battery_get_battdesc(int, struct acpi_battdesc *); 344 345extern int acpi_cmbat_get_battinfo(int, struct acpi_battinfo *); 346 | 269struct acpi_battinfo; 270struct acpi_battdesc; 271 272extern int acpi_battery_register(int, int); 273extern int acpi_battery_get_battinfo(int, struct acpi_battinfo *); 274extern int acpi_battery_get_units(void); 275extern int acpi_battery_get_info_expire(void); 276extern int acpi_battery_get_battdesc(int, struct acpi_battdesc *); 277 278extern int acpi_cmbat_get_battinfo(int, struct acpi_battinfo *); 279 |
347/* 348 * Embedded controller. 349 */ | 280/* Embedded controller. */ |
350extern void acpi_ec_ecdt_probe(device_t); 351 | 281extern void acpi_ec_ecdt_probe(device_t); 282 |
352/* 353 * AC adapter interface. 354 */ 355 | 283/* AC adapter interface. */ |
356extern int acpi_acad_get_acline(int *); 357 358#if __FreeBSD_version >= 500000 359#ifndef ACPI_MAX_THREADS 360#define ACPI_MAX_THREADS 3 361#endif 362#if ACPI_MAX_THREADS > 0 363#define ACPI_USE_THREADS 364#endif 365#endif 366 367#ifdef ACPI_USE_THREADS | 284extern int acpi_acad_get_acline(int *); 285 286#if __FreeBSD_version >= 500000 287#ifndef ACPI_MAX_THREADS 288#define ACPI_MAX_THREADS 3 289#endif 290#if ACPI_MAX_THREADS > 0 291#define ACPI_USE_THREADS 292#endif 293#endif 294 295#ifdef ACPI_USE_THREADS |
368/* 369 * ACPI task kernel thread initialization. 370 */ | 296/* ACPI task kernel thread initialization. */ |
371extern int acpi_task_thread_init(void); 372#endif | 297extern int acpi_task_thread_init(void); 298#endif |
373 | |