1951a39d68df598db08dfced8b4707755864a0492Ying Wang/****************************************************************************
2951a39d68df598db08dfced8b4707755864a0492Ying Wang ****************************************************************************
3951a39d68df598db08dfced8b4707755864a0492Ying Wang ***
4951a39d68df598db08dfced8b4707755864a0492Ying Wang ***   This header was automatically generated from a Linux kernel header
5951a39d68df598db08dfced8b4707755864a0492Ying Wang ***   of the same name, to make information necessary for userspace to
6951a39d68df598db08dfced8b4707755864a0492Ying Wang ***   call into the kernel available to libc.  It contains only constants,
7951a39d68df598db08dfced8b4707755864a0492Ying Wang ***   structures, and macros generated from the original header, and thus,
8951a39d68df598db08dfced8b4707755864a0492Ying Wang ***   contains no copyrightable information.
9951a39d68df598db08dfced8b4707755864a0492Ying Wang ***
10951a39d68df598db08dfced8b4707755864a0492Ying Wang ****************************************************************************
11951a39d68df598db08dfced8b4707755864a0492Ying Wang ****************************************************************************/
12951a39d68df598db08dfced8b4707755864a0492Ying Wang#ifndef _HIL_H_
13951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _HIL_H_
14951a39d68df598db08dfced8b4707755864a0492Ying Wang
15951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <asm/types.h>
16951a39d68df598db08dfced8b4707755864a0492Ying Wang
17951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_CLOCK 8MHZ
18951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_EK1_CLOCK 30HZ
19951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_EK2_CLOCK 60HZ
20951a39d68df598db08dfced8b4707755864a0492Ying Wang
21951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_TIMEOUT_DEV 5
22951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_TIMEOUT_DEVS 10
23951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_TIMEOUT_NORESP 10
24951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_TIMEOUT_DEVS_DATA 16
25951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_TIMEOUT_SELFTEST 200
26951a39d68df598db08dfced8b4707755864a0492Ying Wang
27951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_WIRE_PACKET_LEN 15
28951a39d68df598db08dfced8b4707755864a0492Ying Wangenum hil_wire_bitpos {
29951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_WIRE_START = 0,
30951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_WIRE_ADDR2,
31951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_WIRE_ADDR1,
32951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_WIRE_ADDR0,
33951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_WIRE_COMMAND,
34951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_WIRE_DATA7,
35951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_WIRE_DATA6,
36951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_WIRE_DATA5,
37951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_WIRE_DATA4,
38951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_WIRE_DATA3,
39951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_WIRE_DATA2,
40951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_WIRE_DATA1,
41951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_WIRE_DATA0,
42951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_WIRE_PARITY,
43951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_WIRE_STOP
44951a39d68df598db08dfced8b4707755864a0492Ying Wang};
45951a39d68df598db08dfced8b4707755864a0492Ying Wang
46951a39d68df598db08dfced8b4707755864a0492Ying Wangenum hil_pkt_bitpos {
47951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_PKT_CMD = 0x00000800,
48951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_PKT_ADDR2 = 0x00000400,
49951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_PKT_ADDR1 = 0x00000200,
50951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_PKT_ADDR0 = 0x00000100,
51951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_PKT_ADDR_MASK = 0x00000700,
52951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_PKT_ADDR_SHIFT = 8,
53951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_PKT_DATA7 = 0x00000080,
54951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_PKT_DATA6 = 0x00000040,
55951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_PKT_DATA5 = 0x00000020,
56951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_PKT_DATA4 = 0x00000010,
57951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_PKT_DATA3 = 0x00000008,
58951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_PKT_DATA2 = 0x00000004,
59951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_PKT_DATA1 = 0x00000002,
60951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_PKT_DATA0 = 0x00000001,
61951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_PKT_DATA_MASK = 0x000000FF,
62951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_PKT_DATA_SHIFT = 0
63951a39d68df598db08dfced8b4707755864a0492Ying Wang};
64951a39d68df598db08dfced8b4707755864a0492Ying Wang
65951a39d68df598db08dfced8b4707755864a0492Ying Wangenum hil_error_bitpos {
66951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_ERR_OB = 0x00000800,
67951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_ERR_INT = 0x00010000,
68951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_ERR_NMI = 0x00020000,
69951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_ERR_LERR = 0x00040000,
70951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_ERR_PERR = 0x01000000,
71951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_ERR_FERR = 0x02000000,
72951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_ERR_FOF = 0x04000000
73951a39d68df598db08dfced8b4707755864a0492Ying Wang};
74951a39d68df598db08dfced8b4707755864a0492Ying Wang
75951a39d68df598db08dfced8b4707755864a0492Ying Wangenum hil_control_bitpos {
76951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CTRL_TEST = 0x00010000,
77951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CTRL_IPF = 0x00040000,
78951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CTRL_APE = 0x02000000
79951a39d68df598db08dfced8b4707755864a0492Ying Wang};
80951a39d68df598db08dfced8b4707755864a0492Ying Wang
81951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_DO_ALTER_CTRL 0x40000000
82951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_CTRL_ONLY 0xc0000000
83951a39d68df598db08dfced8b4707755864a0492Ying Wang
84951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef u32 hil_packet;
85951a39d68df598db08dfced8b4707755864a0492Ying Wang
86951a39d68df598db08dfced8b4707755864a0492Ying Wangenum hil_command {
87951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_IFC = 0x00,
88951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_EPT = 0x01,
89951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_ELB = 0x02,
90951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_IDD = 0x03,
91951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_DSR = 0x04,
92951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_PST = 0x05,
93951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_RRG = 0x06,
94951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_WRG = 0x07,
95951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_ACF = 0x08,
96951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMDID_ACF = 0x07,
97951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_POL = 0x10,
98951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMDCT_POL = 0x0f,
99951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_RPL = 0x20,
100951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMDCT_RPL = 0x0f,
101951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_RNM = 0x30,
102951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_RST = 0x31,
103951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_EXD = 0x32,
104951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_RSC = 0x33,
105951a39d68df598db08dfced8b4707755864a0492Ying Wang
106951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_DKA = 0x3d,
107951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_EK1 = 0x3e,
108951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_EK2 = 0x3f,
109951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_PR1 = 0x40,
110951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_PR2 = 0x41,
111951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_PR3 = 0x42,
112951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_PR4 = 0x43,
113951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_PR5 = 0x44,
114951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_PR6 = 0x45,
115951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_PR7 = 0x46,
116951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_PRM = 0x47,
117951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_AK1 = 0x48,
118951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_AK2 = 0x49,
119951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_AK3 = 0x4a,
120951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_AK4 = 0x4b,
121951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_AK5 = 0x4c,
122951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_AK6 = 0x4d,
123951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_AK7 = 0x4e,
124951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_ACK = 0x4f,
125951a39d68df598db08dfced8b4707755864a0492Ying Wang
126951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_RIO = 0xfa,
127951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_SHR = 0xfb,
128951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_TER = 0xfc,
129951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_CAE = 0xfd,
130951a39d68df598db08dfced8b4707755864a0492Ying Wang HIL_CMD_DHR = 0xfe,
131951a39d68df598db08dfced8b4707755864a0492Ying Wang
132951a39d68df598db08dfced8b4707755864a0492Ying Wang};
133951a39d68df598db08dfced8b4707755864a0492Ying Wang
134951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_TYPE_MASK 0xe0
135951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_TYPE_KB_INTEGRAL 0xa0
136951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_TYPE_KB_ITF 0xc0
137951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_TYPE_KB_RSVD 0xe0
138951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_TYPE_KB_LANG_MASK 0x1f
139951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_KBLANG_USE_ESD 0x00
140951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_TYPE_ABS 0x80
141951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_ABS_RSVD1_MASK 0xf8
142951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_ABS_RSVD1 0x98
143951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_ABS_TABLET_MASK 0xf8
144951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_ABS_TABLET 0x90
145951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_ABS_TSCREEN_MASK 0xfc
146951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_ABS_TSCREEN 0x8c
147951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_ABS_RSVD2_MASK 0xfc
148951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_ABS_RSVD2 0x88
149951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_ABS_RSVD3_MASK 0xfc
150951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_ABS_RSVD3 0x80
151951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_TYPE_REL 0x60
152951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_REL_RSVD1_MASK 0xf0
153951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_REL_RSVD1 0x70
154951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_REL_RSVD2_MASK 0xfc
155951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_REL_RSVD2 0x6c
156951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_REL_MOUSE_MASK 0xfc
157951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_REL_MOUSE 0x68
158951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_REL_QUAD_MASK 0xf8
159951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_REL_QUAD 0x60
160951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_TYPE_CHAR 0x40
161951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_CHAR_BARCODE_MASK 0xfc
162951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_CHAR_BARCODE 0x5c
163951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_CHAR_RSVD1_MASK 0xfc
164951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_CHAR_RSVD1 0x58
165951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_CHAR_RSVD2_MASK 0xf8
166951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_CHAR_RSVD2 0x50
167951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_CHAR_RSVD3_MASK 0xf0
168951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_CHAR_RSVD3 0x40
169951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_TYPE_OTHER 0x20
170951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_OTHER_RSVD1_MASK 0xf0
171951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_OTHER_RSVD1 0x30
172951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_OTHER_BARCODE_MASK 0xfc
173951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_OTHER_BARCODE 0x2c
174951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_OTHER_RSVD2_MASK 0xfc
175951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_OTHER_RSVD2 0x28
176951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_OTHER_RSVD3_MASK 0xf8
177951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_OTHER_RSVD3 0x20
178951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_DID_TYPE_KEYPAD 0x00
179951a39d68df598db08dfced8b4707755864a0492Ying Wang
180951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_HEADER_AXSET_MASK 0x03
181951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_HEADER_RSC 0x04
182951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_HEADER_EXD 0x08
183951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_HEADER_IOD 0x10
184951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_HEADER_16BIT 0x20
185951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_HEADER_ABS 0x40
186951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_HEADER_2X_AXIS 0x80
187951a39d68df598db08dfced8b4707755864a0492Ying Wang
188951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_IOD_NBUTTON_MASK 0x07
189951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_IOD_PROXIMITY 0x08
190951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_IOD_PROMPT_MASK 0x70
191951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_IOD_PROMPT_SHIFT 4
192951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_IOD_PROMPT 0x80
193951a39d68df598db08dfced8b4707755864a0492Ying Wang
194951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_NUM_AXES_PER_SET(header_packet)  ((header_packet) & HIL_IDD_HEADER_AXSET_MASK)
195951a39d68df598db08dfced8b4707755864a0492Ying Wang
196951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_NUM_AXSETS(header_packet)  (2 - !((header_packet) & HIL_IDD_HEADER_2X_AXIS))
197951a39d68df598db08dfced8b4707755864a0492Ying Wang
198951a39d68df598db08dfced8b4707755864a0492Ying Wang#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))
199951a39d68df598db08dfced8b4707755864a0492Ying Wang
200951a39d68df598db08dfced8b4707755864a0492Ying Wang#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)))
201951a39d68df598db08dfced8b4707755864a0492Ying Wang
202951a39d68df598db08dfced8b4707755864a0492Ying Wang#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)))
203951a39d68df598db08dfced8b4707755864a0492Ying Wang
204951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_IOD(header_ptr)  (*(header_ptr + HIL_IDD_LEN((*header_ptr)) - 1))
205951a39d68df598db08dfced8b4707755864a0492Ying Wang
206951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_HAS_GEN_PROMPT(header_ptr)  ((*header_ptr & HIL_IDD_HEADER_IOD) &&   (HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_PROMPT))
207951a39d68df598db08dfced8b4707755864a0492Ying Wang
208951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_HAS_GEN_PROXIMITY(header_ptr)  ((*header_ptr & HIL_IDD_HEADER_IOD) &&   (HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_PROXIMITY))
209951a39d68df598db08dfced8b4707755864a0492Ying Wang
210951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_IDD_NUM_BUTTONS(header_ptr)  ((*header_ptr & HIL_IDD_HEADER_IOD) ?   (HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_NBUTTON_MASK) : 0)
211951a39d68df598db08dfced8b4707755864a0492Ying Wang
212951a39d68df598db08dfced8b4707755864a0492Ying Wang#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)
213951a39d68df598db08dfced8b4707755864a0492Ying Wang
214951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_EXD_HEADER_WRG 0x03
215951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_EXD_HEADER_WRG_TYPE1 0x01
216951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_EXD_HEADER_WRG_TYPE2 0x02
217951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_EXD_HEADER_RRG 0x04
218951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_EXD_HEADER_RNM 0x10
219951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_EXD_HEADER_RST 0x20
220951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_EXD_HEADER_LOCALE 0x40
221951a39d68df598db08dfced8b4707755864a0492Ying Wang
222951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_EXD_NUM_RRG(header_ptr)  ((*header_ptr & HIL_EXD_HEADER_RRG) ?   (*(header_ptr + 1) & HIL_PKT_DATA_MASK) : 0)
223951a39d68df598db08dfced8b4707755864a0492Ying Wang
224951a39d68df598db08dfced8b4707755864a0492Ying Wang#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)
225951a39d68df598db08dfced8b4707755864a0492Ying Wang
226951a39d68df598db08dfced8b4707755864a0492Ying Wang#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)
227951a39d68df598db08dfced8b4707755864a0492Ying Wang
228951a39d68df598db08dfced8b4707755864a0492Ying Wang#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))
229951a39d68df598db08dfced8b4707755864a0492Ying Wang
230951a39d68df598db08dfced8b4707755864a0492Ying Wang#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))
231951a39d68df598db08dfced8b4707755864a0492Ying Wang
232951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_LOCALE_MAX 0x1f
233951a39d68df598db08dfced8b4707755864a0492Ying Wang
234951a39d68df598db08dfced8b4707755864a0492Ying Wang#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"
235951a39d68df598db08dfced8b4707755864a0492Ying Wang
236951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_KEYCODES_SET1_TBLSIZE 128
237951a39d68df598db08dfced8b4707755864a0492Ying Wang#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
238951a39d68df598db08dfced8b4707755864a0492Ying Wang
239951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_KEYCODES_SET3_TBLSIZE 128
240951a39d68df598db08dfced8b4707755864a0492Ying Wang#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
241951a39d68df598db08dfced8b4707755864a0492Ying Wang
242951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_POL_NUM_AXES_MASK 0x03
243951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_POL_CTS 0x04
244951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_POL_STATUS_PENDING 0x08
245951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_POL_CHARTYPE_MASK 0x70
246951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_POL_CHARTYPE_NONE 0x00
247951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_POL_CHARTYPE_RSVD1 0x10
248951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_POL_CHARTYPE_ASCII 0x20
249951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_POL_CHARTYPE_BINARY 0x30
250951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_POL_CHARTYPE_SET1 0x40
251951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_POL_CHARTYPE_RSVD2 0x50
252951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_POL_CHARTYPE_SET2 0x60
253951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_POL_CHARTYPE_SET3 0x70
254951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HIL_POL_AXIS_ALT 0x80
255951a39d68df598db08dfced8b4707755864a0492Ying Wang
256951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif
257