summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorHenrik Rydberg <rydberg@euromail.se>2010-11-01 21:03:10 +0100
committerHenrik Rydberg <rydberg@euromail.se>2010-11-01 21:03:10 +0100
commit7c462d8bee333fd8f7d35e8e2c865dd5ea63b44f (patch)
treea7a6e80421ad2212c6159e53fc4e05f462ae5d74 /usr/src
initial load of mosart driver
Signed-off-by: Henrik Rydberg <rydberg@bitmath.org>
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/dkms_main_tree/dkms_dbversion1
-rw-r--r--usr/src/dkms_source_tree/Makefile5
-rw-r--r--usr/src/dkms_source_tree/dkms.conf10
-rw-r--r--usr/src/dkms_source_tree/hid-ids.h546
-rw-r--r--usr/src/dkms_source_tree/hid-mosart.c277
5 files changed, 839 insertions, 0 deletions
diff --git a/usr/src/dkms_main_tree/dkms_dbversion b/usr/src/dkms_main_tree/dkms_dbversion
new file mode 100644
index 0000000..227cea2
--- /dev/null
+++ b/usr/src/dkms_main_tree/dkms_dbversion
@@ -0,0 +1 @@
2.0.0
diff --git a/usr/src/dkms_source_tree/Makefile b/usr/src/dkms_source_tree/Makefile
new file mode 100644
index 0000000..ade7f07
--- /dev/null
+++ b/usr/src/dkms_source_tree/Makefile
@@ -0,0 +1,5 @@
1#
2# Makefile for input/mouse drivers
3#
4
5obj-m := hid-mosart.o
diff --git a/usr/src/dkms_source_tree/dkms.conf b/usr/src/dkms_source_tree/dkms.conf
new file mode 100644
index 0000000..7915369
--- /dev/null
+++ b/usr/src/dkms_source_tree/dkms.conf
@@ -0,0 +1,10 @@
1NAME=hid-mosart
2VERSION=1.0.0
3PACKAGE_NAME="$NAME"
4PACKAGE_VERSION="$VERSION"
5MAKE[0]="make -C ${kernel_source_dir}
6 SUBDIRS=${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build modules"
7BUILT_MODULE_NAME[0]="hid-mosart"
8DEST_MODULE_LOCATION[0]="/kernel/drivers/hid"
9POST_INSTALL="scripts/hid-mosart-post-install"
10AUTOINSTALL="yes"
diff --git a/usr/src/dkms_source_tree/hid-ids.h b/usr/src/dkms_source_tree/hid-ids.h
new file mode 100644
index 0000000..a577121
--- /dev/null
+++ b/usr/src/dkms_source_tree/hid-ids.h
@@ -0,0 +1,546 @@
1/*
2 * USB HID quirks support for Linux
3 *
4 * Copyright (c) 1999 Andreas Gal
5 * Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
6 * Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
7 * Copyright (c) 2006-2007 Jiri Kosina
8 * Copyright (c) 2007 Paul Walmsley
9 */
10
11/*
12 * This program is free software; you can redistribute it and/or modify it
13 * under the terms of the GNU General Public License as published by the Free
14 * Software Foundation; either version 2 of the License, or (at your option)
15 * any later version.
16 */
17
18#ifndef HID_IDS_H_FILE
19#define HID_IDS_H_FILE
20
21#define USB_VENDOR_ID_3M 0x0596
22#define USB_DEVICE_ID_3M1968 0x0500
23#define USB_DEVICE_ID_3M2256 0x0502
24
25#define USB_VENDOR_ID_A4TECH 0x09da
26#define USB_DEVICE_ID_A4TECH_WCP32PU 0x0006
27#define USB_DEVICE_ID_A4TECH_X5_005D 0x000a
28
29#define USB_VENDOR_ID_AASHIMA 0x06d6
30#define USB_DEVICE_ID_AASHIMA_GAMEPAD 0x0025
31#define USB_DEVICE_ID_AASHIMA_PREDATOR 0x0026
32
33#define USB_VENDOR_ID_ACECAD 0x0460
34#define USB_DEVICE_ID_ACECAD_FLAIR 0x0004
35#define USB_DEVICE_ID_ACECAD_302 0x0008
36
37#define USB_VENDOR_ID_ACRUX 0x1a34
38
39#define USB_VENDOR_ID_ADS_TECH 0x06e1
40#define USB_DEVICE_ID_ADS_TECH_RADIO_SI470X 0xa155
41
42#define USB_VENDOR_ID_AFATECH 0x15a4
43#define USB_DEVICE_ID_AFATECH_AF9016 0x9016
44
45#define USB_VENDOR_ID_AIPTEK 0x08ca
46#define USB_DEVICE_ID_AIPTEK_01 0x0001
47#define USB_DEVICE_ID_AIPTEK_10 0x0010
48#define USB_DEVICE_ID_AIPTEK_20 0x0020
49#define USB_DEVICE_ID_AIPTEK_21 0x0021
50#define USB_DEVICE_ID_AIPTEK_22 0x0022
51#define USB_DEVICE_ID_AIPTEK_23 0x0023
52#define USB_DEVICE_ID_AIPTEK_24 0x0024
53
54#define USB_VENDOR_ID_AIRCABLE 0x16CA
55#define USB_DEVICE_ID_AIRCABLE1 0x1502
56
57#define USB_VENDOR_ID_ALCOR 0x058f
58#define USB_DEVICE_ID_ALCOR_USBRS232 0x9720
59
60#define USB_VENDOR_ID_ALPS 0x0433
61#define USB_DEVICE_ID_IBM_GAMEPAD 0x1101
62
63#define USB_VENDOR_ID_APPLE 0x05ac
64#define USB_DEVICE_ID_APPLE_MIGHTYMOUSE 0x0304
65#define USB_DEVICE_ID_APPLE_MAGICMOUSE 0x030d
66#define USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI 0x020e
67#define USB_DEVICE_ID_APPLE_FOUNTAIN_ISO 0x020f
68#define USB_DEVICE_ID_APPLE_GEYSER_ANSI 0x0214
69#define USB_DEVICE_ID_APPLE_GEYSER_ISO 0x0215
70#define USB_DEVICE_ID_APPLE_GEYSER_JIS 0x0216
71#define USB_DEVICE_ID_APPLE_GEYSER3_ANSI 0x0217
72#define USB_DEVICE_ID_APPLE_GEYSER3_ISO 0x0218
73#define USB_DEVICE_ID_APPLE_GEYSER3_JIS 0x0219
74#define USB_DEVICE_ID_APPLE_GEYSER4_ANSI 0x021a
75#define USB_DEVICE_ID_APPLE_GEYSER4_ISO 0x021b
76#define USB_DEVICE_ID_APPLE_GEYSER4_JIS 0x021c
77#define USB_DEVICE_ID_APPLE_ALU_MINI_ANSI 0x021d
78#define USB_DEVICE_ID_APPLE_ALU_MINI_ISO 0x021e
79#define USB_DEVICE_ID_APPLE_ALU_MINI_JIS 0x021f
80#define USB_DEVICE_ID_APPLE_ALU_ANSI 0x0220
81#define USB_DEVICE_ID_APPLE_ALU_ISO 0x0221
82#define USB_DEVICE_ID_APPLE_ALU_JIS 0x0222
83#define USB_DEVICE_ID_APPLE_WELLSPRING_ANSI 0x0223
84#define USB_DEVICE_ID_APPLE_WELLSPRING_ISO 0x0224
85#define USB_DEVICE_ID_APPLE_WELLSPRING_JIS 0x0225
86#define USB_DEVICE_ID_APPLE_GEYSER4_HF_ANSI 0x0229
87#define USB_DEVICE_ID_APPLE_GEYSER4_HF_ISO 0x022a
88#define USB_DEVICE_ID_APPLE_GEYSER4_HF_JIS 0x022b
89#define USB_DEVICE_ID_APPLE_ALU_WIRELESS_ANSI 0x022c
90#define USB_DEVICE_ID_APPLE_ALU_WIRELESS_ISO 0x022d
91#define USB_DEVICE_ID_APPLE_ALU_WIRELESS_JIS 0x022e
92#define USB_DEVICE_ID_APPLE_WELLSPRING2_ANSI 0x0230
93#define USB_DEVICE_ID_APPLE_WELLSPRING2_ISO 0x0231
94#define USB_DEVICE_ID_APPLE_WELLSPRING2_JIS 0x0232
95#define USB_DEVICE_ID_APPLE_WELLSPRING3_ANSI 0x0236
96#define USB_DEVICE_ID_APPLE_WELLSPRING3_ISO 0x0237
97#define USB_DEVICE_ID_APPLE_WELLSPRING3_JIS 0x0238
98#define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI 0x0239
99#define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO 0x023a
100#define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS 0x023b
101#define USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY 0x030a
102#define USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY 0x030b
103#define USB_DEVICE_ID_APPLE_ATV_IRCONTROL 0x8241
104#define USB_DEVICE_ID_APPLE_IRCONTROL4 0x8242
105
106#define USB_VENDOR_ID_ASUS 0x0486
107#define USB_DEVICE_ID_ASUS_T91MT 0x0185
108#define USB_DEVICE_ID_ASUSTEK_MULTITOUCH_YFO 0x0186
109
110#define USB_VENDOR_ID_ASUSTEK 0x0b05
111#define USB_DEVICE_ID_ASUSTEK_LCM 0x1726
112#define USB_DEVICE_ID_ASUSTEK_LCM2 0x175b
113
114#define USB_VENDOR_ID_ATEN 0x0557
115#define USB_DEVICE_ID_ATEN_UC100KM 0x2004
116#define USB_DEVICE_ID_ATEN_CS124U 0x2202
117#define USB_DEVICE_ID_ATEN_2PORTKVM 0x2204
118#define USB_DEVICE_ID_ATEN_4PORTKVM 0x2205
119#define USB_DEVICE_ID_ATEN_4PORTKVMC 0x2208
120
121#define USB_VENDOR_ID_AVERMEDIA 0x07ca
122#define USB_DEVICE_ID_AVER_FM_MR800 0xb800
123
124#define USB_VENDOR_ID_BELKIN 0x050d
125#define USB_DEVICE_ID_FLIP_KVM 0x3201
126
127#define USB_VENDOR_ID_BERKSHIRE 0x0c98
128#define USB_DEVICE_ID_BERKSHIRE_PCWD 0x1140
129
130#define USB_VENDOR_ID_BTC 0x046e
131#define USB_DEVICE_ID_BTC_EMPREX_REMOTE 0x5578
132#define USB_DEVICE_ID_BTC_EMPREX_REMOTE_2 0x5577
133
134#define USB_VENDOR_ID_CANDO 0x2087
135#define USB_DEVICE_ID_CANDO_MULTI_TOUCH 0x0a01
136#define USB_DEVICE_ID_CANDO_MULTI_TOUCH_11_6 0x0b03
137
138#define USB_VENDOR_ID_CH 0x068e
139#define USB_DEVICE_ID_CH_PRO_PEDALS 0x00f2
140#define USB_DEVICE_ID_CH_COMBATSTICK 0x00f4
141#define USB_DEVICE_ID_CH_FLIGHT_SIM_ECLIPSE_YOKE 0x0051
142#define USB_DEVICE_ID_CH_FLIGHT_SIM_YOKE 0x00ff
143#define USB_DEVICE_ID_CH_3AXIS_5BUTTON_STICK 0x00d3
144
145#define USB_VENDOR_ID_CHERRY 0x046a
146#define USB_DEVICE_ID_CHERRY_CYMOTION 0x0023
147#define USB_DEVICE_ID_CHERRY_CYMOTION_SOLAR 0x0027
148
149#define USB_VENDOR_ID_CHIC 0x05fe
150#define USB_DEVICE_ID_CHIC_GAMEPAD 0x0014
151
152#define USB_VENDOR_ID_CHICONY 0x04f2
153#define USB_DEVICE_ID_CHICONY_TACTICAL_PAD 0x0418
154#define USB_DEVICE_ID_CHICONY_MULTI_TOUCH 0xb19d
155
156#define USB_VENDOR_ID_CIDC 0x1677
157
158#define USB_VENDOR_ID_CMEDIA 0x0d8c
159#define USB_DEVICE_ID_CM109 0x000e
160
161#define USB_VENDOR_ID_CODEMERCS 0x07c0
162#define USB_DEVICE_ID_CODEMERCS_IOW_FIRST 0x1500
163#define USB_DEVICE_ID_CODEMERCS_IOW_LAST 0x15ff
164
165#define USB_VENDOR_ID_CREATIVELABS 0x041e
166#define USB_DEVICE_ID_PRODIKEYS_PCMIDI 0x2801
167
168#define USB_VENDOR_ID_CYGNAL 0x10c4
169#define USB_DEVICE_ID_CYGNAL_RADIO_SI470X 0x818a
170
171#define USB_VENDOR_ID_CYPRESS 0x04b4
172#define USB_DEVICE_ID_CYPRESS_MOUSE 0x0001
173#define USB_DEVICE_ID_CYPRESS_HIDCOM 0x5500
174#define USB_DEVICE_ID_CYPRESS_ULTRAMOUSE 0x7417
175#define USB_DEVICE_ID_CYPRESS_BARCODE_1 0xde61
176#define USB_DEVICE_ID_CYPRESS_BARCODE_2 0xde64
177#define USB_DEVICE_ID_CYPRESS_BARCODE_3 0xbca1
178
179#define USB_VENDOR_ID_DEALEXTREAME 0x10c5
180#define USB_DEVICE_ID_DEALEXTREAME_RADIO_SI4701 0x819a
181
182#define USB_VENDOR_ID_DELORME 0x1163
183#define USB_DEVICE_ID_DELORME_EARTHMATE 0x0100
184#define USB_DEVICE_ID_DELORME_EM_LT20 0x0200
185
186#define USB_VENDOR_ID_DMI 0x0c0b
187#define USB_DEVICE_ID_DMI_ENC 0x5fab
188
189#define USB_VENDOR_ID_DRAGONRISE 0x0079
190
191#define USB_VENDOR_ID_DWAV 0x0eef
192#define USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER 0x0001
193#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH 0x480d
194#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH1 0x720c
195
196#define USB_VENDOR_ID_ELECOM 0x056e
197#define USB_DEVICE_ID_ELECOM_BM084 0x0061
198
199#define USB_VENDOR_ID_ELO 0x04E7
200#define USB_DEVICE_ID_ELO_TS2700 0x0020
201
202#define USB_VENDOR_ID_ESSENTIAL_REALITY 0x0d7f
203#define USB_DEVICE_ID_ESSENTIAL_REALITY_P5 0x0100
204
205#define USB_VENDOR_ID_ETT 0x0664
206#define USB_DEVICE_ID_TC5UH 0x0309
207#define USB_DEVICE_ID_TC4UM 0x0306
208
209#define USB_VENDOR_ID_ETURBOTOUCH 0x22b9
210#define USB_DEVICE_ID_ETURBOTOUCH 0x0006
211
212#define USB_VENDOR_ID_EZKEY 0x0518
213#define USB_DEVICE_ID_BTC_8193 0x0002
214
215#define USB_VENDOR_ID_GAMERON 0x0810
216#define USB_DEVICE_ID_GAMERON_DUAL_PSX_ADAPTOR 0x0001
217#define USB_DEVICE_ID_GAMERON_DUAL_PCS_ADAPTOR 0x0002
218
219#define USB_VENDOR_ID_GENERAL_TOUCH 0x0dfc
220
221#define USB_VENDOR_ID_GLAB 0x06c2
222#define USB_DEVICE_ID_4_PHIDGETSERVO_30 0x0038
223#define USB_DEVICE_ID_1_PHIDGETSERVO_30 0x0039
224#define USB_DEVICE_ID_0_0_4_IF_KIT 0x0040
225#define USB_DEVICE_ID_0_16_16_IF_KIT 0x0044
226#define USB_DEVICE_ID_8_8_8_IF_KIT 0x0045
227#define USB_DEVICE_ID_0_8_7_IF_KIT 0x0051
228#define USB_DEVICE_ID_0_8_8_IF_KIT 0x0053
229#define USB_DEVICE_ID_PHIDGET_MOTORCONTROL 0x0058
230
231#define USB_VENDOR_ID_GOTOP 0x08f2
232#define USB_DEVICE_ID_SUPER_Q2 0x007f
233#define USB_DEVICE_ID_GOGOPEN 0x00ce
234#define USB_DEVICE_ID_PENPOWER 0x00f4
235
236#define USB_VENDOR_ID_GREENASIA 0x0e8f
237
238#define USB_VENDOR_ID_GRETAGMACBETH 0x0971
239#define USB_DEVICE_ID_GRETAGMACBETH_HUEY 0x2005
240
241#define USB_VENDOR_ID_GRIFFIN 0x077d
242#define USB_DEVICE_ID_POWERMATE 0x0410
243#define USB_DEVICE_ID_SOUNDKNOB 0x04AA
244
245#define USB_VENDOR_ID_GTCO 0x078c
246#define USB_DEVICE_ID_GTCO_90 0x0090
247#define USB_DEVICE_ID_GTCO_100 0x0100
248#define USB_DEVICE_ID_GTCO_101 0x0101
249#define USB_DEVICE_ID_GTCO_103 0x0103
250#define USB_DEVICE_ID_GTCO_104 0x0104
251#define USB_DEVICE_ID_GTCO_105 0x0105
252#define USB_DEVICE_ID_GTCO_106 0x0106
253#define USB_DEVICE_ID_GTCO_107 0x0107
254#define USB_DEVICE_ID_GTCO_108 0x0108
255#define USB_DEVICE_ID_GTCO_200 0x0200
256#define USB_DEVICE_ID_GTCO_201 0x0201
257#define USB_DEVICE_ID_GTCO_202 0x0202
258#define USB_DEVICE_ID_GTCO_203 0x0203
259#define USB_DEVICE_ID_GTCO_204 0x0204
260#define USB_DEVICE_ID_GTCO_205 0x0205
261#define USB_DEVICE_ID_GTCO_206 0x0206
262#define USB_DEVICE_ID_GTCO_207 0x0207
263#define USB_DEVICE_ID_GTCO_300 0x0300
264#define USB_DEVICE_ID_GTCO_301 0x0301
265#define USB_DEVICE_ID_GTCO_302 0x0302
266#define USB_DEVICE_ID_GTCO_303 0x0303
267#define USB_DEVICE_ID_GTCO_304 0x0304
268#define USB_DEVICE_ID_GTCO_305 0x0305
269#define USB_DEVICE_ID_GTCO_306 0x0306
270#define USB_DEVICE_ID_GTCO_307 0x0307
271#define USB_DEVICE_ID_GTCO_308 0x0308
272#define USB_DEVICE_ID_GTCO_309 0x0309
273#define USB_DEVICE_ID_GTCO_400 0x0400
274#define USB_DEVICE_ID_GTCO_401 0x0401
275#define USB_DEVICE_ID_GTCO_402 0x0402
276#define USB_DEVICE_ID_GTCO_403 0x0403
277#define USB_DEVICE_ID_GTCO_404 0x0404
278#define USB_DEVICE_ID_GTCO_405 0x0405
279#define USB_DEVICE_ID_GTCO_500 0x0500
280#define USB_DEVICE_ID_GTCO_501 0x0501
281#define USB_DEVICE_ID_GTCO_502 0x0502
282#define USB_DEVICE_ID_GTCO_503 0x0503
283#define USB_DEVICE_ID_GTCO_504 0x0504
284#define USB_DEVICE_ID_GTCO_1000 0x1000
285#define USB_DEVICE_ID_GTCO_1001 0x1001
286#define USB_DEVICE_ID_GTCO_1002 0x1002
287#define USB_DEVICE_ID_GTCO_1003 0x1003
288#define USB_DEVICE_ID_GTCO_1004 0x1004
289#define USB_DEVICE_ID_GTCO_1005 0x1005
290#define USB_DEVICE_ID_GTCO_1006 0x1006
291#define USB_DEVICE_ID_GTCO_1007 0x1007
292
293#define USB_VENDOR_ID_GYRATION 0x0c16
294#define USB_DEVICE_ID_GYRATION_REMOTE 0x0002
295#define USB_DEVICE_ID_GYRATION_REMOTE_2 0x0003
296#define USB_DEVICE_ID_GYRATION_REMOTE_3 0x0008
297
298#define USB_VENDOR_ID_HAPP 0x078b
299#define USB_DEVICE_ID_UGCI_DRIVING 0x0010
300#define USB_DEVICE_ID_UGCI_FLYING 0x0020
301#define USB_DEVICE_ID_UGCI_FIGHTING 0x0030
302
303#define USB_VENDOR_ID_IMATION 0x0718
304#define USB_DEVICE_ID_DISC_STAKKA 0xd000
305
306#define USB_VENDOR_ID_KBGEAR 0x084e
307#define USB_DEVICE_ID_KBGEAR_JAMSTUDIO 0x1001
308
309#define USB_VENDOR_ID_KENSINGTON 0x047d
310#define USB_DEVICE_ID_KS_SLIMBLADE 0x2041
311
312#define USB_VENDOR_ID_KWORLD 0x1b80
313#define USB_DEVICE_ID_KWORLD_RADIO_FM700 0xd700
314
315#define USB_VENDOR_ID_KYE 0x0458
316#define USB_DEVICE_ID_KYE_ERGO_525V 0x0087
317#define USB_DEVICE_ID_KYE_GPEN_560 0x5003
318
319#define USB_VENDOR_ID_LABTEC 0x1020
320#define USB_DEVICE_ID_LABTEC_WIRELESS_KEYBOARD 0x0006
321
322#define USB_VENDOR_ID_LD 0x0f11
323#define USB_DEVICE_ID_LD_CASSY 0x1000
324#define USB_DEVICE_ID_LD_POCKETCASSY 0x1010
325#define USB_DEVICE_ID_LD_MOBILECASSY 0x1020
326#define USB_DEVICE_ID_LD_JWM 0x1080
327#define USB_DEVICE_ID_LD_DMMP 0x1081
328#define USB_DEVICE_ID_LD_UMIP 0x1090
329#define USB_DEVICE_ID_LD_XRAY1 0x1100
330#define USB_DEVICE_ID_LD_XRAY2 0x1101
331#define USB_DEVICE_ID_LD_VIDEOCOM 0x1200
332#define USB_DEVICE_ID_LD_COM3LAB 0x2000
333#define USB_DEVICE_ID_LD_TELEPORT 0x2010
334#define USB_DEVICE_ID_LD_NETWORKANALYSER 0x2020
335#define USB_DEVICE_ID_LD_POWERCONTROL 0x2030
336#define USB_DEVICE_ID_LD_MACHINETEST 0x2040
337
338#define USB_VENDOR_ID_LOGITECH 0x046d
339#define USB_DEVICE_ID_LOGITECH_RECEIVER 0xc101
340#define USB_DEVICE_ID_LOGITECH_HARMONY_FIRST 0xc110
341#define USB_DEVICE_ID_LOGITECH_HARMONY_LAST 0xc14f
342#define USB_DEVICE_ID_LOGITECH_RUMBLEPAD 0xc211
343#define USB_DEVICE_ID_LOGITECH_EXTREME_3D 0xc215
344#define USB_DEVICE_ID_LOGITECH_RUMBLEPAD2 0xc218
345#define USB_DEVICE_ID_LOGITECH_RUMBLEPAD2_2 0xc219
346#define USB_DEVICE_ID_LOGITECH_WINGMAN_F3D 0xc283
347#define USB_DEVICE_ID_LOGITECH_FORCE3D_PRO 0xc286
348#define USB_DEVICE_ID_LOGITECH_FLIGHT_SYSTEM_G940 0xc287
349#define USB_DEVICE_ID_LOGITECH_WHEEL 0xc294
350#define USB_DEVICE_ID_LOGITECH_WINGMAN_FFG 0xc293
351#define USB_DEVICE_ID_LOGITECH_MOMO_WHEEL 0xc295
352#define USB_DEVICE_ID_LOGITECH_G25_WHEEL 0xc299
353#define USB_DEVICE_ID_LOGITECH_ELITE_KBD 0xc30a
354#define USB_DEVICE_ID_S510_RECEIVER 0xc50c
355#define USB_DEVICE_ID_S510_RECEIVER_2 0xc517
356#define USB_DEVICE_ID_LOGITECH_CORDLESS_DESKTOP_LX500 0xc512
357#define USB_DEVICE_ID_MX3000_RECEIVER 0xc513
358#define USB_DEVICE_ID_SPACETRAVELLER 0xc623
359#define USB_DEVICE_ID_SPACENAVIGATOR 0xc626
360#define USB_DEVICE_ID_DINOVO_DESKTOP 0xc704
361#define USB_DEVICE_ID_DINOVO_EDGE 0xc714
362#define USB_DEVICE_ID_DINOVO_MINI 0xc71f
363#define USB_DEVICE_ID_LOGITECH_MOMO_WHEEL2 0xca03
364
365#define USB_VENDOR_ID_MCC 0x09db
366#define USB_DEVICE_ID_MCC_PMD1024LS 0x0076
367#define USB_DEVICE_ID_MCC_PMD1208LS 0x007a
368
369#define USB_VENDOR_ID_MGE 0x0463
370#define USB_DEVICE_ID_MGE_UPS 0xffff
371#define USB_DEVICE_ID_MGE_UPS1 0x0001
372
373#define USB_VENDOR_ID_MICROCHIP 0x04d8
374#define USB_DEVICE_ID_PICKIT1 0x0032
375#define USB_DEVICE_ID_PICKIT2 0x0033
376#define USB_DEVICE_ID_PICOLCD 0xc002
377#define USB_DEVICE_ID_PICOLCD_BOOTLOADER 0xf002
378
379#define USB_VENDOR_ID_MICROSOFT 0x045e
380#define USB_DEVICE_ID_SIDEWINDER_GV 0x003b
381#define USB_DEVICE_ID_WIRELESS_OPTICAL_DESKTOP_3_0 0x009d
382#define USB_DEVICE_ID_MS_NE4K 0x00db
383#define USB_DEVICE_ID_MS_LK6K 0x00f9
384#define USB_DEVICE_ID_MS_PRESENTER_8K_BT 0x0701
385#define USB_DEVICE_ID_MS_PRESENTER_8K_USB 0x0713
386
387#define USB_VENDOR_ID_MOJO 0x8282
388#define USB_DEVICE_ID_RETRO_ADAPTER 0x3201
389
390#define USB_VENDOR_ID_MONTEREY 0x0566
391#define USB_DEVICE_ID_GENIUS_KB29E 0x3004
392
393#define USB_VENDOR_ID_NATIONAL_SEMICONDUCTOR 0x0400
394#define USB_DEVICE_ID_N_S_HARMONY 0xc359
395
396#define USB_VENDOR_ID_NATSU 0x08b7
397#define USB_DEVICE_ID_NATSU_GAMEPAD 0x0001
398
399#define USB_VENDOR_ID_NCR 0x0404
400#define USB_DEVICE_ID_NCR_FIRST 0x0300
401#define USB_DEVICE_ID_NCR_LAST 0x03ff
402
403#define USB_VENDOR_ID_NEC 0x073e
404#define USB_DEVICE_ID_NEC_USB_GAME_PAD 0x0301
405
406#define USB_VENDOR_ID_NEXTWINDOW 0x1926
407#define USB_DEVICE_ID_NEXTWINDOW_TOUCHSCREEN 0x0003
408
409#define USB_VENDOR_ID_NTRIG 0x1b96
410#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN 0x0001
411#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_1 0x0003
412#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_2 0x0004
413#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_3 0x0005
414#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_4 0x0006
415#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_5 0x0007
416#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_6 0x0008
417#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_7 0x0009
418#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_8 0x000A
419#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_9 0x000B
420#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_10 0x000C
421#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_11 0x000D
422#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_12 0x000E
423#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_13 0x000F
424#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_14 0x0010
425#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_15 0x0011
426#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_16 0x0012
427#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_17 0x0013
428#define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_18 0x0014
429
430#define USB_VENDOR_ID_ONTRAK 0x0a07
431#define USB_DEVICE_ID_ONTRAK_ADU100 0x0064
432
433#define USB_VENDOR_ID_ORTEK 0x05a4
434#define USB_DEVICE_ID_ORTEK_WKB2000 0x2000
435
436#define USB_VENDOR_ID_PANJIT 0x134c
437
438#define USB_VENDOR_ID_PANTHERLORD 0x0810
439#define USB_DEVICE_ID_PANTHERLORD_TWIN_USB_JOYSTICK 0x0001
440
441#define USB_VENDOR_ID_PETALYNX 0x18b1
442#define USB_DEVICE_ID_PETALYNX_MAXTER_REMOTE 0x0037
443
444#define USB_VENDOR_ID_PHILIPS 0x0471
445#define USB_DEVICE_ID_PHILIPS_IEEE802154_DONGLE 0x0617
446
447#define USB_VENDOR_ID_PI_ENGINEERING 0x05f3
448#define USB_DEVICE_ID_PI_ENGINEERING_VEC_USB_FOOTPEDAL 0xff
449
450#define USB_VENDOR_ID_PLAYDOTCOM 0x0b43
451#define USB_DEVICE_ID_PLAYDOTCOM_EMS_USBII 0x0003
452
453#define USB_VENDOR_ID_POWERCOM 0x0d9f
454#define USB_DEVICE_ID_POWERCOM_UPS 0x0002
455
456#define USB_VENDOR_ID_PRODIGE 0x05af
457#define USB_DEVICE_ID_PRODIGE_CORDLESS 0x3062
458
459#define USB_VENDOR_ID_QUANTA 0x0408
460#define USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH 0x3000
461#define USB_DEVICE_ID_PIXART_IMAGING_INC_OPTICAL_TOUCH_SCREEN 0x3001
462
463#define USB_VENDOR_ID_ROCCAT 0x1e7d
464#define USB_DEVICE_ID_ROCCAT_KONE 0x2ced
465
466#define USB_VENDOR_ID_SAITEK 0x06a3
467#define USB_DEVICE_ID_SAITEK_RUMBLEPAD 0xff17
468
469#define USB_VENDOR_ID_SAMSUNG 0x0419
470#define USB_DEVICE_ID_SAMSUNG_IR_REMOTE 0x0001
471#define USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD_MOUSE 0x0600
472
473#define USB_VENDOR_ID_SONY 0x054c
474#define USB_DEVICE_ID_SONY_VAIO_VGX_MOUSE 0x024b
475#define USB_DEVICE_ID_SONY_PS3_CONTROLLER 0x0268
476
477#define USB_VENDOR_ID_SOUNDGRAPH 0x15c2
478#define USB_DEVICE_ID_SOUNDGRAPH_IMON_FIRST 0x0034
479#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LAST 0x0046
480
481#define USB_VENDOR_ID_STANTUM 0x1f87
482#define USB_DEVICE_ID_MTP 0x0002
483
484#define USB_VENDOR_ID_SUN 0x0430
485#define USB_DEVICE_ID_RARITAN_KVM_DONGLE 0xcdab
486
487#define USB_VENDOR_ID_SUNPLUS 0x04fc
488#define USB_DEVICE_ID_SUNPLUS_WDESKTOP 0x05d8
489
490#define USB_VENDOR_ID_THRUSTMASTER 0x044f
491
492#define USB_VENDOR_ID_TOPSEED 0x0766
493#define USB_DEVICE_ID_TOPSEED_CYBERLINK 0x0204
494
495#define USB_VENDOR_ID_TOPSEED2 0x1784
496#define USB_DEVICE_ID_TOPSEED2_RF_COMBO 0x0004
497
498#define USB_VENDOR_ID_TOPMAX 0x0663
499#define USB_DEVICE_ID_TOPMAX_COBRAPAD 0x0103
500
501#define USB_VENDOR_ID_TOUCHPACK 0x1bfd
502#define USB_DEVICE_ID_TOUCHPACK_RTS 0x1688
503
504#define USB_VENDOR_ID_TURBOX 0x062a
505#define USB_DEVICE_ID_TURBOX_KEYBOARD 0x0201
506#define USB_DEVICE_ID_TURBOX_TOUCHSCREEN_MOSART 0x7100
507
508#define USB_VENDOR_ID_TWINHAN 0x6253
509#define USB_DEVICE_ID_TWINHAN_IR_REMOTE 0x0100
510
511#define USB_VENDOR_ID_UCLOGIC 0x5543
512#define USB_DEVICE_ID_UCLOGIC_TABLET_PF1209 0x0042
513#define USB_DEVICE_ID_UCLOGIC_TABLET_WP4030U 0x0003
514#define USB_DEVICE_ID_UCLOGIC_TABLET_KNA5 0x6001
515
516#define USB_VENDOR_ID_VERNIER 0x08f7
517#define USB_DEVICE_ID_VERNIER_LABPRO 0x0001
518#define USB_DEVICE_ID_VERNIER_GOTEMP 0x0002
519#define USB_DEVICE_ID_VERNIER_SKIP 0x0003
520#define USB_DEVICE_ID_VERNIER_CYCLOPS 0x0004
521#define USB_DEVICE_ID_VERNIER_LCSPEC 0x0006
522
523#define USB_VENDOR_ID_WACOM 0x056a
524#define USB_DEVICE_ID_WACOM_GRAPHIRE_BLUETOOTH 0x81
525
526#define USB_VENDOR_ID_WISEGROUP 0x0925
527#define USB_DEVICE_ID_SMARTJOY_PLUS 0x0005
528#define USB_DEVICE_ID_1_PHIDGETSERVO_20 0x8101
529#define USB_DEVICE_ID_4_PHIDGETSERVO_20 0x8104
530#define USB_DEVICE_ID_8_8_4_IF_KIT 0x8201
531#define USB_DEVICE_ID_QUAD_USB_JOYPAD 0x8800
532#define USB_DEVICE_ID_DUAL_USB_JOYPAD 0x8866
533
534#define USB_VENDOR_ID_WISEGROUP_LTD 0x6666
535#define USB_VENDOR_ID_WISEGROUP_LTD2 0x6677
536#define USB_DEVICE_ID_SMARTJOY_DUAL_PLUS 0x8802
537
538#define USB_VENDOR_ID_YEALINK 0x6993
539#define USB_DEVICE_ID_YEALINK_P1K_P4K_B2K 0xb001
540
541#define USB_VENDOR_ID_ZEROPLUS 0x0c12
542
543#define USB_VENDOR_ID_ZYDACRON 0x13EC
544#define USB_DEVICE_ID_ZYDACRON_REMOTE_CONTROL 0x0006
545
546#endif
diff --git a/usr/src/dkms_source_tree/hid-mosart.c b/usr/src/dkms_source_tree/hid-mosart.c
new file mode 100644
index 0000000..3ac9be6
--- /dev/null
+++ b/usr/src/dkms_source_tree/hid-mosart.c
@@ -0,0 +1,277 @@
1/*
2 * HID driver for the multitouch panel on the ASUS EeePC T91MT
3 *
4 * Copyright (c) 2009-2010 Stephane Chatty <chatty@enac.fr>
5 * Copyright (c) 2010 Teemu Tuominen <teemu.tuominen@cybercom.com>
6 *
7 */
8
9/*
10 * This program is free software; you can redistribute it and/or modify it
11 * under the terms of the GNU General Public License as published by the Free
12 * Software Foundation; either version 2 of the License, or (at your option)
13 * any later version.
14 */
15
16#include <linux/device.h>
17#include <linux/hid.h>
18#include <linux/module.h>
19#include <linux/slab.h>
20#include <linux/usb.h>
21
22MODULE_AUTHOR("Stephane Chatty <chatty@enac.fr>");
23MODULE_DESCRIPTION("MosArt dual-touch panel");
24MODULE_LICENSE("GPL");
25
26#include "hid-ids.h"
27
28void usbhid_submit_report
29(struct hid_device *hid, struct hid_report *report, unsigned char dir);
30
31struct mosart_data {
32 __u16 x, y;
33 __u8 id;
34 bool valid; /* valid finger data, or just placeholder? */
35 bool first; /* is this the first finger in this frame? */
36 bool activity_now; /* at least one active finger in this frame? */
37 bool activity; /* at least one active finger previously? */
38};
39
40static int mosart_input_mapping(struct hid_device *hdev, struct hid_input *hi,
41 struct hid_field *field, struct hid_usage *usage,
42 unsigned long **bit, int *max)
43{
44 switch (usage->hid & HID_USAGE_PAGE) {
45
46 case HID_UP_GENDESK:
47 switch (usage->hid) {
48 case HID_GD_X:
49 hid_map_usage(hi, usage, bit, max,
50 EV_ABS, ABS_MT_POSITION_X);
51 /* touchscreen emulation */
52 input_set_abs_params(hi->input, ABS_X,
53 field->logical_minimum,
54 field->logical_maximum, 0, 0);
55 return 1;
56 case HID_GD_Y:
57 hid_map_usage(hi, usage, bit, max,
58 EV_ABS, ABS_MT_POSITION_Y);
59 /* touchscreen emulation */
60 input_set_abs_params(hi->input, ABS_Y,
61 field->logical_minimum,
62 field->logical_maximum, 0, 0);
63 return 1;
64 }
65 return 0;
66
67 case HID_UP_DIGITIZER:
68 switch (usage->hid) {
69 case HID_DG_CONFIDENCE:
70 case HID_DG_TIPSWITCH:
71 case HID_DG_INPUTMODE:
72 case HID_DG_DEVICEINDEX:
73 case HID_DG_CONTACTCOUNT:
74 case HID_DG_CONTACTMAX:
75 case HID_DG_TIPPRESSURE:
76 case HID_DG_WIDTH:
77 case HID_DG_HEIGHT:
78 return -1;
79 case HID_DG_INRANGE:
80 /* touchscreen emulation */
81 hid_map_usage(hi, usage, bit, max, EV_KEY, BTN_TOUCH);
82 return 1;
83
84 case HID_DG_CONTACTID:
85 hid_map_usage(hi, usage, bit, max,
86 EV_ABS, ABS_MT_TRACKING_ID);
87 return 1;
88
89 }
90 return 0;
91
92 case 0xff000000:
93 /* ignore HID features */
94 return -1;
95 }
96
97 return 0;
98}
99
100static int mosart_input_mapped(struct hid_device *hdev, struct hid_input *hi,
101 struct hid_field *field, struct hid_usage *usage,
102 unsigned long **bit, int *max)
103{
104 if (usage->type == EV_KEY || usage->type == EV_ABS)
105 clear_bit(usage->code, *bit);
106
107 return 0;
108}
109
110/*
111 * this function is called when a whole finger has been parsed,
112 * so that it can decide what to send to the input layer.
113 */
114static void mosart_filter_event(struct mosart_data *td, struct input_dev *input)
115{
116 td->first = !td->first; /* touchscreen emulation */
117
118 if (!td->valid) {
119 /*
120 * touchscreen emulation: if no finger in this frame is valid
121 * and there previously was finger activity, this is a release
122 */
123 if (!td->first && !td->activity_now && td->activity) {
124 input_event(input, EV_KEY, BTN_TOUCH, 0);
125 td->activity = false;
126 }
127 return;
128 }
129
130 input_event(input, EV_ABS, ABS_MT_TRACKING_ID, td->id);
131 input_event(input, EV_ABS, ABS_MT_POSITION_X, td->x);
132 input_event(input, EV_ABS, ABS_MT_POSITION_Y, td->y);
133
134 input_mt_sync(input);
135 td->valid = false;
136
137 /* touchscreen emulation: if first active finger in this frame... */
138 if (!td->activity_now) {
139 /* if there was no previous activity, emit touch event */
140 if (!td->activity) {
141 input_event(input, EV_KEY, BTN_TOUCH, 1);
142 td->activity = true;
143 }
144 td->activity_now = true;
145 /* and in any case this is our preferred finger */
146 input_event(input, EV_ABS, ABS_X, td->x);
147 input_event(input, EV_ABS, ABS_Y, td->y);
148 }
149}
150
151
152static int mosart_event(struct hid_device *hid, struct hid_field *field,
153 struct hid_usage *usage, __s32 value)
154{
155 struct mosart_data *td = hid_get_drvdata(hid);
156
157 if (hid->claimed & HID_CLAIMED_INPUT) {
158 struct input_dev *input = field->hidinput->input;
159 switch (usage->hid) {
160 case HID_DG_INRANGE:
161 td->valid = !!value;
162 break;
163 case HID_GD_X:
164 td->x = value;
165 break;
166 case HID_GD_Y:
167 td->y = value;
168 mosart_filter_event(td, input);
169 break;
170 case HID_DG_CONTACTID:
171 td->id = value;
172 break;
173 case HID_DG_CONTACTCOUNT:
174 /* touch emulation: this is the last field in a frame */
175 td->first = false;
176 td->activity_now = false;
177 break;
178 case HID_DG_CONFIDENCE:
179 case HID_DG_TIPSWITCH:
180 /* avoid interference from generic hidinput handling */
181 break;
182
183 default:
184 /* fallback to the generic hidinput handling */
185 return 0;
186 }
187 }
188
189 /* we have handled the hidinput part, now remains hiddev */
190 if (hid->claimed & HID_CLAIMED_HIDDEV && hid->hiddev_hid_event)
191 hid->hiddev_hid_event(hid, field, usage, value);
192
193 return 1;
194}
195
196static int mosart_probe(struct hid_device *hdev, const struct hid_device_id *id)
197{
198 int ret;
199 struct mosart_data *td;
200
201
202 td = kmalloc(sizeof(struct mosart_data), GFP_KERNEL);
203 if (!td) {
204 dev_err(&hdev->dev, "cannot allocate MosArt data\n");
205 return -ENOMEM;
206 }
207 td->valid = false;
208 td->activity = false;
209 td->activity_now = false;
210 td->first = false;
211 hid_set_drvdata(hdev, td);
212
213 /* currently, it's better to have one evdev device only */
214#if 0
215 hdev->quirks |= HID_QUIRK_MULTI_INPUT;
216#endif
217
218 ret = hid_parse(hdev);
219 if (ret == 0)
220 ret = hid_hw_start(hdev, HID_CONNECT_DEFAULT);
221
222 if (ret == 0) {
223 struct hid_report_enum *re = hdev->report_enum
224 + HID_FEATURE_REPORT;
225 struct hid_report *r = re->report_id_hash[7];
226
227 r->field[0]->value[0] = 0x02;
228 usbhid_submit_report(hdev, r, USB_DIR_OUT);
229 } else
230 kfree(td);
231
232 return ret;
233}
234
235static void mosart_remove(struct hid_device *hdev)
236{
237 hid_hw_stop(hdev);
238 kfree(hid_get_drvdata(hdev));
239 hid_set_drvdata(hdev, NULL);
240}
241
242static const struct hid_device_id mosart_devices[] = {
243 { HID_USB_DEVICE(USB_VENDOR_ID_ASUS, USB_DEVICE_ID_ASUS_T91MT) },
244 { HID_USB_DEVICE(USB_VENDOR_ID_ASUS, USB_DEVICE_ID_ASUSTEK_MULTITOUCH_YFO) },
245 { }
246};
247MODULE_DEVICE_TABLE(hid, mosart_devices);
248
249static const struct hid_usage_id mosart_grabbed_usages[] = {
250 { HID_ANY_ID, HID_ANY_ID, HID_ANY_ID },
251 { HID_ANY_ID - 1, HID_ANY_ID - 1, HID_ANY_ID - 1}
252};
253
254static struct hid_driver mosart_driver = {
255 .name = "mosart",
256 .id_table = mosart_devices,
257 .probe = mosart_probe,
258 .remove = mosart_remove,
259 .input_mapping = mosart_input_mapping,
260 .input_mapped = mosart_input_mapped,
261 .usage_table = mosart_grabbed_usages,
262 .event = mosart_event,
263};
264
265static int __init mosart_init(void)
266{
267 return hid_register_driver(&mosart_driver);
268}
269
270static void __exit mosart_exit(void)
271{
272 hid_unregister_driver(&mosart_driver);
273}
274
275module_init(mosart_init);
276module_exit(mosart_exit);
277