forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-12-09 b22da3d8526a935aa31e086e63f60ff3246cb61c
kernel/drivers/platform/x86/touchscreen_dmi.c
....@@ -1,12 +1,8 @@
1
+// SPDX-License-Identifier: GPL-2.0-or-later
12 /*
23 * Touchscreen driver DMI based configuration code
34 *
45 * Copyright (c) 2017 Red Hat Inc.
5
- *
6
- * This program is free software; you can redistribute it and/or modify
7
- * it under the terms of the GNU General Public License as published by
8
- * the Free Software Foundation; either version 2 of the License, or
9
- * (at your option) any later version.
106 *
117 * Red Hat authors:
128 * Hans de Goede <hdegoede@redhat.com>
....@@ -15,12 +11,15 @@
1511 #include <linux/acpi.h>
1612 #include <linux/device.h>
1713 #include <linux/dmi.h>
14
+#include <linux/efi_embedded_fw.h>
1815 #include <linux/i2c.h>
1916 #include <linux/notifier.h>
2017 #include <linux/property.h>
2118 #include <linux/string.h>
2219
2320 struct ts_dmi_data {
21
+ /* The EFI embedded-fw code expects this to be the first member! */
22
+ struct efi_embedded_fw_desc embedded_fw;
2423 const char *acpi_name;
2524 const struct property_entry *properties;
2625 };
....@@ -41,21 +40,146 @@
4140 .properties = chuwi_hi8_props,
4241 };
4342
43
+static const struct property_entry chuwi_hi8_air_props[] = {
44
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1728),
45
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1148),
46
+ PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
47
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl3676-chuwi-hi8-air.fw"),
48
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
49
+ { }
50
+};
51
+
52
+static const struct ts_dmi_data chuwi_hi8_air_data = {
53
+ .acpi_name = "MSSL1680:00",
54
+ .properties = chuwi_hi8_air_props,
55
+};
56
+
4457 static const struct property_entry chuwi_hi8_pro_props[] = {
58
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 6),
59
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 3),
4560 PROPERTY_ENTRY_U32("touchscreen-size-x", 1728),
4661 PROPERTY_ENTRY_U32("touchscreen-size-y", 1148),
4762 PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
4863 PROPERTY_ENTRY_STRING("firmware-name", "gsl3680-chuwi-hi8-pro.fw"),
64
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
4965 PROPERTY_ENTRY_BOOL("silead,home-button"),
5066 { }
5167 };
5268
5369 static const struct ts_dmi_data chuwi_hi8_pro_data = {
70
+ .embedded_fw = {
71
+ .name = "silead/gsl3680-chuwi-hi8-pro.fw",
72
+ .prefix = { 0xf0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 },
73
+ .length = 39864,
74
+ .sha256 = { 0xc0, 0x88, 0xc5, 0xef, 0xd1, 0x70, 0x77, 0x59,
75
+ 0x4e, 0xe9, 0xc4, 0xd8, 0x2e, 0xcd, 0xbf, 0x95,
76
+ 0x32, 0xd9, 0x03, 0x28, 0x0d, 0x48, 0x9f, 0x92,
77
+ 0x35, 0x37, 0xf6, 0x8b, 0x2a, 0xe4, 0x73, 0xff },
78
+ },
5479 .acpi_name = "MSSL1680:00",
5580 .properties = chuwi_hi8_pro_props,
5681 };
5782
83
+static const struct property_entry chuwi_hi10_air_props[] = {
84
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1981),
85
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1271),
86
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 99),
87
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 9),
88
+ PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
89
+ PROPERTY_ENTRY_U32("touchscreen-fuzz-x", 5),
90
+ PROPERTY_ENTRY_U32("touchscreen-fuzz-y", 4),
91
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-chuwi-hi10-air.fw"),
92
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
93
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
94
+ { }
95
+};
96
+
97
+static const struct ts_dmi_data chuwi_hi10_air_data = {
98
+ .acpi_name = "MSSL1680:00",
99
+ .properties = chuwi_hi10_air_props,
100
+};
101
+
102
+static const struct property_entry chuwi_hi10_plus_props[] = {
103
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 12),
104
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 10),
105
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1908),
106
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1270),
107
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-chuwi-hi10plus.fw"),
108
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
109
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
110
+ { }
111
+};
112
+
113
+static const struct ts_dmi_data chuwi_hi10_plus_data = {
114
+ .embedded_fw = {
115
+ .name = "silead/gsl1680-chuwi-hi10plus.fw",
116
+ .prefix = { 0xf0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 },
117
+ .length = 34056,
118
+ .sha256 = { 0xfd, 0x0a, 0x08, 0x08, 0x3c, 0xa6, 0x34, 0x4e,
119
+ 0x2c, 0x49, 0x9c, 0xcd, 0x7d, 0x44, 0x9d, 0x38,
120
+ 0x10, 0x68, 0xb5, 0xbd, 0xb7, 0x2a, 0x63, 0xb5,
121
+ 0x67, 0x0b, 0x96, 0xbd, 0x89, 0x67, 0x85, 0x09 },
122
+ },
123
+ .acpi_name = "MSSL0017:00",
124
+ .properties = chuwi_hi10_plus_props,
125
+};
126
+
127
+static const struct property_entry chuwi_hi10_pro_props[] = {
128
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 8),
129
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 8),
130
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1912),
131
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1272),
132
+ PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
133
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-chuwi-hi10-pro.fw"),
134
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
135
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
136
+ { }
137
+};
138
+
139
+static const struct ts_dmi_data chuwi_hi10_pro_data = {
140
+ .embedded_fw = {
141
+ .name = "silead/gsl1680-chuwi-hi10-pro.fw",
142
+ .prefix = { 0xf0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 },
143
+ .length = 42504,
144
+ .sha256 = { 0xdb, 0x92, 0x68, 0xa8, 0xdb, 0x81, 0x31, 0x00,
145
+ 0x1f, 0x58, 0x89, 0xdb, 0x19, 0x1b, 0x15, 0x8c,
146
+ 0x05, 0x14, 0xf4, 0x95, 0xba, 0x15, 0x45, 0x98,
147
+ 0x42, 0xa3, 0xbb, 0x65, 0xe3, 0x30, 0xa5, 0x93 },
148
+ },
149
+ .acpi_name = "MSSL1680:00",
150
+ .properties = chuwi_hi10_pro_props,
151
+};
152
+
153
+static const struct property_entry chuwi_hibook_props[] = {
154
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 30),
155
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 4),
156
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1892),
157
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1276),
158
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
159
+ PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
160
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-chuwi-hibook.fw"),
161
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
162
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
163
+ { }
164
+};
165
+
166
+static const struct ts_dmi_data chuwi_hibook_data = {
167
+ .embedded_fw = {
168
+ .name = "silead/gsl1680-chuwi-hibook.fw",
169
+ .prefix = { 0xf0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 },
170
+ .length = 40392,
171
+ .sha256 = { 0xf7, 0xc0, 0xe8, 0x5a, 0x6c, 0xf2, 0xeb, 0x8d,
172
+ 0x12, 0xc4, 0x45, 0xbf, 0x55, 0x13, 0x4c, 0x1a,
173
+ 0x13, 0x04, 0x31, 0x08, 0x65, 0x73, 0xf7, 0xa8,
174
+ 0x1b, 0x7d, 0x59, 0xc9, 0xe6, 0x97, 0xf7, 0x38 },
175
+ },
176
+ .acpi_name = "MSSL0017:00",
177
+ .properties = chuwi_hibook_props,
178
+};
179
+
58180 static const struct property_entry chuwi_vi8_props[] = {
181
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 4),
182
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 6),
59183 PROPERTY_ENTRY_U32("touchscreen-size-x", 1724),
60184 PROPERTY_ENTRY_U32("touchscreen-size-y", 1140),
61185 PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
....@@ -68,6 +192,18 @@
68192 static const struct ts_dmi_data chuwi_vi8_data = {
69193 .acpi_name = "MSSL1680:00",
70194 .properties = chuwi_vi8_props,
195
+};
196
+
197
+static const struct ts_dmi_data chuwi_vi8_plus_data = {
198
+ .embedded_fw = {
199
+ .name = "chipone/icn8505-HAMP0002.fw",
200
+ .prefix = { 0xb0, 0x07, 0x00, 0x00, 0xe4, 0x07, 0x00, 0x00 },
201
+ .length = 35012,
202
+ .sha256 = { 0x93, 0xe5, 0x49, 0xe0, 0xb6, 0xa2, 0xb4, 0xb3,
203
+ 0x88, 0x96, 0x34, 0x97, 0x5e, 0xa8, 0x13, 0x78,
204
+ 0x72, 0x98, 0xb8, 0x29, 0xeb, 0x5c, 0xa7, 0xf1,
205
+ 0x25, 0x13, 0x43, 0xf4, 0x30, 0x7c, 0xfc, 0x7c },
206
+ },
71207 };
72208
73209 static const struct property_entry chuwi_vi10_props[] = {
....@@ -86,11 +222,27 @@
86222 .properties = chuwi_vi10_props,
87223 };
88224
225
+static const struct property_entry chuwi_surbook_mini_props[] = {
226
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 88),
227
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 13),
228
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 2040),
229
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1524),
230
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-chuwi-surbook-mini.fw"),
231
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
232
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
233
+ { }
234
+};
235
+
236
+static const struct ts_dmi_data chuwi_surbook_mini_data = {
237
+ .acpi_name = "MSSL1680:00",
238
+ .properties = chuwi_surbook_mini_props,
239
+};
240
+
89241 static const struct property_entry connect_tablet9_props[] = {
90242 PROPERTY_ENTRY_U32("touchscreen-min-x", 9),
91
- PROPERTY_ENTRY_U32("touchscreen-min-y", 8),
243
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 10),
92244 PROPERTY_ENTRY_U32("touchscreen-size-x", 1664),
93
- PROPERTY_ENTRY_U32("touchscreen-size-y", 878),
245
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 880),
94246 PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
95247 PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
96248 PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-connect-tablet9.fw"),
....@@ -104,8 +256,10 @@
104256 };
105257
106258 static const struct property_entry cube_iwork8_air_props[] = {
107
- PROPERTY_ENTRY_U32("touchscreen-size-x", 1660),
108
- PROPERTY_ENTRY_U32("touchscreen-size-y", 900),
259
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 1),
260
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 3),
261
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1664),
262
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 896),
109263 PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
110264 PROPERTY_ENTRY_STRING("firmware-name", "gsl3670-cube-iwork8-air.fw"),
111265 PROPERTY_ENTRY_U32("silead,max-fingers", 10),
....@@ -113,6 +267,15 @@
113267 };
114268
115269 static const struct ts_dmi_data cube_iwork8_air_data = {
270
+ .embedded_fw = {
271
+ .name = "silead/gsl3670-cube-iwork8-air.fw",
272
+ .prefix = { 0xf0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 },
273
+ .length = 38808,
274
+ .sha256 = { 0xff, 0x62, 0x2d, 0xd1, 0x8a, 0x78, 0x04, 0x7b,
275
+ 0x33, 0x06, 0xb0, 0x4f, 0x7f, 0x02, 0x08, 0x9c,
276
+ 0x96, 0xd4, 0x9f, 0x04, 0xe1, 0x47, 0x25, 0x25,
277
+ 0x60, 0x77, 0x41, 0x33, 0xeb, 0x12, 0x82, 0xfc },
278
+ },
116279 .acpi_name = "MSSL1680:00",
117280 .properties = cube_iwork8_air_props,
118281 };
....@@ -151,8 +314,7 @@
151314 PROPERTY_ENTRY_U32("touchscreen-size-x", 1980),
152315 PROPERTY_ENTRY_U32("touchscreen-size-y", 1500),
153316 PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
154
- PROPERTY_ENTRY_STRING("firmware-name",
155
- "gsl1686-digma_citi_e200.fw"),
317
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1686-digma_citi_e200.fw"),
156318 PROPERTY_ENTRY_U32("silead,max-fingers", 10),
157319 PROPERTY_ENTRY_BOOL("silead,home-button"),
158320 { }
....@@ -173,13 +335,41 @@
173335 .properties = estar_beauty_hd_props,
174336 };
175337
338
+/* Generic props + data for upside-down mounted GDIX1001 touchscreens */
339
+static const struct property_entry gdix1001_upside_down_props[] = {
340
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-x"),
341
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
342
+ { }
343
+};
344
+
345
+static const struct ts_dmi_data gdix1001_00_upside_down_data = {
346
+ .acpi_name = "GDIX1001:00",
347
+ .properties = gdix1001_upside_down_props,
348
+};
349
+
350
+static const struct ts_dmi_data gdix1001_01_upside_down_data = {
351
+ .acpi_name = "GDIX1001:01",
352
+ .properties = gdix1001_upside_down_props,
353
+};
354
+
355
+static const struct property_entry glavey_tm800a550l_props[] = {
356
+ PROPERTY_ENTRY_STRING("firmware-name", "gt912-glavey-tm800a550l.fw"),
357
+ PROPERTY_ENTRY_STRING("goodix,config-name", "gt912-glavey-tm800a550l.cfg"),
358
+ PROPERTY_ENTRY_U32("goodix,main-clk", 54),
359
+ { }
360
+};
361
+
362
+static const struct ts_dmi_data glavey_tm800a550l_data = {
363
+ .acpi_name = "GDIX1001:00",
364
+ .properties = glavey_tm800a550l_props,
365
+};
366
+
176367 static const struct property_entry gp_electronic_t701_props[] = {
177368 PROPERTY_ENTRY_U32("touchscreen-size-x", 960),
178369 PROPERTY_ENTRY_U32("touchscreen-size-y", 640),
179370 PROPERTY_ENTRY_BOOL("touchscreen-inverted-x"),
180371 PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
181
- PROPERTY_ENTRY_STRING("firmware-name",
182
- "gsl1680-gp-electronic-t701.fw"),
372
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-gp-electronic-t701.fw"),
183373 { }
184374 };
185375
....@@ -188,12 +378,48 @@
188378 .properties = gp_electronic_t701_props,
189379 };
190380
381
+static const struct property_entry irbis_tw90_props[] = {
382
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1720),
383
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1138),
384
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 8),
385
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 14),
386
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
387
+ PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
388
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl3680-irbis_tw90.fw"),
389
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
390
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
391
+ { }
392
+};
393
+
394
+static const struct ts_dmi_data irbis_tw90_data = {
395
+ .acpi_name = "MSSL1680:00",
396
+ .properties = irbis_tw90_props,
397
+};
398
+
399
+static const struct property_entry irbis_tw118_props[] = {
400
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 20),
401
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 30),
402
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1960),
403
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1510),
404
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-irbis-tw118.fw"),
405
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
406
+ { }
407
+};
408
+
409
+static const struct ts_dmi_data irbis_tw118_data = {
410
+ .acpi_name = "MSSL1680:00",
411
+ .properties = irbis_tw118_props,
412
+};
413
+
191414 static const struct property_entry itworks_tw891_props[] = {
415
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 1),
416
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 5),
192417 PROPERTY_ENTRY_U32("touchscreen-size-x", 1600),
193
- PROPERTY_ENTRY_U32("touchscreen-size-y", 890),
418
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 896),
194419 PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
195420 PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
196421 PROPERTY_ENTRY_STRING("firmware-name", "gsl3670-itworks-tw891.fw"),
422
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
197423 { }
198424 };
199425
....@@ -216,9 +442,42 @@
216442 .properties = jumper_ezpad_6_pro_props,
217443 };
218444
445
+static const struct property_entry jumper_ezpad_6_pro_b_props[] = {
446
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1980),
447
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1500),
448
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl3692-jumper-ezpad-6-pro-b.fw"),
449
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
450
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
451
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
452
+ { }
453
+};
454
+
455
+static const struct ts_dmi_data jumper_ezpad_6_pro_b_data = {
456
+ .acpi_name = "MSSL1680:00",
457
+ .properties = jumper_ezpad_6_pro_b_props,
458
+};
459
+
460
+static const struct property_entry jumper_ezpad_6_m4_props[] = {
461
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 35),
462
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 15),
463
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1950),
464
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1525),
465
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl3692-jumper-ezpad-6-m4.fw"),
466
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
467
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
468
+ { }
469
+};
470
+
471
+static const struct ts_dmi_data jumper_ezpad_6_m4_data = {
472
+ .acpi_name = "MSSL1680:00",
473
+ .properties = jumper_ezpad_6_m4_props,
474
+};
475
+
219476 static const struct property_entry jumper_ezpad_mini3_props[] = {
477
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 23),
478
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 16),
220479 PROPERTY_ENTRY_U32("touchscreen-size-x", 1700),
221
- PROPERTY_ENTRY_U32("touchscreen-size-y", 1150),
480
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1138),
222481 PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
223482 PROPERTY_ENTRY_STRING("firmware-name", "gsl3676-jumper-ezpad-mini3.fw"),
224483 PROPERTY_ENTRY_U32("silead,max-fingers", 10),
....@@ -228,6 +487,57 @@
228487 static const struct ts_dmi_data jumper_ezpad_mini3_data = {
229488 .acpi_name = "MSSL1680:00",
230489 .properties = jumper_ezpad_mini3_props,
490
+};
491
+
492
+static const struct property_entry mpman_converter9_props[] = {
493
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 8),
494
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 8),
495
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1664),
496
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 880),
497
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
498
+ PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
499
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-mpman-converter9.fw"),
500
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
501
+ { }
502
+};
503
+
504
+static const struct ts_dmi_data mpman_converter9_data = {
505
+ .acpi_name = "MSSL1680:00",
506
+ .properties = mpman_converter9_props,
507
+};
508
+
509
+static const struct property_entry mpman_mpwin895cl_props[] = {
510
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 3),
511
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 9),
512
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1728),
513
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1150),
514
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
515
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl3680-mpman-mpwin895cl.fw"),
516
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
517
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
518
+ { }
519
+};
520
+
521
+static const struct ts_dmi_data mpman_mpwin895cl_data = {
522
+ .acpi_name = "MSSL1680:00",
523
+ .properties = mpman_mpwin895cl_props,
524
+};
525
+
526
+static const struct property_entry myria_my8307_props[] = {
527
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1720),
528
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1140),
529
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-x"),
530
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
531
+ PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
532
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-myria-my8307.fw"),
533
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
534
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
535
+ { }
536
+};
537
+
538
+static const struct ts_dmi_data myria_my8307_data = {
539
+ .acpi_name = "MSSL1680:00",
540
+ .properties = myria_my8307_props,
231541 };
232542
233543 static const struct property_entry onda_obook_20_plus_props[] = {
....@@ -247,12 +557,37 @@
247557 .properties = onda_obook_20_plus_props,
248558 };
249559
560
+static const struct property_entry onda_v80_plus_v3_props[] = {
561
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 22),
562
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 15),
563
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1698),
564
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1140),
565
+ PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
566
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl3676-onda-v80-plus-v3.fw"),
567
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
568
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
569
+ { }
570
+};
571
+
572
+static const struct ts_dmi_data onda_v80_plus_v3_data = {
573
+ .embedded_fw = {
574
+ .name = "silead/gsl3676-onda-v80-plus-v3.fw",
575
+ .prefix = { 0xf0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 },
576
+ .length = 37224,
577
+ .sha256 = { 0x8f, 0xbd, 0x8f, 0x0c, 0x6b, 0xba, 0x5b, 0xf5,
578
+ 0xa3, 0xc7, 0xa3, 0xc0, 0x4f, 0xcd, 0xdf, 0x32,
579
+ 0xcc, 0xe4, 0x70, 0xd6, 0x46, 0x9c, 0xd7, 0xa7,
580
+ 0x4b, 0x82, 0x3f, 0xab, 0xc7, 0x90, 0xea, 0x23 },
581
+ },
582
+ .acpi_name = "MSSL1680:00",
583
+ .properties = onda_v80_plus_v3_props,
584
+};
585
+
250586 static const struct property_entry onda_v820w_32g_props[] = {
251587 PROPERTY_ENTRY_U32("touchscreen-size-x", 1665),
252588 PROPERTY_ENTRY_U32("touchscreen-size-y", 1140),
253589 PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
254
- PROPERTY_ENTRY_STRING("firmware-name",
255
- "gsl1680-onda-v820w-32g.fw"),
590
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-onda-v820w-32g.fw"),
256591 PROPERTY_ENTRY_U32("silead,max-fingers", 10),
257592 PROPERTY_ENTRY_BOOL("silead,home-button"),
258593 { }
....@@ -263,13 +598,30 @@
263598 .properties = onda_v820w_32g_props,
264599 };
265600
601
+static const struct property_entry onda_v891_v5_props[] = {
602
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1715),
603
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1140),
604
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-x"),
605
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
606
+ PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
607
+ PROPERTY_ENTRY_STRING("firmware-name",
608
+ "gsl3676-onda-v891-v5.fw"),
609
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
610
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
611
+ { }
612
+};
613
+
614
+static const struct ts_dmi_data onda_v891_v5_data = {
615
+ .acpi_name = "MSSL1680:00",
616
+ .properties = onda_v891_v5_props,
617
+};
618
+
266619 static const struct property_entry onda_v891w_v1_props[] = {
267620 PROPERTY_ENTRY_U32("touchscreen-min-x", 46),
268621 PROPERTY_ENTRY_U32("touchscreen-min-y", 8),
269622 PROPERTY_ENTRY_U32("touchscreen-size-x", 1676),
270623 PROPERTY_ENTRY_U32("touchscreen-size-y", 1130),
271
- PROPERTY_ENTRY_STRING("firmware-name",
272
- "gsl3680-onda-v891w-v1.fw"),
624
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl3680-onda-v891w-v1.fw"),
273625 PROPERTY_ENTRY_U32("silead,max-fingers", 10),
274626 PROPERTY_ENTRY_BOOL("silead,home-button"),
275627 { }
....@@ -286,8 +638,7 @@
286638 PROPERTY_ENTRY_U32("touchscreen-size-x", 1625),
287639 PROPERTY_ENTRY_U32("touchscreen-size-y", 1135),
288640 PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
289
- PROPERTY_ENTRY_STRING("firmware-name",
290
- "gsl3676-onda-v891w-v3.fw"),
641
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl3676-onda-v891w-v3.fw"),
291642 PROPERTY_ENTRY_U32("silead,max-fingers", 10),
292643 PROPERTY_ENTRY_BOOL("silead,home-button"),
293644 { }
....@@ -303,14 +654,38 @@
303654 PROPERTY_ENTRY_U32("touchscreen-size-y", 880),
304655 PROPERTY_ENTRY_BOOL("touchscreen-inverted-x"),
305656 PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
306
- PROPERTY_ENTRY_STRING("firmware-name",
307
- "gsl1680-pipo-w2s.fw"),
657
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-pipo-w2s.fw"),
308658 { }
309659 };
310660
311661 static const struct ts_dmi_data pipo_w2s_data = {
662
+ .embedded_fw = {
663
+ .name = "silead/gsl1680-pipo-w2s.fw",
664
+ .prefix = { 0xf0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 },
665
+ .length = 39072,
666
+ .sha256 = { 0xd0, 0x58, 0xc4, 0x7d, 0x55, 0x2d, 0x62, 0x18,
667
+ 0xd1, 0x6a, 0x71, 0x73, 0x0b, 0x3f, 0xbe, 0x60,
668
+ 0xbb, 0x45, 0x8c, 0x52, 0x27, 0xb7, 0x18, 0xf4,
669
+ 0x31, 0x00, 0x6a, 0x49, 0x76, 0xd8, 0x7c, 0xd3 },
670
+ },
312671 .acpi_name = "MSSL1680:00",
313672 .properties = pipo_w2s_props,
673
+};
674
+
675
+static const struct property_entry pipo_w11_props[] = {
676
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 1),
677
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 15),
678
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1984),
679
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1532),
680
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-pipo-w11.fw"),
681
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
682
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
683
+ { }
684
+};
685
+
686
+static const struct ts_dmi_data pipo_w11_data = {
687
+ .acpi_name = "MSSL1680:00",
688
+ .properties = pipo_w11_props,
314689 };
315690
316691 static const struct property_entry pov_mobii_wintab_p800w_v20_props[] = {
....@@ -319,8 +694,7 @@
319694 PROPERTY_ENTRY_U32("touchscreen-size-x", 1692),
320695 PROPERTY_ENTRY_U32("touchscreen-size-y", 1146),
321696 PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
322
- PROPERTY_ENTRY_STRING("firmware-name",
323
- "gsl3680-pov-mobii-wintab-p800w-v20.fw"),
697
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl3680-pov-mobii-wintab-p800w-v20.fw"),
324698 PROPERTY_ENTRY_U32("silead,max-fingers", 10),
325699 PROPERTY_ENTRY_BOOL("silead,home-button"),
326700 { }
....@@ -332,11 +706,13 @@
332706 };
333707
334708 static const struct property_entry pov_mobii_wintab_p800w_v21_props[] = {
335
- PROPERTY_ENTRY_U32("touchscreen-size-x", 1800),
336
- PROPERTY_ENTRY_U32("touchscreen-size-y", 1150),
709
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 1),
710
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 8),
711
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1794),
712
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1148),
337713 PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
338
- PROPERTY_ENTRY_STRING("firmware-name",
339
- "gsl3692-pov-mobii-wintab-p800w.fw"),
714
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl3692-pov-mobii-wintab-p800w.fw"),
715
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
340716 PROPERTY_ENTRY_BOOL("silead,home-button"),
341717 { }
342718 };
....@@ -344,6 +720,104 @@
344720 static const struct ts_dmi_data pov_mobii_wintab_p800w_v21_data = {
345721 .acpi_name = "MSSL1680:00",
346722 .properties = pov_mobii_wintab_p800w_v21_props,
723
+};
724
+
725
+static const struct property_entry pov_mobii_wintab_p1006w_v10_props[] = {
726
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 1),
727
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 3),
728
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1984),
729
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1520),
730
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
731
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl3692-pov-mobii-wintab-p1006w-v10.fw"),
732
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
733
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
734
+ { }
735
+};
736
+
737
+static const struct ts_dmi_data pov_mobii_wintab_p1006w_v10_data = {
738
+ .acpi_name = "MSSL1680:00",
739
+ .properties = pov_mobii_wintab_p1006w_v10_props,
740
+};
741
+
742
+static const struct property_entry predia_basic_props[] = {
743
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 3),
744
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 10),
745
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1728),
746
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1144),
747
+ PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
748
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl3680-predia-basic.fw"),
749
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
750
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
751
+ { }
752
+};
753
+
754
+static const struct ts_dmi_data predia_basic_data = {
755
+ .acpi_name = "MSSL1680:00",
756
+ .properties = predia_basic_props,
757
+};
758
+
759
+static const struct property_entry rca_cambio_w101_v2_props[] = {
760
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 4),
761
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 20),
762
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1644),
763
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 874),
764
+ PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
765
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-rca-cambio-w101-v2.fw"),
766
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
767
+ { }
768
+};
769
+
770
+static const struct ts_dmi_data rca_cambio_w101_v2_data = {
771
+ .acpi_name = "MSSL1680:00",
772
+ .properties = rca_cambio_w101_v2_props,
773
+};
774
+
775
+static const struct property_entry rwc_nanote_p8_props[] = {
776
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 46),
777
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1728),
778
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1140),
779
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
780
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-rwc-nanote-p8.fw"),
781
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
782
+ { }
783
+};
784
+
785
+static const struct ts_dmi_data rwc_nanote_p8_data = {
786
+ .acpi_name = "MSSL1680:00",
787
+ .properties = rwc_nanote_p8_props,
788
+};
789
+
790
+static const struct property_entry schneider_sct101ctm_props[] = {
791
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1715),
792
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1140),
793
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-x"),
794
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
795
+ PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
796
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-schneider-sct101ctm.fw"),
797
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
798
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
799
+ { }
800
+};
801
+
802
+static const struct ts_dmi_data schneider_sct101ctm_data = {
803
+ .acpi_name = "MSSL1680:00",
804
+ .properties = schneider_sct101ctm_props,
805
+};
806
+
807
+static const struct property_entry techbite_arc_11_6_props[] = {
808
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 5),
809
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 7),
810
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1981),
811
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1270),
812
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
813
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-techbite-arc-11-6.fw"),
814
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
815
+ { }
816
+};
817
+
818
+static const struct ts_dmi_data techbite_arc_11_6_data = {
819
+ .acpi_name = "MSSL1680:00",
820
+ .properties = techbite_arc_11_6_props,
347821 };
348822
349823 static const struct property_entry teclast_x3_plus_props[] = {
....@@ -365,8 +839,7 @@
365839 PROPERTY_ENTRY_U32("touchscreen-size-y", 1280),
366840 PROPERTY_ENTRY_BOOL("touchscreen-inverted-x"),
367841 PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
368
- PROPERTY_ENTRY_STRING("firmware-name",
369
- "gsl1686-teclast_x98plus2.fw"),
842
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1686-teclast_x98plus2.fw"),
370843 PROPERTY_ENTRY_U32("silead,max-fingers", 10),
371844 { }
372845 };
....@@ -376,11 +849,25 @@
376849 .properties = teclast_x98plus2_props,
377850 };
378851
852
+static const struct property_entry trekstor_primebook_c11_props[] = {
853
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1970),
854
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1530),
855
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
856
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-trekstor-primebook-c11.fw"),
857
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
858
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
859
+ { }
860
+};
861
+
862
+static const struct ts_dmi_data trekstor_primebook_c11_data = {
863
+ .acpi_name = "MSSL1680:00",
864
+ .properties = trekstor_primebook_c11_props,
865
+};
866
+
379867 static const struct property_entry trekstor_primebook_c13_props[] = {
380868 PROPERTY_ENTRY_U32("touchscreen-size-x", 2624),
381869 PROPERTY_ENTRY_U32("touchscreen-size-y", 1920),
382
- PROPERTY_ENTRY_STRING("firmware-name",
383
- "gsl1680-trekstor-primebook-c13.fw"),
870
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-trekstor-primebook-c13.fw"),
384871 PROPERTY_ENTRY_U32("silead,max-fingers", 10),
385872 PROPERTY_ENTRY_BOOL("silead,home-button"),
386873 { }
....@@ -391,13 +878,30 @@
391878 .properties = trekstor_primebook_c13_props,
392879 };
393880
881
+static const struct property_entry trekstor_primetab_t13b_props[] = {
882
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 2500),
883
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1900),
884
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-trekstor-primetab-t13b.fw"),
885
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
886
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
887
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
888
+ { }
889
+};
890
+
891
+static const struct ts_dmi_data trekstor_primetab_t13b_data = {
892
+ .acpi_name = "MSSL1680:00",
893
+ .properties = trekstor_primetab_t13b_props,
894
+};
895
+
394896 static const struct property_entry trekstor_surftab_twin_10_1_props[] = {
395
- PROPERTY_ENTRY_U32("touchscreen-size-x", 1900),
897
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 20),
898
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 0),
899
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1890),
396900 PROPERTY_ENTRY_U32("touchscreen-size-y", 1280),
397901 PROPERTY_ENTRY_U32("touchscreen-inverted-y", 1),
398
- PROPERTY_ENTRY_STRING("firmware-name",
399
- "gsl3670-surftab-twin-10-1-st10432-8.fw"),
902
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl3670-surftab-twin-10-1-st10432-8.fw"),
400903 PROPERTY_ENTRY_U32("silead,max-fingers", 10),
904
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
401905 { }
402906 };
403907
....@@ -407,10 +911,11 @@
407911 };
408912
409913 static const struct property_entry trekstor_surftab_wintron70_props[] = {
914
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 12),
915
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 8),
410916 PROPERTY_ENTRY_U32("touchscreen-size-x", 884),
411917 PROPERTY_ENTRY_U32("touchscreen-size-y", 632),
412
- PROPERTY_ENTRY_STRING("firmware-name",
413
- "gsl1686-surftab-wintron70-st70416-6.fw"),
918
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1686-surftab-wintron70-st70416-6.fw"),
414919 PROPERTY_ENTRY_U32("silead,max-fingers", 10),
415920 PROPERTY_ENTRY_BOOL("silead,home-button"),
416921 { }
....@@ -421,8 +926,22 @@
421926 .properties = trekstor_surftab_wintron70_props,
422927 };
423928
929
+static const struct property_entry vinga_twizzle_j116_props[] = {
930
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1920),
931
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1280),
932
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-vinga-twizzle_j116.fw"),
933
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
934
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
935
+ { }
936
+};
937
+
938
+static const struct ts_dmi_data vinga_twizzle_j116_data = {
939
+ .acpi_name = "MSSL1680:00",
940
+ .properties = vinga_twizzle_j116_props,
941
+};
942
+
424943 /* NOTE: Please keep this table sorted alphabetically */
425
-static const struct dmi_system_id touchscreen_dmi_table[] = {
944
+const struct dmi_system_id touchscreen_dmi_table[] = {
426945 {
427946 /* Chuwi Hi8 */
428947 .driver_data = (void *)&chuwi_hi8_data,
....@@ -441,11 +960,57 @@
441960 },
442961 },
443962 {
963
+ /* Chuwi Hi8 Air (CWI543) */
964
+ .driver_data = (void *)&chuwi_hi8_air_data,
965
+ .matches = {
966
+ DMI_MATCH(DMI_BOARD_VENDOR, "Default string"),
967
+ DMI_MATCH(DMI_BOARD_NAME, "Cherry Trail CR"),
968
+ DMI_MATCH(DMI_PRODUCT_NAME, "Hi8 Air"),
969
+ },
970
+ },
971
+ {
444972 /* Chuwi Hi8 Pro (CWI513) */
445973 .driver_data = (void *)&chuwi_hi8_pro_data,
446974 .matches = {
447975 DMI_MATCH(DMI_SYS_VENDOR, "Hampoo"),
448976 DMI_MATCH(DMI_PRODUCT_NAME, "X1D3_C806N"),
977
+ },
978
+ },
979
+ {
980
+ /* Chuwi Hi10 Air */
981
+ .driver_data = (void *)&chuwi_hi10_air_data,
982
+ .matches = {
983
+ DMI_MATCH(DMI_SYS_VENDOR, "CHUWI INNOVATION AND TECHNOLOGY(SHENZHEN)CO.LTD"),
984
+ DMI_MATCH(DMI_BOARD_NAME, "Cherry Trail CR"),
985
+ DMI_MATCH(DMI_PRODUCT_SKU, "P1W6_C109D_B"),
986
+ },
987
+ },
988
+ {
989
+ /* Chuwi Hi10 Plus (CWI527) */
990
+ .driver_data = (void *)&chuwi_hi10_plus_data,
991
+ .matches = {
992
+ DMI_MATCH(DMI_BOARD_VENDOR, "Hampoo"),
993
+ DMI_MATCH(DMI_PRODUCT_NAME, "Hi10 plus tablet"),
994
+ DMI_MATCH(DMI_BOARD_NAME, "Cherry Trail CR"),
995
+ },
996
+ },
997
+ {
998
+ /* Chuwi Hi10 Prus (CWI597) */
999
+ .driver_data = (void *)&chuwi_hi10_pro_data,
1000
+ .matches = {
1001
+ DMI_MATCH(DMI_BOARD_VENDOR, "Hampoo"),
1002
+ DMI_MATCH(DMI_PRODUCT_NAME, "Hi10 pro tablet"),
1003
+ DMI_MATCH(DMI_BOARD_NAME, "Cherry Trail CR"),
1004
+ },
1005
+ },
1006
+ {
1007
+ /* Chuwi HiBook (CWI514) */
1008
+ .driver_data = (void *)&chuwi_hibook_data,
1009
+ .matches = {
1010
+ DMI_MATCH(DMI_BOARD_VENDOR, "Hampoo"),
1011
+ DMI_MATCH(DMI_BOARD_NAME, "Cherry Trail CR"),
1012
+ /* Above matches are too generic, add bios-date match */
1013
+ DMI_MATCH(DMI_BIOS_DATE, "05/07/2016"),
4491014 },
4501015 },
4511016 {
....@@ -458,6 +1023,15 @@
4581023 },
4591024 },
4601025 {
1026
+ /* Chuwi Vi8 Plus (CWI519) */
1027
+ .driver_data = (void *)&chuwi_vi8_plus_data,
1028
+ .matches = {
1029
+ DMI_MATCH(DMI_SYS_VENDOR, "Hampoo"),
1030
+ DMI_MATCH(DMI_PRODUCT_NAME, "D2D3_Vi8A1"),
1031
+ DMI_MATCH(DMI_BOARD_NAME, "Cherry Trail CR"),
1032
+ },
1033
+ },
1034
+ {
4611035 /* Chuwi Vi10 (CWI505) */
4621036 .driver_data = (void *)&chuwi_vi10_data,
4631037 .matches = {
....@@ -465,6 +1039,14 @@
4651039 DMI_MATCH(DMI_BOARD_NAME, "BYT-PF02"),
4661040 DMI_MATCH(DMI_SYS_VENDOR, "ilife"),
4671041 DMI_MATCH(DMI_PRODUCT_NAME, "S165"),
1042
+ },
1043
+ },
1044
+ {
1045
+ /* Chuwi Surbook Mini (CWI540) */
1046
+ .driver_data = (void *)&chuwi_surbook_mini_data,
1047
+ .matches = {
1048
+ DMI_MATCH(DMI_BOARD_VENDOR, "Hampoo"),
1049
+ DMI_MATCH(DMI_PRODUCT_NAME, "C3W6_AP108_4G"),
4681050 },
4691051 },
4701052 {
....@@ -519,6 +1101,15 @@
5191101 DMI_MATCH(DMI_PRODUCT_NAME, "eSTAR BEAUTY HD Intel Quad core"),
5201102 },
5211103 },
1104
+ { /* Glavey TM800A550L */
1105
+ .driver_data = (void *)&glavey_tm800a550l_data,
1106
+ .matches = {
1107
+ DMI_MATCH(DMI_BOARD_VENDOR, "AMI Corporation"),
1108
+ DMI_MATCH(DMI_BOARD_NAME, "Aptio CRB"),
1109
+ /* Above strings are too generic, also match on BIOS version */
1110
+ DMI_MATCH(DMI_BIOS_VERSION, "ZY-8-BI-PX4S70VTR400-X423B-005-D"),
1111
+ },
1112
+ },
5221113 {
5231114 /* GP-electronic T701 */
5241115 .driver_data = (void *)&gp_electronic_t701_data,
....@@ -535,6 +1126,22 @@
5351126 DMI_MATCH(DMI_SYS_VENDOR, "Insyde"),
5361127 DMI_MATCH(DMI_PRODUCT_NAME, "i71c"),
5371128 DMI_MATCH(DMI_BIOS_VERSION, "itWORKS.G.WI71C.JGBMRB"),
1129
+ },
1130
+ },
1131
+ {
1132
+ /* Irbis TW90 */
1133
+ .driver_data = (void *)&irbis_tw90_data,
1134
+ .matches = {
1135
+ DMI_MATCH(DMI_SYS_VENDOR, "IRBIS"),
1136
+ DMI_MATCH(DMI_PRODUCT_NAME, "TW90"),
1137
+ },
1138
+ },
1139
+ {
1140
+ /* Irbis TW118 */
1141
+ .driver_data = (void *)&irbis_tw118_data,
1142
+ .matches = {
1143
+ DMI_MATCH(DMI_SYS_VENDOR, "IRBIS"),
1144
+ DMI_MATCH(DMI_PRODUCT_NAME, "TW118"),
5381145 },
5391146 },
5401147 {
....@@ -557,12 +1164,73 @@
5571164 },
5581165 },
5591166 {
1167
+ /* Jumper EZpad 6 Pro B */
1168
+ .driver_data = (void *)&jumper_ezpad_6_pro_b_data,
1169
+ .matches = {
1170
+ DMI_MATCH(DMI_SYS_VENDOR, "Jumper"),
1171
+ DMI_MATCH(DMI_PRODUCT_NAME, "EZpad"),
1172
+ DMI_MATCH(DMI_BIOS_VERSION, "5.12"),
1173
+ /* Above matches are too generic, add bios-date match */
1174
+ DMI_MATCH(DMI_BIOS_DATE, "04/24/2018"),
1175
+ },
1176
+ },
1177
+ {
1178
+ /* Jumper EZpad 6 m4 */
1179
+ .driver_data = (void *)&jumper_ezpad_6_m4_data,
1180
+ .matches = {
1181
+ DMI_MATCH(DMI_SYS_VENDOR, "jumper"),
1182
+ DMI_MATCH(DMI_PRODUCT_NAME, "EZpad"),
1183
+ /* Jumper8.S106x.A00C.1066 with the version dropped */
1184
+ DMI_MATCH(DMI_BIOS_VERSION, "Jumper8.S106x"),
1185
+ },
1186
+ },
1187
+ {
5601188 /* Jumper EZpad mini3 */
5611189 .driver_data = (void *)&jumper_ezpad_mini3_data,
5621190 .matches = {
5631191 DMI_MATCH(DMI_SYS_VENDOR, "Insyde"),
5641192 /* jumperx.T87.KFBNEEA02 with the version-nr dropped */
5651193 DMI_MATCH(DMI_BIOS_VERSION, "jumperx.T87.KFBNEEA"),
1194
+ },
1195
+ },
1196
+ {
1197
+ /* Mediacom WinPad 7.0 W700 (same hw as Wintron surftab 7") */
1198
+ .driver_data = (void *)&trekstor_surftab_wintron70_data,
1199
+ .matches = {
1200
+ DMI_MATCH(DMI_SYS_VENDOR, "MEDIACOM"),
1201
+ DMI_MATCH(DMI_PRODUCT_NAME, "WinPad 7 W10 - WPW700"),
1202
+ },
1203
+ },
1204
+ {
1205
+ /* Mediacom Flexbook Edge 11 (same hw as TS Primebook C11) */
1206
+ .driver_data = (void *)&trekstor_primebook_c11_data,
1207
+ .matches = {
1208
+ DMI_MATCH(DMI_SYS_VENDOR, "MEDIACOM"),
1209
+ DMI_MATCH(DMI_PRODUCT_NAME, "FlexBook edge11 - M-FBE11"),
1210
+ },
1211
+ },
1212
+ {
1213
+ /* MP Man Converter 9 */
1214
+ .driver_data = (void *)&mpman_converter9_data,
1215
+ .matches = {
1216
+ DMI_MATCH(DMI_SYS_VENDOR, "MPMAN"),
1217
+ DMI_MATCH(DMI_PRODUCT_NAME, "Converter9"),
1218
+ },
1219
+ },
1220
+ {
1221
+ /* MP Man MPWIN895CL */
1222
+ .driver_data = (void *)&mpman_mpwin895cl_data,
1223
+ .matches = {
1224
+ DMI_MATCH(DMI_SYS_VENDOR, "MPMAN"),
1225
+ DMI_MATCH(DMI_PRODUCT_NAME, "MPWIN8900CL"),
1226
+ },
1227
+ },
1228
+ {
1229
+ /* Myria MY8307 */
1230
+ .driver_data = (void *)&myria_my8307_data,
1231
+ .matches = {
1232
+ DMI_MATCH(DMI_SYS_VENDOR, "Complet Electro Serv"),
1233
+ DMI_MATCH(DMI_PRODUCT_NAME, "MY8307"),
5661234 },
5671235 },
5681236 {
....@@ -574,11 +1242,28 @@
5741242 },
5751243 },
5761244 {
1245
+ /* ONDA V80 plus v3 (P80PSBG9V3A01501) */
1246
+ .driver_data = (void *)&onda_v80_plus_v3_data,
1247
+ .matches = {
1248
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ONDA"),
1249
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "V80 PLUS")
1250
+ },
1251
+ },
1252
+ {
5771253 /* ONDA V820w DualOS */
5781254 .driver_data = (void *)&onda_v820w_32g_data,
5791255 .matches = {
5801256 DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "ONDA"),
5811257 DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "V820w DualOS")
1258
+ },
1259
+ },
1260
+ {
1261
+ /* ONDA V891 v5 */
1262
+ .driver_data = (void *)&onda_v891_v5_data,
1263
+ .matches = {
1264
+ DMI_MATCH(DMI_SYS_VENDOR, "ONDA"),
1265
+ DMI_MATCH(DMI_PRODUCT_NAME, "ONDA Tablet"),
1266
+ DMI_MATCH(DMI_BIOS_VERSION, "ONDA.D869CJABNRBA06"),
5821267 },
5831268 },
5841269 {
....@@ -610,6 +1295,16 @@
6101295 },
6111296 },
6121297 {
1298
+ /* Pipo W11 */
1299
+ .driver_data = (void *)&pipo_w11_data,
1300
+ .matches = {
1301
+ DMI_MATCH(DMI_SYS_VENDOR, "PIPO"),
1302
+ DMI_MATCH(DMI_PRODUCT_NAME, "To be filled by O.E.M."),
1303
+ /* Above matches are too generic, add bios-ver match */
1304
+ DMI_MATCH(DMI_BIOS_VERSION, "JS-BI-10.6-SF133GR300-GA55B-024-F"),
1305
+ },
1306
+ },
1307
+ {
6131308 /* Ployer Momo7w (same hardware as the Trekstor ST70416-6) */
6141309 .driver_data = (void *)&trekstor_surftab_wintron70_data,
6151310 .matches = {
....@@ -631,6 +1326,16 @@
6311326 },
6321327 },
6331328 {
1329
+ /* Predia Basic tablet) */
1330
+ .driver_data = (void *)&predia_basic_data,
1331
+ .matches = {
1332
+ DMI_MATCH(DMI_SYS_VENDOR, "Insyde"),
1333
+ DMI_MATCH(DMI_PRODUCT_NAME, "CherryTrail"),
1334
+ /* Above matches are too generic, add bios-version match */
1335
+ DMI_MATCH(DMI_BIOS_VERSION, "Mx.WT107.KUBNGEA"),
1336
+ },
1337
+ },
1338
+ {
6341339 /* Point of View mobii wintab p800w (v2.1) */
6351340 .driver_data = (void *)&pov_mobii_wintab_p800w_v21_data,
6361341 .matches = {
....@@ -639,6 +1344,52 @@
6391344 DMI_MATCH(DMI_BIOS_VERSION, "3BAIR1013"),
6401345 /* Above matches are too generic, add bios-date match */
6411346 DMI_MATCH(DMI_BIOS_DATE, "08/22/2014"),
1347
+ },
1348
+ },
1349
+ {
1350
+ /* Point of View mobii wintab p1006w (v1.0) */
1351
+ .driver_data = (void *)&pov_mobii_wintab_p1006w_v10_data,
1352
+ .matches = {
1353
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Insyde"),
1354
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "BayTrail"),
1355
+ /* Note 105b is Foxcon's USB/PCI vendor id */
1356
+ DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "105B"),
1357
+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "0E57"),
1358
+ },
1359
+ },
1360
+ {
1361
+ /* RCA Cambio W101 v2 */
1362
+ /* https://github.com/onitake/gsl-firmware/discussions/193 */
1363
+ .driver_data = (void *)&rca_cambio_w101_v2_data,
1364
+ .matches = {
1365
+ DMI_MATCH(DMI_SYS_VENDOR, "RCA"),
1366
+ DMI_MATCH(DMI_PRODUCT_NAME, "W101SA23T1"),
1367
+ },
1368
+ },
1369
+ {
1370
+ /* RWC NANOTE P8 */
1371
+ .driver_data = (void *)&rwc_nanote_p8_data,
1372
+ .matches = {
1373
+ DMI_MATCH(DMI_BOARD_VENDOR, "Default string"),
1374
+ DMI_MATCH(DMI_PRODUCT_NAME, "AY07J"),
1375
+ DMI_MATCH(DMI_PRODUCT_SKU, "0001")
1376
+ },
1377
+ },
1378
+ {
1379
+ /* Schneider SCT101CTM */
1380
+ .driver_data = (void *)&schneider_sct101ctm_data,
1381
+ .matches = {
1382
+ DMI_MATCH(DMI_SYS_VENDOR, "Default string"),
1383
+ DMI_MATCH(DMI_PRODUCT_NAME, "SCT101CTM"),
1384
+ },
1385
+ },
1386
+ {
1387
+ /* Techbite Arc 11.6 */
1388
+ .driver_data = (void *)&techbite_arc_11_6_data,
1389
+ .matches = {
1390
+ DMI_MATCH(DMI_SYS_VENDOR, "mPTech"),
1391
+ DMI_MATCH(DMI_PRODUCT_NAME, "techBite Arc 11.6"),
1392
+ DMI_MATCH(DMI_BOARD_NAME, "G8316_272B"),
6421393 },
6431394 },
6441395 {
....@@ -651,6 +1402,24 @@
6511402 },
6521403 },
6531404 {
1405
+ /* Teclast X89 (Android version / BIOS) */
1406
+ .driver_data = (void *)&gdix1001_00_upside_down_data,
1407
+ .matches = {
1408
+ DMI_MATCH(DMI_BOARD_VENDOR, "WISKY"),
1409
+ DMI_MATCH(DMI_BOARD_NAME, "3G062i"),
1410
+ },
1411
+ },
1412
+ {
1413
+ /* Teclast X89 (Windows version / BIOS) */
1414
+ .driver_data = (void *)&gdix1001_01_upside_down_data,
1415
+ .matches = {
1416
+ /* tPAD is too generic, also match on bios date */
1417
+ DMI_MATCH(DMI_BOARD_VENDOR, "TECLAST"),
1418
+ DMI_MATCH(DMI_BOARD_NAME, "tPAD"),
1419
+ DMI_MATCH(DMI_BIOS_DATE, "12/19/2014"),
1420
+ },
1421
+ },
1422
+ {
6541423 /* Teclast X98 Plus II */
6551424 .driver_data = (void *)&teclast_x98plus2_data,
6561425 .matches = {
....@@ -659,11 +1428,48 @@
6591428 },
6601429 },
6611430 {
1431
+ /* Teclast X98 Pro */
1432
+ .driver_data = (void *)&gdix1001_00_upside_down_data,
1433
+ .matches = {
1434
+ /*
1435
+ * Only match BIOS date, because the manufacturers
1436
+ * BIOS does not report the board name at all
1437
+ * (sometimes)...
1438
+ */
1439
+ DMI_MATCH(DMI_BOARD_VENDOR, "TECLAST"),
1440
+ DMI_MATCH(DMI_BIOS_DATE, "10/28/2015"),
1441
+ },
1442
+ },
1443
+ {
1444
+ /* Trekstor Primebook C11 */
1445
+ .driver_data = (void *)&trekstor_primebook_c11_data,
1446
+ .matches = {
1447
+ DMI_MATCH(DMI_SYS_VENDOR, "TREKSTOR"),
1448
+ DMI_MATCH(DMI_PRODUCT_NAME, "Primebook C11"),
1449
+ },
1450
+ },
1451
+ {
1452
+ /* Trekstor Primebook C11B (same touchscreen as the C11) */
1453
+ .driver_data = (void *)&trekstor_primebook_c11_data,
1454
+ .matches = {
1455
+ DMI_MATCH(DMI_SYS_VENDOR, "TREKSTOR"),
1456
+ DMI_MATCH(DMI_PRODUCT_NAME, "PRIMEBOOK C11B"),
1457
+ },
1458
+ },
1459
+ {
6621460 /* Trekstor Primebook C13 */
6631461 .driver_data = (void *)&trekstor_primebook_c13_data,
6641462 .matches = {
6651463 DMI_MATCH(DMI_SYS_VENDOR, "TREKSTOR"),
6661464 DMI_MATCH(DMI_PRODUCT_NAME, "Primebook C13"),
1465
+ },
1466
+ },
1467
+ {
1468
+ /* Trekstor Primetab T13B */
1469
+ .driver_data = (void *)&trekstor_primetab_t13b_data,
1470
+ .matches = {
1471
+ DMI_MATCH(DMI_SYS_VENDOR, "TREKSTOR"),
1472
+ DMI_MATCH(DMI_PRODUCT_NAME, "Primetab T13B"),
6671473 },
6681474 },
6691475 {
....@@ -689,10 +1495,40 @@
6891495 .driver_data = (void *)&trekstor_surftab_wintron70_data,
6901496 .matches = {
6911497 DMI_MATCH(DMI_SYS_VENDOR, "TrekStor"),
692
- DMI_MATCH(DMI_PRODUCT_NAME,
693
- "SurfTab wintron 7.0 ST70416-6"),
1498
+ DMI_MATCH(DMI_PRODUCT_NAME, "SurfTab wintron 7.0 ST70416-6"),
6941499 /* Exact match, different versions need different fw */
6951500 DMI_MATCH(DMI_BIOS_VERSION, "TREK.G.WI71C.JGBMRBA05"),
1501
+ },
1502
+ },
1503
+ {
1504
+ /* Trekstor Yourbook C11B (same touchscreen as the Primebook C11) */
1505
+ .driver_data = (void *)&trekstor_primebook_c11_data,
1506
+ .matches = {
1507
+ DMI_MATCH(DMI_SYS_VENDOR, "TREKSTOR"),
1508
+ DMI_MATCH(DMI_PRODUCT_NAME, "YOURBOOK C11B"),
1509
+ },
1510
+ },
1511
+ {
1512
+ /* Vinga Twizzle J116 */
1513
+ .driver_data = (void *)&vinga_twizzle_j116_data,
1514
+ .matches = {
1515
+ DMI_MATCH(DMI_PRODUCT_NAME, "VINGA Twizzle J116"),
1516
+ },
1517
+ },
1518
+ {
1519
+ /* "WinBook TW100" */
1520
+ .driver_data = (void *)&gdix1001_00_upside_down_data,
1521
+ .matches = {
1522
+ DMI_MATCH(DMI_SYS_VENDOR, "WinBook"),
1523
+ DMI_MATCH(DMI_PRODUCT_NAME, "TW100")
1524
+ }
1525
+ },
1526
+ {
1527
+ /* WinBook TW700 */
1528
+ .driver_data = (void *)&gdix1001_00_upside_down_data,
1529
+ .matches = {
1530
+ DMI_MATCH(DMI_SYS_VENDOR, "WinBook"),
1531
+ DMI_MATCH(DMI_PRODUCT_NAME, "TW700")
6961532 },
6971533 },
6981534 {
....@@ -703,7 +1539,7 @@
7031539 DMI_MATCH(DMI_PRODUCT_NAME, "Y8W81"),
7041540 },
7051541 },
706
- { },
1542
+ { }
7071543 };
7081544
7091545 static const struct ts_dmi_data *ts_data;
....@@ -722,7 +1558,7 @@
7221558 }
7231559
7241560 static int ts_dmi_notifier_call(struct notifier_block *nb,
725
- unsigned long action, void *data)
1561
+ unsigned long action, void *data)
7261562 {
7271563 struct device *dev = data;
7281564 struct i2c_client *client;
....@@ -755,6 +1591,9 @@
7551591 return 0; /* Not an error */
7561592
7571593 ts_data = dmi_id->driver_data;
1594
+ /* Some dmi table entries only provide an efi_embedded_fw_desc */
1595
+ if (!ts_data->properties)
1596
+ return 0;
7581597
7591598 error = bus_register_notifier(&i2c_bus_type, &ts_dmi_notifier);
7601599 if (error)