18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Touchscreen driver DMI based configuration code 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright (c) 2017 Red Hat Inc. 68c2ecf20Sopenharmony_ci * 78c2ecf20Sopenharmony_ci * Red Hat authors: 88c2ecf20Sopenharmony_ci * Hans de Goede <hdegoede@redhat.com> 98c2ecf20Sopenharmony_ci */ 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci#include <linux/acpi.h> 128c2ecf20Sopenharmony_ci#include <linux/device.h> 138c2ecf20Sopenharmony_ci#include <linux/dmi.h> 148c2ecf20Sopenharmony_ci#include <linux/efi_embedded_fw.h> 158c2ecf20Sopenharmony_ci#include <linux/i2c.h> 168c2ecf20Sopenharmony_ci#include <linux/notifier.h> 178c2ecf20Sopenharmony_ci#include <linux/property.h> 188c2ecf20Sopenharmony_ci#include <linux/string.h> 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_cistruct ts_dmi_data { 218c2ecf20Sopenharmony_ci /* The EFI embedded-fw code expects this to be the first member! */ 228c2ecf20Sopenharmony_ci struct efi_embedded_fw_desc embedded_fw; 238c2ecf20Sopenharmony_ci const char *acpi_name; 248c2ecf20Sopenharmony_ci const struct property_entry *properties; 258c2ecf20Sopenharmony_ci}; 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_ci/* NOTE: Please keep all entries sorted alphabetically */ 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_cistatic const struct property_entry chuwi_hi8_props[] = { 308c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1665), 318c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1140), 328c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"), 338c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 348c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-chuwi-hi8.fw"), 358c2ecf20Sopenharmony_ci { } 368c2ecf20Sopenharmony_ci}; 378c2ecf20Sopenharmony_ci 388c2ecf20Sopenharmony_cistatic const struct ts_dmi_data chuwi_hi8_data = { 398c2ecf20Sopenharmony_ci .acpi_name = "MSSL0001:00", 408c2ecf20Sopenharmony_ci .properties = chuwi_hi8_props, 418c2ecf20Sopenharmony_ci}; 428c2ecf20Sopenharmony_ci 438c2ecf20Sopenharmony_cistatic const struct property_entry chuwi_hi8_air_props[] = { 448c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1728), 458c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1148), 468c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"), 478c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl3676-chuwi-hi8-air.fw"), 488c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 498c2ecf20Sopenharmony_ci { } 508c2ecf20Sopenharmony_ci}; 518c2ecf20Sopenharmony_ci 528c2ecf20Sopenharmony_cistatic const struct ts_dmi_data chuwi_hi8_air_data = { 538c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 548c2ecf20Sopenharmony_ci .properties = chuwi_hi8_air_props, 558c2ecf20Sopenharmony_ci}; 568c2ecf20Sopenharmony_ci 578c2ecf20Sopenharmony_cistatic const struct property_entry chuwi_hi8_pro_props[] = { 588c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-x", 6), 598c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-y", 3), 608c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1728), 618c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1148), 628c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"), 638c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl3680-chuwi-hi8-pro.fw"), 648c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 658c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 668c2ecf20Sopenharmony_ci { } 678c2ecf20Sopenharmony_ci}; 688c2ecf20Sopenharmony_ci 698c2ecf20Sopenharmony_cistatic const struct ts_dmi_data chuwi_hi8_pro_data = { 708c2ecf20Sopenharmony_ci .embedded_fw = { 718c2ecf20Sopenharmony_ci .name = "silead/gsl3680-chuwi-hi8-pro.fw", 728c2ecf20Sopenharmony_ci .prefix = { 0xf0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 }, 738c2ecf20Sopenharmony_ci .length = 39864, 748c2ecf20Sopenharmony_ci .sha256 = { 0xc0, 0x88, 0xc5, 0xef, 0xd1, 0x70, 0x77, 0x59, 758c2ecf20Sopenharmony_ci 0x4e, 0xe9, 0xc4, 0xd8, 0x2e, 0xcd, 0xbf, 0x95, 768c2ecf20Sopenharmony_ci 0x32, 0xd9, 0x03, 0x28, 0x0d, 0x48, 0x9f, 0x92, 778c2ecf20Sopenharmony_ci 0x35, 0x37, 0xf6, 0x8b, 0x2a, 0xe4, 0x73, 0xff }, 788c2ecf20Sopenharmony_ci }, 798c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 808c2ecf20Sopenharmony_ci .properties = chuwi_hi8_pro_props, 818c2ecf20Sopenharmony_ci}; 828c2ecf20Sopenharmony_ci 838c2ecf20Sopenharmony_cistatic const struct property_entry chuwi_hi10_air_props[] = { 848c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1981), 858c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1271), 868c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-x", 99), 878c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-y", 9), 888c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"), 898c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-fuzz-x", 5), 908c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-fuzz-y", 4), 918c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-chuwi-hi10-air.fw"), 928c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 938c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 948c2ecf20Sopenharmony_ci { } 958c2ecf20Sopenharmony_ci}; 968c2ecf20Sopenharmony_ci 978c2ecf20Sopenharmony_cistatic const struct ts_dmi_data chuwi_hi10_air_data = { 988c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 998c2ecf20Sopenharmony_ci .properties = chuwi_hi10_air_props, 1008c2ecf20Sopenharmony_ci}; 1018c2ecf20Sopenharmony_ci 1028c2ecf20Sopenharmony_cistatic const struct property_entry chuwi_hi10_plus_props[] = { 1038c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-x", 12), 1048c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-y", 10), 1058c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1908), 1068c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1270), 1078c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-chuwi-hi10plus.fw"), 1088c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 1098c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 1108c2ecf20Sopenharmony_ci { } 1118c2ecf20Sopenharmony_ci}; 1128c2ecf20Sopenharmony_ci 1138c2ecf20Sopenharmony_cistatic const struct ts_dmi_data chuwi_hi10_plus_data = { 1148c2ecf20Sopenharmony_ci .embedded_fw = { 1158c2ecf20Sopenharmony_ci .name = "silead/gsl1680-chuwi-hi10plus.fw", 1168c2ecf20Sopenharmony_ci .prefix = { 0xf0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 }, 1178c2ecf20Sopenharmony_ci .length = 34056, 1188c2ecf20Sopenharmony_ci .sha256 = { 0xfd, 0x0a, 0x08, 0x08, 0x3c, 0xa6, 0x34, 0x4e, 1198c2ecf20Sopenharmony_ci 0x2c, 0x49, 0x9c, 0xcd, 0x7d, 0x44, 0x9d, 0x38, 1208c2ecf20Sopenharmony_ci 0x10, 0x68, 0xb5, 0xbd, 0xb7, 0x2a, 0x63, 0xb5, 1218c2ecf20Sopenharmony_ci 0x67, 0x0b, 0x96, 0xbd, 0x89, 0x67, 0x85, 0x09 }, 1228c2ecf20Sopenharmony_ci }, 1238c2ecf20Sopenharmony_ci .acpi_name = "MSSL0017:00", 1248c2ecf20Sopenharmony_ci .properties = chuwi_hi10_plus_props, 1258c2ecf20Sopenharmony_ci}; 1268c2ecf20Sopenharmony_ci 1278c2ecf20Sopenharmony_cistatic const struct property_entry chuwi_hi10_pro_props[] = { 1288c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-x", 8), 1298c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-y", 8), 1308c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1912), 1318c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1272), 1328c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"), 1338c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-chuwi-hi10-pro.fw"), 1348c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 1358c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 1368c2ecf20Sopenharmony_ci { } 1378c2ecf20Sopenharmony_ci}; 1388c2ecf20Sopenharmony_ci 1398c2ecf20Sopenharmony_cistatic const struct ts_dmi_data chuwi_hi10_pro_data = { 1408c2ecf20Sopenharmony_ci .embedded_fw = { 1418c2ecf20Sopenharmony_ci .name = "silead/gsl1680-chuwi-hi10-pro.fw", 1428c2ecf20Sopenharmony_ci .prefix = { 0xf0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 }, 1438c2ecf20Sopenharmony_ci .length = 42504, 1448c2ecf20Sopenharmony_ci .sha256 = { 0xdb, 0x92, 0x68, 0xa8, 0xdb, 0x81, 0x31, 0x00, 1458c2ecf20Sopenharmony_ci 0x1f, 0x58, 0x89, 0xdb, 0x19, 0x1b, 0x15, 0x8c, 1468c2ecf20Sopenharmony_ci 0x05, 0x14, 0xf4, 0x95, 0xba, 0x15, 0x45, 0x98, 1478c2ecf20Sopenharmony_ci 0x42, 0xa3, 0xbb, 0x65, 0xe3, 0x30, 0xa5, 0x93 }, 1488c2ecf20Sopenharmony_ci }, 1498c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 1508c2ecf20Sopenharmony_ci .properties = chuwi_hi10_pro_props, 1518c2ecf20Sopenharmony_ci}; 1528c2ecf20Sopenharmony_ci 1538c2ecf20Sopenharmony_cistatic const struct property_entry chuwi_hibook_props[] = { 1548c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-x", 30), 1558c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-y", 4), 1568c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1892), 1578c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1276), 1588c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"), 1598c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"), 1608c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-chuwi-hibook.fw"), 1618c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 1628c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 1638c2ecf20Sopenharmony_ci { } 1648c2ecf20Sopenharmony_ci}; 1658c2ecf20Sopenharmony_ci 1668c2ecf20Sopenharmony_cistatic const struct ts_dmi_data chuwi_hibook_data = { 1678c2ecf20Sopenharmony_ci .embedded_fw = { 1688c2ecf20Sopenharmony_ci .name = "silead/gsl1680-chuwi-hibook.fw", 1698c2ecf20Sopenharmony_ci .prefix = { 0xf0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 }, 1708c2ecf20Sopenharmony_ci .length = 40392, 1718c2ecf20Sopenharmony_ci .sha256 = { 0xf7, 0xc0, 0xe8, 0x5a, 0x6c, 0xf2, 0xeb, 0x8d, 1728c2ecf20Sopenharmony_ci 0x12, 0xc4, 0x45, 0xbf, 0x55, 0x13, 0x4c, 0x1a, 1738c2ecf20Sopenharmony_ci 0x13, 0x04, 0x31, 0x08, 0x65, 0x73, 0xf7, 0xa8, 1748c2ecf20Sopenharmony_ci 0x1b, 0x7d, 0x59, 0xc9, 0xe6, 0x97, 0xf7, 0x38 }, 1758c2ecf20Sopenharmony_ci }, 1768c2ecf20Sopenharmony_ci .acpi_name = "MSSL0017:00", 1778c2ecf20Sopenharmony_ci .properties = chuwi_hibook_props, 1788c2ecf20Sopenharmony_ci}; 1798c2ecf20Sopenharmony_ci 1808c2ecf20Sopenharmony_cistatic const struct property_entry chuwi_vi8_props[] = { 1818c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-x", 4), 1828c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-y", 6), 1838c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1724), 1848c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1140), 1858c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"), 1868c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl3676-chuwi-vi8.fw"), 1878c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 1888c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 1898c2ecf20Sopenharmony_ci { } 1908c2ecf20Sopenharmony_ci}; 1918c2ecf20Sopenharmony_ci 1928c2ecf20Sopenharmony_cistatic const struct ts_dmi_data chuwi_vi8_data = { 1938c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 1948c2ecf20Sopenharmony_ci .properties = chuwi_vi8_props, 1958c2ecf20Sopenharmony_ci}; 1968c2ecf20Sopenharmony_ci 1978c2ecf20Sopenharmony_cistatic const struct ts_dmi_data chuwi_vi8_plus_data = { 1988c2ecf20Sopenharmony_ci .embedded_fw = { 1998c2ecf20Sopenharmony_ci .name = "chipone/icn8505-HAMP0002.fw", 2008c2ecf20Sopenharmony_ci .prefix = { 0xb0, 0x07, 0x00, 0x00, 0xe4, 0x07, 0x00, 0x00 }, 2018c2ecf20Sopenharmony_ci .length = 35012, 2028c2ecf20Sopenharmony_ci .sha256 = { 0x93, 0xe5, 0x49, 0xe0, 0xb6, 0xa2, 0xb4, 0xb3, 2038c2ecf20Sopenharmony_ci 0x88, 0x96, 0x34, 0x97, 0x5e, 0xa8, 0x13, 0x78, 2048c2ecf20Sopenharmony_ci 0x72, 0x98, 0xb8, 0x29, 0xeb, 0x5c, 0xa7, 0xf1, 2058c2ecf20Sopenharmony_ci 0x25, 0x13, 0x43, 0xf4, 0x30, 0x7c, 0xfc, 0x7c }, 2068c2ecf20Sopenharmony_ci }, 2078c2ecf20Sopenharmony_ci}; 2088c2ecf20Sopenharmony_ci 2098c2ecf20Sopenharmony_cistatic const struct property_entry chuwi_vi10_props[] = { 2108c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-x", 0), 2118c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-y", 4), 2128c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1858), 2138c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1280), 2148c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl3680-chuwi-vi10.fw"), 2158c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 2168c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 2178c2ecf20Sopenharmony_ci { } 2188c2ecf20Sopenharmony_ci}; 2198c2ecf20Sopenharmony_ci 2208c2ecf20Sopenharmony_cistatic const struct ts_dmi_data chuwi_vi10_data = { 2218c2ecf20Sopenharmony_ci .acpi_name = "MSSL0002:00", 2228c2ecf20Sopenharmony_ci .properties = chuwi_vi10_props, 2238c2ecf20Sopenharmony_ci}; 2248c2ecf20Sopenharmony_ci 2258c2ecf20Sopenharmony_cistatic const struct property_entry chuwi_surbook_mini_props[] = { 2268c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-x", 88), 2278c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-y", 13), 2288c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 2040), 2298c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1524), 2308c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-chuwi-surbook-mini.fw"), 2318c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 2328c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"), 2338c2ecf20Sopenharmony_ci { } 2348c2ecf20Sopenharmony_ci}; 2358c2ecf20Sopenharmony_ci 2368c2ecf20Sopenharmony_cistatic const struct ts_dmi_data chuwi_surbook_mini_data = { 2378c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 2388c2ecf20Sopenharmony_ci .properties = chuwi_surbook_mini_props, 2398c2ecf20Sopenharmony_ci}; 2408c2ecf20Sopenharmony_ci 2418c2ecf20Sopenharmony_cistatic const struct property_entry connect_tablet9_props[] = { 2428c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-x", 9), 2438c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-y", 10), 2448c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1664), 2458c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 880), 2468c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"), 2478c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"), 2488c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-connect-tablet9.fw"), 2498c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 2508c2ecf20Sopenharmony_ci { } 2518c2ecf20Sopenharmony_ci}; 2528c2ecf20Sopenharmony_ci 2538c2ecf20Sopenharmony_cistatic const struct ts_dmi_data connect_tablet9_data = { 2548c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 2558c2ecf20Sopenharmony_ci .properties = connect_tablet9_props, 2568c2ecf20Sopenharmony_ci}; 2578c2ecf20Sopenharmony_ci 2588c2ecf20Sopenharmony_cistatic const struct property_entry csl_panther_tab_hd_props[] = { 2598c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-x", 1), 2608c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-y", 20), 2618c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1980), 2628c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1526), 2638c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"), 2648c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"), 2658c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-csl-panther-tab-hd.fw"), 2668c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 2678c2ecf20Sopenharmony_ci { } 2688c2ecf20Sopenharmony_ci}; 2698c2ecf20Sopenharmony_ci 2708c2ecf20Sopenharmony_cistatic const struct ts_dmi_data csl_panther_tab_hd_data = { 2718c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 2728c2ecf20Sopenharmony_ci .properties = csl_panther_tab_hd_props, 2738c2ecf20Sopenharmony_ci}; 2748c2ecf20Sopenharmony_ci 2758c2ecf20Sopenharmony_cistatic const struct property_entry cube_iwork8_air_props[] = { 2768c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-x", 1), 2778c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-y", 3), 2788c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1664), 2798c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 896), 2808c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"), 2818c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl3670-cube-iwork8-air.fw"), 2828c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 2838c2ecf20Sopenharmony_ci { } 2848c2ecf20Sopenharmony_ci}; 2858c2ecf20Sopenharmony_ci 2868c2ecf20Sopenharmony_cistatic const struct ts_dmi_data cube_iwork8_air_data = { 2878c2ecf20Sopenharmony_ci .embedded_fw = { 2888c2ecf20Sopenharmony_ci .name = "silead/gsl3670-cube-iwork8-air.fw", 2898c2ecf20Sopenharmony_ci .prefix = { 0xf0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 }, 2908c2ecf20Sopenharmony_ci .length = 38808, 2918c2ecf20Sopenharmony_ci .sha256 = { 0xff, 0x62, 0x2d, 0xd1, 0x8a, 0x78, 0x04, 0x7b, 2928c2ecf20Sopenharmony_ci 0x33, 0x06, 0xb0, 0x4f, 0x7f, 0x02, 0x08, 0x9c, 2938c2ecf20Sopenharmony_ci 0x96, 0xd4, 0x9f, 0x04, 0xe1, 0x47, 0x25, 0x25, 2948c2ecf20Sopenharmony_ci 0x60, 0x77, 0x41, 0x33, 0xeb, 0x12, 0x82, 0xfc }, 2958c2ecf20Sopenharmony_ci }, 2968c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 2978c2ecf20Sopenharmony_ci .properties = cube_iwork8_air_props, 2988c2ecf20Sopenharmony_ci}; 2998c2ecf20Sopenharmony_ci 3008c2ecf20Sopenharmony_cistatic const struct property_entry cube_knote_i1101_props[] = { 3018c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-x", 20), 3028c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-y", 22), 3038c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1961), 3048c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1513), 3058c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl3692-cube-knote-i1101.fw"), 3068c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 3078c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 3088c2ecf20Sopenharmony_ci { } 3098c2ecf20Sopenharmony_ci}; 3108c2ecf20Sopenharmony_ci 3118c2ecf20Sopenharmony_cistatic const struct ts_dmi_data cube_knote_i1101_data = { 3128c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 3138c2ecf20Sopenharmony_ci .properties = cube_knote_i1101_props, 3148c2ecf20Sopenharmony_ci}; 3158c2ecf20Sopenharmony_ci 3168c2ecf20Sopenharmony_cistatic const struct property_entry dexp_ursus_7w_props[] = { 3178c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 890), 3188c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 630), 3198c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl1686-dexp-ursus-7w.fw"), 3208c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 3218c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 3228c2ecf20Sopenharmony_ci { } 3238c2ecf20Sopenharmony_ci}; 3248c2ecf20Sopenharmony_ci 3258c2ecf20Sopenharmony_cistatic const struct ts_dmi_data dexp_ursus_7w_data = { 3268c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 3278c2ecf20Sopenharmony_ci .properties = dexp_ursus_7w_props, 3288c2ecf20Sopenharmony_ci}; 3298c2ecf20Sopenharmony_ci 3308c2ecf20Sopenharmony_cistatic const struct property_entry dexp_ursus_kx210i_props[] = { 3318c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-x", 5), 3328c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-y", 2), 3338c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1720), 3348c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1137), 3358c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-dexp-ursus-kx210i.fw"), 3368c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 3378c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 3388c2ecf20Sopenharmony_ci { } 3398c2ecf20Sopenharmony_ci}; 3408c2ecf20Sopenharmony_ci 3418c2ecf20Sopenharmony_cistatic const struct ts_dmi_data dexp_ursus_kx210i_data = { 3428c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 3438c2ecf20Sopenharmony_ci .properties = dexp_ursus_kx210i_props, 3448c2ecf20Sopenharmony_ci}; 3458c2ecf20Sopenharmony_ci 3468c2ecf20Sopenharmony_cistatic const struct property_entry digma_citi_e200_props[] = { 3478c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1980), 3488c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1500), 3498c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"), 3508c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl1686-digma_citi_e200.fw"), 3518c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 3528c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 3538c2ecf20Sopenharmony_ci { } 3548c2ecf20Sopenharmony_ci}; 3558c2ecf20Sopenharmony_ci 3568c2ecf20Sopenharmony_cistatic const struct ts_dmi_data digma_citi_e200_data = { 3578c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 3588c2ecf20Sopenharmony_ci .properties = digma_citi_e200_props, 3598c2ecf20Sopenharmony_ci}; 3608c2ecf20Sopenharmony_ci 3618c2ecf20Sopenharmony_cistatic const struct property_entry estar_beauty_hd_props[] = { 3628c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"), 3638c2ecf20Sopenharmony_ci { } 3648c2ecf20Sopenharmony_ci}; 3658c2ecf20Sopenharmony_ci 3668c2ecf20Sopenharmony_cistatic const struct ts_dmi_data estar_beauty_hd_data = { 3678c2ecf20Sopenharmony_ci .acpi_name = "GDIX1001:00", 3688c2ecf20Sopenharmony_ci .properties = estar_beauty_hd_props, 3698c2ecf20Sopenharmony_ci}; 3708c2ecf20Sopenharmony_ci 3718c2ecf20Sopenharmony_ci/* Generic props + data for upside-down mounted GDIX1001 touchscreens */ 3728c2ecf20Sopenharmony_cistatic const struct property_entry gdix1001_upside_down_props[] = { 3738c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-inverted-x"), 3748c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"), 3758c2ecf20Sopenharmony_ci { } 3768c2ecf20Sopenharmony_ci}; 3778c2ecf20Sopenharmony_ci 3788c2ecf20Sopenharmony_cistatic const struct ts_dmi_data gdix1001_00_upside_down_data = { 3798c2ecf20Sopenharmony_ci .acpi_name = "GDIX1001:00", 3808c2ecf20Sopenharmony_ci .properties = gdix1001_upside_down_props, 3818c2ecf20Sopenharmony_ci}; 3828c2ecf20Sopenharmony_ci 3838c2ecf20Sopenharmony_cistatic const struct ts_dmi_data gdix1001_01_upside_down_data = { 3848c2ecf20Sopenharmony_ci .acpi_name = "GDIX1001:01", 3858c2ecf20Sopenharmony_ci .properties = gdix1001_upside_down_props, 3868c2ecf20Sopenharmony_ci}; 3878c2ecf20Sopenharmony_ci 3888c2ecf20Sopenharmony_cistatic const struct property_entry glavey_tm800a550l_props[] = { 3898c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gt912-glavey-tm800a550l.fw"), 3908c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("goodix,config-name", "gt912-glavey-tm800a550l.cfg"), 3918c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("goodix,main-clk", 54), 3928c2ecf20Sopenharmony_ci { } 3938c2ecf20Sopenharmony_ci}; 3948c2ecf20Sopenharmony_ci 3958c2ecf20Sopenharmony_cistatic const struct ts_dmi_data glavey_tm800a550l_data = { 3968c2ecf20Sopenharmony_ci .acpi_name = "GDIX1001:00", 3978c2ecf20Sopenharmony_ci .properties = glavey_tm800a550l_props, 3988c2ecf20Sopenharmony_ci}; 3998c2ecf20Sopenharmony_ci 4008c2ecf20Sopenharmony_cistatic const struct ts_dmi_data gdix1002_00_upside_down_data = { 4018c2ecf20Sopenharmony_ci .acpi_name = "GDIX1002:00", 4028c2ecf20Sopenharmony_ci .properties = gdix1001_upside_down_props, 4038c2ecf20Sopenharmony_ci}; 4048c2ecf20Sopenharmony_ci 4058c2ecf20Sopenharmony_cistatic const struct property_entry gp_electronic_t701_props[] = { 4068c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 960), 4078c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 640), 4088c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-inverted-x"), 4098c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"), 4108c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-gp-electronic-t701.fw"), 4118c2ecf20Sopenharmony_ci { } 4128c2ecf20Sopenharmony_ci}; 4138c2ecf20Sopenharmony_ci 4148c2ecf20Sopenharmony_cistatic const struct ts_dmi_data gp_electronic_t701_data = { 4158c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 4168c2ecf20Sopenharmony_ci .properties = gp_electronic_t701_props, 4178c2ecf20Sopenharmony_ci}; 4188c2ecf20Sopenharmony_ci 4198c2ecf20Sopenharmony_cistatic const struct property_entry irbis_tw90_props[] = { 4208c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1720), 4218c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1138), 4228c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-x", 8), 4238c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-y", 14), 4248c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"), 4258c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"), 4268c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl3680-irbis_tw90.fw"), 4278c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 4288c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 4298c2ecf20Sopenharmony_ci { } 4308c2ecf20Sopenharmony_ci}; 4318c2ecf20Sopenharmony_ci 4328c2ecf20Sopenharmony_cistatic const struct ts_dmi_data irbis_tw90_data = { 4338c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 4348c2ecf20Sopenharmony_ci .properties = irbis_tw90_props, 4358c2ecf20Sopenharmony_ci}; 4368c2ecf20Sopenharmony_ci 4378c2ecf20Sopenharmony_cistatic const struct property_entry irbis_tw118_props[] = { 4388c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-x", 20), 4398c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-y", 30), 4408c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1960), 4418c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1510), 4428c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-irbis-tw118.fw"), 4438c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 4448c2ecf20Sopenharmony_ci { } 4458c2ecf20Sopenharmony_ci}; 4468c2ecf20Sopenharmony_ci 4478c2ecf20Sopenharmony_cistatic const struct ts_dmi_data irbis_tw118_data = { 4488c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 4498c2ecf20Sopenharmony_ci .properties = irbis_tw118_props, 4508c2ecf20Sopenharmony_ci}; 4518c2ecf20Sopenharmony_ci 4528c2ecf20Sopenharmony_cistatic const struct property_entry itworks_tw891_props[] = { 4538c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-x", 1), 4548c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-y", 5), 4558c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1600), 4568c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 896), 4578c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"), 4588c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"), 4598c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl3670-itworks-tw891.fw"), 4608c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 4618c2ecf20Sopenharmony_ci { } 4628c2ecf20Sopenharmony_ci}; 4638c2ecf20Sopenharmony_ci 4648c2ecf20Sopenharmony_cistatic const struct ts_dmi_data itworks_tw891_data = { 4658c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 4668c2ecf20Sopenharmony_ci .properties = itworks_tw891_props, 4678c2ecf20Sopenharmony_ci}; 4688c2ecf20Sopenharmony_ci 4698c2ecf20Sopenharmony_cistatic const struct property_entry jumper_ezpad_6_pro_props[] = { 4708c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1980), 4718c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1500), 4728c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl3692-jumper-ezpad-6-pro.fw"), 4738c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 4748c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 4758c2ecf20Sopenharmony_ci { } 4768c2ecf20Sopenharmony_ci}; 4778c2ecf20Sopenharmony_ci 4788c2ecf20Sopenharmony_cistatic const struct ts_dmi_data jumper_ezpad_6_pro_data = { 4798c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 4808c2ecf20Sopenharmony_ci .properties = jumper_ezpad_6_pro_props, 4818c2ecf20Sopenharmony_ci}; 4828c2ecf20Sopenharmony_ci 4838c2ecf20Sopenharmony_cistatic const struct property_entry jumper_ezpad_6_pro_b_props[] = { 4848c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1980), 4858c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1500), 4868c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl3692-jumper-ezpad-6-pro-b.fw"), 4878c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"), 4888c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 4898c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 4908c2ecf20Sopenharmony_ci { } 4918c2ecf20Sopenharmony_ci}; 4928c2ecf20Sopenharmony_ci 4938c2ecf20Sopenharmony_cistatic const struct ts_dmi_data jumper_ezpad_6_pro_b_data = { 4948c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 4958c2ecf20Sopenharmony_ci .properties = jumper_ezpad_6_pro_b_props, 4968c2ecf20Sopenharmony_ci}; 4978c2ecf20Sopenharmony_ci 4988c2ecf20Sopenharmony_cistatic const struct property_entry jumper_ezpad_6_m4_props[] = { 4998c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-x", 35), 5008c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-y", 15), 5018c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1950), 5028c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1525), 5038c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl3692-jumper-ezpad-6-m4.fw"), 5048c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 5058c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 5068c2ecf20Sopenharmony_ci { } 5078c2ecf20Sopenharmony_ci}; 5088c2ecf20Sopenharmony_ci 5098c2ecf20Sopenharmony_cistatic const struct ts_dmi_data jumper_ezpad_6_m4_data = { 5108c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 5118c2ecf20Sopenharmony_ci .properties = jumper_ezpad_6_m4_props, 5128c2ecf20Sopenharmony_ci}; 5138c2ecf20Sopenharmony_ci 5148c2ecf20Sopenharmony_cistatic const struct property_entry jumper_ezpad_mini3_props[] = { 5158c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-x", 23), 5168c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-y", 16), 5178c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1700), 5188c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1138), 5198c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"), 5208c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl3676-jumper-ezpad-mini3.fw"), 5218c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 5228c2ecf20Sopenharmony_ci { } 5238c2ecf20Sopenharmony_ci}; 5248c2ecf20Sopenharmony_ci 5258c2ecf20Sopenharmony_cistatic const struct ts_dmi_data jumper_ezpad_mini3_data = { 5268c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 5278c2ecf20Sopenharmony_ci .properties = jumper_ezpad_mini3_props, 5288c2ecf20Sopenharmony_ci}; 5298c2ecf20Sopenharmony_ci 5308c2ecf20Sopenharmony_cistatic const struct property_entry mpman_converter9_props[] = { 5318c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-x", 8), 5328c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-y", 8), 5338c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1664), 5348c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 880), 5358c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"), 5368c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"), 5378c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-mpman-converter9.fw"), 5388c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 5398c2ecf20Sopenharmony_ci { } 5408c2ecf20Sopenharmony_ci}; 5418c2ecf20Sopenharmony_ci 5428c2ecf20Sopenharmony_cistatic const struct ts_dmi_data mpman_converter9_data = { 5438c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 5448c2ecf20Sopenharmony_ci .properties = mpman_converter9_props, 5458c2ecf20Sopenharmony_ci}; 5468c2ecf20Sopenharmony_ci 5478c2ecf20Sopenharmony_cistatic const struct property_entry mpman_mpwin895cl_props[] = { 5488c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-x", 3), 5498c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-y", 9), 5508c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1728), 5518c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1150), 5528c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"), 5538c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl3680-mpman-mpwin895cl.fw"), 5548c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 5558c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 5568c2ecf20Sopenharmony_ci { } 5578c2ecf20Sopenharmony_ci}; 5588c2ecf20Sopenharmony_ci 5598c2ecf20Sopenharmony_cistatic const struct ts_dmi_data mpman_mpwin895cl_data = { 5608c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 5618c2ecf20Sopenharmony_ci .properties = mpman_mpwin895cl_props, 5628c2ecf20Sopenharmony_ci}; 5638c2ecf20Sopenharmony_ci 5648c2ecf20Sopenharmony_cistatic const struct property_entry myria_my8307_props[] = { 5658c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1720), 5668c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1140), 5678c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-inverted-x"), 5688c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"), 5698c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"), 5708c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-myria-my8307.fw"), 5718c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 5728c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 5738c2ecf20Sopenharmony_ci { } 5748c2ecf20Sopenharmony_ci}; 5758c2ecf20Sopenharmony_ci 5768c2ecf20Sopenharmony_cistatic const struct ts_dmi_data myria_my8307_data = { 5778c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 5788c2ecf20Sopenharmony_ci .properties = myria_my8307_props, 5798c2ecf20Sopenharmony_ci}; 5808c2ecf20Sopenharmony_ci 5818c2ecf20Sopenharmony_cistatic const struct property_entry onda_obook_20_plus_props[] = { 5828c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1728), 5838c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1148), 5848c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-inverted-x"), 5858c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"), 5868c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"), 5878c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl3676-onda-obook-20-plus.fw"), 5888c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 5898c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 5908c2ecf20Sopenharmony_ci { } 5918c2ecf20Sopenharmony_ci}; 5928c2ecf20Sopenharmony_ci 5938c2ecf20Sopenharmony_cistatic const struct ts_dmi_data onda_obook_20_plus_data = { 5948c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 5958c2ecf20Sopenharmony_ci .properties = onda_obook_20_plus_props, 5968c2ecf20Sopenharmony_ci}; 5978c2ecf20Sopenharmony_ci 5988c2ecf20Sopenharmony_cistatic const struct property_entry onda_v80_plus_v3_props[] = { 5998c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-x", 22), 6008c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-y", 15), 6018c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1698), 6028c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1140), 6038c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"), 6048c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl3676-onda-v80-plus-v3.fw"), 6058c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 6068c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 6078c2ecf20Sopenharmony_ci { } 6088c2ecf20Sopenharmony_ci}; 6098c2ecf20Sopenharmony_ci 6108c2ecf20Sopenharmony_cistatic const struct ts_dmi_data onda_v80_plus_v3_data = { 6118c2ecf20Sopenharmony_ci .embedded_fw = { 6128c2ecf20Sopenharmony_ci .name = "silead/gsl3676-onda-v80-plus-v3.fw", 6138c2ecf20Sopenharmony_ci .prefix = { 0xf0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 }, 6148c2ecf20Sopenharmony_ci .length = 37224, 6158c2ecf20Sopenharmony_ci .sha256 = { 0x8f, 0xbd, 0x8f, 0x0c, 0x6b, 0xba, 0x5b, 0xf5, 6168c2ecf20Sopenharmony_ci 0xa3, 0xc7, 0xa3, 0xc0, 0x4f, 0xcd, 0xdf, 0x32, 6178c2ecf20Sopenharmony_ci 0xcc, 0xe4, 0x70, 0xd6, 0x46, 0x9c, 0xd7, 0xa7, 6188c2ecf20Sopenharmony_ci 0x4b, 0x82, 0x3f, 0xab, 0xc7, 0x90, 0xea, 0x23 }, 6198c2ecf20Sopenharmony_ci }, 6208c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 6218c2ecf20Sopenharmony_ci .properties = onda_v80_plus_v3_props, 6228c2ecf20Sopenharmony_ci}; 6238c2ecf20Sopenharmony_ci 6248c2ecf20Sopenharmony_cistatic const struct property_entry onda_v820w_32g_props[] = { 6258c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1665), 6268c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1140), 6278c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"), 6288c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-onda-v820w-32g.fw"), 6298c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 6308c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 6318c2ecf20Sopenharmony_ci { } 6328c2ecf20Sopenharmony_ci}; 6338c2ecf20Sopenharmony_ci 6348c2ecf20Sopenharmony_cistatic const struct ts_dmi_data onda_v820w_32g_data = { 6358c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 6368c2ecf20Sopenharmony_ci .properties = onda_v820w_32g_props, 6378c2ecf20Sopenharmony_ci}; 6388c2ecf20Sopenharmony_ci 6398c2ecf20Sopenharmony_cistatic const struct property_entry onda_v891_v5_props[] = { 6408c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1715), 6418c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1140), 6428c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-inverted-x"), 6438c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"), 6448c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"), 6458c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", 6468c2ecf20Sopenharmony_ci "gsl3676-onda-v891-v5.fw"), 6478c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 6488c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 6498c2ecf20Sopenharmony_ci { } 6508c2ecf20Sopenharmony_ci}; 6518c2ecf20Sopenharmony_ci 6528c2ecf20Sopenharmony_cistatic const struct ts_dmi_data onda_v891_v5_data = { 6538c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 6548c2ecf20Sopenharmony_ci .properties = onda_v891_v5_props, 6558c2ecf20Sopenharmony_ci}; 6568c2ecf20Sopenharmony_ci 6578c2ecf20Sopenharmony_cistatic const struct property_entry onda_v891w_v1_props[] = { 6588c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-x", 46), 6598c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-y", 8), 6608c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1676), 6618c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1130), 6628c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl3680-onda-v891w-v1.fw"), 6638c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 6648c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 6658c2ecf20Sopenharmony_ci { } 6668c2ecf20Sopenharmony_ci}; 6678c2ecf20Sopenharmony_ci 6688c2ecf20Sopenharmony_cistatic const struct ts_dmi_data onda_v891w_v1_data = { 6698c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 6708c2ecf20Sopenharmony_ci .properties = onda_v891w_v1_props, 6718c2ecf20Sopenharmony_ci}; 6728c2ecf20Sopenharmony_ci 6738c2ecf20Sopenharmony_cistatic const struct property_entry onda_v891w_v3_props[] = { 6748c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-x", 35), 6758c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-y", 15), 6768c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1625), 6778c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1135), 6788c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"), 6798c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl3676-onda-v891w-v3.fw"), 6808c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 6818c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 6828c2ecf20Sopenharmony_ci { } 6838c2ecf20Sopenharmony_ci}; 6848c2ecf20Sopenharmony_ci 6858c2ecf20Sopenharmony_cistatic const struct ts_dmi_data onda_v891w_v3_data = { 6868c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 6878c2ecf20Sopenharmony_ci .properties = onda_v891w_v3_props, 6888c2ecf20Sopenharmony_ci}; 6898c2ecf20Sopenharmony_ci 6908c2ecf20Sopenharmony_cistatic const struct property_entry pipo_w2s_props[] = { 6918c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1660), 6928c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 880), 6938c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-inverted-x"), 6948c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"), 6958c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-pipo-w2s.fw"), 6968c2ecf20Sopenharmony_ci { } 6978c2ecf20Sopenharmony_ci}; 6988c2ecf20Sopenharmony_ci 6998c2ecf20Sopenharmony_cistatic const struct ts_dmi_data pipo_w2s_data = { 7008c2ecf20Sopenharmony_ci .embedded_fw = { 7018c2ecf20Sopenharmony_ci .name = "silead/gsl1680-pipo-w2s.fw", 7028c2ecf20Sopenharmony_ci .prefix = { 0xf0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 }, 7038c2ecf20Sopenharmony_ci .length = 39072, 7048c2ecf20Sopenharmony_ci .sha256 = { 0xd0, 0x58, 0xc4, 0x7d, 0x55, 0x2d, 0x62, 0x18, 7058c2ecf20Sopenharmony_ci 0xd1, 0x6a, 0x71, 0x73, 0x0b, 0x3f, 0xbe, 0x60, 7068c2ecf20Sopenharmony_ci 0xbb, 0x45, 0x8c, 0x52, 0x27, 0xb7, 0x18, 0xf4, 7078c2ecf20Sopenharmony_ci 0x31, 0x00, 0x6a, 0x49, 0x76, 0xd8, 0x7c, 0xd3 }, 7088c2ecf20Sopenharmony_ci }, 7098c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 7108c2ecf20Sopenharmony_ci .properties = pipo_w2s_props, 7118c2ecf20Sopenharmony_ci}; 7128c2ecf20Sopenharmony_ci 7138c2ecf20Sopenharmony_cistatic const struct property_entry pipo_w11_props[] = { 7148c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-x", 1), 7158c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-y", 15), 7168c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1984), 7178c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1532), 7188c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-pipo-w11.fw"), 7198c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 7208c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 7218c2ecf20Sopenharmony_ci { } 7228c2ecf20Sopenharmony_ci}; 7238c2ecf20Sopenharmony_ci 7248c2ecf20Sopenharmony_cistatic const struct ts_dmi_data pipo_w11_data = { 7258c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 7268c2ecf20Sopenharmony_ci .properties = pipo_w11_props, 7278c2ecf20Sopenharmony_ci}; 7288c2ecf20Sopenharmony_ci 7298c2ecf20Sopenharmony_cistatic const struct property_entry positivo_c4128b_props[] = { 7308c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-x", 4), 7318c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-y", 13), 7328c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1915), 7338c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1269), 7348c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-positivo-c4128b.fw"), 7358c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 7368c2ecf20Sopenharmony_ci { } 7378c2ecf20Sopenharmony_ci}; 7388c2ecf20Sopenharmony_ci 7398c2ecf20Sopenharmony_cistatic const struct ts_dmi_data positivo_c4128b_data = { 7408c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 7418c2ecf20Sopenharmony_ci .properties = positivo_c4128b_props, 7428c2ecf20Sopenharmony_ci}; 7438c2ecf20Sopenharmony_ci 7448c2ecf20Sopenharmony_cistatic const struct property_entry pov_mobii_wintab_p800w_v20_props[] = { 7458c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-x", 32), 7468c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-y", 16), 7478c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1692), 7488c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1146), 7498c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"), 7508c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl3680-pov-mobii-wintab-p800w-v20.fw"), 7518c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 7528c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 7538c2ecf20Sopenharmony_ci { } 7548c2ecf20Sopenharmony_ci}; 7558c2ecf20Sopenharmony_ci 7568c2ecf20Sopenharmony_cistatic const struct ts_dmi_data pov_mobii_wintab_p800w_v20_data = { 7578c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 7588c2ecf20Sopenharmony_ci .properties = pov_mobii_wintab_p800w_v20_props, 7598c2ecf20Sopenharmony_ci}; 7608c2ecf20Sopenharmony_ci 7618c2ecf20Sopenharmony_cistatic const struct property_entry pov_mobii_wintab_p800w_v21_props[] = { 7628c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-x", 1), 7638c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-y", 8), 7648c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1794), 7658c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1148), 7668c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"), 7678c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl3692-pov-mobii-wintab-p800w.fw"), 7688c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 7698c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 7708c2ecf20Sopenharmony_ci { } 7718c2ecf20Sopenharmony_ci}; 7728c2ecf20Sopenharmony_ci 7738c2ecf20Sopenharmony_cistatic const struct ts_dmi_data pov_mobii_wintab_p800w_v21_data = { 7748c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 7758c2ecf20Sopenharmony_ci .properties = pov_mobii_wintab_p800w_v21_props, 7768c2ecf20Sopenharmony_ci}; 7778c2ecf20Sopenharmony_ci 7788c2ecf20Sopenharmony_cistatic const struct property_entry pov_mobii_wintab_p1006w_v10_props[] = { 7798c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-x", 1), 7808c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-y", 3), 7818c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1984), 7828c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1520), 7838c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"), 7848c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl3692-pov-mobii-wintab-p1006w-v10.fw"), 7858c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 7868c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 7878c2ecf20Sopenharmony_ci { } 7888c2ecf20Sopenharmony_ci}; 7898c2ecf20Sopenharmony_ci 7908c2ecf20Sopenharmony_cistatic const struct ts_dmi_data pov_mobii_wintab_p1006w_v10_data = { 7918c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 7928c2ecf20Sopenharmony_ci .properties = pov_mobii_wintab_p1006w_v10_props, 7938c2ecf20Sopenharmony_ci}; 7948c2ecf20Sopenharmony_ci 7958c2ecf20Sopenharmony_cistatic const struct property_entry predia_basic_props[] = { 7968c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-x", 3), 7978c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-y", 10), 7988c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1728), 7998c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1144), 8008c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"), 8018c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl3680-predia-basic.fw"), 8028c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 8038c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 8048c2ecf20Sopenharmony_ci { } 8058c2ecf20Sopenharmony_ci}; 8068c2ecf20Sopenharmony_ci 8078c2ecf20Sopenharmony_cistatic const struct ts_dmi_data predia_basic_data = { 8088c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 8098c2ecf20Sopenharmony_ci .properties = predia_basic_props, 8108c2ecf20Sopenharmony_ci}; 8118c2ecf20Sopenharmony_ci 8128c2ecf20Sopenharmony_cistatic const struct property_entry rca_cambio_w101_v2_props[] = { 8138c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-x", 4), 8148c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-y", 20), 8158c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1644), 8168c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 874), 8178c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"), 8188c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-rca-cambio-w101-v2.fw"), 8198c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 8208c2ecf20Sopenharmony_ci { } 8218c2ecf20Sopenharmony_ci}; 8228c2ecf20Sopenharmony_ci 8238c2ecf20Sopenharmony_cistatic const struct ts_dmi_data rca_cambio_w101_v2_data = { 8248c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 8258c2ecf20Sopenharmony_ci .properties = rca_cambio_w101_v2_props, 8268c2ecf20Sopenharmony_ci}; 8278c2ecf20Sopenharmony_ci 8288c2ecf20Sopenharmony_cistatic const struct property_entry rwc_nanote_p8_props[] = { 8298c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-y", 46), 8308c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1728), 8318c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1140), 8328c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"), 8338c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-rwc-nanote-p8.fw"), 8348c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 8358c2ecf20Sopenharmony_ci { } 8368c2ecf20Sopenharmony_ci}; 8378c2ecf20Sopenharmony_ci 8388c2ecf20Sopenharmony_cistatic const struct ts_dmi_data rwc_nanote_p8_data = { 8398c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 8408c2ecf20Sopenharmony_ci .properties = rwc_nanote_p8_props, 8418c2ecf20Sopenharmony_ci}; 8428c2ecf20Sopenharmony_ci 8438c2ecf20Sopenharmony_cistatic const struct property_entry schneider_sct101ctm_props[] = { 8448c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1715), 8458c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1140), 8468c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-inverted-x"), 8478c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"), 8488c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"), 8498c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-schneider-sct101ctm.fw"), 8508c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 8518c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 8528c2ecf20Sopenharmony_ci { } 8538c2ecf20Sopenharmony_ci}; 8548c2ecf20Sopenharmony_ci 8558c2ecf20Sopenharmony_cistatic const struct ts_dmi_data schneider_sct101ctm_data = { 8568c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 8578c2ecf20Sopenharmony_ci .properties = schneider_sct101ctm_props, 8588c2ecf20Sopenharmony_ci}; 8598c2ecf20Sopenharmony_ci 8608c2ecf20Sopenharmony_cistatic const struct property_entry techbite_arc_11_6_props[] = { 8618c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-x", 5), 8628c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-y", 7), 8638c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1981), 8648c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1270), 8658c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"), 8668c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-techbite-arc-11-6.fw"), 8678c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 8688c2ecf20Sopenharmony_ci { } 8698c2ecf20Sopenharmony_ci}; 8708c2ecf20Sopenharmony_ci 8718c2ecf20Sopenharmony_cistatic const struct ts_dmi_data techbite_arc_11_6_data = { 8728c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 8738c2ecf20Sopenharmony_ci .properties = techbite_arc_11_6_props, 8748c2ecf20Sopenharmony_ci}; 8758c2ecf20Sopenharmony_ci 8768c2ecf20Sopenharmony_cistatic const struct property_entry teclast_x3_plus_props[] = { 8778c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1980), 8788c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1500), 8798c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-teclast-x3-plus.fw"), 8808c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 8818c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 8828c2ecf20Sopenharmony_ci { } 8838c2ecf20Sopenharmony_ci}; 8848c2ecf20Sopenharmony_ci 8858c2ecf20Sopenharmony_cistatic const struct ts_dmi_data teclast_x3_plus_data = { 8868c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 8878c2ecf20Sopenharmony_ci .properties = teclast_x3_plus_props, 8888c2ecf20Sopenharmony_ci}; 8898c2ecf20Sopenharmony_ci 8908c2ecf20Sopenharmony_cistatic const struct property_entry teclast_x98plus2_props[] = { 8918c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 2048), 8928c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1280), 8938c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-inverted-x"), 8948c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"), 8958c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl1686-teclast_x98plus2.fw"), 8968c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 8978c2ecf20Sopenharmony_ci { } 8988c2ecf20Sopenharmony_ci}; 8998c2ecf20Sopenharmony_ci 9008c2ecf20Sopenharmony_cistatic const struct ts_dmi_data teclast_x98plus2_data = { 9018c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 9028c2ecf20Sopenharmony_ci .properties = teclast_x98plus2_props, 9038c2ecf20Sopenharmony_ci}; 9048c2ecf20Sopenharmony_ci 9058c2ecf20Sopenharmony_cistatic const struct property_entry trekstor_primebook_c11_props[] = { 9068c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1970), 9078c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1530), 9088c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"), 9098c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-trekstor-primebook-c11.fw"), 9108c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 9118c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 9128c2ecf20Sopenharmony_ci { } 9138c2ecf20Sopenharmony_ci}; 9148c2ecf20Sopenharmony_ci 9158c2ecf20Sopenharmony_cistatic const struct ts_dmi_data trekstor_primebook_c11_data = { 9168c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 9178c2ecf20Sopenharmony_ci .properties = trekstor_primebook_c11_props, 9188c2ecf20Sopenharmony_ci}; 9198c2ecf20Sopenharmony_ci 9208c2ecf20Sopenharmony_cistatic const struct property_entry trekstor_primebook_c13_props[] = { 9218c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 2624), 9228c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1920), 9238c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-trekstor-primebook-c13.fw"), 9248c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 9258c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 9268c2ecf20Sopenharmony_ci { } 9278c2ecf20Sopenharmony_ci}; 9288c2ecf20Sopenharmony_ci 9298c2ecf20Sopenharmony_cistatic const struct ts_dmi_data trekstor_primebook_c13_data = { 9308c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 9318c2ecf20Sopenharmony_ci .properties = trekstor_primebook_c13_props, 9328c2ecf20Sopenharmony_ci}; 9338c2ecf20Sopenharmony_ci 9348c2ecf20Sopenharmony_cistatic const struct property_entry trekstor_primetab_t13b_props[] = { 9358c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 2500), 9368c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1900), 9378c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-trekstor-primetab-t13b.fw"), 9388c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 9398c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 9408c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"), 9418c2ecf20Sopenharmony_ci { } 9428c2ecf20Sopenharmony_ci}; 9438c2ecf20Sopenharmony_ci 9448c2ecf20Sopenharmony_cistatic const struct ts_dmi_data trekstor_primetab_t13b_data = { 9458c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 9468c2ecf20Sopenharmony_ci .properties = trekstor_primetab_t13b_props, 9478c2ecf20Sopenharmony_ci}; 9488c2ecf20Sopenharmony_ci 9498c2ecf20Sopenharmony_cistatic const struct property_entry trekstor_surftab_twin_10_1_props[] = { 9508c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-x", 20), 9518c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-y", 0), 9528c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1890), 9538c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1280), 9548c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-inverted-y", 1), 9558c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl3670-surftab-twin-10-1-st10432-8.fw"), 9568c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 9578c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 9588c2ecf20Sopenharmony_ci { } 9598c2ecf20Sopenharmony_ci}; 9608c2ecf20Sopenharmony_ci 9618c2ecf20Sopenharmony_cistatic const struct ts_dmi_data trekstor_surftab_twin_10_1_data = { 9628c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 9638c2ecf20Sopenharmony_ci .properties = trekstor_surftab_twin_10_1_props, 9648c2ecf20Sopenharmony_ci}; 9658c2ecf20Sopenharmony_ci 9668c2ecf20Sopenharmony_cistatic const struct property_entry trekstor_surftab_wintron70_props[] = { 9678c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-x", 12), 9688c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-min-y", 8), 9698c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 884), 9708c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 632), 9718c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl1686-surftab-wintron70-st70416-6.fw"), 9728c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 9738c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 9748c2ecf20Sopenharmony_ci { } 9758c2ecf20Sopenharmony_ci}; 9768c2ecf20Sopenharmony_ci 9778c2ecf20Sopenharmony_cistatic const struct ts_dmi_data trekstor_surftab_wintron70_data = { 9788c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 9798c2ecf20Sopenharmony_ci .properties = trekstor_surftab_wintron70_props, 9808c2ecf20Sopenharmony_ci}; 9818c2ecf20Sopenharmony_ci 9828c2ecf20Sopenharmony_cistatic const struct property_entry vinga_twizzle_j116_props[] = { 9838c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-x", 1920), 9848c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("touchscreen-size-y", 1280), 9858c2ecf20Sopenharmony_ci PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-vinga-twizzle_j116.fw"), 9868c2ecf20Sopenharmony_ci PROPERTY_ENTRY_U32("silead,max-fingers", 10), 9878c2ecf20Sopenharmony_ci PROPERTY_ENTRY_BOOL("silead,home-button"), 9888c2ecf20Sopenharmony_ci { } 9898c2ecf20Sopenharmony_ci}; 9908c2ecf20Sopenharmony_ci 9918c2ecf20Sopenharmony_cistatic const struct ts_dmi_data vinga_twizzle_j116_data = { 9928c2ecf20Sopenharmony_ci .acpi_name = "MSSL1680:00", 9938c2ecf20Sopenharmony_ci .properties = vinga_twizzle_j116_props, 9948c2ecf20Sopenharmony_ci}; 9958c2ecf20Sopenharmony_ci 9968c2ecf20Sopenharmony_ci/* NOTE: Please keep this table sorted alphabetically */ 9978c2ecf20Sopenharmony_ciconst struct dmi_system_id touchscreen_dmi_table[] = { 9988c2ecf20Sopenharmony_ci { 9998c2ecf20Sopenharmony_ci /* Chuwi Hi8 */ 10008c2ecf20Sopenharmony_ci .driver_data = (void *)&chuwi_hi8_data, 10018c2ecf20Sopenharmony_ci .matches = { 10028c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "ilife"), 10038c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "S806"), 10048c2ecf20Sopenharmony_ci }, 10058c2ecf20Sopenharmony_ci }, 10068c2ecf20Sopenharmony_ci { 10078c2ecf20Sopenharmony_ci /* Chuwi Hi8 (H1D_S806_206) */ 10088c2ecf20Sopenharmony_ci .driver_data = (void *)&chuwi_hi8_data, 10098c2ecf20Sopenharmony_ci .matches = { 10108c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "Insyde"), 10118c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "BayTrail"), 10128c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BIOS_VERSION, "H1D_S806_206"), 10138c2ecf20Sopenharmony_ci }, 10148c2ecf20Sopenharmony_ci }, 10158c2ecf20Sopenharmony_ci { 10168c2ecf20Sopenharmony_ci /* Chuwi Hi8 Air (CWI543) */ 10178c2ecf20Sopenharmony_ci .driver_data = (void *)&chuwi_hi8_air_data, 10188c2ecf20Sopenharmony_ci .matches = { 10198c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BOARD_VENDOR, "Default string"), 10208c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BOARD_NAME, "Cherry Trail CR"), 10218c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "Hi8 Air"), 10228c2ecf20Sopenharmony_ci }, 10238c2ecf20Sopenharmony_ci }, 10248c2ecf20Sopenharmony_ci { 10258c2ecf20Sopenharmony_ci /* Chuwi Hi8 Pro (CWI513) */ 10268c2ecf20Sopenharmony_ci .driver_data = (void *)&chuwi_hi8_pro_data, 10278c2ecf20Sopenharmony_ci .matches = { 10288c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "Hampoo"), 10298c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "X1D3_C806N"), 10308c2ecf20Sopenharmony_ci }, 10318c2ecf20Sopenharmony_ci }, 10328c2ecf20Sopenharmony_ci { 10338c2ecf20Sopenharmony_ci /* Chuwi Hi10 Air */ 10348c2ecf20Sopenharmony_ci .driver_data = (void *)&chuwi_hi10_air_data, 10358c2ecf20Sopenharmony_ci .matches = { 10368c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "CHUWI INNOVATION AND TECHNOLOGY(SHENZHEN)CO.LTD"), 10378c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BOARD_NAME, "Cherry Trail CR"), 10388c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_SKU, "P1W6_C109D_B"), 10398c2ecf20Sopenharmony_ci }, 10408c2ecf20Sopenharmony_ci }, 10418c2ecf20Sopenharmony_ci { 10428c2ecf20Sopenharmony_ci /* Chuwi Hi10 Plus (CWI527) */ 10438c2ecf20Sopenharmony_ci .driver_data = (void *)&chuwi_hi10_plus_data, 10448c2ecf20Sopenharmony_ci .matches = { 10458c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BOARD_VENDOR, "Hampoo"), 10468c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "Hi10 plus tablet"), 10478c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BOARD_NAME, "Cherry Trail CR"), 10488c2ecf20Sopenharmony_ci }, 10498c2ecf20Sopenharmony_ci }, 10508c2ecf20Sopenharmony_ci { 10518c2ecf20Sopenharmony_ci /* Chuwi Hi10 Prus (CWI597) */ 10528c2ecf20Sopenharmony_ci .driver_data = (void *)&chuwi_hi10_pro_data, 10538c2ecf20Sopenharmony_ci .matches = { 10548c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BOARD_VENDOR, "Hampoo"), 10558c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "Hi10 pro tablet"), 10568c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BOARD_NAME, "Cherry Trail CR"), 10578c2ecf20Sopenharmony_ci }, 10588c2ecf20Sopenharmony_ci }, 10598c2ecf20Sopenharmony_ci { 10608c2ecf20Sopenharmony_ci /* Chuwi HiBook (CWI514) */ 10618c2ecf20Sopenharmony_ci .driver_data = (void *)&chuwi_hibook_data, 10628c2ecf20Sopenharmony_ci .matches = { 10638c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BOARD_VENDOR, "Hampoo"), 10648c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BOARD_NAME, "Cherry Trail CR"), 10658c2ecf20Sopenharmony_ci /* Above matches are too generic, add bios-date match */ 10668c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BIOS_DATE, "05/07/2016"), 10678c2ecf20Sopenharmony_ci }, 10688c2ecf20Sopenharmony_ci }, 10698c2ecf20Sopenharmony_ci { 10708c2ecf20Sopenharmony_ci /* Chuwi Vi8 (CWI501) */ 10718c2ecf20Sopenharmony_ci .driver_data = (void *)&chuwi_vi8_data, 10728c2ecf20Sopenharmony_ci .matches = { 10738c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "Insyde"), 10748c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "i86"), 10758c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BIOS_VERSION, "CHUWI.W86JLBNR01"), 10768c2ecf20Sopenharmony_ci }, 10778c2ecf20Sopenharmony_ci }, 10788c2ecf20Sopenharmony_ci { 10798c2ecf20Sopenharmony_ci /* Chuwi Vi8 (CWI506) */ 10808c2ecf20Sopenharmony_ci .driver_data = (void *)&chuwi_vi8_data, 10818c2ecf20Sopenharmony_ci .matches = { 10828c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "Insyde"), 10838c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "i86"), 10848c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BIOS_VERSION, "CHUWI.D86JLBNR"), 10858c2ecf20Sopenharmony_ci }, 10868c2ecf20Sopenharmony_ci }, 10878c2ecf20Sopenharmony_ci { 10888c2ecf20Sopenharmony_ci /* Chuwi Vi8 Plus (CWI519) */ 10898c2ecf20Sopenharmony_ci .driver_data = (void *)&chuwi_vi8_plus_data, 10908c2ecf20Sopenharmony_ci .matches = { 10918c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "Hampoo"), 10928c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "D2D3_Vi8A1"), 10938c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BOARD_NAME, "Cherry Trail CR"), 10948c2ecf20Sopenharmony_ci }, 10958c2ecf20Sopenharmony_ci }, 10968c2ecf20Sopenharmony_ci { 10978c2ecf20Sopenharmony_ci /* Chuwi Vi10 (CWI505) */ 10988c2ecf20Sopenharmony_ci .driver_data = (void *)&chuwi_vi10_data, 10998c2ecf20Sopenharmony_ci .matches = { 11008c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BOARD_VENDOR, "Hampoo"), 11018c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BOARD_NAME, "BYT-PF02"), 11028c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "ilife"), 11038c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "S165"), 11048c2ecf20Sopenharmony_ci }, 11058c2ecf20Sopenharmony_ci }, 11068c2ecf20Sopenharmony_ci { 11078c2ecf20Sopenharmony_ci /* Chuwi Surbook Mini (CWI540) */ 11088c2ecf20Sopenharmony_ci .driver_data = (void *)&chuwi_surbook_mini_data, 11098c2ecf20Sopenharmony_ci .matches = { 11108c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BOARD_VENDOR, "Hampoo"), 11118c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "C3W6_AP108_4G"), 11128c2ecf20Sopenharmony_ci }, 11138c2ecf20Sopenharmony_ci }, 11148c2ecf20Sopenharmony_ci { 11158c2ecf20Sopenharmony_ci /* Connect Tablet 9 */ 11168c2ecf20Sopenharmony_ci .driver_data = (void *)&connect_tablet9_data, 11178c2ecf20Sopenharmony_ci .matches = { 11188c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "Connect"), 11198c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "Tablet 9"), 11208c2ecf20Sopenharmony_ci }, 11218c2ecf20Sopenharmony_ci }, 11228c2ecf20Sopenharmony_ci { 11238c2ecf20Sopenharmony_ci /* CSL Panther Tab HD */ 11248c2ecf20Sopenharmony_ci .driver_data = (void *)&csl_panther_tab_hd_data, 11258c2ecf20Sopenharmony_ci .matches = { 11268c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "CSL Computer GmbH & Co. KG"), 11278c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "CSL Panther Tab HD"), 11288c2ecf20Sopenharmony_ci }, 11298c2ecf20Sopenharmony_ci }, 11308c2ecf20Sopenharmony_ci { 11318c2ecf20Sopenharmony_ci /* CUBE iwork8 Air */ 11328c2ecf20Sopenharmony_ci .driver_data = (void *)&cube_iwork8_air_data, 11338c2ecf20Sopenharmony_ci .matches = { 11348c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "cube"), 11358c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "i1-TF"), 11368c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BOARD_NAME, "Cherry Trail CR"), 11378c2ecf20Sopenharmony_ci }, 11388c2ecf20Sopenharmony_ci }, 11398c2ecf20Sopenharmony_ci { 11408c2ecf20Sopenharmony_ci /* Cube KNote i1101 */ 11418c2ecf20Sopenharmony_ci .driver_data = (void *)&cube_knote_i1101_data, 11428c2ecf20Sopenharmony_ci .matches = { 11438c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BOARD_VENDOR, "Hampoo"), 11448c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BOARD_NAME, "L1W6_I1101"), 11458c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "ALLDOCUBE"), 11468c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "i1101"), 11478c2ecf20Sopenharmony_ci }, 11488c2ecf20Sopenharmony_ci }, 11498c2ecf20Sopenharmony_ci { 11508c2ecf20Sopenharmony_ci /* DEXP Ursus 7W */ 11518c2ecf20Sopenharmony_ci .driver_data = (void *)&dexp_ursus_7w_data, 11528c2ecf20Sopenharmony_ci .matches = { 11538c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "Insyde"), 11548c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "7W"), 11558c2ecf20Sopenharmony_ci }, 11568c2ecf20Sopenharmony_ci }, 11578c2ecf20Sopenharmony_ci { 11588c2ecf20Sopenharmony_ci /* DEXP Ursus KX210i */ 11598c2ecf20Sopenharmony_ci .driver_data = (void *)&dexp_ursus_kx210i_data, 11608c2ecf20Sopenharmony_ci .matches = { 11618c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "INSYDE Corp."), 11628c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "S107I"), 11638c2ecf20Sopenharmony_ci }, 11648c2ecf20Sopenharmony_ci }, 11658c2ecf20Sopenharmony_ci { 11668c2ecf20Sopenharmony_ci /* Digma Citi E200 */ 11678c2ecf20Sopenharmony_ci .driver_data = (void *)&digma_citi_e200_data, 11688c2ecf20Sopenharmony_ci .matches = { 11698c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "Digma"), 11708c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "CITI E200"), 11718c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BOARD_NAME, "Cherry Trail CR"), 11728c2ecf20Sopenharmony_ci }, 11738c2ecf20Sopenharmony_ci }, 11748c2ecf20Sopenharmony_ci { 11758c2ecf20Sopenharmony_ci /* Estar Beauty HD (MID 7316R) */ 11768c2ecf20Sopenharmony_ci .driver_data = (void *)&estar_beauty_hd_data, 11778c2ecf20Sopenharmony_ci .matches = { 11788c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "Estar"), 11798c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "eSTAR BEAUTY HD Intel Quad core"), 11808c2ecf20Sopenharmony_ci }, 11818c2ecf20Sopenharmony_ci }, 11828c2ecf20Sopenharmony_ci { /* Glavey TM800A550L */ 11838c2ecf20Sopenharmony_ci .driver_data = (void *)&glavey_tm800a550l_data, 11848c2ecf20Sopenharmony_ci .matches = { 11858c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BOARD_VENDOR, "AMI Corporation"), 11868c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BOARD_NAME, "Aptio CRB"), 11878c2ecf20Sopenharmony_ci /* Above strings are too generic, also match on BIOS version */ 11888c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BIOS_VERSION, "ZY-8-BI-PX4S70VTR400-X423B-005-D"), 11898c2ecf20Sopenharmony_ci }, 11908c2ecf20Sopenharmony_ci }, 11918c2ecf20Sopenharmony_ci { 11928c2ecf20Sopenharmony_ci /* GP-electronic T701 */ 11938c2ecf20Sopenharmony_ci .driver_data = (void *)&gp_electronic_t701_data, 11948c2ecf20Sopenharmony_ci .matches = { 11958c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "Insyde"), 11968c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "T701"), 11978c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BIOS_VERSION, "BYT70A.YNCHENG.WIN.007"), 11988c2ecf20Sopenharmony_ci }, 11998c2ecf20Sopenharmony_ci }, 12008c2ecf20Sopenharmony_ci { 12018c2ecf20Sopenharmony_ci /* I.T.Works TW701 (same hardware as the Trekstor ST70416-6) */ 12028c2ecf20Sopenharmony_ci .driver_data = (void *)&trekstor_surftab_wintron70_data, 12038c2ecf20Sopenharmony_ci .matches = { 12048c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "Insyde"), 12058c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "i71c"), 12068c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BIOS_VERSION, "itWORKS.G.WI71C.JGBMRB"), 12078c2ecf20Sopenharmony_ci }, 12088c2ecf20Sopenharmony_ci }, 12098c2ecf20Sopenharmony_ci { 12108c2ecf20Sopenharmony_ci /* Irbis TW90 */ 12118c2ecf20Sopenharmony_ci .driver_data = (void *)&irbis_tw90_data, 12128c2ecf20Sopenharmony_ci .matches = { 12138c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "IRBIS"), 12148c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "TW90"), 12158c2ecf20Sopenharmony_ci }, 12168c2ecf20Sopenharmony_ci }, 12178c2ecf20Sopenharmony_ci { 12188c2ecf20Sopenharmony_ci /* Irbis TW118 */ 12198c2ecf20Sopenharmony_ci .driver_data = (void *)&irbis_tw118_data, 12208c2ecf20Sopenharmony_ci .matches = { 12218c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "IRBIS"), 12228c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "TW118"), 12238c2ecf20Sopenharmony_ci }, 12248c2ecf20Sopenharmony_ci }, 12258c2ecf20Sopenharmony_ci { 12268c2ecf20Sopenharmony_ci /* I.T.Works TW891 */ 12278c2ecf20Sopenharmony_ci .driver_data = (void *)&itworks_tw891_data, 12288c2ecf20Sopenharmony_ci .matches = { 12298c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "To be filled by O.E.M."), 12308c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "TW891"), 12318c2ecf20Sopenharmony_ci }, 12328c2ecf20Sopenharmony_ci }, 12338c2ecf20Sopenharmony_ci { 12348c2ecf20Sopenharmony_ci /* Jumper EZpad 6 Pro */ 12358c2ecf20Sopenharmony_ci .driver_data = (void *)&jumper_ezpad_6_pro_data, 12368c2ecf20Sopenharmony_ci .matches = { 12378c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "Jumper"), 12388c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "EZpad"), 12398c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BIOS_VERSION, "5.12"), 12408c2ecf20Sopenharmony_ci /* Above matches are too generic, add bios-date match */ 12418c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BIOS_DATE, "08/18/2017"), 12428c2ecf20Sopenharmony_ci }, 12438c2ecf20Sopenharmony_ci }, 12448c2ecf20Sopenharmony_ci { 12458c2ecf20Sopenharmony_ci /* Jumper EZpad 6 Pro B */ 12468c2ecf20Sopenharmony_ci .driver_data = (void *)&jumper_ezpad_6_pro_b_data, 12478c2ecf20Sopenharmony_ci .matches = { 12488c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "Jumper"), 12498c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "EZpad"), 12508c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BIOS_VERSION, "5.12"), 12518c2ecf20Sopenharmony_ci /* Above matches are too generic, add bios-date match */ 12528c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BIOS_DATE, "04/24/2018"), 12538c2ecf20Sopenharmony_ci }, 12548c2ecf20Sopenharmony_ci }, 12558c2ecf20Sopenharmony_ci { 12568c2ecf20Sopenharmony_ci /* Jumper EZpad 6 m4 */ 12578c2ecf20Sopenharmony_ci .driver_data = (void *)&jumper_ezpad_6_m4_data, 12588c2ecf20Sopenharmony_ci .matches = { 12598c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "jumper"), 12608c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "EZpad"), 12618c2ecf20Sopenharmony_ci /* Jumper8.S106x.A00C.1066 with the version dropped */ 12628c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BIOS_VERSION, "Jumper8.S106x"), 12638c2ecf20Sopenharmony_ci }, 12648c2ecf20Sopenharmony_ci }, 12658c2ecf20Sopenharmony_ci { 12668c2ecf20Sopenharmony_ci /* Jumper EZpad mini3 */ 12678c2ecf20Sopenharmony_ci .driver_data = (void *)&jumper_ezpad_mini3_data, 12688c2ecf20Sopenharmony_ci .matches = { 12698c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "Insyde"), 12708c2ecf20Sopenharmony_ci /* jumperx.T87.KFBNEEA02 with the version-nr dropped */ 12718c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BIOS_VERSION, "jumperx.T87.KFBNEEA"), 12728c2ecf20Sopenharmony_ci }, 12738c2ecf20Sopenharmony_ci }, 12748c2ecf20Sopenharmony_ci { 12758c2ecf20Sopenharmony_ci /* Juno Tablet */ 12768c2ecf20Sopenharmony_ci .driver_data = (void *)&gdix1002_00_upside_down_data, 12778c2ecf20Sopenharmony_ci .matches = { 12788c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "Default string"), 12798c2ecf20Sopenharmony_ci /* Both product- and board-name being "Default string" is somewhat rare */ 12808c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "Default string"), 12818c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BOARD_NAME, "Default string"), 12828c2ecf20Sopenharmony_ci /* Above matches are too generic, add partial bios-version match */ 12838c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BIOS_VERSION, "JP2V1."), 12848c2ecf20Sopenharmony_ci }, 12858c2ecf20Sopenharmony_ci }, 12868c2ecf20Sopenharmony_ci { 12878c2ecf20Sopenharmony_ci /* Mediacom WinPad 7.0 W700 (same hw as Wintron surftab 7") */ 12888c2ecf20Sopenharmony_ci .driver_data = (void *)&trekstor_surftab_wintron70_data, 12898c2ecf20Sopenharmony_ci .matches = { 12908c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "MEDIACOM"), 12918c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "WinPad 7 W10 - WPW700"), 12928c2ecf20Sopenharmony_ci }, 12938c2ecf20Sopenharmony_ci }, 12948c2ecf20Sopenharmony_ci { 12958c2ecf20Sopenharmony_ci /* Mediacom Flexbook Edge 11 (same hw as TS Primebook C11) */ 12968c2ecf20Sopenharmony_ci .driver_data = (void *)&trekstor_primebook_c11_data, 12978c2ecf20Sopenharmony_ci .matches = { 12988c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "MEDIACOM"), 12998c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "FlexBook edge11 - M-FBE11"), 13008c2ecf20Sopenharmony_ci }, 13018c2ecf20Sopenharmony_ci }, 13028c2ecf20Sopenharmony_ci { 13038c2ecf20Sopenharmony_ci /* MP Man Converter 9 */ 13048c2ecf20Sopenharmony_ci .driver_data = (void *)&mpman_converter9_data, 13058c2ecf20Sopenharmony_ci .matches = { 13068c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "MPMAN"), 13078c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "Converter9"), 13088c2ecf20Sopenharmony_ci }, 13098c2ecf20Sopenharmony_ci }, 13108c2ecf20Sopenharmony_ci { 13118c2ecf20Sopenharmony_ci /* MP Man MPWIN895CL */ 13128c2ecf20Sopenharmony_ci .driver_data = (void *)&mpman_mpwin895cl_data, 13138c2ecf20Sopenharmony_ci .matches = { 13148c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "MPMAN"), 13158c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "MPWIN8900CL"), 13168c2ecf20Sopenharmony_ci }, 13178c2ecf20Sopenharmony_ci }, 13188c2ecf20Sopenharmony_ci { 13198c2ecf20Sopenharmony_ci /* Myria MY8307 */ 13208c2ecf20Sopenharmony_ci .driver_data = (void *)&myria_my8307_data, 13218c2ecf20Sopenharmony_ci .matches = { 13228c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "Complet Electro Serv"), 13238c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "MY8307"), 13248c2ecf20Sopenharmony_ci }, 13258c2ecf20Sopenharmony_ci }, 13268c2ecf20Sopenharmony_ci { 13278c2ecf20Sopenharmony_ci /* Onda oBook 20 Plus */ 13288c2ecf20Sopenharmony_ci .driver_data = (void *)&onda_obook_20_plus_data, 13298c2ecf20Sopenharmony_ci .matches = { 13308c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "ONDA"), 13318c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "OBOOK 20 PLUS"), 13328c2ecf20Sopenharmony_ci }, 13338c2ecf20Sopenharmony_ci }, 13348c2ecf20Sopenharmony_ci { 13358c2ecf20Sopenharmony_ci /* ONDA V80 plus v3 (P80PSBG9V3A01501) */ 13368c2ecf20Sopenharmony_ci .driver_data = (void *)&onda_v80_plus_v3_data, 13378c2ecf20Sopenharmony_ci .matches = { 13388c2ecf20Sopenharmony_ci DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ONDA"), 13398c2ecf20Sopenharmony_ci DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "V80 PLUS") 13408c2ecf20Sopenharmony_ci }, 13418c2ecf20Sopenharmony_ci }, 13428c2ecf20Sopenharmony_ci { 13438c2ecf20Sopenharmony_ci /* ONDA V820w DualOS */ 13448c2ecf20Sopenharmony_ci .driver_data = (void *)&onda_v820w_32g_data, 13458c2ecf20Sopenharmony_ci .matches = { 13468c2ecf20Sopenharmony_ci DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "ONDA"), 13478c2ecf20Sopenharmony_ci DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "V820w DualOS") 13488c2ecf20Sopenharmony_ci }, 13498c2ecf20Sopenharmony_ci }, 13508c2ecf20Sopenharmony_ci { 13518c2ecf20Sopenharmony_ci /* ONDA V891 v5 */ 13528c2ecf20Sopenharmony_ci .driver_data = (void *)&onda_v891_v5_data, 13538c2ecf20Sopenharmony_ci .matches = { 13548c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "ONDA"), 13558c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "ONDA Tablet"), 13568c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BIOS_VERSION, "ONDA.D869CJABNRBA06"), 13578c2ecf20Sopenharmony_ci }, 13588c2ecf20Sopenharmony_ci }, 13598c2ecf20Sopenharmony_ci { 13608c2ecf20Sopenharmony_ci /* ONDA V891w revision P891WBEBV1B00 aka v1 */ 13618c2ecf20Sopenharmony_ci .driver_data = (void *)&onda_v891w_v1_data, 13628c2ecf20Sopenharmony_ci .matches = { 13638c2ecf20Sopenharmony_ci DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "ONDA"), 13648c2ecf20Sopenharmony_ci DMI_EXACT_MATCH(DMI_BOARD_NAME, "ONDA Tablet"), 13658c2ecf20Sopenharmony_ci DMI_EXACT_MATCH(DMI_BOARD_VERSION, "V001"), 13668c2ecf20Sopenharmony_ci /* Exact match, different versions need different fw */ 13678c2ecf20Sopenharmony_ci DMI_EXACT_MATCH(DMI_BIOS_VERSION, "ONDA.W89EBBN08"), 13688c2ecf20Sopenharmony_ci }, 13698c2ecf20Sopenharmony_ci }, 13708c2ecf20Sopenharmony_ci { 13718c2ecf20Sopenharmony_ci /* ONDA V891w Dual OS P891DCF2V1A01274 64GB */ 13728c2ecf20Sopenharmony_ci .driver_data = (void *)&onda_v891w_v3_data, 13738c2ecf20Sopenharmony_ci .matches = { 13748c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "Insyde"), 13758c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "ONDA Tablet"), 13768c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BIOS_VERSION, "ONDA.D890HBBNR0A"), 13778c2ecf20Sopenharmony_ci }, 13788c2ecf20Sopenharmony_ci }, 13798c2ecf20Sopenharmony_ci { 13808c2ecf20Sopenharmony_ci /* Pipo W2S */ 13818c2ecf20Sopenharmony_ci .driver_data = (void *)&pipo_w2s_data, 13828c2ecf20Sopenharmony_ci .matches = { 13838c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "PIPO"), 13848c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "W2S"), 13858c2ecf20Sopenharmony_ci }, 13868c2ecf20Sopenharmony_ci }, 13878c2ecf20Sopenharmony_ci { 13888c2ecf20Sopenharmony_ci /* Pipo W11 */ 13898c2ecf20Sopenharmony_ci .driver_data = (void *)&pipo_w11_data, 13908c2ecf20Sopenharmony_ci .matches = { 13918c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "PIPO"), 13928c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "To be filled by O.E.M."), 13938c2ecf20Sopenharmony_ci /* Above matches are too generic, add bios-ver match */ 13948c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BIOS_VERSION, "JS-BI-10.6-SF133GR300-GA55B-024-F"), 13958c2ecf20Sopenharmony_ci }, 13968c2ecf20Sopenharmony_ci }, 13978c2ecf20Sopenharmony_ci { 13988c2ecf20Sopenharmony_ci /* Ployer Momo7w (same hardware as the Trekstor ST70416-6) */ 13998c2ecf20Sopenharmony_ci .driver_data = (void *)&trekstor_surftab_wintron70_data, 14008c2ecf20Sopenharmony_ci .matches = { 14018c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "Shenzhen PLOYER"), 14028c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "MOMO7W"), 14038c2ecf20Sopenharmony_ci /* Exact match, different versions need different fw */ 14048c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BIOS_VERSION, "MOMO.G.WI71C.MABMRBA02"), 14058c2ecf20Sopenharmony_ci }, 14068c2ecf20Sopenharmony_ci }, 14078c2ecf20Sopenharmony_ci { 14088c2ecf20Sopenharmony_ci /* Positivo C4128B */ 14098c2ecf20Sopenharmony_ci .driver_data = (void *)&positivo_c4128b_data, 14108c2ecf20Sopenharmony_ci .matches = { 14118c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "Positivo Tecnologia SA"), 14128c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "C4128B-1"), 14138c2ecf20Sopenharmony_ci }, 14148c2ecf20Sopenharmony_ci }, 14158c2ecf20Sopenharmony_ci { 14168c2ecf20Sopenharmony_ci /* Point of View mobii wintab p800w (v2.0) */ 14178c2ecf20Sopenharmony_ci .driver_data = (void *)&pov_mobii_wintab_p800w_v20_data, 14188c2ecf20Sopenharmony_ci .matches = { 14198c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BOARD_VENDOR, "AMI Corporation"), 14208c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BOARD_NAME, "Aptio CRB"), 14218c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BIOS_VERSION, "3BAIR1014"), 14228c2ecf20Sopenharmony_ci /* Above matches are too generic, add bios-date match */ 14238c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BIOS_DATE, "10/24/2014"), 14248c2ecf20Sopenharmony_ci }, 14258c2ecf20Sopenharmony_ci }, 14268c2ecf20Sopenharmony_ci { 14278c2ecf20Sopenharmony_ci /* Predia Basic tablet) */ 14288c2ecf20Sopenharmony_ci .driver_data = (void *)&predia_basic_data, 14298c2ecf20Sopenharmony_ci .matches = { 14308c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "Insyde"), 14318c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "CherryTrail"), 14328c2ecf20Sopenharmony_ci /* Above matches are too generic, add bios-version match */ 14338c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BIOS_VERSION, "Mx.WT107.KUBNGEA"), 14348c2ecf20Sopenharmony_ci }, 14358c2ecf20Sopenharmony_ci }, 14368c2ecf20Sopenharmony_ci { 14378c2ecf20Sopenharmony_ci /* Point of View mobii wintab p800w (v2.1) */ 14388c2ecf20Sopenharmony_ci .driver_data = (void *)&pov_mobii_wintab_p800w_v21_data, 14398c2ecf20Sopenharmony_ci .matches = { 14408c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BOARD_VENDOR, "AMI Corporation"), 14418c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BOARD_NAME, "Aptio CRB"), 14428c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BIOS_VERSION, "3BAIR1013"), 14438c2ecf20Sopenharmony_ci /* Above matches are too generic, add bios-date match */ 14448c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BIOS_DATE, "08/22/2014"), 14458c2ecf20Sopenharmony_ci }, 14468c2ecf20Sopenharmony_ci }, 14478c2ecf20Sopenharmony_ci { 14488c2ecf20Sopenharmony_ci /* Point of View mobii wintab p1006w (v1.0) */ 14498c2ecf20Sopenharmony_ci .driver_data = (void *)&pov_mobii_wintab_p1006w_v10_data, 14508c2ecf20Sopenharmony_ci .matches = { 14518c2ecf20Sopenharmony_ci DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Insyde"), 14528c2ecf20Sopenharmony_ci DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "BayTrail"), 14538c2ecf20Sopenharmony_ci /* Note 105b is Foxcon's USB/PCI vendor id */ 14548c2ecf20Sopenharmony_ci DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "105B"), 14558c2ecf20Sopenharmony_ci DMI_EXACT_MATCH(DMI_BOARD_NAME, "0E57"), 14568c2ecf20Sopenharmony_ci }, 14578c2ecf20Sopenharmony_ci }, 14588c2ecf20Sopenharmony_ci { 14598c2ecf20Sopenharmony_ci /* RCA Cambio W101 v2 */ 14608c2ecf20Sopenharmony_ci /* https://github.com/onitake/gsl-firmware/discussions/193 */ 14618c2ecf20Sopenharmony_ci .driver_data = (void *)&rca_cambio_w101_v2_data, 14628c2ecf20Sopenharmony_ci .matches = { 14638c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "RCA"), 14648c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "W101SA23T1"), 14658c2ecf20Sopenharmony_ci }, 14668c2ecf20Sopenharmony_ci }, 14678c2ecf20Sopenharmony_ci { 14688c2ecf20Sopenharmony_ci /* RWC NANOTE P8 */ 14698c2ecf20Sopenharmony_ci .driver_data = (void *)&rwc_nanote_p8_data, 14708c2ecf20Sopenharmony_ci .matches = { 14718c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BOARD_VENDOR, "Default string"), 14728c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "AY07J"), 14738c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_SKU, "0001") 14748c2ecf20Sopenharmony_ci }, 14758c2ecf20Sopenharmony_ci }, 14768c2ecf20Sopenharmony_ci { 14778c2ecf20Sopenharmony_ci /* Schneider SCT101CTM */ 14788c2ecf20Sopenharmony_ci .driver_data = (void *)&schneider_sct101ctm_data, 14798c2ecf20Sopenharmony_ci .matches = { 14808c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "Default string"), 14818c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "SCT101CTM"), 14828c2ecf20Sopenharmony_ci }, 14838c2ecf20Sopenharmony_ci }, 14848c2ecf20Sopenharmony_ci { 14858c2ecf20Sopenharmony_ci /* Techbite Arc 11.6 */ 14868c2ecf20Sopenharmony_ci .driver_data = (void *)&techbite_arc_11_6_data, 14878c2ecf20Sopenharmony_ci .matches = { 14888c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "mPTech"), 14898c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "techBite Arc 11.6"), 14908c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BOARD_NAME, "G8316_272B"), 14918c2ecf20Sopenharmony_ci }, 14928c2ecf20Sopenharmony_ci }, 14938c2ecf20Sopenharmony_ci { 14948c2ecf20Sopenharmony_ci /* Teclast X3 Plus */ 14958c2ecf20Sopenharmony_ci .driver_data = (void *)&teclast_x3_plus_data, 14968c2ecf20Sopenharmony_ci .matches = { 14978c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "TECLAST"), 14988c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "X3 Plus"), 14998c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BOARD_NAME, "X3 Plus"), 15008c2ecf20Sopenharmony_ci }, 15018c2ecf20Sopenharmony_ci }, 15028c2ecf20Sopenharmony_ci { 15038c2ecf20Sopenharmony_ci /* Teclast X89 (Android version / BIOS) */ 15048c2ecf20Sopenharmony_ci .driver_data = (void *)&gdix1001_00_upside_down_data, 15058c2ecf20Sopenharmony_ci .matches = { 15068c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BOARD_VENDOR, "WISKY"), 15078c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BOARD_NAME, "3G062i"), 15088c2ecf20Sopenharmony_ci }, 15098c2ecf20Sopenharmony_ci }, 15108c2ecf20Sopenharmony_ci { 15118c2ecf20Sopenharmony_ci /* Teclast X89 (Windows version / BIOS) */ 15128c2ecf20Sopenharmony_ci .driver_data = (void *)&gdix1001_01_upside_down_data, 15138c2ecf20Sopenharmony_ci .matches = { 15148c2ecf20Sopenharmony_ci /* tPAD is too generic, also match on bios date */ 15158c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BOARD_VENDOR, "TECLAST"), 15168c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BOARD_NAME, "tPAD"), 15178c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BIOS_DATE, "12/19/2014"), 15188c2ecf20Sopenharmony_ci }, 15198c2ecf20Sopenharmony_ci }, 15208c2ecf20Sopenharmony_ci { 15218c2ecf20Sopenharmony_ci /* Teclast X98 Plus II */ 15228c2ecf20Sopenharmony_ci .driver_data = (void *)&teclast_x98plus2_data, 15238c2ecf20Sopenharmony_ci .matches = { 15248c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "TECLAST"), 15258c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "X98 Plus II"), 15268c2ecf20Sopenharmony_ci }, 15278c2ecf20Sopenharmony_ci }, 15288c2ecf20Sopenharmony_ci { 15298c2ecf20Sopenharmony_ci /* Teclast X98 Pro */ 15308c2ecf20Sopenharmony_ci .driver_data = (void *)&gdix1001_00_upside_down_data, 15318c2ecf20Sopenharmony_ci .matches = { 15328c2ecf20Sopenharmony_ci /* 15338c2ecf20Sopenharmony_ci * Only match BIOS date, because the manufacturers 15348c2ecf20Sopenharmony_ci * BIOS does not report the board name at all 15358c2ecf20Sopenharmony_ci * (sometimes)... 15368c2ecf20Sopenharmony_ci */ 15378c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BOARD_VENDOR, "TECLAST"), 15388c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BIOS_DATE, "10/28/2015"), 15398c2ecf20Sopenharmony_ci }, 15408c2ecf20Sopenharmony_ci }, 15418c2ecf20Sopenharmony_ci { 15428c2ecf20Sopenharmony_ci /* Trekstor Primebook C11 */ 15438c2ecf20Sopenharmony_ci .driver_data = (void *)&trekstor_primebook_c11_data, 15448c2ecf20Sopenharmony_ci .matches = { 15458c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "TREKSTOR"), 15468c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "Primebook C11"), 15478c2ecf20Sopenharmony_ci }, 15488c2ecf20Sopenharmony_ci }, 15498c2ecf20Sopenharmony_ci { 15508c2ecf20Sopenharmony_ci /* Trekstor Primebook C11B (same touchscreen as the C11) */ 15518c2ecf20Sopenharmony_ci .driver_data = (void *)&trekstor_primebook_c11_data, 15528c2ecf20Sopenharmony_ci .matches = { 15538c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "TREKSTOR"), 15548c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "PRIMEBOOK C11B"), 15558c2ecf20Sopenharmony_ci }, 15568c2ecf20Sopenharmony_ci }, 15578c2ecf20Sopenharmony_ci { 15588c2ecf20Sopenharmony_ci /* Trekstor Primebook C13 */ 15598c2ecf20Sopenharmony_ci .driver_data = (void *)&trekstor_primebook_c13_data, 15608c2ecf20Sopenharmony_ci .matches = { 15618c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "TREKSTOR"), 15628c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "Primebook C13"), 15638c2ecf20Sopenharmony_ci }, 15648c2ecf20Sopenharmony_ci }, 15658c2ecf20Sopenharmony_ci { 15668c2ecf20Sopenharmony_ci /* Trekstor Primetab T13B */ 15678c2ecf20Sopenharmony_ci .driver_data = (void *)&trekstor_primetab_t13b_data, 15688c2ecf20Sopenharmony_ci .matches = { 15698c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "TREKSTOR"), 15708c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "Primetab T13B"), 15718c2ecf20Sopenharmony_ci }, 15728c2ecf20Sopenharmony_ci }, 15738c2ecf20Sopenharmony_ci { 15748c2ecf20Sopenharmony_ci /* TrekStor SurfTab twin 10.1 ST10432-8 */ 15758c2ecf20Sopenharmony_ci .driver_data = (void *)&trekstor_surftab_twin_10_1_data, 15768c2ecf20Sopenharmony_ci .matches = { 15778c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "TrekStor"), 15788c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "SurfTab twin 10.1"), 15798c2ecf20Sopenharmony_ci }, 15808c2ecf20Sopenharmony_ci }, 15818c2ecf20Sopenharmony_ci { 15828c2ecf20Sopenharmony_ci /* Trekstor Surftab Wintron 7.0 ST70416-6 */ 15838c2ecf20Sopenharmony_ci .driver_data = (void *)&trekstor_surftab_wintron70_data, 15848c2ecf20Sopenharmony_ci .matches = { 15858c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "Insyde"), 15868c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "ST70416-6"), 15878c2ecf20Sopenharmony_ci /* Exact match, different versions need different fw */ 15888c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BIOS_VERSION, "TREK.G.WI71C.JGBMRBA04"), 15898c2ecf20Sopenharmony_ci }, 15908c2ecf20Sopenharmony_ci }, 15918c2ecf20Sopenharmony_ci { 15928c2ecf20Sopenharmony_ci /* Trekstor Surftab Wintron 7.0 ST70416-6, newer BIOS */ 15938c2ecf20Sopenharmony_ci .driver_data = (void *)&trekstor_surftab_wintron70_data, 15948c2ecf20Sopenharmony_ci .matches = { 15958c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "TrekStor"), 15968c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "SurfTab wintron 7.0 ST70416-6"), 15978c2ecf20Sopenharmony_ci /* Exact match, different versions need different fw */ 15988c2ecf20Sopenharmony_ci DMI_MATCH(DMI_BIOS_VERSION, "TREK.G.WI71C.JGBMRBA05"), 15998c2ecf20Sopenharmony_ci }, 16008c2ecf20Sopenharmony_ci }, 16018c2ecf20Sopenharmony_ci { 16028c2ecf20Sopenharmony_ci /* Trekstor Yourbook C11B (same touchscreen as the Primebook C11) */ 16038c2ecf20Sopenharmony_ci .driver_data = (void *)&trekstor_primebook_c11_data, 16048c2ecf20Sopenharmony_ci .matches = { 16058c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "TREKSTOR"), 16068c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "YOURBOOK C11B"), 16078c2ecf20Sopenharmony_ci }, 16088c2ecf20Sopenharmony_ci }, 16098c2ecf20Sopenharmony_ci { 16108c2ecf20Sopenharmony_ci /* Vinga Twizzle J116 */ 16118c2ecf20Sopenharmony_ci .driver_data = (void *)&vinga_twizzle_j116_data, 16128c2ecf20Sopenharmony_ci .matches = { 16138c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "VINGA Twizzle J116"), 16148c2ecf20Sopenharmony_ci }, 16158c2ecf20Sopenharmony_ci }, 16168c2ecf20Sopenharmony_ci { 16178c2ecf20Sopenharmony_ci /* "WinBook TW100" */ 16188c2ecf20Sopenharmony_ci .driver_data = (void *)&gdix1001_00_upside_down_data, 16198c2ecf20Sopenharmony_ci .matches = { 16208c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "WinBook"), 16218c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "TW100") 16228c2ecf20Sopenharmony_ci } 16238c2ecf20Sopenharmony_ci }, 16248c2ecf20Sopenharmony_ci { 16258c2ecf20Sopenharmony_ci /* WinBook TW700 */ 16268c2ecf20Sopenharmony_ci .driver_data = (void *)&gdix1001_00_upside_down_data, 16278c2ecf20Sopenharmony_ci .matches = { 16288c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "WinBook"), 16298c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "TW700") 16308c2ecf20Sopenharmony_ci }, 16318c2ecf20Sopenharmony_ci }, 16328c2ecf20Sopenharmony_ci { 16338c2ecf20Sopenharmony_ci /* Yours Y8W81, same case and touchscreen as Chuwi Vi8 */ 16348c2ecf20Sopenharmony_ci .driver_data = (void *)&chuwi_vi8_data, 16358c2ecf20Sopenharmony_ci .matches = { 16368c2ecf20Sopenharmony_ci DMI_MATCH(DMI_SYS_VENDOR, "YOURS"), 16378c2ecf20Sopenharmony_ci DMI_MATCH(DMI_PRODUCT_NAME, "Y8W81"), 16388c2ecf20Sopenharmony_ci }, 16398c2ecf20Sopenharmony_ci }, 16408c2ecf20Sopenharmony_ci { } 16418c2ecf20Sopenharmony_ci}; 16428c2ecf20Sopenharmony_ci 16438c2ecf20Sopenharmony_cistatic const struct ts_dmi_data *ts_data; 16448c2ecf20Sopenharmony_ci 16458c2ecf20Sopenharmony_cistatic void ts_dmi_add_props(struct i2c_client *client) 16468c2ecf20Sopenharmony_ci{ 16478c2ecf20Sopenharmony_ci struct device *dev = &client->dev; 16488c2ecf20Sopenharmony_ci int error; 16498c2ecf20Sopenharmony_ci 16508c2ecf20Sopenharmony_ci if (has_acpi_companion(dev) && 16518c2ecf20Sopenharmony_ci !strncmp(ts_data->acpi_name, client->name, I2C_NAME_SIZE)) { 16528c2ecf20Sopenharmony_ci error = device_add_properties(dev, ts_data->properties); 16538c2ecf20Sopenharmony_ci if (error) 16548c2ecf20Sopenharmony_ci dev_err(dev, "failed to add properties: %d\n", error); 16558c2ecf20Sopenharmony_ci } 16568c2ecf20Sopenharmony_ci} 16578c2ecf20Sopenharmony_ci 16588c2ecf20Sopenharmony_cistatic int ts_dmi_notifier_call(struct notifier_block *nb, 16598c2ecf20Sopenharmony_ci unsigned long action, void *data) 16608c2ecf20Sopenharmony_ci{ 16618c2ecf20Sopenharmony_ci struct device *dev = data; 16628c2ecf20Sopenharmony_ci struct i2c_client *client; 16638c2ecf20Sopenharmony_ci 16648c2ecf20Sopenharmony_ci switch (action) { 16658c2ecf20Sopenharmony_ci case BUS_NOTIFY_ADD_DEVICE: 16668c2ecf20Sopenharmony_ci client = i2c_verify_client(dev); 16678c2ecf20Sopenharmony_ci if (client) 16688c2ecf20Sopenharmony_ci ts_dmi_add_props(client); 16698c2ecf20Sopenharmony_ci break; 16708c2ecf20Sopenharmony_ci 16718c2ecf20Sopenharmony_ci default: 16728c2ecf20Sopenharmony_ci break; 16738c2ecf20Sopenharmony_ci } 16748c2ecf20Sopenharmony_ci 16758c2ecf20Sopenharmony_ci return 0; 16768c2ecf20Sopenharmony_ci} 16778c2ecf20Sopenharmony_ci 16788c2ecf20Sopenharmony_cistatic struct notifier_block ts_dmi_notifier = { 16798c2ecf20Sopenharmony_ci .notifier_call = ts_dmi_notifier_call, 16808c2ecf20Sopenharmony_ci}; 16818c2ecf20Sopenharmony_ci 16828c2ecf20Sopenharmony_cistatic int __init ts_dmi_init(void) 16838c2ecf20Sopenharmony_ci{ 16848c2ecf20Sopenharmony_ci const struct dmi_system_id *dmi_id; 16858c2ecf20Sopenharmony_ci int error; 16868c2ecf20Sopenharmony_ci 16878c2ecf20Sopenharmony_ci dmi_id = dmi_first_match(touchscreen_dmi_table); 16888c2ecf20Sopenharmony_ci if (!dmi_id) 16898c2ecf20Sopenharmony_ci return 0; /* Not an error */ 16908c2ecf20Sopenharmony_ci 16918c2ecf20Sopenharmony_ci ts_data = dmi_id->driver_data; 16928c2ecf20Sopenharmony_ci /* Some dmi table entries only provide an efi_embedded_fw_desc */ 16938c2ecf20Sopenharmony_ci if (!ts_data->properties) 16948c2ecf20Sopenharmony_ci return 0; 16958c2ecf20Sopenharmony_ci 16968c2ecf20Sopenharmony_ci error = bus_register_notifier(&i2c_bus_type, &ts_dmi_notifier); 16978c2ecf20Sopenharmony_ci if (error) 16988c2ecf20Sopenharmony_ci pr_err("%s: failed to register i2c bus notifier: %d\n", 16998c2ecf20Sopenharmony_ci __func__, error); 17008c2ecf20Sopenharmony_ci 17018c2ecf20Sopenharmony_ci return error; 17028c2ecf20Sopenharmony_ci} 17038c2ecf20Sopenharmony_ci 17048c2ecf20Sopenharmony_ci/* 17058c2ecf20Sopenharmony_ci * We are registering out notifier after i2c core is initialized and i2c bus 17068c2ecf20Sopenharmony_ci * itself is ready (which happens at postcore initcall level), but before 17078c2ecf20Sopenharmony_ci * ACPI starts enumerating devices (at subsys initcall level). 17088c2ecf20Sopenharmony_ci */ 17098c2ecf20Sopenharmony_ciarch_initcall(ts_dmi_init); 1710