/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _HOTKEY_DRV_H #define _HOTKEY_DRV_H #ifdef __cplusplus extern "C" { #endif #include #include #include #include #include #include #include #include #include #include #include #define ID_LEN 9 struct acpi_drv_dev { ACPI_HANDLE hdl; char hid[ID_LEN]; /* ACPI HardwareId */ char uid[ID_LEN]; /* ACPI UniqueId */ ACPI_INTEGER adr; /* Bus device Id */ int valid; /* the device state is valid */ /* * Unlike most other devices, when a battery is inserted or * removed from the system, the device itself(the battery bay) * is still considered to be present in the system. * * Value: * 0 -- Off-line * 1 -- On-line * -1 -- Unknown */ int present; enum acpi_drv_type type; int index; /* device index */ int minor; }; /* * hotkey driver soft-state structure */ typedef struct hotkey_drv { struct acpi_drv_dev dev; dev_info_t *dip; void *private; /* Vendor specific structure */ 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; /* * Collection of vendor specific hotkey support */ 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) /* * Inter-source-file linkage ... */ 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 /* _HOTKEY_DRV_H */