Back to home page

OSCL-LXR

 
 

    


0001 ==========================
0002 ALPS HID Touchpad Protocol
0003 ==========================
0004 
0005 Introduction
0006 ------------
0007 Currently ALPS HID driver supports U1 Touchpad device.
0008 
0009 U1 device basic information.
0010 
0011 ==========      ======
0012 Vender ID       0x044E
0013 Product ID      0x120B
0014 Version ID      0x0121
0015 ==========      ======
0016 
0017 
0018 HID Descriptor
0019 --------------
0020 
0021 ======= ====================    =====   =======================================
0022 Byte    Field                   Value   Notes
0023 ======= ====================    =====   =======================================
0024 0       wHIDDescLength          001E    Length of HID Descriptor : 30 bytes
0025 2       bcdVersion              0100    Compliant with Version 1.00
0026 4       wReportDescLength       00B2    Report Descriptor is 178 Bytes (0x00B2)
0027 6       wReportDescRegister     0002    Identifier to read Report Descriptor
0028 8       wInputRegister          0003    Identifier to read Input Report
0029 10      wMaxInputLength         0053    Input Report is 80 Bytes + 2
0030 12      wOutputRegister         0000    Identifier to read Output Report
0031 14      wMaxOutputLength        0000    No Output Reports
0032 16      wCommandRegister        0005    Identifier for Command Register
0033 18      wDataRegister           0006    Identifier for Data Register
0034 20      wVendorID               044E    Vendor ID 0x044E
0035 22      wProductID              120B    Product ID 0x120B
0036 24      wVersionID              0121    Version 01.21
0037 26      RESERVED                0000    RESERVED
0038 ======= ====================    =====   =======================================
0039 
0040 
0041 Report ID
0042 ---------
0043 
0044 ==========      =================  =========================================
0045 ReportID-1      (Input Reports)    (HIDUsage-Mouse) for TP&SP
0046 ReportID-2      (Input Reports)    (HIDUsage-keyboard) for TP
0047 ReportID-3      (Input Reports)    (Vendor Usage: Max 10 finger data) for TP
0048 ReportID-4      (Input Reports)    (Vendor Usage: ON bit data) for GP
0049 ReportID-5      (Feature Reports)  Feature Reports
0050 ReportID-6      (Input Reports)    (Vendor Usage: StickPointer data) for SP
0051 ReportID-7      (Feature Reports)  Flash update (Bootloader)
0052 ==========      =================  =========================================
0053 
0054 
0055 Data pattern
0056 ------------
0057 
0058 =====   ==========      =====   =================
0059 Case1   ReportID_1      TP/SP   Relative/Relative
0060 Case2   ReportID_3      TP      Absolute
0061         ReportID_6      SP      Absolute
0062 =====   ==========      =====   =================
0063 
0064 
0065 Command Read/Write
0066 ------------------
0067 To read/write to RAM, need to send a command to the device.
0068 
0069 The command format is as below.
0070 
0071 DataByte(SET_REPORT)
0072 
0073 =====   ======================
0074 Byte1   Command Byte
0075 Byte2   Address - Byte 0 (LSB)
0076 Byte3   Address - Byte 1
0077 Byte4   Address - Byte 2
0078 Byte5   Address - Byte 3 (MSB)
0079 Byte6   Value Byte
0080 Byte7   Checksum
0081 =====   ======================
0082 
0083 Command Byte is read=0xD1/write=0xD2.
0084 
0085 Address is read/write RAM address.
0086 
0087 Value Byte is writing data when you send the write commands.
0088 
0089 When you read RAM, there is no meaning.
0090 
0091 DataByte(GET_REPORT)
0092 
0093 =====   ======================
0094 Byte1   Response Byte
0095 Byte2   Address - Byte 0 (LSB)
0096 Byte3   Address - Byte 1
0097 Byte4   Address - Byte 2
0098 Byte5   Address - Byte 3 (MSB)
0099 Byte6   Value Byte
0100 Byte7   Checksum
0101 =====   ======================
0102 
0103 Read value is stored in Value Byte.
0104 
0105 
0106 Packet Format
0107 Touchpad data byte
0108 ------------------
0109 
0110 
0111 ======= ======= ======= ======= ======= ======= ======= ======= =====
0112 -       b7      b6      b5      b4      b3      b2      b1      b0
0113 ======= ======= ======= ======= ======= ======= ======= ======= =====
0114 1       0       0       SW6     SW5     SW4     SW3     SW2     SW1
0115 2       0       0       0       Fcv     Fn3     Fn2     Fn1     Fn0
0116 3       Xa0_7   Xa0_6   Xa0_5   Xa0_4   Xa0_3   Xa0_2   Xa0_1   Xa0_0
0117 4       Xa0_15  Xa0_14  Xa0_13  Xa0_12  Xa0_11  Xa0_10  Xa0_9   Xa0_8
0118 5       Ya0_7   Ya0_6   Ya0_5   Ya0_4   Ya0_3   Ya0_2   Ya0_1   Ya0_0
0119 6       Ya0_15  Ya0_14  Ya0_13  Ya0_12  Ya0_11  Ya0_10  Ya0_9   Ya0_8
0120 7       LFB0    Zs0_6   Zs0_5   Zs0_4   Zs0_3   Zs0_2   Zs0_1   Zs0_0
0121 
0122 8       Xa1_7   Xa1_6   Xa1_5   Xa1_4   Xa1_3   Xa1_2   Xa1_1   Xa1_0
0123 9       Xa1_15  Xa1_14  Xa1_13  Xa1_12  Xa1_11  Xa1_10  Xa1_9   Xa1_8
0124 10      Ya1_7   Ya1_6   Ya1_5   Ya1_4   Ya1_3   Ya1_2   Ya1_1   Ya1_0
0125 11      Ya1_15  Ya1_14  Ya1_13  Ya1_12  Ya1_11  Ya1_10  Ya1_9   Ya1_8
0126 12      LFB1    Zs1_6   Zs1_5   Zs1_4   Zs1_3   Zs1_2   Zs1_1   Zs1_0
0127 
0128 13      Xa2_7   Xa2_6   Xa2_5   Xa2_4   Xa2_3   Xa2_2   Xa2_1   Xa2_0
0129 14      Xa2_15  Xa2_14  Xa2_13  Xa2_12  Xa2_11  Xa2_10  Xa2_9   Xa2_8
0130 15      Ya2_7   Ya2_6   Ya2_5   Ya2_4   Ya2_3   Ya2_2   Ya2_1   Ya2_0
0131 16      Ya2_15  Ya2_14  Ya2_13  Ya2_12  Ya2_11  Ya2_10  Ya2_9   Ya2_8
0132 17      LFB2    Zs2_6   Zs2_5   Zs2_4   Zs2_3   Zs2_2   Zs2_1   Zs2_0
0133 
0134 18      Xa3_7   Xa3_6   Xa3_5   Xa3_4   Xa3_3   Xa3_2   Xa3_1   Xa3_0
0135 19      Xa3_15  Xa3_14  Xa3_13  Xa3_12  Xa3_11  Xa3_10  Xa3_9   Xa3_8
0136 20      Ya3_7   Ya3_6   Ya3_5   Ya3_4   Ya3_3   Ya3_2   Ya3_1   Ya3_0
0137 21      Ya3_15  Ya3_14  Ya3_13  Ya3_12  Ya3_11  Ya3_10  Ya3_9   Ya3_8
0138 22      LFB3    Zs3_6   Zs3_5   Zs3_4   Zs3_3   Zs3_2   Zs3_1   Zs3_0
0139 
0140 23      Xa4_7   Xa4_6   Xa4_5   Xa4_4   Xa4_3   Xa4_2   Xa4_1   Xa4_0
0141 24      Xa4_15  Xa4_14  Xa4_13  Xa4_12  Xa4_11  Xa4_10  Xa4_9   Xa4_8
0142 25      Ya4_7   Ya4_6   Ya4_5   Ya4_4   Ya4_3   Ya4_2   Ya4_1   Ya4_0
0143 26      Ya4_15  Ya4_14  Ya4_13  Ya4_12  Ya4_11  Ya4_10  Ya4_9   Ya4_8
0144 27      LFB4    Zs4_6   Zs4_5   Zs4_4   Zs4_3   Zs4_2   Zs4_1   Zs4_0
0145 ======= ======= ======= ======= ======= ======= ======= ======= =====
0146 
0147 
0148 SW1-SW6:
0149         SW ON/OFF status
0150 Xan_15-0(16bit):
0151         X Absolute data of the "n"th finger
0152 Yan_15-0(16bit):
0153         Y Absolute data of the "n"th finger
0154 Zsn_6-0(7bit):
0155         Operation area of the "n"th finger
0156 
0157 
0158 StickPointer data byte
0159 ----------------------
0160 
0161 ======= ======= ======= ======= ======= ======= ======= ======= =====
0162 -       b7      b6      b5      b4      b3      b2      b1      b0
0163 ======= ======= ======= ======= ======= ======= ======= ======= =====
0164 Byte1   1       1       1       0       1       SW3     SW2     SW1
0165 Byte2   X7      X6      X5      X4      X3      X2      X1      X0
0166 Byte3   X15     X14     X13     X12     X11     X10     X9      X8
0167 Byte4   Y7      Y6      Y5      Y4      Y3      Y2      Y1      Y0
0168 Byte5   Y15     Y14     Y13     Y12     Y11     Y10     Y9      Y8
0169 Byte6   Z7      Z6      Z5      Z4      Z3      Z2      Z1      Z0
0170 Byte7   T&P     Z14     Z13     Z12     Z11     Z10     Z9      Z8
0171 ======= ======= ======= ======= ======= ======= ======= ======= =====
0172 
0173 SW1-SW3:
0174         SW ON/OFF status
0175 Xn_15-0(16bit):
0176         X Absolute data
0177 Yn_15-0(16bit):
0178         Y Absolute data
0179 Zn_14-0(15bit):
0180         Z