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