~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/linux/hil.h

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /include/linux/hil.h (Version linux-6.12-rc7) and /include/linux/hil.h (Version linux-4.19.323)


  1 #ifndef _HIL_H_                                     1 #ifndef _HIL_H_
  2 #define _HIL_H_                                     2 #define _HIL_H_
  3                                                     3 
  4 /*                                                  4 /*
  5  * Hewlett Packard Human Interface Loop (HP-HI      5  * Hewlett Packard Human Interface Loop (HP-HIL) Protocol -- header.
  6  *                                                  6  *
  7  * Copyright (c) 2001 Brian S. Julin                7  * Copyright (c) 2001 Brian S. Julin
  8  * All rights reserved.                             8  * All rights reserved.
  9  *                                                  9  *
 10  * Redistribution and use in source and binary     10  * Redistribution and use in source and binary forms, with or without
 11  * modification, are permitted provided that t     11  * modification, are permitted provided that the following conditions
 12  * are met:                                        12  * are met:
 13  * 1. Redistributions of source code must reta     13  * 1. Redistributions of source code must retain the above copyright
 14  *    notice, this list of conditions, and the     14  *    notice, this list of conditions, and the following disclaimer,
 15  *    without modification.                        15  *    without modification.
 16  * 2. The name of the author may not be used t     16  * 2. The name of the author may not be used to endorse or promote products
 17  *    derived from this software without speci     17  *    derived from this software without specific prior written permission.
 18  *                                                 18  *
 19  * Alternatively, this software may be distrib     19  * Alternatively, this software may be distributed under the terms of the
 20  * GNU General Public License ("GPL").             20  * GNU General Public License ("GPL").
 21  *                                                 21  *
 22  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND     22  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 23  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDIN     23  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 24  * IMPLIED WARRANTIES OF MERCHANTABILITY AND F     24  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 25  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHO     25  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
 26  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,      26  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 27  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PRO     27  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 28  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS;     28  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 29  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILI     29  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 30  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR     30  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 31  *                                                 31  *
 32  * References:                                     32  * References:
 33  * HP-HIL Technical Reference Manual.  Hewlett     33  * HP-HIL Technical Reference Manual.  Hewlett Packard Product No. 45918A
 34  *                                                 34  *
 35  * A note of thanks to HP for providing and sh     35  * A note of thanks to HP for providing and shipping reference materials
 36  * free of charge to help in the development o     36  * free of charge to help in the development of HIL support for Linux.
 37  *                                                 37  *
 38  */                                                38  */
 39                                                    39 
 40 #include <asm/types.h>                             40 #include <asm/types.h>
 41                                                    41 
 42 /* Physical constants relevant to raw loop/dev     42 /* Physical constants relevant to raw loop/device timing. 
 43  */                                                43  */ 
 44                                                    44 
 45 #define HIL_CLOCK               8MHZ               45 #define HIL_CLOCK               8MHZ
 46 #define HIL_EK1_CLOCK           30HZ               46 #define HIL_EK1_CLOCK           30HZ
 47 #define HIL_EK2_CLOCK           60HZ               47 #define HIL_EK2_CLOCK           60HZ
 48                                                    48 
 49 #define HIL_TIMEOUT_DEV         5       /* ms      49 #define HIL_TIMEOUT_DEV         5       /* ms */
 50 #define HIL_TIMEOUT_DEVS        10      /* ms      50 #define HIL_TIMEOUT_DEVS        10      /* ms */
 51 #define HIL_TIMEOUT_NORESP      10      /* ms      51 #define HIL_TIMEOUT_NORESP      10      /* ms */
 52 #define HIL_TIMEOUT_DEVS_DATA   16      /* ms      52 #define HIL_TIMEOUT_DEVS_DATA   16      /* ms */
 53 #define HIL_TIMEOUT_SELFTEST    200     /* ms      53 #define HIL_TIMEOUT_SELFTEST    200     /* ms */
 54                                                    54 
 55                                                    55 
 56 /* Actual wire line coding.  These will only b     56 /* Actual wire line coding.  These will only be useful if someone is 
 57  * implementing a software MLC to run HIL devi     57  * implementing a software MLC to run HIL devices on a non-parisc machine.
 58  */                                                58  */
 59                                                    59 
 60 #define HIL_WIRE_PACKET_LEN     15                 60 #define HIL_WIRE_PACKET_LEN     15
 61 enum hil_wire_bitpos {                             61 enum hil_wire_bitpos {
 62         HIL_WIRE_START          = 0,               62         HIL_WIRE_START          = 0,
 63         HIL_WIRE_ADDR2,                            63         HIL_WIRE_ADDR2,
 64         HIL_WIRE_ADDR1,                            64         HIL_WIRE_ADDR1,
 65         HIL_WIRE_ADDR0,                            65         HIL_WIRE_ADDR0,
 66         HIL_WIRE_COMMAND,                          66         HIL_WIRE_COMMAND,
 67         HIL_WIRE_DATA7,                            67         HIL_WIRE_DATA7,
 68         HIL_WIRE_DATA6,                            68         HIL_WIRE_DATA6,
 69         HIL_WIRE_DATA5,                            69         HIL_WIRE_DATA5,
 70         HIL_WIRE_DATA4,                            70         HIL_WIRE_DATA4,
 71         HIL_WIRE_DATA3,                            71         HIL_WIRE_DATA3,
 72         HIL_WIRE_DATA2,                            72         HIL_WIRE_DATA2,
 73         HIL_WIRE_DATA1,                            73         HIL_WIRE_DATA1,
 74         HIL_WIRE_DATA0,                            74         HIL_WIRE_DATA0,
 75         HIL_WIRE_PARITY,                           75         HIL_WIRE_PARITY,
 76         HIL_WIRE_STOP                              76         HIL_WIRE_STOP
 77 };                                                 77 };
 78                                                    78 
 79 /* HP documentation uses these bit positions t     79 /* HP documentation uses these bit positions to refer to commands;
 80  * we will call these "packets".                   80  * we will call these "packets".
 81  */                                                81  */
 82 enum hil_pkt_bitpos {                              82 enum hil_pkt_bitpos {
 83         HIL_PKT_CMD             = 0x00000800,      83         HIL_PKT_CMD             = 0x00000800,
 84         HIL_PKT_ADDR2           = 0x00000400,      84         HIL_PKT_ADDR2           = 0x00000400,
 85         HIL_PKT_ADDR1           = 0x00000200,      85         HIL_PKT_ADDR1           = 0x00000200,
 86         HIL_PKT_ADDR0           = 0x00000100,      86         HIL_PKT_ADDR0           = 0x00000100,
 87         HIL_PKT_ADDR_MASK       = 0x00000700,      87         HIL_PKT_ADDR_MASK       = 0x00000700,
 88         HIL_PKT_ADDR_SHIFT      = 8,               88         HIL_PKT_ADDR_SHIFT      = 8,
 89         HIL_PKT_DATA7           = 0x00000080,      89         HIL_PKT_DATA7           = 0x00000080,
 90         HIL_PKT_DATA6           = 0x00000040,      90         HIL_PKT_DATA6           = 0x00000040,
 91         HIL_PKT_DATA5           = 0x00000020,      91         HIL_PKT_DATA5           = 0x00000020,
 92         HIL_PKT_DATA4           = 0x00000010,      92         HIL_PKT_DATA4           = 0x00000010,
 93         HIL_PKT_DATA3           = 0x00000008,      93         HIL_PKT_DATA3           = 0x00000008,
 94         HIL_PKT_DATA2           = 0x00000004,      94         HIL_PKT_DATA2           = 0x00000004,
 95         HIL_PKT_DATA1           = 0x00000002,      95         HIL_PKT_DATA1           = 0x00000002,
 96         HIL_PKT_DATA0           = 0x00000001,      96         HIL_PKT_DATA0           = 0x00000001,
 97         HIL_PKT_DATA_MASK       = 0x000000FF,      97         HIL_PKT_DATA_MASK       = 0x000000FF,
 98         HIL_PKT_DATA_SHIFT      = 0                98         HIL_PKT_DATA_SHIFT      = 0
 99 };                                                 99 };
100                                                   100 
101 /* The HIL MLC also has several error/status/c    101 /* The HIL MLC also has several error/status/control bits.  We extend the 
102  * "packet" to include these when direct acces    102  * "packet" to include these when direct access to the MLC is available,
103  * or emulate them in cases where they are not    103  * or emulate them in cases where they are not available. 
104  *                                                104  *
105  * This way the device driver knows that the u    105  * This way the device driver knows that the underlying MLC driver
106  * has had to deal with loop errors.              106  * has had to deal with loop errors.
107  */                                               107  */
108 enum hil_error_bitpos {                           108 enum hil_error_bitpos {
109         HIL_ERR_OB      = 0x00000800, /* MLC i    109         HIL_ERR_OB      = 0x00000800, /* MLC is busy sending an auto-poll, 
110                                          or we    110                                          or we have filled up the output 
111                                          buffe    111                                          buffer and must wait. */
112         HIL_ERR_INT     = 0x00010000, /* A nor    112         HIL_ERR_INT     = 0x00010000, /* A normal interrupt has occurred. */
113         HIL_ERR_NMI     = 0x00020000, /* An NM    113         HIL_ERR_NMI     = 0x00020000, /* An NMI has occurred. */
114         HIL_ERR_LERR    = 0x00040000, /* A pol    114         HIL_ERR_LERR    = 0x00040000, /* A poll didn't come back. */
115         HIL_ERR_PERR    = 0x01000000, /* There    115         HIL_ERR_PERR    = 0x01000000, /* There was a Parity Error. */
116         HIL_ERR_FERR    = 0x02000000, /* There    116         HIL_ERR_FERR    = 0x02000000, /* There was a Framing Error. */
117         HIL_ERR_FOF     = 0x04000000  /* Input    117         HIL_ERR_FOF     = 0x04000000  /* Input FIFO Overflowed. */
118 };                                                118 };
119                                                   119 
120 enum hil_control_bitpos {                         120 enum hil_control_bitpos {
121         HIL_CTRL_TEST   = 0x00010000,             121         HIL_CTRL_TEST   = 0x00010000,
122         HIL_CTRL_IPF    = 0x00040000,             122         HIL_CTRL_IPF    = 0x00040000,
123         HIL_CTRL_APE    = 0x02000000              123         HIL_CTRL_APE    = 0x02000000
124 };                                                124 };
125                                                   125 
126 /* Bits 30,31 are unused, we use them to contr    126 /* Bits 30,31 are unused, we use them to control write behavior. */
127 #define HIL_DO_ALTER_CTRL  0x40000000 /* Write    127 #define HIL_DO_ALTER_CTRL  0x40000000 /* Write MSW of packet to control 
128                                           befo    128                                           before writing LSW to loop */
129 #define HIL_CTRL_ONLY      0xc0000000 /* *Only    129 #define HIL_CTRL_ONLY      0xc0000000 /* *Only* alter the control registers */
130                                                   130 
131 /* This gives us a 32-bit "packet"                131 /* This gives us a 32-bit "packet" 
132  */                                               132  */
133 typedef u32 hil_packet;                           133 typedef u32 hil_packet;
134                                                   134 
135                                                   135 
136 /* HIL Loop commands                              136 /* HIL Loop commands 
137  */                                               137  */
138 enum hil_command {                                138 enum hil_command {
139         HIL_CMD_IFC     = 0x00, /* Interface C    139         HIL_CMD_IFC     = 0x00, /* Interface Clear */
140         HIL_CMD_EPT     = 0x01, /* Enter Pass-    140         HIL_CMD_EPT     = 0x01, /* Enter Pass-Thru Mode */
141         HIL_CMD_ELB     = 0x02, /* Enter Loop-    141         HIL_CMD_ELB     = 0x02, /* Enter Loop-Back Mode */
142         HIL_CMD_IDD     = 0x03, /* Identify an    142         HIL_CMD_IDD     = 0x03, /* Identify and Describe */
143         HIL_CMD_DSR     = 0x04, /* Device Soft    143         HIL_CMD_DSR     = 0x04, /* Device Soft Reset */
144         HIL_CMD_PST     = 0x05, /* Perform Sel    144         HIL_CMD_PST     = 0x05, /* Perform Self Test */
145         HIL_CMD_RRG     = 0x06, /* Read Regist    145         HIL_CMD_RRG     = 0x06, /* Read Register */
146         HIL_CMD_WRG     = 0x07, /* Write Regis    146         HIL_CMD_WRG     = 0x07, /* Write Register */
147         HIL_CMD_ACF     = 0x08, /* Auto Config    147         HIL_CMD_ACF     = 0x08, /* Auto Configure */
148         HIL_CMDID_ACF   = 0x07, /* Auto Config    148         HIL_CMDID_ACF   = 0x07, /* Auto Configure bits with incremented ID */
149         HIL_CMD_POL     = 0x10, /* Poll */        149         HIL_CMD_POL     = 0x10, /* Poll */
150         HIL_CMDCT_POL   = 0x0f, /* Poll comman    150         HIL_CMDCT_POL   = 0x0f, /* Poll command bits with item count  */
151         HIL_CMD_RPL     = 0x20, /* RePoll */      151         HIL_CMD_RPL     = 0x20, /* RePoll */
152         HIL_CMDCT_RPL   = 0x0f, /* RePoll comm    152         HIL_CMDCT_RPL   = 0x0f, /* RePoll command bits with item count */
153         HIL_CMD_RNM     = 0x30, /* Report Name    153         HIL_CMD_RNM     = 0x30, /* Report Name */
154         HIL_CMD_RST     = 0x31, /* Report Stat    154         HIL_CMD_RST     = 0x31, /* Report Status */
155         HIL_CMD_EXD     = 0x32, /* Extended De    155         HIL_CMD_EXD     = 0x32, /* Extended Describe */
156         HIL_CMD_RSC     = 0x33, /* Report Secu    156         HIL_CMD_RSC     = 0x33, /* Report Security Code */
157                                                   157 
158         /* 0x34 to 0x3c reserved for future us    158         /* 0x34 to 0x3c reserved for future use  */
159                                                   159 
160         HIL_CMD_DKA     = 0x3d, /* Disable Key    160         HIL_CMD_DKA     = 0x3d, /* Disable Keyswitch Autorepeat */
161         HIL_CMD_EK1     = 0x3e, /* Enable Keys    161         HIL_CMD_EK1     = 0x3e, /* Enable Keyswitch Autorepeat 1 */
162         HIL_CMD_EK2     = 0x3f, /* Enable Keys    162         HIL_CMD_EK2     = 0x3f, /* Enable Keyswitch Autorepeat 2 */
163         HIL_CMD_PR1     = 0x40, /* Prompt1 */     163         HIL_CMD_PR1     = 0x40, /* Prompt1 */  
164         HIL_CMD_PR2     = 0x41, /* Prompt2 */     164         HIL_CMD_PR2     = 0x41, /* Prompt2 */
165         HIL_CMD_PR3     = 0x42, /* Prompt3 */     165         HIL_CMD_PR3     = 0x42, /* Prompt3 */
166         HIL_CMD_PR4     = 0x43, /* Prompt4 */     166         HIL_CMD_PR4     = 0x43, /* Prompt4 */
167         HIL_CMD_PR5     = 0x44, /* Prompt5 */     167         HIL_CMD_PR5     = 0x44, /* Prompt5 */
168         HIL_CMD_PR6     = 0x45, /* Prompt6 */     168         HIL_CMD_PR6     = 0x45, /* Prompt6 */
169         HIL_CMD_PR7     = 0x46, /* Prompt7 */     169         HIL_CMD_PR7     = 0x46, /* Prompt7 */
170         HIL_CMD_PRM     = 0x47, /* Prompt (Gen    170         HIL_CMD_PRM     = 0x47, /* Prompt (General Purpose) */
171         HIL_CMD_AK1     = 0x48, /* Acknowledge    171         HIL_CMD_AK1     = 0x48, /* Acknowledge1 */  
172         HIL_CMD_AK2     = 0x49, /* Acknowledge    172         HIL_CMD_AK2     = 0x49, /* Acknowledge2 */
173         HIL_CMD_AK3     = 0x4a, /* Acknowledge    173         HIL_CMD_AK3     = 0x4a, /* Acknowledge3 */
174         HIL_CMD_AK4     = 0x4b, /* Acknowledge    174         HIL_CMD_AK4     = 0x4b, /* Acknowledge4 */
175         HIL_CMD_AK5     = 0x4c, /* Acknowledge    175         HIL_CMD_AK5     = 0x4c, /* Acknowledge5 */
176         HIL_CMD_AK6     = 0x4d, /* Acknowledge    176         HIL_CMD_AK6     = 0x4d, /* Acknowledge6 */
177         HIL_CMD_AK7     = 0x4e, /* Acknowledge    177         HIL_CMD_AK7     = 0x4e, /* Acknowledge7 */
178         HIL_CMD_ACK     = 0x4f, /* Acknowledge    178         HIL_CMD_ACK     = 0x4f, /* Acknowledge (General Purpose) */
179                                                   179 
180         /* 0x50 to 0x78 reserved for future us    180         /* 0x50 to 0x78 reserved for future use  */
181         /* 0x80 to 0xEF device-specific comman    181         /* 0x80 to 0xEF device-specific commands */
182         /* 0xf0 to 0xf9 reserved for future us    182         /* 0xf0 to 0xf9 reserved for future use  */
183                                                   183 
184         HIL_CMD_RIO     = 0xfa, /* Register I/    184         HIL_CMD_RIO     = 0xfa, /* Register I/O Error */
185         HIL_CMD_SHR     = 0xfb, /* System Hard    185         HIL_CMD_SHR     = 0xfb, /* System Hard Reset */
186         HIL_CMD_TER     = 0xfc, /* Transmissio    186         HIL_CMD_TER     = 0xfc, /* Transmission Error */
187         HIL_CMD_CAE     = 0xfd, /* Configurati    187         HIL_CMD_CAE     = 0xfd, /* Configuration Address Error */
188         HIL_CMD_DHR     = 0xfe, /* Device Hard    188         HIL_CMD_DHR     = 0xfe, /* Device Hard Reset */
189                                                   189 
190         /* 0xff is prohibited from use. */        190         /* 0xff is prohibited from use. */
191 };                                                191 };
192                                                   192 
193                                                   193 
194 /*                                                194 /* 
195  * Response "records" to HIL commands             195  * Response "records" to HIL commands
196  */                                               196  */
197                                                   197 
198 /* Device ID byte                                 198 /* Device ID byte 
199  */                                               199  */
200 #define HIL_IDD_DID_TYPE_MASK           0xe0      200 #define HIL_IDD_DID_TYPE_MASK           0xe0    /* Primary type bits */
201 #define HIL_IDD_DID_TYPE_KB_INTEGRAL    0xa0      201 #define HIL_IDD_DID_TYPE_KB_INTEGRAL    0xa0    /* Integral keyboard */
202 #define HIL_IDD_DID_TYPE_KB_ITF         0xc0      202 #define HIL_IDD_DID_TYPE_KB_ITF         0xc0    /* ITD keyboard */
203 #define HIL_IDD_DID_TYPE_KB_RSVD        0xe0      203 #define HIL_IDD_DID_TYPE_KB_RSVD        0xe0    /* Reserved keyboard type */
204 #define HIL_IDD_DID_TYPE_KB_LANG_MASK   0x1f      204 #define HIL_IDD_DID_TYPE_KB_LANG_MASK   0x1f    /* Keyboard locale bits */
205 #define HIL_IDD_DID_KBLANG_USE_ESD      0x00      205 #define HIL_IDD_DID_KBLANG_USE_ESD      0x00    /* Use ESD Locale instead */
206 #define HIL_IDD_DID_TYPE_ABS            0x80      206 #define HIL_IDD_DID_TYPE_ABS            0x80    /* Absolute Positioners */
207 #define HIL_IDD_DID_ABS_RSVD1_MASK      0xf8      207 #define HIL_IDD_DID_ABS_RSVD1_MASK      0xf8    /* Reserved */
208 #define HIL_IDD_DID_ABS_RSVD1           0x98      208 #define HIL_IDD_DID_ABS_RSVD1           0x98
209 #define HIL_IDD_DID_ABS_TABLET_MASK     0xf8      209 #define HIL_IDD_DID_ABS_TABLET_MASK     0xf8    /* Tablets and digitizers */
210 #define HIL_IDD_DID_ABS_TABLET          0x90      210 #define HIL_IDD_DID_ABS_TABLET          0x90
211 #define HIL_IDD_DID_ABS_TSCREEN_MASK    0xfc      211 #define HIL_IDD_DID_ABS_TSCREEN_MASK    0xfc    /* Touch screens */
212 #define HIL_IDD_DID_ABS_TSCREEN         0x8c      212 #define HIL_IDD_DID_ABS_TSCREEN         0x8c
213 #define HIL_IDD_DID_ABS_RSVD2_MASK      0xfc      213 #define HIL_IDD_DID_ABS_RSVD2_MASK      0xfc    /* Reserved */
214 #define HIL_IDD_DID_ABS_RSVD2           0x88      214 #define HIL_IDD_DID_ABS_RSVD2           0x88
215 #define HIL_IDD_DID_ABS_RSVD3_MASK      0xfc      215 #define HIL_IDD_DID_ABS_RSVD3_MASK      0xfc    /* Reserved */
216 #define HIL_IDD_DID_ABS_RSVD3           0x80      216 #define HIL_IDD_DID_ABS_RSVD3           0x80
217 #define HIL_IDD_DID_TYPE_REL            0x60      217 #define HIL_IDD_DID_TYPE_REL            0x60    /* Relative Positioners */
218 #define HIL_IDD_DID_REL_RSVD1_MASK      0xf0      218 #define HIL_IDD_DID_REL_RSVD1_MASK      0xf0    /* Reserved */
219 #define HIL_IDD_DID_REL_RSVD1           0x70      219 #define HIL_IDD_DID_REL_RSVD1           0x70
220 #define HIL_IDD_DID_REL_RSVD2_MASK      0xfc      220 #define HIL_IDD_DID_REL_RSVD2_MASK      0xfc    /* Reserved */
221 #define HIL_IDD_DID_REL_RSVD2           0x6c      221 #define HIL_IDD_DID_REL_RSVD2           0x6c
222 #define HIL_IDD_DID_REL_MOUSE_MASK      0xfc      222 #define HIL_IDD_DID_REL_MOUSE_MASK      0xfc    /* Mouse */
223 #define HIL_IDD_DID_REL_MOUSE           0x68      223 #define HIL_IDD_DID_REL_MOUSE           0x68
224 #define HIL_IDD_DID_REL_QUAD_MASK       0xf8      224 #define HIL_IDD_DID_REL_QUAD_MASK       0xf8    /* Other Quadrature Devices */
225 #define HIL_IDD_DID_REL_QUAD            0x60      225 #define HIL_IDD_DID_REL_QUAD            0x60
226 #define HIL_IDD_DID_TYPE_CHAR           0x40      226 #define HIL_IDD_DID_TYPE_CHAR           0x40    /* Character Entry */
227 #define HIL_IDD_DID_CHAR_BARCODE_MASK   0xfc      227 #define HIL_IDD_DID_CHAR_BARCODE_MASK   0xfc    /* Barcode Reader */
228 #define HIL_IDD_DID_CHAR_BARCODE        0x5c      228 #define HIL_IDD_DID_CHAR_BARCODE        0x5c
229 #define HIL_IDD_DID_CHAR_RSVD1_MASK     0xfc      229 #define HIL_IDD_DID_CHAR_RSVD1_MASK     0xfc    /* Reserved */
230 #define HIL_IDD_DID_CHAR_RSVD1          0x58      230 #define HIL_IDD_DID_CHAR_RSVD1          0x58
231 #define HIL_IDD_DID_CHAR_RSVD2_MASK     0xf8      231 #define HIL_IDD_DID_CHAR_RSVD2_MASK     0xf8    /* Reserved */
232 #define HIL_IDD_DID_CHAR_RSVD2          0x50      232 #define HIL_IDD_DID_CHAR_RSVD2          0x50
233 #define HIL_IDD_DID_CHAR_RSVD3_MASK     0xf0      233 #define HIL_IDD_DID_CHAR_RSVD3_MASK     0xf0    /* Reserved */
234 #define HIL_IDD_DID_CHAR_RSVD3          0x40      234 #define HIL_IDD_DID_CHAR_RSVD3          0x40
235 #define HIL_IDD_DID_TYPE_OTHER          0x20      235 #define HIL_IDD_DID_TYPE_OTHER          0x20    /* Miscellaneous */
236 #define HIL_IDD_DID_OTHER_RSVD1_MASK    0xf0      236 #define HIL_IDD_DID_OTHER_RSVD1_MASK    0xf0    /* Reserved */
237 #define HIL_IDD_DID_OTHER_RSVD1         0x30      237 #define HIL_IDD_DID_OTHER_RSVD1         0x30
238 #define HIL_IDD_DID_OTHER_BARCODE_MASK  0xfc      238 #define HIL_IDD_DID_OTHER_BARCODE_MASK  0xfc    /* Tone Generator */
239 #define HIL_IDD_DID_OTHER_BARCODE       0x2c      239 #define HIL_IDD_DID_OTHER_BARCODE       0x2c
240 #define HIL_IDD_DID_OTHER_RSVD2_MASK    0xfc      240 #define HIL_IDD_DID_OTHER_RSVD2_MASK    0xfc    /* Reserved */
241 #define HIL_IDD_DID_OTHER_RSVD2         0x28      241 #define HIL_IDD_DID_OTHER_RSVD2         0x28
242 #define HIL_IDD_DID_OTHER_RSVD3_MASK    0xf8      242 #define HIL_IDD_DID_OTHER_RSVD3_MASK    0xf8    /* Reserved */
243 #define HIL_IDD_DID_OTHER_RSVD3         0x20      243 #define HIL_IDD_DID_OTHER_RSVD3         0x20
244 #define HIL_IDD_DID_TYPE_KEYPAD         0x00      244 #define HIL_IDD_DID_TYPE_KEYPAD         0x00    /* Vectra Keyboard */
245                                                   245 
246 /* IDD record header                              246 /* IDD record header 
247  */                                               247  */
248 #define HIL_IDD_HEADER_AXSET_MASK       0x03      248 #define HIL_IDD_HEADER_AXSET_MASK       0x03    /* Number of axis in a set */
249 #define HIL_IDD_HEADER_RSC              0x04      249 #define HIL_IDD_HEADER_RSC              0x04    /* Supports RSC command */
250 #define HIL_IDD_HEADER_EXD              0x08      250 #define HIL_IDD_HEADER_EXD              0x08    /* Supports EXD command */
251 #define HIL_IDD_HEADER_IOD              0x10      251 #define HIL_IDD_HEADER_IOD              0x10    /* IOD byte to follow */
252 #define HIL_IDD_HEADER_16BIT            0x20      252 #define HIL_IDD_HEADER_16BIT            0x20    /* 16 (vs. 8) bit resolution */
253 #define HIL_IDD_HEADER_ABS              0x40      253 #define HIL_IDD_HEADER_ABS              0x40    /* Reports Absolute Position */
254 #define HIL_IDD_HEADER_2X_AXIS          0x80      254 #define HIL_IDD_HEADER_2X_AXIS          0x80    /* Two sets of 1-3 axis */
255                                                   255 
256 /* I/O Descriptor                                 256 /* I/O Descriptor
257  */                                               257  */
258 #define HIL_IDD_IOD_NBUTTON_MASK        0x07      258 #define HIL_IDD_IOD_NBUTTON_MASK        0x07    /* Number of buttons */
259 #define HIL_IDD_IOD_PROXIMITY           0x08      259 #define HIL_IDD_IOD_PROXIMITY           0x08    /* Proximity in/out events */
260 #define HIL_IDD_IOD_PROMPT_MASK         0x70      260 #define HIL_IDD_IOD_PROMPT_MASK         0x70    /* Number of prompts/acks */
261 #define HIL_IDD_IOD_PROMPT_SHIFT        4         261 #define HIL_IDD_IOD_PROMPT_SHIFT        4
262 #define HIL_IDD_IOD_PROMPT              0x80      262 #define HIL_IDD_IOD_PROMPT              0x80    /* Generic prompt/ack */
263                                                   263 
264 #define HIL_IDD_NUM_AXES_PER_SET(header_packet    264 #define HIL_IDD_NUM_AXES_PER_SET(header_packet) \
265 ((header_packet) & HIL_IDD_HEADER_AXSET_MASK)     265 ((header_packet) & HIL_IDD_HEADER_AXSET_MASK)
266                                                   266 
267 #define HIL_IDD_NUM_AXSETS(header_packet) \       267 #define HIL_IDD_NUM_AXSETS(header_packet) \
268 (2 - !((header_packet) & HIL_IDD_HEADER_2X_AXI    268 (2 - !((header_packet) & HIL_IDD_HEADER_2X_AXIS))
269                                                   269 
270 #define HIL_IDD_LEN(header_packet) \              270 #define HIL_IDD_LEN(header_packet) \
271 ((4 - !(header_packet & HIL_IDD_HEADER_IOD) -     271 ((4 - !(header_packet & HIL_IDD_HEADER_IOD) -                   \
272   2 * !(HIL_IDD_NUM_AXES_PER_SET(header_packet    272   2 * !(HIL_IDD_NUM_AXES_PER_SET(header_packet))) +             \
273   2 * HIL_IDD_NUM_AXES_PER_SET(header_packet)     273   2 * HIL_IDD_NUM_AXES_PER_SET(header_packet) *                 \
274  !!((header_packet) & HIL_IDD_HEADER_ABS))        274  !!((header_packet) & HIL_IDD_HEADER_ABS))
275                                                   275 
276 /* The following HIL_IDD_* macros assume you h    276 /* The following HIL_IDD_* macros assume you have an array of 
277  * packets and/or unpacked 8-bit data in the o    277  * packets and/or unpacked 8-bit data in the order that they 
278  * were received.                                 278  * were received.
279  */                                               279  */
280                                                   280 
281 #define HIL_IDD_AXIS_COUNTS_PER_M(header_ptr)     281 #define HIL_IDD_AXIS_COUNTS_PER_M(header_ptr) \
282 (!(HIL_IDD_NUM_AXSETS(*(header_ptr))) ? -1 :      282 (!(HIL_IDD_NUM_AXSETS(*(header_ptr))) ? -1 :                    \
283 (((*(header_ptr + 1) & HIL_PKT_DATA_MASK) +       283 (((*(header_ptr + 1) & HIL_PKT_DATA_MASK) +                     \
284   ((*(header_ptr + 2) & HIL_PKT_DATA_MASK)) <<    284   ((*(header_ptr + 2) & HIL_PKT_DATA_MASK)) << 8)               \
285 * ((*(header_ptr) & HIL_IDD_HEADER_16BIT) ? 10    285 * ((*(header_ptr) & HIL_IDD_HEADER_16BIT) ? 100 : 1)))
286                                                   286 
287 #define HIL_IDD_AXIS_MAX(header_ptr, __axnum)     287 #define HIL_IDD_AXIS_MAX(header_ptr, __axnum) \
288 ((!(*(header_ptr) & HIL_IDD_HEADER_ABS) ||        288 ((!(*(header_ptr) & HIL_IDD_HEADER_ABS) ||                      \
289   (HIL_IDD_NUM_AXES_PER_SET(*(header_ptr)) <=     289   (HIL_IDD_NUM_AXES_PER_SET(*(header_ptr)) <= __axnum)) ? 0 :   \
290  ((HIL_PKT_DATA_MASK & *((header_ptr) + 3 + 2     290  ((HIL_PKT_DATA_MASK & *((header_ptr) + 3 + 2 * __axnum)) +     \
291   ((HIL_PKT_DATA_MASK & *((header_ptr) + 4 + 2    291   ((HIL_PKT_DATA_MASK & *((header_ptr) + 4 + 2 * __axnum)) << 8)))
292                                                   292 
293 #define HIL_IDD_IOD(header_ptr) \                 293 #define HIL_IDD_IOD(header_ptr) \
294 (*(header_ptr + HIL_IDD_LEN((*header_ptr)) - 1    294 (*(header_ptr + HIL_IDD_LEN((*header_ptr)) - 1))
295                                                   295 
296 #define HIL_IDD_HAS_GEN_PROMPT(header_ptr) \      296 #define HIL_IDD_HAS_GEN_PROMPT(header_ptr) \
297 ((*header_ptr & HIL_IDD_HEADER_IOD) &&            297 ((*header_ptr & HIL_IDD_HEADER_IOD) &&                          \
298  (HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_PROMPT    298  (HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_PROMPT))
299                                                   299 
300 #define HIL_IDD_HAS_GEN_PROXIMITY(header_ptr)     300 #define HIL_IDD_HAS_GEN_PROXIMITY(header_ptr) \
301 ((*header_ptr & HIL_IDD_HEADER_IOD) &&            301 ((*header_ptr & HIL_IDD_HEADER_IOD) &&                          \
302  (HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_PROXIM    302  (HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_PROXIMITY))
303                                                   303 
304 #define HIL_IDD_NUM_BUTTONS(header_ptr) \         304 #define HIL_IDD_NUM_BUTTONS(header_ptr) \
305 ((*header_ptr & HIL_IDD_HEADER_IOD) ?             305 ((*header_ptr & HIL_IDD_HEADER_IOD) ?                           \
306  (HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_NBUTTO    306  (HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_NBUTTON_MASK) : 0)
307                                                   307 
308 #define HIL_IDD_NUM_PROMPTS(header_ptr) \         308 #define HIL_IDD_NUM_PROMPTS(header_ptr) \
309 ((*header_ptr & HIL_IDD_HEADER_IOD) ?             309 ((*header_ptr & HIL_IDD_HEADER_IOD) ?                           \
310  ((HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_NPROM    310  ((HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_NPROMPT_MASK)          \
311   >> HIL_IDD_IOD_PROMPT_SHIFT) : 0)               311   >> HIL_IDD_IOD_PROMPT_SHIFT) : 0)
312                                                   312 
313 /* The response to HIL EXD commands -- the "ex    313 /* The response to HIL EXD commands -- the "extended describe record" */
314 #define HIL_EXD_HEADER_WRG              0x03      314 #define HIL_EXD_HEADER_WRG              0x03    /* Supports type2 WRG */
315 #define HIL_EXD_HEADER_WRG_TYPE1        0x01      315 #define HIL_EXD_HEADER_WRG_TYPE1        0x01    /* Supports type1 WRG */
316 #define HIL_EXD_HEADER_WRG_TYPE2        0x02      316 #define HIL_EXD_HEADER_WRG_TYPE2        0x02    /* Supports type2 WRG */
317 #define HIL_EXD_HEADER_RRG              0x04      317 #define HIL_EXD_HEADER_RRG              0x04    /* Supports RRG command */
318 #define HIL_EXD_HEADER_RNM              0x10      318 #define HIL_EXD_HEADER_RNM              0x10    /* Supports RNM command */
319 #define HIL_EXD_HEADER_RST              0x20      319 #define HIL_EXD_HEADER_RST              0x20    /* Supports RST command */
320 #define HIL_EXD_HEADER_LOCALE           0x40      320 #define HIL_EXD_HEADER_LOCALE           0x40    /* Contains locale code */
321                                                   321 
322 #define HIL_EXD_NUM_RRG(header_ptr) \             322 #define HIL_EXD_NUM_RRG(header_ptr) \
323 ((*header_ptr & HIL_EXD_HEADER_RRG) ? \           323 ((*header_ptr & HIL_EXD_HEADER_RRG) ? \
324  (*(header_ptr + 1) & HIL_PKT_DATA_MASK) : 0)     324  (*(header_ptr + 1) & HIL_PKT_DATA_MASK) : 0)
325                                                   325 
326 #define HIL_EXD_NUM_WWG(header_ptr) \             326 #define HIL_EXD_NUM_WWG(header_ptr) \
327 ((*header_ptr & HIL_EXD_HEADER_WRG) ?             327 ((*header_ptr & HIL_EXD_HEADER_WRG) ?                           \
328  (*(header_ptr + 2 - !(*header_ptr & HIL_EXD_H    328  (*(header_ptr + 2 - !(*header_ptr & HIL_EXD_HEADER_RRG)) &     \
329     HIL_PKT_DATA_MASK) : 0)                       329     HIL_PKT_DATA_MASK) : 0)
330                                                   330 
331 #define HIL_EXD_LEN(header_ptr) \                 331 #define HIL_EXD_LEN(header_ptr) \
332 (!!(*header_ptr & HIL_EXD_HEADER_RRG) +           332 (!!(*header_ptr & HIL_EXD_HEADER_RRG) +                         \
333  !!(*header_ptr & HIL_EXD_HEADER_WRG) +           333  !!(*header_ptr & HIL_EXD_HEADER_WRG) +                         \
334  !!(*header_ptr & HIL_EXD_HEADER_LOCALE) +        334  !!(*header_ptr & HIL_EXD_HEADER_LOCALE) +                      \
335  2 * !!(*header_ptr & HIL_EXD_HEADER_WRG_TYPE2    335  2 * !!(*header_ptr & HIL_EXD_HEADER_WRG_TYPE2) + 1)
336                                                   336 
337 #define HIL_EXD_LOCALE(header_ptr) \              337 #define HIL_EXD_LOCALE(header_ptr) \
338 (!(*header_ptr & HIL_EXD_HEADER_LOCALE) ? -1 :    338 (!(*header_ptr & HIL_EXD_HEADER_LOCALE) ? -1 :                  \
339  (*(header_ptr + HIL_EXD_LEN(header_ptr) - 1)     339  (*(header_ptr + HIL_EXD_LEN(header_ptr) - 1) & HIL_PKT_DATA_MASK))
340                                                   340 
341 #define HIL_EXD_WRG_TYPE2_LEN(header_ptr) \       341 #define HIL_EXD_WRG_TYPE2_LEN(header_ptr) \
342 (!(*header_ptr & HIL_EXD_HEADER_WRG_TYPE2) ? -    342 (!(*header_ptr & HIL_EXD_HEADER_WRG_TYPE2) ? -1 :                       \
343  (*(header_ptr + HIL_EXD_LEN(header_ptr) - 2 -    343  (*(header_ptr + HIL_EXD_LEN(header_ptr) - 2 -                          \
344     !!(*header_ptr & HIL_EXD_HEADER_LOCALE)) &    344     !!(*header_ptr & HIL_EXD_HEADER_LOCALE)) & HIL_PKT_DATA_MASK) +     \
345  ((*(header_ptr + HIL_EXD_LEN(header_ptr) - 1     345  ((*(header_ptr + HIL_EXD_LEN(header_ptr) - 1 -                         \
346      !!(*header_ptr & HIL_EXD_HEADER_LOCALE))     346      !!(*header_ptr & HIL_EXD_HEADER_LOCALE)) & HIL_PKT_DATA_MASK) << 8))
347                                                   347 
348 /* Device locale codes. */                        348 /* Device locale codes. */ 
349                                                   349 
350 /* Last defined locale code.  Everything above    350 /* Last defined locale code.  Everything above this is "Reserved",
351    and note that this same table applies to th    351    and note that this same table applies to the Device ID Byte where 
352    keyboards may have a nationality code which    352    keyboards may have a nationality code which is only 5 bits. */
353 #define HIL_LOCALE_MAX 0x1f                       353 #define HIL_LOCALE_MAX 0x1f
354                                                   354 
355 /* Map to hopefully useful strings.  I was try    355 /* Map to hopefully useful strings.  I was trying to make these look
356    like locale.aliases strings do; maybe that     356    like locale.aliases strings do; maybe that isn't the right table to
357    emulate.  In either case, I didn't have muc    357    emulate.  In either case, I didn't have much to work on. */
358 #define HIL_LOCALE_MAP \                          358 #define HIL_LOCALE_MAP \
359 "",                     /* 0x00 Reserved */       359 "",                     /* 0x00 Reserved */             \
360 "",                     /* 0x01 Reserved */       360 "",                     /* 0x01 Reserved */             \
361 "",                     /* 0x02 Reserved */       361 "",                     /* 0x02 Reserved */             \
362 "swiss.french",         /* 0x03 Swiss/French *    362 "swiss.french",         /* 0x03 Swiss/French */         \
363 "portuguese",           /* 0x04 Portuguese */     363 "portuguese",           /* 0x04 Portuguese */           \
364 "arabic",               /* 0x05 Arabic */         364 "arabic",               /* 0x05 Arabic */               \
365 "hebrew",               /* 0x06 Hebrew */         365 "hebrew",               /* 0x06 Hebrew */               \
366 "english.canadian",     /* 0x07 Canadian Engli    366 "english.canadian",     /* 0x07 Canadian English */     \
367 "turkish",              /* 0x08 Turkish */        367 "turkish",              /* 0x08 Turkish */              \
368 "greek",                /* 0x09 Greek */          368 "greek",                /* 0x09 Greek */                \
369 "thai",                 /* 0x0a Thai (Thailand    369 "thai",                 /* 0x0a Thai (Thailand) */      \
370 "italian",              /* 0x0b Italian */        370 "italian",              /* 0x0b Italian */              \
371 "korean",               /* 0x0c Hangul (Korea)    371 "korean",               /* 0x0c Hangul (Korea) */       \
372 "dutch",                /* 0x0d Dutch */          372 "dutch",                /* 0x0d Dutch */                \
373 "swedish",              /* 0x0e Swedish */        373 "swedish",              /* 0x0e Swedish */              \
374 "german",               /* 0x0f German */         374 "german",               /* 0x0f German */               \
375 "chinese",              /* 0x10 Chinese-PRC */    375 "chinese",              /* 0x10 Chinese-PRC */          \
376 "chinese",              /* 0x11 Chinese-ROC */    376 "chinese",              /* 0x11 Chinese-ROC */          \
377 "swiss.french",         /* 0x12 Swiss/French I    377 "swiss.french",         /* 0x12 Swiss/French II */      \
378 "spanish",              /* 0x13 Spanish */        378 "spanish",              /* 0x13 Spanish */              \
379 "swiss.german",         /* 0x14 Swiss/German I    379 "swiss.german",         /* 0x14 Swiss/German II */      \
380 "flemish",              /* 0x15 Belgian (Flemi    380 "flemish",              /* 0x15 Belgian (Flemish) */    \
381 "finnish",              /* 0x16 Finnish */        381 "finnish",              /* 0x16 Finnish */              \
382 "english.uk",           /* 0x17 United Kingdom    382 "english.uk",           /* 0x17 United Kingdom */       \
383 "french.canadian",      /* 0x18 French/Canadia    383 "french.canadian",      /* 0x18 French/Canadian */      \
384 "swiss.german",         /* 0x19 Swiss/German *    384 "swiss.german",         /* 0x19 Swiss/German */         \
385 "norwegian",            /* 0x1a Norwegian */      385 "norwegian",            /* 0x1a Norwegian */            \
386 "french",               /* 0x1b French */         386 "french",               /* 0x1b French */               \
387 "danish",               /* 0x1c Danish */         387 "danish",               /* 0x1c Danish */               \
388 "japanese",             /* 0x1d Katakana */       388 "japanese",             /* 0x1d Katakana */             \
389 "spanish",              /* 0x1e Latin American    389 "spanish",              /* 0x1e Latin American/Spanish*/\
390 "english.us"            /* 0x1f United States     390 "english.us"            /* 0x1f United States */        \
391                                                   391 
392                                                   392 
393 /* HIL keycodes */                                393 /* HIL keycodes */
394 #define HIL_KEYCODES_SET1_TBLSIZE 128             394 #define HIL_KEYCODES_SET1_TBLSIZE 128
395 #define HIL_KEYCODES_SET1       \                 395 #define HIL_KEYCODES_SET1       \
396    KEY_5,               KEY_RESERVED,   KEY_RI    396    KEY_5,               KEY_RESERVED,   KEY_RIGHTALT,   KEY_LEFTALT,    \
397    KEY_RIGHTSHIFT,      KEY_LEFTSHIFT,  KEY_LE    397    KEY_RIGHTSHIFT,      KEY_LEFTSHIFT,  KEY_LEFTCTRL,   KEY_SYSRQ,      \
398    KEY_KP4,             KEY_KP8,        KEY_KP    398    KEY_KP4,             KEY_KP8,        KEY_KP5,        KEY_KP9,        \
399    KEY_KP6,             KEY_KP7,        KEY_KP    399    KEY_KP6,             KEY_KP7,        KEY_KPCOMMA,    KEY_KPENTER,    \
400    KEY_KP1,             KEY_KPSLASH,    KEY_KP    400    KEY_KP1,             KEY_KPSLASH,    KEY_KP2,        KEY_KPPLUS,     \
401    KEY_KP3,             KEY_KPASTERISK, KEY_KP    401    KEY_KP3,             KEY_KPASTERISK, KEY_KP0,        KEY_KPMINUS,    \
402    KEY_B,               KEY_V,          KEY_C,    402    KEY_B,               KEY_V,          KEY_C,          KEY_X,          \
403    KEY_Z,               KEY_RESERVED,   KEY_RE    403    KEY_Z,               KEY_RESERVED,   KEY_RESERVED,   KEY_ESC,        \
404    KEY_6,               KEY_F10,        KEY_3,    404    KEY_6,               KEY_F10,        KEY_3,          KEY_F11,        \
405    KEY_KPDOT,           KEY_F9,         KEY_TA    405    KEY_KPDOT,           KEY_F9,         KEY_TAB /*KP*/, KEY_F12,        \
406    KEY_H,               KEY_G,          KEY_F,    406    KEY_H,               KEY_G,          KEY_F,          KEY_D,          \
407    KEY_S,               KEY_A,          KEY_RE    407    KEY_S,               KEY_A,          KEY_RESERVED,   KEY_CAPSLOCK,   \
408    KEY_U,               KEY_Y,          KEY_T,    408    KEY_U,               KEY_Y,          KEY_T,          KEY_R,          \
409    KEY_E,               KEY_W,          KEY_Q,    409    KEY_E,               KEY_W,          KEY_Q,          KEY_TAB,        \
410    KEY_7,               KEY_6,          KEY_5,    410    KEY_7,               KEY_6,          KEY_5,          KEY_4,          \
411    KEY_3,               KEY_2,          KEY_1,    411    KEY_3,               KEY_2,          KEY_1,          KEY_GRAVE,      \
412    KEY_F13,             KEY_F14,        KEY_F1    412    KEY_F13,             KEY_F14,        KEY_F15,        KEY_F16,        \
413    KEY_F17,             KEY_F18,        KEY_F1    413    KEY_F17,             KEY_F18,        KEY_F19,        KEY_F20,        \
414    KEY_MENU,            KEY_F4,         KEY_F3    414    KEY_MENU,            KEY_F4,         KEY_F3,         KEY_F2,         \
415    KEY_F1,              KEY_VOLUMEUP,   KEY_ST    415    KEY_F1,              KEY_VOLUMEUP,   KEY_STOP,       KEY_SENDFILE,   \
416    KEY_SYSRQ,           KEY_F5,         KEY_F6    416    KEY_SYSRQ,           KEY_F5,         KEY_F6,         KEY_F7,         \
417    KEY_F8,              KEY_VOLUMEDOWN, KEY_DE    417    KEY_F8,              KEY_VOLUMEDOWN, KEY_DEL_EOL,    KEY_DEL_EOS,    \
418    KEY_8,               KEY_9,          KEY_0,    418    KEY_8,               KEY_9,          KEY_0,          KEY_MINUS,      \
419    KEY_EQUAL,           KEY_BACKSPACE,  KEY_IN    419    KEY_EQUAL,           KEY_BACKSPACE,  KEY_INS_LINE,   KEY_DEL_LINE,   \
420    KEY_I,               KEY_O,          KEY_P,    420    KEY_I,               KEY_O,          KEY_P,          KEY_LEFTBRACE,  \
421    KEY_RIGHTBRACE,      KEY_BACKSLASH,  KEY_IN    421    KEY_RIGHTBRACE,      KEY_BACKSLASH,  KEY_INSERT,     KEY_DELETE,     \
422    KEY_J,               KEY_K,          KEY_L,    422    KEY_J,               KEY_K,          KEY_L,          KEY_SEMICOLON,  \
423    KEY_APOSTROPHE,      KEY_ENTER,      KEY_HO    423    KEY_APOSTROPHE,      KEY_ENTER,      KEY_HOME,       KEY_PAGEUP,     \
424    KEY_M,               KEY_COMMA,      KEY_DO    424    KEY_M,               KEY_COMMA,      KEY_DOT,        KEY_SLASH,      \
425    KEY_BACKSLASH,       KEY_SELECT,     KEY_10    425    KEY_BACKSLASH,       KEY_SELECT,     KEY_102ND,      KEY_PAGEDOWN,   \
426    KEY_N,               KEY_SPACE,      KEY_NE    426    KEY_N,               KEY_SPACE,      KEY_NEXT,       KEY_RESERVED,   \
427    KEY_LEFT,            KEY_DOWN,       KEY_UP    427    KEY_LEFT,            KEY_DOWN,       KEY_UP,         KEY_RIGHT
428                                                   428 
429                                                   429 
430 #define HIL_KEYCODES_SET3_TBLSIZE 128             430 #define HIL_KEYCODES_SET3_TBLSIZE 128
431 #define HIL_KEYCODES_SET3       \                 431 #define HIL_KEYCODES_SET3       \
432   KEY_RESERVED, KEY_ESC,        KEY_1,            432   KEY_RESERVED, KEY_ESC,        KEY_1,          KEY_2,                  \
433   KEY_3,        KEY_4,          KEY_5,            433   KEY_3,        KEY_4,          KEY_5,          KEY_6,                  \
434   KEY_7,        KEY_8,          KEY_9,            434   KEY_7,        KEY_8,          KEY_9,          KEY_0,                  \
435   KEY_MINUS,    KEY_EQUAL,      KEY_BACKSPACE,    435   KEY_MINUS,    KEY_EQUAL,      KEY_BACKSPACE,  KEY_TAB,                \
436   KEY_Q,        KEY_W,          KEY_E,            436   KEY_Q,        KEY_W,          KEY_E,          KEY_R,                  \
437   KEY_T,        KEY_Y,          KEY_U,            437   KEY_T,        KEY_Y,          KEY_U,          KEY_I,                  \
438   KEY_O,        KEY_P,          KEY_LEFTBRACE,    438   KEY_O,        KEY_P,          KEY_LEFTBRACE,  KEY_RIGHTBRACE,         \
439   KEY_ENTER,    KEY_LEFTCTRL,   KEY_A,            439   KEY_ENTER,    KEY_LEFTCTRL,   KEY_A,          KEY_S,                  \
440   KEY_D,        KEY_F,          KEY_G,            440   KEY_D,        KEY_F,          KEY_G,          KEY_H,                  \
441   KEY_J,        KEY_K,          KEY_L,            441   KEY_J,        KEY_K,          KEY_L,          KEY_SEMICOLON,          \
442   KEY_APOSTROPHE,KEY_GRAVE,     KEY_LEFTSHIFT,    442   KEY_APOSTROPHE,KEY_GRAVE,     KEY_LEFTSHIFT,  KEY_BACKSLASH,          \
443   KEY_Z,        KEY_X,          KEY_C,            443   KEY_Z,        KEY_X,          KEY_C,          KEY_V,                  \
444   KEY_B,        KEY_N,          KEY_M,            444   KEY_B,        KEY_N,          KEY_M,          KEY_COMMA,              \
445   KEY_DOT,      KEY_SLASH,      KEY_RIGHTSHIFT    445   KEY_DOT,      KEY_SLASH,      KEY_RIGHTSHIFT, KEY_KPASTERISK,         \
446   KEY_LEFTALT,  KEY_SPACE,      KEY_CAPSLOCK,     446   KEY_LEFTALT,  KEY_SPACE,      KEY_CAPSLOCK,   KEY_F1,                 \
447   KEY_F2,       KEY_F3,         KEY_F4,           447   KEY_F2,       KEY_F3,         KEY_F4,         KEY_F5,                 \
448   KEY_F6,       KEY_F7,         KEY_F8,           448   KEY_F6,       KEY_F7,         KEY_F8,         KEY_F9,                 \
449   KEY_F10,      KEY_NUMLOCK,    KEY_SCROLLLOCK    449   KEY_F10,      KEY_NUMLOCK,    KEY_SCROLLLOCK, KEY_KP7,                \
450   KEY_KP8,      KEY_KP9,        KEY_KPMINUS,      450   KEY_KP8,      KEY_KP9,        KEY_KPMINUS,    KEY_KP4,                \
451   KEY_KP5,      KEY_KP6,        KEY_KPPLUS,       451   KEY_KP5,      KEY_KP6,        KEY_KPPLUS,     KEY_KP1,                \
452   KEY_KP2,      KEY_KP3,        KEY_KP0,          452   KEY_KP2,      KEY_KP3,        KEY_KP0,        KEY_KPDOT,              \
453   KEY_SYSRQ,    KEY_RESERVED,   KEY_RESERVED,     453   KEY_SYSRQ,    KEY_RESERVED,   KEY_RESERVED,   KEY_RESERVED,           \
454   KEY_RESERVED, KEY_RESERVED,   KEY_RESERVED,     454   KEY_RESERVED, KEY_RESERVED,   KEY_RESERVED,   KEY_RESERVED,           \
455   KEY_RESERVED, KEY_RESERVED,   KEY_RESERVED,     455   KEY_RESERVED, KEY_RESERVED,   KEY_RESERVED,   KEY_RESERVED,           \
456   KEY_UP,       KEY_LEFT,       KEY_DOWN,         456   KEY_UP,       KEY_LEFT,       KEY_DOWN,       KEY_RIGHT,              \
457   KEY_HOME,     KEY_PAGEUP,     KEY_END,          457   KEY_HOME,     KEY_PAGEUP,     KEY_END,        KEY_PAGEDOWN,           \
458   KEY_INSERT,   KEY_DELETE,     KEY_102ND,        458   KEY_INSERT,   KEY_DELETE,     KEY_102ND,      KEY_RESERVED,           \
459   KEY_RESERVED, KEY_RESERVED,   KEY_RESERVED,     459   KEY_RESERVED, KEY_RESERVED,   KEY_RESERVED,   KEY_RESERVED,           \
460   KEY_F1,       KEY_F2,         KEY_F3,           460   KEY_F1,       KEY_F2,         KEY_F3,         KEY_F4,                 \
461   KEY_F5,       KEY_F6,         KEY_F7,           461   KEY_F5,       KEY_F6,         KEY_F7,         KEY_F8,                 \
462   KEY_RESERVED, KEY_RESERVED,   KEY_RESERVED,     462   KEY_RESERVED, KEY_RESERVED,   KEY_RESERVED,   KEY_RESERVED,           \
463   KEY_RESERVED, KEY_RESERVED,   KEY_RESERVED,     463   KEY_RESERVED, KEY_RESERVED,   KEY_RESERVED,   KEY_RESERVED
464                                                   464 
465                                                   465 
466 /* Response to POL command, the "poll record h    466 /* Response to POL command, the "poll record header" */
467                                                   467 
468 #define HIL_POL_NUM_AXES_MASK   0x03    /* Num    468 #define HIL_POL_NUM_AXES_MASK   0x03    /* Number of axis reported */
469 #define HIL_POL_CTS             0x04    /* Dev    469 #define HIL_POL_CTS             0x04    /* Device ready to receive data */
470 #define HIL_POL_STATUS_PENDING  0x08    /* Dev    470 #define HIL_POL_STATUS_PENDING  0x08    /* Device has status to report */
471 #define HIL_POL_CHARTYPE_MASK   0x70    /* Typ    471 #define HIL_POL_CHARTYPE_MASK   0x70    /* Type of character data to follow */
472 #define HIL_POL_CHARTYPE_NONE   0x00    /* No     472 #define HIL_POL_CHARTYPE_NONE   0x00    /* No character data to follow */
473 #define HIL_POL_CHARTYPE_RSVD1  0x10    /* Res    473 #define HIL_POL_CHARTYPE_RSVD1  0x10    /* Reserved Set 1 */
474 #define HIL_POL_CHARTYPE_ASCII  0x20    /* U.S    474 #define HIL_POL_CHARTYPE_ASCII  0x20    /* U.S. ASCII */
475 #define HIL_POL_CHARTYPE_BINARY 0x30    /* Bin    475 #define HIL_POL_CHARTYPE_BINARY 0x30    /* Binary data */
476 #define HIL_POL_CHARTYPE_SET1   0x40    /* Key    476 #define HIL_POL_CHARTYPE_SET1   0x40    /* Keycode Set 1 */
477 #define HIL_POL_CHARTYPE_RSVD2  0x50    /* Res    477 #define HIL_POL_CHARTYPE_RSVD2  0x50    /* Reserved Set 2 */
478 #define HIL_POL_CHARTYPE_SET2   0x60    /* Key    478 #define HIL_POL_CHARTYPE_SET2   0x60    /* Keycode Set 2 */
479 #define HIL_POL_CHARTYPE_SET3   0x70    /* Key    479 #define HIL_POL_CHARTYPE_SET3   0x70    /* Keycode Set 3 */
480 #define HIL_POL_AXIS_ALT        0x80    /* Dat    480 #define HIL_POL_AXIS_ALT        0x80    /* Data is from axis set 2 */
481                                                   481 
482                                                   482 
483 #endif /* _HIL_H_ */                              483 #endif /* _HIL_H_ */
484                                                   484 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php