#ifndef _HOTKEY_DRV_H
#define _HOTKEY_DRV_H
#ifdef __cplusplus
extern "C" {
#endif
#include <sys/types.h>
#include <sys/conf.h>
#include <sys/stat.h>
#include <sys/note.h>
#include <sys/modctl.h>
#include <sys/ddi.h>
#include <sys/sunddi.h>
#include <sys/acpi/acpi.h>
#include <sys/acpica.h>
#include <sys/sysevent/eventdefs.h>
#include <sys/acpi_drv.h>
#define ID_LEN 9
struct acpi_drv_dev {
ACPI_HANDLE hdl;
char hid[ID_LEN];
char uid[ID_LEN];
ACPI_INTEGER adr;
int valid;
int present;
enum acpi_drv_type type;
int index;
int minor;
};
typedef struct hotkey_drv {
struct acpi_drv_dev dev;
dev_info_t *dip;
void *private;
kmutex_t *hotkey_lock;
int hotkey_method;
int modid;
int (*vendor_ioctl)(struct hotkey_drv *,
int cmd, intptr_t arg, int mode,
cred_t *cr, int *rval);
int (*vendor_fini)(struct hotkey_drv *);
boolean_t check_acpi_video;
void *acpi_video;
} hotkey_drv_t;
struct vendor_hotkey_drv {
const char *vid;
const char *module;
boolean_t enable;
};
#define HOTKEY_DRV_OK 0
#define HOTKEY_DRV_ERR -1
#define HOTKEY_DBG_NOTICE 0x8000
#define HOTKEY_DBG_WARN 0x0001
#define HOTKEY_METHOD_NONE 0x0
#define HOTKEY_METHOD_VENDOR 0x1
#define HOTKEY_METHOD_ACPI_VIDEO 0x2
#define HOTKEY_METHOD_MISC (HOTKEY_METHOD_VENDOR | \
HOTKEY_METHOD_ACPI_VIDEO)
extern struct hotkey_drv acpi_hotkey;
extern int hotkey_drv_debug;
int acpi_drv_set_int(ACPI_HANDLE dev, char *method, uint32_t aint);
void acpi_drv_gen_sysevent(struct acpi_drv_dev *devp, char *ev, uint32_t val);
int acpi_drv_dev_init(struct acpi_drv_dev *p);
int hotkey_init(hotkey_drv_t *htkp);
int hotkey_fini(hotkey_drv_t *htkp);
int acpi_drv_hotkey_ioctl(int cmd, intptr_t arg, int mode, cred_t *cr,
int *rval);
int acpi_video_ioctl(void *vidp, int cmd, intptr_t arg, int mode, cred_t *cr,
int *rval);
int hotkey_brightness_inc(hotkey_drv_t *htkp);
int hotkey_brightness_dec(hotkey_drv_t *htkp);
void hotkey_drv_gen_sysevent(dev_info_t *, char *);
#ifdef __cplusplus
}
#endif
#endif