cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

hid-alps.rst (5361B)


      1==========================
      2ALPS HID Touchpad Protocol
      3==========================
      4
      5Introduction
      6------------
      7Currently ALPS HID driver supports U1 Touchpad device.
      8
      9U1 device basic information.
     10
     11==========	======
     12Vender ID	0x044E
     13Product ID	0x120B
     14Version ID	0x0121
     15==========	======
     16
     17
     18HID Descriptor
     19--------------
     20
     21=======	====================	=====	=======================================
     22Byte	Field			Value	Notes
     23=======	====================	=====	=======================================
     240	wHIDDescLength		001E	Length of HID Descriptor : 30 bytes
     252	bcdVersion		0100	Compliant with Version 1.00
     264	wReportDescLength	00B2	Report Descriptor is 178 Bytes (0x00B2)
     276	wReportDescRegister	0002	Identifier to read Report Descriptor
     288	wInputRegister		0003	Identifier to read Input Report
     2910	wMaxInputLength		0053	Input Report is 80 Bytes + 2
     3012	wOutputRegister		0000	Identifier to read Output Report
     3114	wMaxOutputLength	0000	No Output Reports
     3216	wCommandRegister	0005	Identifier for Command Register
     3318	wDataRegister		0006	Identifier for Data Register
     3420	wVendorID		044E	Vendor ID 0x044E
     3522	wProductID		120B	Product ID 0x120B
     3624	wVersionID		0121	Version 01.21
     3726	RESERVED		0000	RESERVED
     38=======	====================	=====	=======================================
     39
     40
     41Report ID
     42---------
     43
     44==========	=================  =========================================
     45ReportID-1	(Input Reports)	   (HIDUsage-Mouse) for TP&SP
     46ReportID-2	(Input Reports)	   (HIDUsage-keyboard) for TP
     47ReportID-3	(Input Reports)	   (Vendor Usage: Max 10 finger data) for TP
     48ReportID-4	(Input Reports)	   (Vendor Usage: ON bit data) for GP
     49ReportID-5	(Feature Reports)  Feature Reports
     50ReportID-6	(Input Reports)	   (Vendor Usage: StickPointer data) for SP
     51ReportID-7	(Feature Reports)  Flash update (Bootloader)
     52==========	=================  =========================================
     53
     54
     55Data pattern
     56------------
     57
     58=====	==========	=====	=================
     59Case1	ReportID_1	TP/SP	Relative/Relative
     60Case2	ReportID_3	TP	Absolute
     61	ReportID_6	SP	Absolute
     62=====	==========	=====	=================
     63
     64
     65Command Read/Write
     66------------------
     67To read/write to RAM, need to send a command to the device.
     68
     69The command format is as below.
     70
     71DataByte(SET_REPORT)
     72
     73=====	======================
     74Byte1	Command Byte
     75Byte2	Address - Byte 0 (LSB)
     76Byte3	Address - Byte 1
     77Byte4	Address - Byte 2
     78Byte5	Address - Byte 3 (MSB)
     79Byte6	Value Byte
     80Byte7	Checksum
     81=====	======================
     82
     83Command Byte is read=0xD1/write=0xD2.
     84
     85Address is read/write RAM address.
     86
     87Value Byte is writing data when you send the write commands.
     88
     89When you read RAM, there is no meaning.
     90
     91DataByte(GET_REPORT)
     92
     93=====	======================
     94Byte1	Response Byte
     95Byte2	Address - Byte 0 (LSB)
     96Byte3	Address - Byte 1
     97Byte4	Address - Byte 2
     98Byte5	Address - Byte 3 (MSB)
     99Byte6	Value Byte
    100Byte7	Checksum
    101=====	======================
    102
    103Read value is stored in Value Byte.
    104
    105
    106Packet Format
    107Touchpad data byte
    108------------------
    109
    110
    111======= ======= ======= ======= ======= ======= ======= ======= =====
    112-	b7	b6	b5	b4	b3	b2	b1	b0
    113======= ======= ======= ======= ======= ======= ======= ======= =====
    1141	0	0	SW6	SW5	SW4	SW3	SW2	SW1
    1152	0	0	0	Fcv	Fn3	Fn2	Fn1	Fn0
    1163	Xa0_7	Xa0_6	Xa0_5	Xa0_4	Xa0_3	Xa0_2	Xa0_1	Xa0_0
    1174	Xa0_15	Xa0_14	Xa0_13	Xa0_12	Xa0_11	Xa0_10	Xa0_9	Xa0_8
    1185	Ya0_7	Ya0_6	Ya0_5	Ya0_4	Ya0_3	Ya0_2	Ya0_1	Ya0_0
    1196	Ya0_15	Ya0_14	Ya0_13	Ya0_12	Ya0_11	Ya0_10	Ya0_9	Ya0_8
    1207	LFB0	Zs0_6	Zs0_5	Zs0_4	Zs0_3	Zs0_2	Zs0_1	Zs0_0
    121
    1228	Xa1_7	Xa1_6	Xa1_5	Xa1_4	Xa1_3	Xa1_2	Xa1_1	Xa1_0
    1239	Xa1_15	Xa1_14	Xa1_13	Xa1_12	Xa1_11	Xa1_10	Xa1_9	Xa1_8
    12410	Ya1_7	Ya1_6	Ya1_5	Ya1_4	Ya1_3	Ya1_2	Ya1_1	Ya1_0
    12511	Ya1_15	Ya1_14	Ya1_13	Ya1_12	Ya1_11	Ya1_10	Ya1_9	Ya1_8
    12612	LFB1	Zs1_6	Zs1_5	Zs1_4	Zs1_3	Zs1_2	Zs1_1	Zs1_0
    127
    12813	Xa2_7	Xa2_6	Xa2_5	Xa2_4	Xa2_3	Xa2_2	Xa2_1	Xa2_0
    12914	Xa2_15	Xa2_14	Xa2_13	Xa2_12	Xa2_11	Xa2_10	Xa2_9	Xa2_8
    13015	Ya2_7	Ya2_6	Ya2_5	Ya2_4	Ya2_3	Ya2_2	Ya2_1	Ya2_0
    13116	Ya2_15	Ya2_14	Ya2_13	Ya2_12	Ya2_11	Ya2_10	Ya2_9	Ya2_8
    13217	LFB2	Zs2_6	Zs2_5	Zs2_4	Zs2_3	Zs2_2	Zs2_1	Zs2_0
    133
    13418	Xa3_7	Xa3_6	Xa3_5	Xa3_4	Xa3_3	Xa3_2	Xa3_1	Xa3_0
    13519	Xa3_15	Xa3_14	Xa3_13	Xa3_12	Xa3_11	Xa3_10	Xa3_9	Xa3_8
    13620	Ya3_7	Ya3_6	Ya3_5	Ya3_4	Ya3_3	Ya3_2	Ya3_1	Ya3_0
    13721	Ya3_15	Ya3_14	Ya3_13	Ya3_12	Ya3_11	Ya3_10	Ya3_9	Ya3_8
    13822	LFB3	Zs3_6	Zs3_5	Zs3_4	Zs3_3	Zs3_2	Zs3_1	Zs3_0
    139
    14023	Xa4_7	Xa4_6	Xa4_5	Xa4_4	Xa4_3	Xa4_2	Xa4_1	Xa4_0
    14124	Xa4_15	Xa4_14	Xa4_13	Xa4_12	Xa4_11	Xa4_10	Xa4_9	Xa4_8
    14225	Ya4_7	Ya4_6	Ya4_5	Ya4_4	Ya4_3	Ya4_2	Ya4_1	Ya4_0
    14326	Ya4_15	Ya4_14	Ya4_13	Ya4_12	Ya4_11	Ya4_10	Ya4_9	Ya4_8
    14427	LFB4	Zs4_6	Zs4_5	Zs4_4	Zs4_3	Zs4_2	Zs4_1	Zs4_0
    145======= ======= ======= ======= ======= ======= ======= ======= =====
    146
    147
    148SW1-SW6:
    149	SW ON/OFF status
    150Xan_15-0(16bit):
    151	X Absolute data of the "n"th finger
    152Yan_15-0(16bit):
    153	Y Absolute data of the "n"th finger
    154Zsn_6-0(7bit):
    155	Operation area of the "n"th finger
    156
    157
    158StickPointer data byte
    159----------------------
    160
    161======= ======= ======= ======= ======= ======= ======= ======= =====
    162-	b7	b6	b5	b4	b3	b2	b1	b0
    163======= ======= ======= ======= ======= ======= ======= ======= =====
    164Byte1	1	1	1	0	1	SW3	SW2	SW1
    165Byte2	X7	X6	X5	X4	X3	X2	X1	X0
    166Byte3	X15	X14	X13	X12	X11	X10	X9	X8
    167Byte4	Y7	Y6	Y5	Y4	Y3	Y2	Y1	Y0
    168Byte5	Y15	Y14	Y13	Y12	Y11	Y10	Y9	Y8
    169Byte6	Z7	Z6	Z5	Z4	Z3	Z2	Z1	Z0
    170Byte7	T&P	Z14	Z13	Z12	Z11	Z10	Z9	Z8
    171======= ======= ======= ======= ======= ======= ======= ======= =====
    172
    173SW1-SW3:
    174	SW ON/OFF status
    175Xn_15-0(16bit):
    176	X Absolute data
    177Yn_15-0(16bit):
    178	Y Absolute data
    179Zn_14-0(15bit):
    180	Z