1/****************************************************************************
2 ****************************************************************************
3 ***
4 ***   This header was automatically generated from a Linux kernel header
5 ***   of the same name, to make information necessary for userspace to
6 ***   call into the kernel available to libc.  It contains only constants,
7 ***   structures, and macros generated from the original header, and thus,
8 ***   contains no copyrightable information.
9 ***
10 ****************************************************************************
11 ****************************************************************************/
12#ifndef _HIL_H_
13#define _HIL_H_
14
15#include <asm/types.h>
16
17#define HIL_CLOCK 8MHZ
18#define HIL_EK1_CLOCK 30HZ
19#define HIL_EK2_CLOCK 60HZ
20
21#define HIL_TIMEOUT_DEV 5
22#define HIL_TIMEOUT_DEVS 10
23#define HIL_TIMEOUT_NORESP 10
24#define HIL_TIMEOUT_DEVS_DATA 16
25#define HIL_TIMEOUT_SELFTEST 200
26
27#define HIL_WIRE_PACKET_LEN 15
28enum hil_wire_bitpos {
29 HIL_WIRE_START = 0,
30 HIL_WIRE_ADDR2,
31 HIL_WIRE_ADDR1,
32 HIL_WIRE_ADDR0,
33 HIL_WIRE_COMMAND,
34 HIL_WIRE_DATA7,
35 HIL_WIRE_DATA6,
36 HIL_WIRE_DATA5,
37 HIL_WIRE_DATA4,
38 HIL_WIRE_DATA3,
39 HIL_WIRE_DATA2,
40 HIL_WIRE_DATA1,
41 HIL_WIRE_DATA0,
42 HIL_WIRE_PARITY,
43 HIL_WIRE_STOP
44};
45
46enum hil_pkt_bitpos {
47 HIL_PKT_CMD = 0x00000800,
48 HIL_PKT_ADDR2 = 0x00000400,
49 HIL_PKT_ADDR1 = 0x00000200,
50 HIL_PKT_ADDR0 = 0x00000100,
51 HIL_PKT_ADDR_MASK = 0x00000700,
52 HIL_PKT_ADDR_SHIFT = 8,
53 HIL_PKT_DATA7 = 0x00000080,
54 HIL_PKT_DATA6 = 0x00000040,
55 HIL_PKT_DATA5 = 0x00000020,
56 HIL_PKT_DATA4 = 0x00000010,
57 HIL_PKT_DATA3 = 0x00000008,
58 HIL_PKT_DATA2 = 0x00000004,
59 HIL_PKT_DATA1 = 0x00000002,
60 HIL_PKT_DATA0 = 0x00000001,
61 HIL_PKT_DATA_MASK = 0x000000FF,
62 HIL_PKT_DATA_SHIFT = 0
63};
64
65enum hil_error_bitpos {
66 HIL_ERR_OB = 0x00000800,
67 HIL_ERR_INT = 0x00010000,
68 HIL_ERR_NMI = 0x00020000,
69 HIL_ERR_LERR = 0x00040000,
70 HIL_ERR_PERR = 0x01000000,
71 HIL_ERR_FERR = 0x02000000,
72 HIL_ERR_FOF = 0x04000000
73};
74
75enum hil_control_bitpos {
76 HIL_CTRL_TEST = 0x00010000,
77 HIL_CTRL_IPF = 0x00040000,
78 HIL_CTRL_APE = 0x02000000
79};
80
81#define HIL_DO_ALTER_CTRL 0x40000000
82#define HIL_CTRL_ONLY 0xc0000000
83
84typedef u32 hil_packet;
85
86enum hil_command {
87 HIL_CMD_IFC = 0x00,
88 HIL_CMD_EPT = 0x01,
89 HIL_CMD_ELB = 0x02,
90 HIL_CMD_IDD = 0x03,
91 HIL_CMD_DSR = 0x04,
92 HIL_CMD_PST = 0x05,
93 HIL_CMD_RRG = 0x06,
94 HIL_CMD_WRG = 0x07,
95 HIL_CMD_ACF = 0x08,
96 HIL_CMDID_ACF = 0x07,
97 HIL_CMD_POL = 0x10,
98 HIL_CMDCT_POL = 0x0f,
99 HIL_CMD_RPL = 0x20,
100 HIL_CMDCT_RPL = 0x0f,
101 HIL_CMD_RNM = 0x30,
102 HIL_CMD_RST = 0x31,
103 HIL_CMD_EXD = 0x32,
104 HIL_CMD_RSC = 0x33,
105
106 HIL_CMD_DKA = 0x3d,
107 HIL_CMD_EK1 = 0x3e,
108 HIL_CMD_EK2 = 0x3f,
109 HIL_CMD_PR1 = 0x40,
110 HIL_CMD_PR2 = 0x41,
111 HIL_CMD_PR3 = 0x42,
112 HIL_CMD_PR4 = 0x43,
113 HIL_CMD_PR5 = 0x44,
114 HIL_CMD_PR6 = 0x45,
115 HIL_CMD_PR7 = 0x46,
116 HIL_CMD_PRM = 0x47,
117 HIL_CMD_AK1 = 0x48,
118 HIL_CMD_AK2 = 0x49,
119 HIL_CMD_AK3 = 0x4a,
120 HIL_CMD_AK4 = 0x4b,
121 HIL_CMD_AK5 = 0x4c,
122 HIL_CMD_AK6 = 0x4d,
123 HIL_CMD_AK7 = 0x4e,
124 HIL_CMD_ACK = 0x4f,
125
126 HIL_CMD_RIO = 0xfa,
127 HIL_CMD_SHR = 0xfb,
128 HIL_CMD_TER = 0xfc,
129 HIL_CMD_CAE = 0xfd,
130 HIL_CMD_DHR = 0xfe,
131
132};
133
134#define HIL_IDD_DID_TYPE_MASK 0xe0
135#define HIL_IDD_DID_TYPE_KB_INTEGRAL 0xa0
136#define HIL_IDD_DID_TYPE_KB_ITF 0xc0
137#define HIL_IDD_DID_TYPE_KB_RSVD 0xe0
138#define HIL_IDD_DID_TYPE_KB_LANG_MASK 0x1f
139#define HIL_IDD_DID_KBLANG_USE_ESD 0x00
140#define HIL_IDD_DID_TYPE_ABS 0x80
141#define HIL_IDD_DID_ABS_RSVD1_MASK 0xf8
142#define HIL_IDD_DID_ABS_RSVD1 0x98
143#define HIL_IDD_DID_ABS_TABLET_MASK 0xf8
144#define HIL_IDD_DID_ABS_TABLET 0x90
145#define HIL_IDD_DID_ABS_TSCREEN_MASK 0xfc
146#define HIL_IDD_DID_ABS_TSCREEN 0x8c
147#define HIL_IDD_DID_ABS_RSVD2_MASK 0xfc
148#define HIL_IDD_DID_ABS_RSVD2 0x88
149#define HIL_IDD_DID_ABS_RSVD3_MASK 0xfc
150#define HIL_IDD_DID_ABS_RSVD3 0x80
151#define HIL_IDD_DID_TYPE_REL 0x60
152#define HIL_IDD_DID_REL_RSVD1_MASK 0xf0
153#define HIL_IDD_DID_REL_RSVD1 0x70
154#define HIL_IDD_DID_REL_RSVD2_MASK 0xfc
155#define HIL_IDD_DID_REL_RSVD2 0x6c
156#define HIL_IDD_DID_REL_MOUSE_MASK 0xfc
157#define HIL_IDD_DID_REL_MOUSE 0x68
158#define HIL_IDD_DID_REL_QUAD_MASK 0xf8
159#define HIL_IDD_DID_REL_QUAD 0x60
160#define HIL_IDD_DID_TYPE_CHAR 0x40
161#define HIL_IDD_DID_CHAR_BARCODE_MASK 0xfc
162#define HIL_IDD_DID_CHAR_BARCODE 0x5c
163#define HIL_IDD_DID_CHAR_RSVD1_MASK 0xfc
164#define HIL_IDD_DID_CHAR_RSVD1 0x58
165#define HIL_IDD_DID_CHAR_RSVD2_MASK 0xf8
166#define HIL_IDD_DID_CHAR_RSVD2 0x50
167#define HIL_IDD_DID_CHAR_RSVD3_MASK 0xf0
168#define HIL_IDD_DID_CHAR_RSVD3 0x40
169#define HIL_IDD_DID_TYPE_OTHER 0x20
170#define HIL_IDD_DID_OTHER_RSVD1_MASK 0xf0
171#define HIL_IDD_DID_OTHER_RSVD1 0x30
172#define HIL_IDD_DID_OTHER_BARCODE_MASK 0xfc
173#define HIL_IDD_DID_OTHER_BARCODE 0x2c
174#define HIL_IDD_DID_OTHER_RSVD2_MASK 0xfc
175#define HIL_IDD_DID_OTHER_RSVD2 0x28
176#define HIL_IDD_DID_OTHER_RSVD3_MASK 0xf8
177#define HIL_IDD_DID_OTHER_RSVD3 0x20
178#define HIL_IDD_DID_TYPE_KEYPAD 0x00
179
180#define HIL_IDD_HEADER_AXSET_MASK 0x03
181#define HIL_IDD_HEADER_RSC 0x04
182#define HIL_IDD_HEADER_EXD 0x08
183#define HIL_IDD_HEADER_IOD 0x10
184#define HIL_IDD_HEADER_16BIT 0x20
185#define HIL_IDD_HEADER_ABS 0x40
186#define HIL_IDD_HEADER_2X_AXIS 0x80
187
188#define HIL_IDD_IOD_NBUTTON_MASK 0x07
189#define HIL_IDD_IOD_PROXIMITY 0x08
190#define HIL_IDD_IOD_PROMPT_MASK 0x70
191#define HIL_IDD_IOD_PROMPT_SHIFT 4
192#define HIL_IDD_IOD_PROMPT 0x80
193
194#define HIL_IDD_NUM_AXES_PER_SET(header_packet)  ((header_packet) & HIL_IDD_HEADER_AXSET_MASK)
195
196#define HIL_IDD_NUM_AXSETS(header_packet)  (2 - !((header_packet) & HIL_IDD_HEADER_2X_AXIS))
197
198#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))
199
200#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)))
201
202#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)))
203
204#define HIL_IDD_IOD(header_ptr)  (*(header_ptr + HIL_IDD_LEN((*header_ptr)) - 1))
205
206#define HIL_IDD_HAS_GEN_PROMPT(header_ptr)  ((*header_ptr & HIL_IDD_HEADER_IOD) &&   (HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_PROMPT))
207
208#define HIL_IDD_HAS_GEN_PROXIMITY(header_ptr)  ((*header_ptr & HIL_IDD_HEADER_IOD) &&   (HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_PROXIMITY))
209
210#define HIL_IDD_NUM_BUTTONS(header_ptr)  ((*header_ptr & HIL_IDD_HEADER_IOD) ?   (HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_NBUTTON_MASK) : 0)
211
212#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)
213
214#define HIL_EXD_HEADER_WRG 0x03
215#define HIL_EXD_HEADER_WRG_TYPE1 0x01
216#define HIL_EXD_HEADER_WRG_TYPE2 0x02
217#define HIL_EXD_HEADER_RRG 0x04
218#define HIL_EXD_HEADER_RNM 0x10
219#define HIL_EXD_HEADER_RST 0x20
220#define HIL_EXD_HEADER_LOCALE 0x40
221
222#define HIL_EXD_NUM_RRG(header_ptr)  ((*header_ptr & HIL_EXD_HEADER_RRG) ?   (*(header_ptr + 1) & HIL_PKT_DATA_MASK) : 0)
223
224#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)
225
226#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)
227
228#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))
229
230#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))
231
232#define HIL_LOCALE_MAX 0x1f
233
234#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"
235
236#define HIL_KEYCODES_SET1_TBLSIZE 128
237#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
238
239#define HIL_KEYCODES_SET3_TBLSIZE 128
240#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
241
242#define HIL_POL_NUM_AXES_MASK 0x03
243#define HIL_POL_CTS 0x04
244#define HIL_POL_STATUS_PENDING 0x08
245#define HIL_POL_CHARTYPE_MASK 0x70
246#define HIL_POL_CHARTYPE_NONE 0x00
247#define HIL_POL_CHARTYPE_RSVD1 0x10
248#define HIL_POL_CHARTYPE_ASCII 0x20
249#define HIL_POL_CHARTYPE_BINARY 0x30
250#define HIL_POL_CHARTYPE_SET1 0x40
251#define HIL_POL_CHARTYPE_RSVD2 0x50
252#define HIL_POL_CHARTYPE_SET2 0x60
253#define HIL_POL_CHARTYPE_SET3 0x70
254#define HIL_POL_AXIS_ALT 0x80
255
256#endif
257