forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-01-04 1543e317f1da31b75942316931e8f491a8920811
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"),
....@@ -103,9 +255,28 @@
103255 .properties = connect_tablet9_props,
104256 };
105257
258
+static const struct property_entry csl_panther_tab_hd_props[] = {
259
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 1),
260
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 20),
261
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1980),
262
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1526),
263
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
264
+ PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
265
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-csl-panther-tab-hd.fw"),
266
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
267
+ { }
268
+};
269
+
270
+static const struct ts_dmi_data csl_panther_tab_hd_data = {
271
+ .acpi_name = "MSSL1680:00",
272
+ .properties = csl_panther_tab_hd_props,
273
+};
274
+
106275 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),
276
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 1),
277
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 3),
278
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1664),
279
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 896),
109280 PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
110281 PROPERTY_ENTRY_STRING("firmware-name", "gsl3670-cube-iwork8-air.fw"),
111282 PROPERTY_ENTRY_U32("silead,max-fingers", 10),
....@@ -113,6 +284,15 @@
113284 };
114285
115286 static const struct ts_dmi_data cube_iwork8_air_data = {
287
+ .embedded_fw = {
288
+ .name = "silead/gsl3670-cube-iwork8-air.fw",
289
+ .prefix = { 0xf0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 },
290
+ .length = 38808,
291
+ .sha256 = { 0xff, 0x62, 0x2d, 0xd1, 0x8a, 0x78, 0x04, 0x7b,
292
+ 0x33, 0x06, 0xb0, 0x4f, 0x7f, 0x02, 0x08, 0x9c,
293
+ 0x96, 0xd4, 0x9f, 0x04, 0xe1, 0x47, 0x25, 0x25,
294
+ 0x60, 0x77, 0x41, 0x33, 0xeb, 0x12, 0x82, 0xfc },
295
+ },
116296 .acpi_name = "MSSL1680:00",
117297 .properties = cube_iwork8_air_props,
118298 };
....@@ -147,12 +327,27 @@
147327 .properties = dexp_ursus_7w_props,
148328 };
149329
330
+static const struct property_entry dexp_ursus_kx210i_props[] = {
331
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 5),
332
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 2),
333
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1720),
334
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1137),
335
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-dexp-ursus-kx210i.fw"),
336
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
337
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
338
+ { }
339
+};
340
+
341
+static const struct ts_dmi_data dexp_ursus_kx210i_data = {
342
+ .acpi_name = "MSSL1680:00",
343
+ .properties = dexp_ursus_kx210i_props,
344
+};
345
+
150346 static const struct property_entry digma_citi_e200_props[] = {
151347 PROPERTY_ENTRY_U32("touchscreen-size-x", 1980),
152348 PROPERTY_ENTRY_U32("touchscreen-size-y", 1500),
153349 PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
154
- PROPERTY_ENTRY_STRING("firmware-name",
155
- "gsl1686-digma_citi_e200.fw"),
350
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1686-digma_citi_e200.fw"),
156351 PROPERTY_ENTRY_U32("silead,max-fingers", 10),
157352 PROPERTY_ENTRY_BOOL("silead,home-button"),
158353 { }
....@@ -173,13 +368,46 @@
173368 .properties = estar_beauty_hd_props,
174369 };
175370
371
+/* Generic props + data for upside-down mounted GDIX1001 touchscreens */
372
+static const struct property_entry gdix1001_upside_down_props[] = {
373
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-x"),
374
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
375
+ { }
376
+};
377
+
378
+static const struct ts_dmi_data gdix1001_00_upside_down_data = {
379
+ .acpi_name = "GDIX1001:00",
380
+ .properties = gdix1001_upside_down_props,
381
+};
382
+
383
+static const struct ts_dmi_data gdix1001_01_upside_down_data = {
384
+ .acpi_name = "GDIX1001:01",
385
+ .properties = gdix1001_upside_down_props,
386
+};
387
+
388
+static const struct property_entry glavey_tm800a550l_props[] = {
389
+ PROPERTY_ENTRY_STRING("firmware-name", "gt912-glavey-tm800a550l.fw"),
390
+ PROPERTY_ENTRY_STRING("goodix,config-name", "gt912-glavey-tm800a550l.cfg"),
391
+ PROPERTY_ENTRY_U32("goodix,main-clk", 54),
392
+ { }
393
+};
394
+
395
+static const struct ts_dmi_data glavey_tm800a550l_data = {
396
+ .acpi_name = "GDIX1001:00",
397
+ .properties = glavey_tm800a550l_props,
398
+};
399
+
400
+static const struct ts_dmi_data gdix1002_00_upside_down_data = {
401
+ .acpi_name = "GDIX1002:00",
402
+ .properties = gdix1001_upside_down_props,
403
+};
404
+
176405 static const struct property_entry gp_electronic_t701_props[] = {
177406 PROPERTY_ENTRY_U32("touchscreen-size-x", 960),
178407 PROPERTY_ENTRY_U32("touchscreen-size-y", 640),
179408 PROPERTY_ENTRY_BOOL("touchscreen-inverted-x"),
180409 PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
181
- PROPERTY_ENTRY_STRING("firmware-name",
182
- "gsl1680-gp-electronic-t701.fw"),
410
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-gp-electronic-t701.fw"),
183411 { }
184412 };
185413
....@@ -188,12 +416,48 @@
188416 .properties = gp_electronic_t701_props,
189417 };
190418
419
+static const struct property_entry irbis_tw90_props[] = {
420
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1720),
421
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1138),
422
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 8),
423
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 14),
424
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
425
+ PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
426
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl3680-irbis_tw90.fw"),
427
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
428
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
429
+ { }
430
+};
431
+
432
+static const struct ts_dmi_data irbis_tw90_data = {
433
+ .acpi_name = "MSSL1680:00",
434
+ .properties = irbis_tw90_props,
435
+};
436
+
437
+static const struct property_entry irbis_tw118_props[] = {
438
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 20),
439
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 30),
440
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1960),
441
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1510),
442
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-irbis-tw118.fw"),
443
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
444
+ { }
445
+};
446
+
447
+static const struct ts_dmi_data irbis_tw118_data = {
448
+ .acpi_name = "MSSL1680:00",
449
+ .properties = irbis_tw118_props,
450
+};
451
+
191452 static const struct property_entry itworks_tw891_props[] = {
453
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 1),
454
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 5),
192455 PROPERTY_ENTRY_U32("touchscreen-size-x", 1600),
193
- PROPERTY_ENTRY_U32("touchscreen-size-y", 890),
456
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 896),
194457 PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
195458 PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
196459 PROPERTY_ENTRY_STRING("firmware-name", "gsl3670-itworks-tw891.fw"),
460
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
197461 { }
198462 };
199463
....@@ -216,9 +480,42 @@
216480 .properties = jumper_ezpad_6_pro_props,
217481 };
218482
483
+static const struct property_entry jumper_ezpad_6_pro_b_props[] = {
484
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1980),
485
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1500),
486
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl3692-jumper-ezpad-6-pro-b.fw"),
487
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
488
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
489
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
490
+ { }
491
+};
492
+
493
+static const struct ts_dmi_data jumper_ezpad_6_pro_b_data = {
494
+ .acpi_name = "MSSL1680:00",
495
+ .properties = jumper_ezpad_6_pro_b_props,
496
+};
497
+
498
+static const struct property_entry jumper_ezpad_6_m4_props[] = {
499
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 35),
500
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 15),
501
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1950),
502
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1525),
503
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl3692-jumper-ezpad-6-m4.fw"),
504
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
505
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
506
+ { }
507
+};
508
+
509
+static const struct ts_dmi_data jumper_ezpad_6_m4_data = {
510
+ .acpi_name = "MSSL1680:00",
511
+ .properties = jumper_ezpad_6_m4_props,
512
+};
513
+
219514 static const struct property_entry jumper_ezpad_mini3_props[] = {
515
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 23),
516
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 16),
220517 PROPERTY_ENTRY_U32("touchscreen-size-x", 1700),
221
- PROPERTY_ENTRY_U32("touchscreen-size-y", 1150),
518
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1138),
222519 PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
223520 PROPERTY_ENTRY_STRING("firmware-name", "gsl3676-jumper-ezpad-mini3.fw"),
224521 PROPERTY_ENTRY_U32("silead,max-fingers", 10),
....@@ -228,6 +525,57 @@
228525 static const struct ts_dmi_data jumper_ezpad_mini3_data = {
229526 .acpi_name = "MSSL1680:00",
230527 .properties = jumper_ezpad_mini3_props,
528
+};
529
+
530
+static const struct property_entry mpman_converter9_props[] = {
531
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 8),
532
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 8),
533
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1664),
534
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 880),
535
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
536
+ PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
537
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-mpman-converter9.fw"),
538
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
539
+ { }
540
+};
541
+
542
+static const struct ts_dmi_data mpman_converter9_data = {
543
+ .acpi_name = "MSSL1680:00",
544
+ .properties = mpman_converter9_props,
545
+};
546
+
547
+static const struct property_entry mpman_mpwin895cl_props[] = {
548
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 3),
549
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 9),
550
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1728),
551
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1150),
552
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
553
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl3680-mpman-mpwin895cl.fw"),
554
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
555
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
556
+ { }
557
+};
558
+
559
+static const struct ts_dmi_data mpman_mpwin895cl_data = {
560
+ .acpi_name = "MSSL1680:00",
561
+ .properties = mpman_mpwin895cl_props,
562
+};
563
+
564
+static const struct property_entry myria_my8307_props[] = {
565
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1720),
566
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1140),
567
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-x"),
568
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
569
+ PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
570
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-myria-my8307.fw"),
571
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
572
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
573
+ { }
574
+};
575
+
576
+static const struct ts_dmi_data myria_my8307_data = {
577
+ .acpi_name = "MSSL1680:00",
578
+ .properties = myria_my8307_props,
231579 };
232580
233581 static const struct property_entry onda_obook_20_plus_props[] = {
....@@ -247,12 +595,37 @@
247595 .properties = onda_obook_20_plus_props,
248596 };
249597
598
+static const struct property_entry onda_v80_plus_v3_props[] = {
599
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 22),
600
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 15),
601
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1698),
602
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1140),
603
+ PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
604
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl3676-onda-v80-plus-v3.fw"),
605
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
606
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
607
+ { }
608
+};
609
+
610
+static const struct ts_dmi_data onda_v80_plus_v3_data = {
611
+ .embedded_fw = {
612
+ .name = "silead/gsl3676-onda-v80-plus-v3.fw",
613
+ .prefix = { 0xf0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 },
614
+ .length = 37224,
615
+ .sha256 = { 0x8f, 0xbd, 0x8f, 0x0c, 0x6b, 0xba, 0x5b, 0xf5,
616
+ 0xa3, 0xc7, 0xa3, 0xc0, 0x4f, 0xcd, 0xdf, 0x32,
617
+ 0xcc, 0xe4, 0x70, 0xd6, 0x46, 0x9c, 0xd7, 0xa7,
618
+ 0x4b, 0x82, 0x3f, 0xab, 0xc7, 0x90, 0xea, 0x23 },
619
+ },
620
+ .acpi_name = "MSSL1680:00",
621
+ .properties = onda_v80_plus_v3_props,
622
+};
623
+
250624 static const struct property_entry onda_v820w_32g_props[] = {
251625 PROPERTY_ENTRY_U32("touchscreen-size-x", 1665),
252626 PROPERTY_ENTRY_U32("touchscreen-size-y", 1140),
253627 PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
254
- PROPERTY_ENTRY_STRING("firmware-name",
255
- "gsl1680-onda-v820w-32g.fw"),
628
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-onda-v820w-32g.fw"),
256629 PROPERTY_ENTRY_U32("silead,max-fingers", 10),
257630 PROPERTY_ENTRY_BOOL("silead,home-button"),
258631 { }
....@@ -263,13 +636,30 @@
263636 .properties = onda_v820w_32g_props,
264637 };
265638
639
+static const struct property_entry onda_v891_v5_props[] = {
640
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1715),
641
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1140),
642
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-x"),
643
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
644
+ PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
645
+ PROPERTY_ENTRY_STRING("firmware-name",
646
+ "gsl3676-onda-v891-v5.fw"),
647
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
648
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
649
+ { }
650
+};
651
+
652
+static const struct ts_dmi_data onda_v891_v5_data = {
653
+ .acpi_name = "MSSL1680:00",
654
+ .properties = onda_v891_v5_props,
655
+};
656
+
266657 static const struct property_entry onda_v891w_v1_props[] = {
267658 PROPERTY_ENTRY_U32("touchscreen-min-x", 46),
268659 PROPERTY_ENTRY_U32("touchscreen-min-y", 8),
269660 PROPERTY_ENTRY_U32("touchscreen-size-x", 1676),
270661 PROPERTY_ENTRY_U32("touchscreen-size-y", 1130),
271
- PROPERTY_ENTRY_STRING("firmware-name",
272
- "gsl3680-onda-v891w-v1.fw"),
662
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl3680-onda-v891w-v1.fw"),
273663 PROPERTY_ENTRY_U32("silead,max-fingers", 10),
274664 PROPERTY_ENTRY_BOOL("silead,home-button"),
275665 { }
....@@ -286,8 +676,7 @@
286676 PROPERTY_ENTRY_U32("touchscreen-size-x", 1625),
287677 PROPERTY_ENTRY_U32("touchscreen-size-y", 1135),
288678 PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
289
- PROPERTY_ENTRY_STRING("firmware-name",
290
- "gsl3676-onda-v891w-v3.fw"),
679
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl3676-onda-v891w-v3.fw"),
291680 PROPERTY_ENTRY_U32("silead,max-fingers", 10),
292681 PROPERTY_ENTRY_BOOL("silead,home-button"),
293682 { }
....@@ -303,14 +692,38 @@
303692 PROPERTY_ENTRY_U32("touchscreen-size-y", 880),
304693 PROPERTY_ENTRY_BOOL("touchscreen-inverted-x"),
305694 PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
306
- PROPERTY_ENTRY_STRING("firmware-name",
307
- "gsl1680-pipo-w2s.fw"),
695
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-pipo-w2s.fw"),
308696 { }
309697 };
310698
311699 static const struct ts_dmi_data pipo_w2s_data = {
700
+ .embedded_fw = {
701
+ .name = "silead/gsl1680-pipo-w2s.fw",
702
+ .prefix = { 0xf0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 },
703
+ .length = 39072,
704
+ .sha256 = { 0xd0, 0x58, 0xc4, 0x7d, 0x55, 0x2d, 0x62, 0x18,
705
+ 0xd1, 0x6a, 0x71, 0x73, 0x0b, 0x3f, 0xbe, 0x60,
706
+ 0xbb, 0x45, 0x8c, 0x52, 0x27, 0xb7, 0x18, 0xf4,
707
+ 0x31, 0x00, 0x6a, 0x49, 0x76, 0xd8, 0x7c, 0xd3 },
708
+ },
312709 .acpi_name = "MSSL1680:00",
313710 .properties = pipo_w2s_props,
711
+};
712
+
713
+static const struct property_entry pipo_w11_props[] = {
714
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 1),
715
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 15),
716
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1984),
717
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1532),
718
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-pipo-w11.fw"),
719
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
720
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
721
+ { }
722
+};
723
+
724
+static const struct ts_dmi_data pipo_w11_data = {
725
+ .acpi_name = "MSSL1680:00",
726
+ .properties = pipo_w11_props,
314727 };
315728
316729 static const struct property_entry pov_mobii_wintab_p800w_v20_props[] = {
....@@ -319,8 +732,7 @@
319732 PROPERTY_ENTRY_U32("touchscreen-size-x", 1692),
320733 PROPERTY_ENTRY_U32("touchscreen-size-y", 1146),
321734 PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
322
- PROPERTY_ENTRY_STRING("firmware-name",
323
- "gsl3680-pov-mobii-wintab-p800w-v20.fw"),
735
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl3680-pov-mobii-wintab-p800w-v20.fw"),
324736 PROPERTY_ENTRY_U32("silead,max-fingers", 10),
325737 PROPERTY_ENTRY_BOOL("silead,home-button"),
326738 { }
....@@ -332,11 +744,13 @@
332744 };
333745
334746 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),
747
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 1),
748
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 8),
749
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1794),
750
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1148),
337751 PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
338
- PROPERTY_ENTRY_STRING("firmware-name",
339
- "gsl3692-pov-mobii-wintab-p800w.fw"),
752
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl3692-pov-mobii-wintab-p800w.fw"),
753
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
340754 PROPERTY_ENTRY_BOOL("silead,home-button"),
341755 { }
342756 };
....@@ -344,6 +758,104 @@
344758 static const struct ts_dmi_data pov_mobii_wintab_p800w_v21_data = {
345759 .acpi_name = "MSSL1680:00",
346760 .properties = pov_mobii_wintab_p800w_v21_props,
761
+};
762
+
763
+static const struct property_entry pov_mobii_wintab_p1006w_v10_props[] = {
764
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 1),
765
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 3),
766
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1984),
767
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1520),
768
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
769
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl3692-pov-mobii-wintab-p1006w-v10.fw"),
770
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
771
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
772
+ { }
773
+};
774
+
775
+static const struct ts_dmi_data pov_mobii_wintab_p1006w_v10_data = {
776
+ .acpi_name = "MSSL1680:00",
777
+ .properties = pov_mobii_wintab_p1006w_v10_props,
778
+};
779
+
780
+static const struct property_entry predia_basic_props[] = {
781
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 3),
782
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 10),
783
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1728),
784
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1144),
785
+ PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
786
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl3680-predia-basic.fw"),
787
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
788
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
789
+ { }
790
+};
791
+
792
+static const struct ts_dmi_data predia_basic_data = {
793
+ .acpi_name = "MSSL1680:00",
794
+ .properties = predia_basic_props,
795
+};
796
+
797
+static const struct property_entry rca_cambio_w101_v2_props[] = {
798
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 4),
799
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 20),
800
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1644),
801
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 874),
802
+ PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
803
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-rca-cambio-w101-v2.fw"),
804
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
805
+ { }
806
+};
807
+
808
+static const struct ts_dmi_data rca_cambio_w101_v2_data = {
809
+ .acpi_name = "MSSL1680:00",
810
+ .properties = rca_cambio_w101_v2_props,
811
+};
812
+
813
+static const struct property_entry rwc_nanote_p8_props[] = {
814
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 46),
815
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1728),
816
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1140),
817
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
818
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-rwc-nanote-p8.fw"),
819
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
820
+ { }
821
+};
822
+
823
+static const struct ts_dmi_data rwc_nanote_p8_data = {
824
+ .acpi_name = "MSSL1680:00",
825
+ .properties = rwc_nanote_p8_props,
826
+};
827
+
828
+static const struct property_entry schneider_sct101ctm_props[] = {
829
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1715),
830
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1140),
831
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-x"),
832
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
833
+ PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
834
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-schneider-sct101ctm.fw"),
835
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
836
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
837
+ { }
838
+};
839
+
840
+static const struct ts_dmi_data schneider_sct101ctm_data = {
841
+ .acpi_name = "MSSL1680:00",
842
+ .properties = schneider_sct101ctm_props,
843
+};
844
+
845
+static const struct property_entry techbite_arc_11_6_props[] = {
846
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 5),
847
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 7),
848
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1981),
849
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1270),
850
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
851
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-techbite-arc-11-6.fw"),
852
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
853
+ { }
854
+};
855
+
856
+static const struct ts_dmi_data techbite_arc_11_6_data = {
857
+ .acpi_name = "MSSL1680:00",
858
+ .properties = techbite_arc_11_6_props,
347859 };
348860
349861 static const struct property_entry teclast_x3_plus_props[] = {
....@@ -365,8 +877,7 @@
365877 PROPERTY_ENTRY_U32("touchscreen-size-y", 1280),
366878 PROPERTY_ENTRY_BOOL("touchscreen-inverted-x"),
367879 PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
368
- PROPERTY_ENTRY_STRING("firmware-name",
369
- "gsl1686-teclast_x98plus2.fw"),
880
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1686-teclast_x98plus2.fw"),
370881 PROPERTY_ENTRY_U32("silead,max-fingers", 10),
371882 { }
372883 };
....@@ -376,11 +887,25 @@
376887 .properties = teclast_x98plus2_props,
377888 };
378889
890
+static const struct property_entry trekstor_primebook_c11_props[] = {
891
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1970),
892
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1530),
893
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
894
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-trekstor-primebook-c11.fw"),
895
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
896
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
897
+ { }
898
+};
899
+
900
+static const struct ts_dmi_data trekstor_primebook_c11_data = {
901
+ .acpi_name = "MSSL1680:00",
902
+ .properties = trekstor_primebook_c11_props,
903
+};
904
+
379905 static const struct property_entry trekstor_primebook_c13_props[] = {
380906 PROPERTY_ENTRY_U32("touchscreen-size-x", 2624),
381907 PROPERTY_ENTRY_U32("touchscreen-size-y", 1920),
382
- PROPERTY_ENTRY_STRING("firmware-name",
383
- "gsl1680-trekstor-primebook-c13.fw"),
908
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-trekstor-primebook-c13.fw"),
384909 PROPERTY_ENTRY_U32("silead,max-fingers", 10),
385910 PROPERTY_ENTRY_BOOL("silead,home-button"),
386911 { }
....@@ -391,13 +916,30 @@
391916 .properties = trekstor_primebook_c13_props,
392917 };
393918
919
+static const struct property_entry trekstor_primetab_t13b_props[] = {
920
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 2500),
921
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1900),
922
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-trekstor-primetab-t13b.fw"),
923
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
924
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
925
+ PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"),
926
+ { }
927
+};
928
+
929
+static const struct ts_dmi_data trekstor_primetab_t13b_data = {
930
+ .acpi_name = "MSSL1680:00",
931
+ .properties = trekstor_primetab_t13b_props,
932
+};
933
+
394934 static const struct property_entry trekstor_surftab_twin_10_1_props[] = {
395
- PROPERTY_ENTRY_U32("touchscreen-size-x", 1900),
935
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 20),
936
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 0),
937
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1890),
396938 PROPERTY_ENTRY_U32("touchscreen-size-y", 1280),
397939 PROPERTY_ENTRY_U32("touchscreen-inverted-y", 1),
398
- PROPERTY_ENTRY_STRING("firmware-name",
399
- "gsl3670-surftab-twin-10-1-st10432-8.fw"),
940
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl3670-surftab-twin-10-1-st10432-8.fw"),
400941 PROPERTY_ENTRY_U32("silead,max-fingers", 10),
942
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
401943 { }
402944 };
403945
....@@ -407,10 +949,11 @@
407949 };
408950
409951 static const struct property_entry trekstor_surftab_wintron70_props[] = {
952
+ PROPERTY_ENTRY_U32("touchscreen-min-x", 12),
953
+ PROPERTY_ENTRY_U32("touchscreen-min-y", 8),
410954 PROPERTY_ENTRY_U32("touchscreen-size-x", 884),
411955 PROPERTY_ENTRY_U32("touchscreen-size-y", 632),
412
- PROPERTY_ENTRY_STRING("firmware-name",
413
- "gsl1686-surftab-wintron70-st70416-6.fw"),
956
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1686-surftab-wintron70-st70416-6.fw"),
414957 PROPERTY_ENTRY_U32("silead,max-fingers", 10),
415958 PROPERTY_ENTRY_BOOL("silead,home-button"),
416959 { }
....@@ -421,8 +964,22 @@
421964 .properties = trekstor_surftab_wintron70_props,
422965 };
423966
967
+static const struct property_entry vinga_twizzle_j116_props[] = {
968
+ PROPERTY_ENTRY_U32("touchscreen-size-x", 1920),
969
+ PROPERTY_ENTRY_U32("touchscreen-size-y", 1280),
970
+ PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-vinga-twizzle_j116.fw"),
971
+ PROPERTY_ENTRY_U32("silead,max-fingers", 10),
972
+ PROPERTY_ENTRY_BOOL("silead,home-button"),
973
+ { }
974
+};
975
+
976
+static const struct ts_dmi_data vinga_twizzle_j116_data = {
977
+ .acpi_name = "MSSL1680:00",
978
+ .properties = vinga_twizzle_j116_props,
979
+};
980
+
424981 /* NOTE: Please keep this table sorted alphabetically */
425
-static const struct dmi_system_id touchscreen_dmi_table[] = {
982
+const struct dmi_system_id touchscreen_dmi_table[] = {
426983 {
427984 /* Chuwi Hi8 */
428985 .driver_data = (void *)&chuwi_hi8_data,
....@@ -441,11 +998,66 @@
441998 },
442999 },
4431000 {
1001
+ /* Chuwi Hi8 Air (CWI543) */
1002
+ .driver_data = (void *)&chuwi_hi8_air_data,
1003
+ .matches = {
1004
+ DMI_MATCH(DMI_BOARD_VENDOR, "Default string"),
1005
+ DMI_MATCH(DMI_BOARD_NAME, "Cherry Trail CR"),
1006
+ DMI_MATCH(DMI_PRODUCT_NAME, "Hi8 Air"),
1007
+ },
1008
+ },
1009
+ {
4441010 /* Chuwi Hi8 Pro (CWI513) */
4451011 .driver_data = (void *)&chuwi_hi8_pro_data,
4461012 .matches = {
4471013 DMI_MATCH(DMI_SYS_VENDOR, "Hampoo"),
4481014 DMI_MATCH(DMI_PRODUCT_NAME, "X1D3_C806N"),
1015
+ },
1016
+ },
1017
+ {
1018
+ /* Chuwi Hi10 Air */
1019
+ .driver_data = (void *)&chuwi_hi10_air_data,
1020
+ .matches = {
1021
+ DMI_MATCH(DMI_SYS_VENDOR, "CHUWI INNOVATION AND TECHNOLOGY(SHENZHEN)CO.LTD"),
1022
+ DMI_MATCH(DMI_BOARD_NAME, "Cherry Trail CR"),
1023
+ DMI_MATCH(DMI_PRODUCT_SKU, "P1W6_C109D_B"),
1024
+ },
1025
+ },
1026
+ {
1027
+ /* Chuwi Hi10 Plus (CWI527) */
1028
+ .driver_data = (void *)&chuwi_hi10_plus_data,
1029
+ .matches = {
1030
+ DMI_MATCH(DMI_BOARD_VENDOR, "Hampoo"),
1031
+ DMI_MATCH(DMI_PRODUCT_NAME, "Hi10 plus tablet"),
1032
+ DMI_MATCH(DMI_BOARD_NAME, "Cherry Trail CR"),
1033
+ },
1034
+ },
1035
+ {
1036
+ /* Chuwi Hi10 Prus (CWI597) */
1037
+ .driver_data = (void *)&chuwi_hi10_pro_data,
1038
+ .matches = {
1039
+ DMI_MATCH(DMI_BOARD_VENDOR, "Hampoo"),
1040
+ DMI_MATCH(DMI_PRODUCT_NAME, "Hi10 pro tablet"),
1041
+ DMI_MATCH(DMI_BOARD_NAME, "Cherry Trail CR"),
1042
+ },
1043
+ },
1044
+ {
1045
+ /* Chuwi HiBook (CWI514) */
1046
+ .driver_data = (void *)&chuwi_hibook_data,
1047
+ .matches = {
1048
+ DMI_MATCH(DMI_BOARD_VENDOR, "Hampoo"),
1049
+ DMI_MATCH(DMI_BOARD_NAME, "Cherry Trail CR"),
1050
+ /* Above matches are too generic, add bios-date match */
1051
+ DMI_MATCH(DMI_BIOS_DATE, "05/07/2016"),
1052
+ },
1053
+ },
1054
+ {
1055
+ /* Chuwi Vi8 (CWI501) */
1056
+ .driver_data = (void *)&chuwi_vi8_data,
1057
+ .matches = {
1058
+ DMI_MATCH(DMI_SYS_VENDOR, "Insyde"),
1059
+ DMI_MATCH(DMI_PRODUCT_NAME, "i86"),
1060
+ DMI_MATCH(DMI_BIOS_VERSION, "CHUWI.W86JLBNR01"),
4491061 },
4501062 },
4511063 {
....@@ -455,6 +1067,15 @@
4551067 DMI_MATCH(DMI_SYS_VENDOR, "Insyde"),
4561068 DMI_MATCH(DMI_PRODUCT_NAME, "i86"),
4571069 DMI_MATCH(DMI_BIOS_VERSION, "CHUWI.D86JLBNR"),
1070
+ },
1071
+ },
1072
+ {
1073
+ /* Chuwi Vi8 Plus (CWI519) */
1074
+ .driver_data = (void *)&chuwi_vi8_plus_data,
1075
+ .matches = {
1076
+ DMI_MATCH(DMI_SYS_VENDOR, "Hampoo"),
1077
+ DMI_MATCH(DMI_PRODUCT_NAME, "D2D3_Vi8A1"),
1078
+ DMI_MATCH(DMI_BOARD_NAME, "Cherry Trail CR"),
4581079 },
4591080 },
4601081 {
....@@ -468,11 +1089,27 @@
4681089 },
4691090 },
4701091 {
1092
+ /* Chuwi Surbook Mini (CWI540) */
1093
+ .driver_data = (void *)&chuwi_surbook_mini_data,
1094
+ .matches = {
1095
+ DMI_MATCH(DMI_BOARD_VENDOR, "Hampoo"),
1096
+ DMI_MATCH(DMI_PRODUCT_NAME, "C3W6_AP108_4G"),
1097
+ },
1098
+ },
1099
+ {
4711100 /* Connect Tablet 9 */
4721101 .driver_data = (void *)&connect_tablet9_data,
4731102 .matches = {
4741103 DMI_MATCH(DMI_SYS_VENDOR, "Connect"),
4751104 DMI_MATCH(DMI_PRODUCT_NAME, "Tablet 9"),
1105
+ },
1106
+ },
1107
+ {
1108
+ /* CSL Panther Tab HD */
1109
+ .driver_data = (void *)&csl_panther_tab_hd_data,
1110
+ .matches = {
1111
+ DMI_MATCH(DMI_SYS_VENDOR, "CSL Computer GmbH & Co. KG"),
1112
+ DMI_MATCH(DMI_PRODUCT_NAME, "CSL Panther Tab HD"),
4761113 },
4771114 },
4781115 {
....@@ -503,6 +1140,14 @@
5031140 },
5041141 },
5051142 {
1143
+ /* DEXP Ursus KX210i */
1144
+ .driver_data = (void *)&dexp_ursus_kx210i_data,
1145
+ .matches = {
1146
+ DMI_MATCH(DMI_SYS_VENDOR, "INSYDE Corp."),
1147
+ DMI_MATCH(DMI_PRODUCT_NAME, "S107I"),
1148
+ },
1149
+ },
1150
+ {
5061151 /* Digma Citi E200 */
5071152 .driver_data = (void *)&digma_citi_e200_data,
5081153 .matches = {
....@@ -517,6 +1162,15 @@
5171162 .matches = {
5181163 DMI_MATCH(DMI_SYS_VENDOR, "Estar"),
5191164 DMI_MATCH(DMI_PRODUCT_NAME, "eSTAR BEAUTY HD Intel Quad core"),
1165
+ },
1166
+ },
1167
+ { /* Glavey TM800A550L */
1168
+ .driver_data = (void *)&glavey_tm800a550l_data,
1169
+ .matches = {
1170
+ DMI_MATCH(DMI_BOARD_VENDOR, "AMI Corporation"),
1171
+ DMI_MATCH(DMI_BOARD_NAME, "Aptio CRB"),
1172
+ /* Above strings are too generic, also match on BIOS version */
1173
+ DMI_MATCH(DMI_BIOS_VERSION, "ZY-8-BI-PX4S70VTR400-X423B-005-D"),
5201174 },
5211175 },
5221176 {
....@@ -535,6 +1189,22 @@
5351189 DMI_MATCH(DMI_SYS_VENDOR, "Insyde"),
5361190 DMI_MATCH(DMI_PRODUCT_NAME, "i71c"),
5371191 DMI_MATCH(DMI_BIOS_VERSION, "itWORKS.G.WI71C.JGBMRB"),
1192
+ },
1193
+ },
1194
+ {
1195
+ /* Irbis TW90 */
1196
+ .driver_data = (void *)&irbis_tw90_data,
1197
+ .matches = {
1198
+ DMI_MATCH(DMI_SYS_VENDOR, "IRBIS"),
1199
+ DMI_MATCH(DMI_PRODUCT_NAME, "TW90"),
1200
+ },
1201
+ },
1202
+ {
1203
+ /* Irbis TW118 */
1204
+ .driver_data = (void *)&irbis_tw118_data,
1205
+ .matches = {
1206
+ DMI_MATCH(DMI_SYS_VENDOR, "IRBIS"),
1207
+ DMI_MATCH(DMI_PRODUCT_NAME, "TW118"),
5381208 },
5391209 },
5401210 {
....@@ -557,12 +1227,85 @@
5571227 },
5581228 },
5591229 {
1230
+ /* Jumper EZpad 6 Pro B */
1231
+ .driver_data = (void *)&jumper_ezpad_6_pro_b_data,
1232
+ .matches = {
1233
+ DMI_MATCH(DMI_SYS_VENDOR, "Jumper"),
1234
+ DMI_MATCH(DMI_PRODUCT_NAME, "EZpad"),
1235
+ DMI_MATCH(DMI_BIOS_VERSION, "5.12"),
1236
+ /* Above matches are too generic, add bios-date match */
1237
+ DMI_MATCH(DMI_BIOS_DATE, "04/24/2018"),
1238
+ },
1239
+ },
1240
+ {
1241
+ /* Jumper EZpad 6 m4 */
1242
+ .driver_data = (void *)&jumper_ezpad_6_m4_data,
1243
+ .matches = {
1244
+ DMI_MATCH(DMI_SYS_VENDOR, "jumper"),
1245
+ DMI_MATCH(DMI_PRODUCT_NAME, "EZpad"),
1246
+ /* Jumper8.S106x.A00C.1066 with the version dropped */
1247
+ DMI_MATCH(DMI_BIOS_VERSION, "Jumper8.S106x"),
1248
+ },
1249
+ },
1250
+ {
5601251 /* Jumper EZpad mini3 */
5611252 .driver_data = (void *)&jumper_ezpad_mini3_data,
5621253 .matches = {
5631254 DMI_MATCH(DMI_SYS_VENDOR, "Insyde"),
5641255 /* jumperx.T87.KFBNEEA02 with the version-nr dropped */
5651256 DMI_MATCH(DMI_BIOS_VERSION, "jumperx.T87.KFBNEEA"),
1257
+ },
1258
+ },
1259
+ {
1260
+ /* Juno Tablet */
1261
+ .driver_data = (void *)&gdix1002_00_upside_down_data,
1262
+ .matches = {
1263
+ DMI_MATCH(DMI_SYS_VENDOR, "Default string"),
1264
+ /* Both product- and board-name being "Default string" is somewhat rare */
1265
+ DMI_MATCH(DMI_PRODUCT_NAME, "Default string"),
1266
+ DMI_MATCH(DMI_BOARD_NAME, "Default string"),
1267
+ /* Above matches are too generic, add partial bios-version match */
1268
+ DMI_MATCH(DMI_BIOS_VERSION, "JP2V1."),
1269
+ },
1270
+ },
1271
+ {
1272
+ /* Mediacom WinPad 7.0 W700 (same hw as Wintron surftab 7") */
1273
+ .driver_data = (void *)&trekstor_surftab_wintron70_data,
1274
+ .matches = {
1275
+ DMI_MATCH(DMI_SYS_VENDOR, "MEDIACOM"),
1276
+ DMI_MATCH(DMI_PRODUCT_NAME, "WinPad 7 W10 - WPW700"),
1277
+ },
1278
+ },
1279
+ {
1280
+ /* Mediacom Flexbook Edge 11 (same hw as TS Primebook C11) */
1281
+ .driver_data = (void *)&trekstor_primebook_c11_data,
1282
+ .matches = {
1283
+ DMI_MATCH(DMI_SYS_VENDOR, "MEDIACOM"),
1284
+ DMI_MATCH(DMI_PRODUCT_NAME, "FlexBook edge11 - M-FBE11"),
1285
+ },
1286
+ },
1287
+ {
1288
+ /* MP Man Converter 9 */
1289
+ .driver_data = (void *)&mpman_converter9_data,
1290
+ .matches = {
1291
+ DMI_MATCH(DMI_SYS_VENDOR, "MPMAN"),
1292
+ DMI_MATCH(DMI_PRODUCT_NAME, "Converter9"),
1293
+ },
1294
+ },
1295
+ {
1296
+ /* MP Man MPWIN895CL */
1297
+ .driver_data = (void *)&mpman_mpwin895cl_data,
1298
+ .matches = {
1299
+ DMI_MATCH(DMI_SYS_VENDOR, "MPMAN"),
1300
+ DMI_MATCH(DMI_PRODUCT_NAME, "MPWIN8900CL"),
1301
+ },
1302
+ },
1303
+ {
1304
+ /* Myria MY8307 */
1305
+ .driver_data = (void *)&myria_my8307_data,
1306
+ .matches = {
1307
+ DMI_MATCH(DMI_SYS_VENDOR, "Complet Electro Serv"),
1308
+ DMI_MATCH(DMI_PRODUCT_NAME, "MY8307"),
5661309 },
5671310 },
5681311 {
....@@ -574,11 +1317,28 @@
5741317 },
5751318 },
5761319 {
1320
+ /* ONDA V80 plus v3 (P80PSBG9V3A01501) */
1321
+ .driver_data = (void *)&onda_v80_plus_v3_data,
1322
+ .matches = {
1323
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ONDA"),
1324
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "V80 PLUS")
1325
+ },
1326
+ },
1327
+ {
5771328 /* ONDA V820w DualOS */
5781329 .driver_data = (void *)&onda_v820w_32g_data,
5791330 .matches = {
5801331 DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "ONDA"),
5811332 DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "V820w DualOS")
1333
+ },
1334
+ },
1335
+ {
1336
+ /* ONDA V891 v5 */
1337
+ .driver_data = (void *)&onda_v891_v5_data,
1338
+ .matches = {
1339
+ DMI_MATCH(DMI_SYS_VENDOR, "ONDA"),
1340
+ DMI_MATCH(DMI_PRODUCT_NAME, "ONDA Tablet"),
1341
+ DMI_MATCH(DMI_BIOS_VERSION, "ONDA.D869CJABNRBA06"),
5821342 },
5831343 },
5841344 {
....@@ -610,6 +1370,16 @@
6101370 },
6111371 },
6121372 {
1373
+ /* Pipo W11 */
1374
+ .driver_data = (void *)&pipo_w11_data,
1375
+ .matches = {
1376
+ DMI_MATCH(DMI_SYS_VENDOR, "PIPO"),
1377
+ DMI_MATCH(DMI_PRODUCT_NAME, "To be filled by O.E.M."),
1378
+ /* Above matches are too generic, add bios-ver match */
1379
+ DMI_MATCH(DMI_BIOS_VERSION, "JS-BI-10.6-SF133GR300-GA55B-024-F"),
1380
+ },
1381
+ },
1382
+ {
6131383 /* Ployer Momo7w (same hardware as the Trekstor ST70416-6) */
6141384 .driver_data = (void *)&trekstor_surftab_wintron70_data,
6151385 .matches = {
....@@ -631,6 +1401,16 @@
6311401 },
6321402 },
6331403 {
1404
+ /* Predia Basic tablet) */
1405
+ .driver_data = (void *)&predia_basic_data,
1406
+ .matches = {
1407
+ DMI_MATCH(DMI_SYS_VENDOR, "Insyde"),
1408
+ DMI_MATCH(DMI_PRODUCT_NAME, "CherryTrail"),
1409
+ /* Above matches are too generic, add bios-version match */
1410
+ DMI_MATCH(DMI_BIOS_VERSION, "Mx.WT107.KUBNGEA"),
1411
+ },
1412
+ },
1413
+ {
6341414 /* Point of View mobii wintab p800w (v2.1) */
6351415 .driver_data = (void *)&pov_mobii_wintab_p800w_v21_data,
6361416 .matches = {
....@@ -639,6 +1419,52 @@
6391419 DMI_MATCH(DMI_BIOS_VERSION, "3BAIR1013"),
6401420 /* Above matches are too generic, add bios-date match */
6411421 DMI_MATCH(DMI_BIOS_DATE, "08/22/2014"),
1422
+ },
1423
+ },
1424
+ {
1425
+ /* Point of View mobii wintab p1006w (v1.0) */
1426
+ .driver_data = (void *)&pov_mobii_wintab_p1006w_v10_data,
1427
+ .matches = {
1428
+ DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Insyde"),
1429
+ DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "BayTrail"),
1430
+ /* Note 105b is Foxcon's USB/PCI vendor id */
1431
+ DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "105B"),
1432
+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "0E57"),
1433
+ },
1434
+ },
1435
+ {
1436
+ /* RCA Cambio W101 v2 */
1437
+ /* https://github.com/onitake/gsl-firmware/discussions/193 */
1438
+ .driver_data = (void *)&rca_cambio_w101_v2_data,
1439
+ .matches = {
1440
+ DMI_MATCH(DMI_SYS_VENDOR, "RCA"),
1441
+ DMI_MATCH(DMI_PRODUCT_NAME, "W101SA23T1"),
1442
+ },
1443
+ },
1444
+ {
1445
+ /* RWC NANOTE P8 */
1446
+ .driver_data = (void *)&rwc_nanote_p8_data,
1447
+ .matches = {
1448
+ DMI_MATCH(DMI_BOARD_VENDOR, "Default string"),
1449
+ DMI_MATCH(DMI_PRODUCT_NAME, "AY07J"),
1450
+ DMI_MATCH(DMI_PRODUCT_SKU, "0001")
1451
+ },
1452
+ },
1453
+ {
1454
+ /* Schneider SCT101CTM */
1455
+ .driver_data = (void *)&schneider_sct101ctm_data,
1456
+ .matches = {
1457
+ DMI_MATCH(DMI_SYS_VENDOR, "Default string"),
1458
+ DMI_MATCH(DMI_PRODUCT_NAME, "SCT101CTM"),
1459
+ },
1460
+ },
1461
+ {
1462
+ /* Techbite Arc 11.6 */
1463
+ .driver_data = (void *)&techbite_arc_11_6_data,
1464
+ .matches = {
1465
+ DMI_MATCH(DMI_SYS_VENDOR, "mPTech"),
1466
+ DMI_MATCH(DMI_PRODUCT_NAME, "techBite Arc 11.6"),
1467
+ DMI_MATCH(DMI_BOARD_NAME, "G8316_272B"),
6421468 },
6431469 },
6441470 {
....@@ -651,6 +1477,24 @@
6511477 },
6521478 },
6531479 {
1480
+ /* Teclast X89 (Android version / BIOS) */
1481
+ .driver_data = (void *)&gdix1001_00_upside_down_data,
1482
+ .matches = {
1483
+ DMI_MATCH(DMI_BOARD_VENDOR, "WISKY"),
1484
+ DMI_MATCH(DMI_BOARD_NAME, "3G062i"),
1485
+ },
1486
+ },
1487
+ {
1488
+ /* Teclast X89 (Windows version / BIOS) */
1489
+ .driver_data = (void *)&gdix1001_01_upside_down_data,
1490
+ .matches = {
1491
+ /* tPAD is too generic, also match on bios date */
1492
+ DMI_MATCH(DMI_BOARD_VENDOR, "TECLAST"),
1493
+ DMI_MATCH(DMI_BOARD_NAME, "tPAD"),
1494
+ DMI_MATCH(DMI_BIOS_DATE, "12/19/2014"),
1495
+ },
1496
+ },
1497
+ {
6541498 /* Teclast X98 Plus II */
6551499 .driver_data = (void *)&teclast_x98plus2_data,
6561500 .matches = {
....@@ -659,11 +1503,48 @@
6591503 },
6601504 },
6611505 {
1506
+ /* Teclast X98 Pro */
1507
+ .driver_data = (void *)&gdix1001_00_upside_down_data,
1508
+ .matches = {
1509
+ /*
1510
+ * Only match BIOS date, because the manufacturers
1511
+ * BIOS does not report the board name at all
1512
+ * (sometimes)...
1513
+ */
1514
+ DMI_MATCH(DMI_BOARD_VENDOR, "TECLAST"),
1515
+ DMI_MATCH(DMI_BIOS_DATE, "10/28/2015"),
1516
+ },
1517
+ },
1518
+ {
1519
+ /* Trekstor Primebook C11 */
1520
+ .driver_data = (void *)&trekstor_primebook_c11_data,
1521
+ .matches = {
1522
+ DMI_MATCH(DMI_SYS_VENDOR, "TREKSTOR"),
1523
+ DMI_MATCH(DMI_PRODUCT_NAME, "Primebook C11"),
1524
+ },
1525
+ },
1526
+ {
1527
+ /* Trekstor Primebook C11B (same touchscreen as the C11) */
1528
+ .driver_data = (void *)&trekstor_primebook_c11_data,
1529
+ .matches = {
1530
+ DMI_MATCH(DMI_SYS_VENDOR, "TREKSTOR"),
1531
+ DMI_MATCH(DMI_PRODUCT_NAME, "PRIMEBOOK C11B"),
1532
+ },
1533
+ },
1534
+ {
6621535 /* Trekstor Primebook C13 */
6631536 .driver_data = (void *)&trekstor_primebook_c13_data,
6641537 .matches = {
6651538 DMI_MATCH(DMI_SYS_VENDOR, "TREKSTOR"),
6661539 DMI_MATCH(DMI_PRODUCT_NAME, "Primebook C13"),
1540
+ },
1541
+ },
1542
+ {
1543
+ /* Trekstor Primetab T13B */
1544
+ .driver_data = (void *)&trekstor_primetab_t13b_data,
1545
+ .matches = {
1546
+ DMI_MATCH(DMI_SYS_VENDOR, "TREKSTOR"),
1547
+ DMI_MATCH(DMI_PRODUCT_NAME, "Primetab T13B"),
6671548 },
6681549 },
6691550 {
....@@ -689,10 +1570,40 @@
6891570 .driver_data = (void *)&trekstor_surftab_wintron70_data,
6901571 .matches = {
6911572 DMI_MATCH(DMI_SYS_VENDOR, "TrekStor"),
692
- DMI_MATCH(DMI_PRODUCT_NAME,
693
- "SurfTab wintron 7.0 ST70416-6"),
1573
+ DMI_MATCH(DMI_PRODUCT_NAME, "SurfTab wintron 7.0 ST70416-6"),
6941574 /* Exact match, different versions need different fw */
6951575 DMI_MATCH(DMI_BIOS_VERSION, "TREK.G.WI71C.JGBMRBA05"),
1576
+ },
1577
+ },
1578
+ {
1579
+ /* Trekstor Yourbook C11B (same touchscreen as the Primebook C11) */
1580
+ .driver_data = (void *)&trekstor_primebook_c11_data,
1581
+ .matches = {
1582
+ DMI_MATCH(DMI_SYS_VENDOR, "TREKSTOR"),
1583
+ DMI_MATCH(DMI_PRODUCT_NAME, "YOURBOOK C11B"),
1584
+ },
1585
+ },
1586
+ {
1587
+ /* Vinga Twizzle J116 */
1588
+ .driver_data = (void *)&vinga_twizzle_j116_data,
1589
+ .matches = {
1590
+ DMI_MATCH(DMI_PRODUCT_NAME, "VINGA Twizzle J116"),
1591
+ },
1592
+ },
1593
+ {
1594
+ /* "WinBook TW100" */
1595
+ .driver_data = (void *)&gdix1001_00_upside_down_data,
1596
+ .matches = {
1597
+ DMI_MATCH(DMI_SYS_VENDOR, "WinBook"),
1598
+ DMI_MATCH(DMI_PRODUCT_NAME, "TW100")
1599
+ }
1600
+ },
1601
+ {
1602
+ /* WinBook TW700 */
1603
+ .driver_data = (void *)&gdix1001_00_upside_down_data,
1604
+ .matches = {
1605
+ DMI_MATCH(DMI_SYS_VENDOR, "WinBook"),
1606
+ DMI_MATCH(DMI_PRODUCT_NAME, "TW700")
6961607 },
6971608 },
6981609 {
....@@ -703,7 +1614,7 @@
7031614 DMI_MATCH(DMI_PRODUCT_NAME, "Y8W81"),
7041615 },
7051616 },
706
- { },
1617
+ { }
7071618 };
7081619
7091620 static const struct ts_dmi_data *ts_data;
....@@ -722,7 +1633,7 @@
7221633 }
7231634
7241635 static int ts_dmi_notifier_call(struct notifier_block *nb,
725
- unsigned long action, void *data)
1636
+ unsigned long action, void *data)
7261637 {
7271638 struct device *dev = data;
7281639 struct i2c_client *client;
....@@ -755,6 +1666,9 @@
7551666 return 0; /* Not an error */
7561667
7571668 ts_data = dmi_id->driver_data;
1669
+ /* Some dmi table entries only provide an efi_embedded_fw_desc */
1670
+ if (!ts_data->properties)
1671
+ return 0;
7581672
7591673 error = bus_register_notifier(&i2c_bus_type, &ts_dmi_notifier);
7601674 if (error)