Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

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