111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/**************************************************************************** 211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert **************************************************************************** 311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *** 411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *** This header was automatically generated from a Linux kernel header 511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *** of the same name, to make information necessary for userspace to 611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *** call into the kernel available to libc. It contains only constants, 711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *** structures, and macros generated from the original header, and thus, 811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *** contains no copyrightable information. 911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *** 1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert **************************************************************************** 1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************/ 1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _HIL_H_ 1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _HIL_H_ 1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <asm/types.h> 1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_CLOCK 8MHZ 1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_EK1_CLOCK 30HZ 1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_EK2_CLOCK 60HZ 2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_TIMEOUT_DEV 5 2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_TIMEOUT_DEVS 10 2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_TIMEOUT_NORESP 10 2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_TIMEOUT_DEVS_DATA 16 2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_TIMEOUT_SELFTEST 200 2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_WIRE_PACKET_LEN 15 2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum hil_wire_bitpos { 2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_WIRE_START = 0, 3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_WIRE_ADDR2, 3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_WIRE_ADDR1, 3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_WIRE_ADDR0, 3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_WIRE_COMMAND, 3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_WIRE_DATA7, 3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_WIRE_DATA6, 3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_WIRE_DATA5, 3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_WIRE_DATA4, 3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_WIRE_DATA3, 3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_WIRE_DATA2, 4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_WIRE_DATA1, 4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_WIRE_DATA0, 4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_WIRE_PARITY, 4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_WIRE_STOP 4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum hil_pkt_bitpos { 4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_PKT_CMD = 0x00000800, 4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_PKT_ADDR2 = 0x00000400, 4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_PKT_ADDR1 = 0x00000200, 5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_PKT_ADDR0 = 0x00000100, 5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_PKT_ADDR_MASK = 0x00000700, 5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_PKT_ADDR_SHIFT = 8, 5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_PKT_DATA7 = 0x00000080, 5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_PKT_DATA6 = 0x00000040, 5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_PKT_DATA5 = 0x00000020, 5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_PKT_DATA4 = 0x00000010, 5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_PKT_DATA3 = 0x00000008, 5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_PKT_DATA2 = 0x00000004, 5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_PKT_DATA1 = 0x00000002, 6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_PKT_DATA0 = 0x00000001, 6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_PKT_DATA_MASK = 0x000000FF, 6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_PKT_DATA_SHIFT = 0 6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum hil_error_bitpos { 6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_ERR_OB = 0x00000800, 6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_ERR_INT = 0x00010000, 6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_ERR_NMI = 0x00020000, 6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_ERR_LERR = 0x00040000, 7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_ERR_PERR = 0x01000000, 7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_ERR_FERR = 0x02000000, 7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_ERR_FOF = 0x04000000 7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum hil_control_bitpos { 7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CTRL_TEST = 0x00010000, 7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CTRL_IPF = 0x00040000, 7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CTRL_APE = 0x02000000 7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_DO_ALTER_CTRL 0x40000000 8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_CTRL_ONLY 0xc0000000 8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 8411cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef u32 hil_packet; 8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum hil_command { 8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_IFC = 0x00, 8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_EPT = 0x01, 8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_ELB = 0x02, 9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_IDD = 0x03, 9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_DSR = 0x04, 9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_PST = 0x05, 9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_RRG = 0x06, 9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_WRG = 0x07, 9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_ACF = 0x08, 9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMDID_ACF = 0x07, 9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_POL = 0x10, 9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMDCT_POL = 0x0f, 9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_RPL = 0x20, 10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMDCT_RPL = 0x0f, 10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_RNM = 0x30, 10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_RST = 0x31, 10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_EXD = 0x32, 10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_RSC = 0x33, 10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_DKA = 0x3d, 10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_EK1 = 0x3e, 10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_EK2 = 0x3f, 10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_PR1 = 0x40, 11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_PR2 = 0x41, 11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_PR3 = 0x42, 11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_PR4 = 0x43, 11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_PR5 = 0x44, 11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_PR6 = 0x45, 11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_PR7 = 0x46, 11611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_PRM = 0x47, 11711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_AK1 = 0x48, 11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_AK2 = 0x49, 11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_AK3 = 0x4a, 12011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_AK4 = 0x4b, 12111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_AK5 = 0x4c, 12211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_AK6 = 0x4d, 12311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_AK7 = 0x4e, 12411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_ACK = 0x4f, 12511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 12611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_RIO = 0xfa, 12711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_SHR = 0xfb, 12811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_TER = 0xfc, 12911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_CAE = 0xfd, 13011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert HIL_CMD_DHR = 0xfe, 13111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 13211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 13311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 13411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_TYPE_MASK 0xe0 13511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_TYPE_KB_INTEGRAL 0xa0 13611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_TYPE_KB_ITF 0xc0 13711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_TYPE_KB_RSVD 0xe0 13811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_TYPE_KB_LANG_MASK 0x1f 13911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_KBLANG_USE_ESD 0x00 14011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_TYPE_ABS 0x80 14111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_ABS_RSVD1_MASK 0xf8 14211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_ABS_RSVD1 0x98 14311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_ABS_TABLET_MASK 0xf8 14411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_ABS_TABLET 0x90 14511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_ABS_TSCREEN_MASK 0xfc 14611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_ABS_TSCREEN 0x8c 14711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_ABS_RSVD2_MASK 0xfc 14811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_ABS_RSVD2 0x88 14911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_ABS_RSVD3_MASK 0xfc 15011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_ABS_RSVD3 0x80 15111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_TYPE_REL 0x60 15211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_REL_RSVD1_MASK 0xf0 15311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_REL_RSVD1 0x70 15411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_REL_RSVD2_MASK 0xfc 15511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_REL_RSVD2 0x6c 15611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_REL_MOUSE_MASK 0xfc 15711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_REL_MOUSE 0x68 15811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_REL_QUAD_MASK 0xf8 15911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_REL_QUAD 0x60 16011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_TYPE_CHAR 0x40 16111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_CHAR_BARCODE_MASK 0xfc 16211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_CHAR_BARCODE 0x5c 16311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_CHAR_RSVD1_MASK 0xfc 16411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_CHAR_RSVD1 0x58 16511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_CHAR_RSVD2_MASK 0xf8 16611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_CHAR_RSVD2 0x50 16711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_CHAR_RSVD3_MASK 0xf0 16811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_CHAR_RSVD3 0x40 16911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_TYPE_OTHER 0x20 17011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_OTHER_RSVD1_MASK 0xf0 17111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_OTHER_RSVD1 0x30 17211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_OTHER_BARCODE_MASK 0xfc 17311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_OTHER_BARCODE 0x2c 17411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_OTHER_RSVD2_MASK 0xfc 17511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_OTHER_RSVD2 0x28 17611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_OTHER_RSVD3_MASK 0xf8 17711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_OTHER_RSVD3 0x20 17811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_DID_TYPE_KEYPAD 0x00 17911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 18011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_HEADER_AXSET_MASK 0x03 18111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_HEADER_RSC 0x04 18211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_HEADER_EXD 0x08 18311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_HEADER_IOD 0x10 18411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_HEADER_16BIT 0x20 18511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_HEADER_ABS 0x40 18611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_HEADER_2X_AXIS 0x80 18711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 18811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_IOD_NBUTTON_MASK 0x07 18911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_IOD_PROXIMITY 0x08 19011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_IOD_PROMPT_MASK 0x70 19111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_IOD_PROMPT_SHIFT 4 19211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_IOD_PROMPT 0x80 19311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 19411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_NUM_AXES_PER_SET(header_packet) ((header_packet) & HIL_IDD_HEADER_AXSET_MASK) 19511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 19611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_NUM_AXSETS(header_packet) (2 - !((header_packet) & HIL_IDD_HEADER_2X_AXIS)) 19711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 19811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_LEN(header_packet) ((4 - !(header_packet & HIL_IDD_HEADER_IOD) - 2 * !(HIL_IDD_NUM_AXES_PER_SET(header_packet))) + 2 * HIL_IDD_NUM_AXES_PER_SET(header_packet) * !!((header_packet) & HIL_IDD_HEADER_ABS)) 19911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 20011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_AXIS_COUNTS_PER_M(header_ptr) (!(HIL_IDD_NUM_AXSETS(*(header_ptr))) ? -1 : (((*(header_ptr + 1) & HIL_PKT_DATA_MASK) + ((*(header_ptr + 2) & HIL_PKT_DATA_MASK)) << 8) * ((*(header_ptr) & HIL_IDD_HEADER_16BIT) ? 100 : 1))) 20111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 20211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_AXIS_MAX(header_ptr, __axnum) ((!(*(header_ptr) & HIL_IDD_HEADER_ABS) || (HIL_IDD_NUM_AXES_PER_SET(*(header_ptr)) <= __axnum)) ? 0 : ((HIL_PKT_DATA_MASK & *((header_ptr) + 3 + 2 * __axnum)) + ((HIL_PKT_DATA_MASK & *((header_ptr) + 4 + 2 * __axnum)) << 8))) 20311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 20411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_IOD(header_ptr) (*(header_ptr + HIL_IDD_LEN((*header_ptr)) - 1)) 20511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 20611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_HAS_GEN_PROMPT(header_ptr) ((*header_ptr & HIL_IDD_HEADER_IOD) && (HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_PROMPT)) 20711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 20811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_HAS_GEN_PROXIMITY(header_ptr) ((*header_ptr & HIL_IDD_HEADER_IOD) && (HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_PROXIMITY)) 20911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 21011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_NUM_BUTTONS(header_ptr) ((*header_ptr & HIL_IDD_HEADER_IOD) ? (HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_NBUTTON_MASK) : 0) 21111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 21211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_IDD_NUM_PROMPTS(header_ptr) ((*header_ptr & HIL_IDD_HEADER_IOD) ? ((HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_NPROMPT_MASK) >> HIL_IDD_IOD_PROMPT_SHIFT) : 0) 21311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 21411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_EXD_HEADER_WRG 0x03 21511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_EXD_HEADER_WRG_TYPE1 0x01 21611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_EXD_HEADER_WRG_TYPE2 0x02 21711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_EXD_HEADER_RRG 0x04 21811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_EXD_HEADER_RNM 0x10 21911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_EXD_HEADER_RST 0x20 22011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_EXD_HEADER_LOCALE 0x40 22111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 22211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_EXD_NUM_RRG(header_ptr) ((*header_ptr & HIL_EXD_HEADER_RRG) ? (*(header_ptr + 1) & HIL_PKT_DATA_MASK) : 0) 22311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 22411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_EXD_NUM_WWG(header_ptr) ((*header_ptr & HIL_EXD_HEADER_WRG) ? (*(header_ptr + 2 - !(*header_ptr & HIL_EXD_HEADER_RRG)) & HIL_PKT_DATA_MASK) : 0) 22511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 22611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_EXD_LEN(header_ptr) (!!(*header_ptr & HIL_EXD_HEADER_RRG) + !!(*header_ptr & HIL_EXD_HEADER_WRG) + !!(*header_ptr & HIL_EXD_HEADER_LOCALE) + 2 * !!(*header_ptr & HIL_EXD_HEADER_WRG_TYPE2) + 1) 22711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 22811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_EXD_LOCALE(header_ptr) (!(*header_ptr & HIL_EXD_HEADER_LOCALE) ? -1 : (*(header_ptr + HIL_EXD_LEN(header_ptr) - 1) & HIL_PKT_DATA_MASK)) 22911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 23011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_EXD_WRG_TYPE2_LEN(header_ptr) (!(*header_ptr & HIL_EXD_HEADER_WRG_TYPE2) ? -1 : (*(header_ptr + HIL_EXD_LEN(header_ptr) - 2 - !!(*header_ptr & HIL_EXD_HEADER_LOCALE)) & HIL_PKT_DATA_MASK) + ((*(header_ptr + HIL_EXD_LEN(header_ptr) - 1 - !!(*header_ptr & HIL_EXD_HEADER_LOCALE)) & HIL_PKT_DATA_MASK) << 8)) 23111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 23211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_LOCALE_MAX 0x1f 23311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 23411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_LOCALE_MAP "", "", "", "swiss.french", "portuguese", "arabic", "hebrew", "english.canadian", "turkish", "greek", "thai", "italian", "korean", "dutch", "swedish", "german", "chinese", "chinese", "swiss.french", "spanish", "swiss.german", "flemish", "finnish", "english.uk", "french.canadian", "swiss.german", "norwegian", "french", "danish", "japanese", "spanish", "english.us" 23511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 23611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_KEYCODES_SET1_TBLSIZE 128 23711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_KEYCODES_SET1 KEY_5, KEY_RESERVED, KEY_RIGHTALT, KEY_LEFTALT, KEY_RIGHTSHIFT, KEY_LEFTSHIFT, KEY_LEFTCTRL, KEY_SYSRQ, KEY_KP4, KEY_KP8, KEY_KP5, KEY_KP9, KEY_KP6, KEY_KP7, KEY_KPCOMMA, KEY_KPENTER, KEY_KP1, KEY_KPSLASH, KEY_KP2, KEY_KPPLUS, KEY_KP3, KEY_KPASTERISK, KEY_KP0, KEY_KPMINUS, KEY_B, KEY_V, KEY_C, KEY_X, KEY_Z, KEY_RESERVED, KEY_RESERVED, KEY_ESC, KEY_6, KEY_F10, KEY_3, KEY_F11, KEY_KPDOT, KEY_F9, KEY_TAB , KEY_F12, KEY_H, KEY_G, KEY_F, KEY_D, KEY_S, KEY_A, KEY_RESERVED, KEY_CAPSLOCK, KEY_U, KEY_Y, KEY_T, KEY_R, KEY_E, KEY_W, KEY_Q, KEY_TAB, KEY_7, KEY_6, KEY_5, KEY_4, KEY_3, KEY_2, KEY_1, KEY_GRAVE, KEY_F13, KEY_F14, KEY_F15, KEY_F16, KEY_F17, KEY_F18, KEY_F19, KEY_F20, KEY_MENU, KEY_F4, KEY_F3, KEY_F2, KEY_F1, KEY_VOLUMEUP, KEY_STOP, KEY_SENDFILE, KEY_SYSRQ, KEY_F5, KEY_F6, KEY_F7, KEY_F8, KEY_VOLUMEDOWN, KEY_DEL_EOL, KEY_DEL_EOS, KEY_8, KEY_9, KEY_0, KEY_MINUS, KEY_EQUAL, KEY_BACKSPACE, KEY_INS_LINE, KEY_DEL_LINE, KEY_I, KEY_O, KEY_P, KEY_LEFTBRACE, KEY_RIGHTBRACE, KEY_BACKSLASH, KEY_INSERT, KEY_DELETE, KEY_J, KEY_K, KEY_L, KEY_SEMICOLON, KEY_APOSTROPHE, KEY_ENTER, KEY_HOME, KEY_PAGEUP, KEY_M, KEY_COMMA, KEY_DOT, KEY_SLASH, KEY_BACKSLASH, KEY_SELECT, KEY_102ND, KEY_PAGEDOWN, KEY_N, KEY_SPACE, KEY_NEXT, KEY_RESERVED, KEY_LEFT, KEY_DOWN, KEY_UP, KEY_RIGHT 23811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 23911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_KEYCODES_SET3_TBLSIZE 128 24011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_KEYCODES_SET3 KEY_RESERVED, KEY_ESC, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_0, KEY_MINUS, KEY_EQUAL, KEY_BACKSPACE, KEY_TAB, KEY_Q, KEY_W, KEY_E, KEY_R, KEY_T, KEY_Y, KEY_U, KEY_I, KEY_O, KEY_P, KEY_LEFTBRACE, KEY_RIGHTBRACE, KEY_ENTER, KEY_LEFTCTRL, KEY_A, KEY_S, KEY_D, KEY_F, KEY_G, KEY_H, KEY_J, KEY_K, KEY_L, KEY_SEMICOLON, KEY_APOSTROPHE,KEY_GRAVE, KEY_LEFTSHIFT, KEY_BACKSLASH, KEY_Z, KEY_X, KEY_C, KEY_V, KEY_B, KEY_N, KEY_M, KEY_COMMA, KEY_DOT, KEY_SLASH, KEY_RIGHTSHIFT, KEY_KPASTERISK, KEY_LEFTALT, KEY_SPACE, KEY_CAPSLOCK, KEY_F1, KEY_F2, KEY_F3, KEY_F4, KEY_F5, KEY_F6, KEY_F7, KEY_F8, KEY_F9, KEY_F10, KEY_NUMLOCK, KEY_SCROLLLOCK, KEY_KP7, KEY_KP8, KEY_KP9, KEY_KPMINUS, KEY_KP4, KEY_KP5, KEY_KP6, KEY_KPPLUS, KEY_KP1, KEY_KP2, KEY_KP3, KEY_KP0, KEY_KPDOT, KEY_SYSRQ, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_UP, KEY_LEFT, KEY_DOWN, KEY_RIGHT, KEY_HOME, KEY_PAGEUP, KEY_END, KEY_PAGEDOWN, KEY_INSERT, KEY_DELETE, KEY_102ND, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_F1, KEY_F2, KEY_F3, KEY_F4, KEY_F5, KEY_F6, KEY_F7, KEY_F8, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED 24111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 24211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_POL_NUM_AXES_MASK 0x03 24311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_POL_CTS 0x04 24411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_POL_STATUS_PENDING 0x08 24511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_POL_CHARTYPE_MASK 0x70 24611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_POL_CHARTYPE_NONE 0x00 24711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_POL_CHARTYPE_RSVD1 0x10 24811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_POL_CHARTYPE_ASCII 0x20 24911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_POL_CHARTYPE_BINARY 0x30 25011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_POL_CHARTYPE_SET1 0x40 25111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_POL_CHARTYPE_RSVD2 0x50 25211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_POL_CHARTYPE_SET2 0x60 25311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_POL_CHARTYPE_SET3 0x70 25411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define HIL_POL_AXIS_ALT 0x80 25511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 25611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 257