2017-01-23 20:35:30 +03:00
/*
2018-06-09 00:45:58 +03:00
* Touchscreen driver DMI based configuration code
2017-01-23 20:35:30 +03:00
*
* Copyright ( c ) 2017 Red Hat Inc .
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 2 of the License , or
* ( at your option ) any later version .
*
* Red Hat authors :
* Hans de Goede < hdegoede @ redhat . com >
*/
# include <linux/acpi.h>
# include <linux/device.h>
# include <linux/dmi.h>
# include <linux/i2c.h>
# include <linux/notifier.h>
# include <linux/property.h>
# include <linux/string.h>
2018-06-09 00:45:58 +03:00
struct ts_dmi_data {
2017-01-23 20:35:30 +03:00
const char * acpi_name ;
2017-03-22 18:55:53 +03:00
const struct property_entry * properties ;
2017-01-23 20:35:30 +03:00
} ;
2018-06-09 00:45:56 +03:00
/* NOTE: Please keep all entries sorted alphabetically */
static const struct property_entry chuwi_hi8_props [ ] = {
PROPERTY_ENTRY_U32 ( " touchscreen-size-x " , 1665 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-y " , 1140 ) ,
2017-01-23 20:35:30 +03:00
PROPERTY_ENTRY_BOOL ( " touchscreen-swapped-x-y " ) ,
2018-06-09 00:45:56 +03:00
PROPERTY_ENTRY_BOOL ( " silead,home-button " ) ,
PROPERTY_ENTRY_STRING ( " firmware-name " , " gsl1680-chuwi-hi8.fw " ) ,
2017-01-23 20:35:30 +03:00
{ }
} ;
2018-06-09 00:45:58 +03:00
static const struct ts_dmi_data chuwi_hi8_data = {
2018-06-09 00:45:56 +03:00
. acpi_name = " MSSL0001:00 " ,
. properties = chuwi_hi8_props ,
2017-01-23 20:35:30 +03:00
} ;
2019-02-03 21:34:23 +03:00
static const struct property_entry chuwi_hi8_air_props [ ] = {
PROPERTY_ENTRY_U32 ( " touchscreen-size-x " , 1728 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-y " , 1148 ) ,
PROPERTY_ENTRY_BOOL ( " touchscreen-swapped-x-y " ) ,
PROPERTY_ENTRY_STRING ( " firmware-name " , " gsl3676-chuwi-hi8-air.fw " ) ,
PROPERTY_ENTRY_U32 ( " silead,max-fingers " , 10 ) ,
{ }
} ;
static const struct ts_dmi_data chuwi_hi8_air_data = {
. acpi_name = " MSSL1680:00 " ,
. properties = chuwi_hi8_air_props ,
} ;
2018-06-09 00:45:56 +03:00
static const struct property_entry chuwi_hi8_pro_props [ ] = {
2018-10-20 13:21:00 +03:00
PROPERTY_ENTRY_U32 ( " touchscreen-min-x " , 6 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-min-y " , 3 ) ,
2018-06-09 00:45:56 +03:00
PROPERTY_ENTRY_U32 ( " touchscreen-size-x " , 1728 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-y " , 1148 ) ,
2017-01-23 20:35:30 +03:00
PROPERTY_ENTRY_BOOL ( " touchscreen-swapped-x-y " ) ,
2018-06-09 00:45:56 +03:00
PROPERTY_ENTRY_STRING ( " firmware-name " , " gsl3680-chuwi-hi8-pro.fw " ) ,
2018-10-20 13:21:00 +03:00
PROPERTY_ENTRY_U32 ( " silead,max-fingers " , 10 ) ,
2018-06-09 00:45:56 +03:00
PROPERTY_ENTRY_BOOL ( " silead,home-button " ) ,
2017-01-23 20:35:30 +03:00
{ }
} ;
2018-06-09 00:45:58 +03:00
static const struct ts_dmi_data chuwi_hi8_pro_data = {
2017-01-23 20:35:30 +03:00
. acpi_name = " MSSL1680:00 " ,
2018-06-09 00:45:56 +03:00
. properties = chuwi_hi8_pro_props ,
2017-01-23 20:35:30 +03:00
} ;
2019-03-03 16:47:27 +03:00
static const struct property_entry chuwi_hi10_air_props [ ] = {
PROPERTY_ENTRY_U32 ( " touchscreen-size-x " , 1981 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-y " , 1271 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-min-x " , 99 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-min-y " , 9 ) ,
PROPERTY_ENTRY_BOOL ( " touchscreen-swapped-x-y " ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-fuzz-x " , 5 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-fuzz-y " , 4 ) ,
PROPERTY_ENTRY_STRING ( " firmware-name " , " gsl1680-chuwi-hi10-air.fw " ) ,
PROPERTY_ENTRY_U32 ( " silead,max-fingers " , 10 ) ,
PROPERTY_ENTRY_BOOL ( " silead,home-button " ) ,
{ }
} ;
static const struct ts_dmi_data chuwi_hi10_air_data = {
. acpi_name = " MSSL1680:00 " ,
. properties = chuwi_hi10_air_props ,
} ;
2018-06-09 00:45:56 +03:00
static const struct property_entry chuwi_vi8_props [ ] = {
2018-10-20 13:21:00 +03:00
PROPERTY_ENTRY_U32 ( " touchscreen-min-x " , 4 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-min-y " , 6 ) ,
2018-06-09 00:45:56 +03:00
PROPERTY_ENTRY_U32 ( " touchscreen-size-x " , 1724 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-y " , 1140 ) ,
PROPERTY_ENTRY_BOOL ( " touchscreen-swapped-x-y " ) ,
PROPERTY_ENTRY_STRING ( " firmware-name " , " gsl3676-chuwi-vi8.fw " ) ,
2018-05-30 13:43:39 +03:00
PROPERTY_ENTRY_U32 ( " silead,max-fingers " , 10 ) ,
PROPERTY_ENTRY_BOOL ( " silead,home-button " ) ,
{ }
} ;
2018-06-09 00:45:58 +03:00
static const struct ts_dmi_data chuwi_vi8_data = {
2018-06-09 00:45:56 +03:00
. acpi_name = " MSSL1680:00 " ,
. properties = chuwi_vi8_props ,
} ;
2018-06-09 00:45:57 +03:00
static const struct property_entry chuwi_vi10_props [ ] = {
PROPERTY_ENTRY_U32 ( " touchscreen-min-x " , 0 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-min-y " , 4 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-x " , 1858 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-y " , 1280 ) ,
PROPERTY_ENTRY_STRING ( " firmware-name " , " gsl3680-chuwi-vi10.fw " ) ,
PROPERTY_ENTRY_U32 ( " silead,max-fingers " , 10 ) ,
PROPERTY_ENTRY_BOOL ( " silead,home-button " ) ,
{ }
} ;
2018-06-09 00:45:58 +03:00
static const struct ts_dmi_data chuwi_vi10_data = {
2018-06-09 00:45:57 +03:00
. acpi_name = " MSSL0002:00 " ,
. properties = chuwi_vi10_props ,
} ;
2018-07-01 12:32:56 +03:00
static const struct property_entry connect_tablet9_props [ ] = {
PROPERTY_ENTRY_U32 ( " touchscreen-min-x " , 9 ) ,
2018-10-20 13:21:00 +03:00
PROPERTY_ENTRY_U32 ( " touchscreen-min-y " , 10 ) ,
2018-07-01 12:32:56 +03:00
PROPERTY_ENTRY_U32 ( " touchscreen-size-x " , 1664 ) ,
2018-10-20 13:21:00 +03:00
PROPERTY_ENTRY_U32 ( " touchscreen-size-y " , 880 ) ,
2018-07-01 12:32:56 +03:00
PROPERTY_ENTRY_BOOL ( " touchscreen-inverted-y " ) ,
PROPERTY_ENTRY_BOOL ( " touchscreen-swapped-x-y " ) ,
PROPERTY_ENTRY_STRING ( " firmware-name " , " gsl1680-connect-tablet9.fw " ) ,
PROPERTY_ENTRY_U32 ( " silead,max-fingers " , 10 ) ,
{ }
} ;
static const struct ts_dmi_data connect_tablet9_data = {
. acpi_name = " MSSL1680:00 " ,
. properties = connect_tablet9_props ,
} ;
2018-06-09 00:45:56 +03:00
static const struct property_entry cube_iwork8_air_props [ ] = {
2018-10-20 13:21:00 +03:00
PROPERTY_ENTRY_U32 ( " touchscreen-min-x " , 1 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-min-y " , 3 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-x " , 1664 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-y " , 896 ) ,
2018-06-09 00:45:56 +03:00
PROPERTY_ENTRY_BOOL ( " touchscreen-swapped-x-y " ) ,
PROPERTY_ENTRY_STRING ( " firmware-name " , " gsl3670-cube-iwork8-air.fw " ) ,
PROPERTY_ENTRY_U32 ( " silead,max-fingers " , 10 ) ,
{ }
} ;
2018-06-09 00:45:58 +03:00
static const struct ts_dmi_data cube_iwork8_air_data = {
2018-05-30 13:43:39 +03:00
. acpi_name = " MSSL1680:00 " ,
2018-06-09 00:45:56 +03:00
. properties = cube_iwork8_air_props ,
2018-05-30 13:43:39 +03:00
} ;
2018-07-31 12:32:56 +03:00
static const struct property_entry cube_knote_i1101_props [ ] = {
PROPERTY_ENTRY_U32 ( " touchscreen-min-x " , 20 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-min-y " , 22 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-x " , 1961 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-y " , 1513 ) ,
PROPERTY_ENTRY_STRING ( " firmware-name " , " gsl3692-cube-knote-i1101.fw " ) ,
PROPERTY_ENTRY_U32 ( " silead,max-fingers " , 10 ) ,
PROPERTY_ENTRY_BOOL ( " silead,home-button " ) ,
{ }
} ;
static const struct ts_dmi_data cube_knote_i1101_data = {
. acpi_name = " MSSL1680:00 " ,
. properties = cube_knote_i1101_props ,
} ;
2017-03-22 18:55:54 +03:00
static const struct property_entry dexp_ursus_7w_props [ ] = {
PROPERTY_ENTRY_U32 ( " touchscreen-size-x " , 890 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-y " , 630 ) ,
PROPERTY_ENTRY_STRING ( " firmware-name " , " gsl1686-dexp-ursus-7w.fw " ) ,
PROPERTY_ENTRY_U32 ( " silead,max-fingers " , 10 ) ,
2017-10-19 10:17:28 +03:00
PROPERTY_ENTRY_BOOL ( " silead,home-button " ) ,
2017-03-22 18:55:54 +03:00
{ }
} ;
2018-06-09 00:45:58 +03:00
static const struct ts_dmi_data dexp_ursus_7w_data = {
2017-03-22 18:55:54 +03:00
. acpi_name = " MSSL1680:00 " ,
. properties = dexp_ursus_7w_props ,
} ;
2018-06-09 00:45:56 +03:00
static const struct property_entry digma_citi_e200_props [ ] = {
PROPERTY_ENTRY_U32 ( " touchscreen-size-x " , 1980 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-y " , 1500 ) ,
PROPERTY_ENTRY_BOOL ( " touchscreen-inverted-y " ) ,
2017-04-09 12:07:44 +03:00
PROPERTY_ENTRY_STRING ( " firmware-name " ,
2018-06-09 00:45:56 +03:00
" gsl1686-digma_citi_e200.fw " ) ,
2017-04-09 12:07:44 +03:00
PROPERTY_ENTRY_U32 ( " silead,max-fingers " , 10 ) ,
2017-10-19 10:17:28 +03:00
PROPERTY_ENTRY_BOOL ( " silead,home-button " ) ,
2017-04-09 12:07:44 +03:00
{ }
} ;
2018-06-09 00:45:58 +03:00
static const struct ts_dmi_data digma_citi_e200_data = {
2017-04-09 12:07:44 +03:00
. acpi_name = " MSSL1680:00 " ,
2018-06-09 00:45:56 +03:00
. properties = digma_citi_e200_props ,
2017-04-09 12:07:44 +03:00
} ;
2017-05-07 15:35:15 +03:00
static const struct property_entry gp_electronic_t701_props [ ] = {
PROPERTY_ENTRY_U32 ( " touchscreen-size-x " , 960 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-y " , 640 ) ,
2017-10-19 10:44:14 +03:00
PROPERTY_ENTRY_BOOL ( " touchscreen-inverted-x " ) ,
PROPERTY_ENTRY_BOOL ( " touchscreen-inverted-y " ) ,
2017-05-07 15:35:15 +03:00
PROPERTY_ENTRY_STRING ( " firmware-name " ,
" gsl1680-gp-electronic-t701.fw " ) ,
{ }
} ;
2018-06-09 00:45:58 +03:00
static const struct ts_dmi_data gp_electronic_t701_data = {
2017-05-07 15:35:15 +03:00
. acpi_name = " MSSL1680:00 " ,
. properties = gp_electronic_t701_props ,
} ;
2018-06-09 00:45:56 +03:00
static const struct property_entry itworks_tw891_props [ ] = {
2018-10-20 13:21:00 +03:00
PROPERTY_ENTRY_U32 ( " touchscreen-min-x " , 1 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-min-y " , 5 ) ,
2018-06-09 00:45:56 +03:00
PROPERTY_ENTRY_U32 ( " touchscreen-size-x " , 1600 ) ,
2018-10-20 13:21:00 +03:00
PROPERTY_ENTRY_U32 ( " touchscreen-size-y " , 896 ) ,
2018-06-09 00:45:56 +03:00
PROPERTY_ENTRY_BOOL ( " touchscreen-inverted-y " ) ,
2017-06-15 09:48:32 +03:00
PROPERTY_ENTRY_BOOL ( " touchscreen-swapped-x-y " ) ,
2018-06-09 00:45:56 +03:00
PROPERTY_ENTRY_STRING ( " firmware-name " , " gsl3670-itworks-tw891.fw " ) ,
2018-10-20 13:21:00 +03:00
PROPERTY_ENTRY_U32 ( " silead,max-fingers " , 10 ) ,
2017-06-15 09:48:32 +03:00
{ }
} ;
2018-06-09 00:45:58 +03:00
static const struct ts_dmi_data itworks_tw891_data = {
2017-06-15 09:48:32 +03:00
. acpi_name = " MSSL1680:00 " ,
2018-06-09 00:45:56 +03:00
. properties = itworks_tw891_props ,
2017-06-15 09:48:32 +03:00
} ;
2018-06-09 00:45:56 +03:00
static const struct property_entry jumper_ezpad_6_pro_props [ ] = {
PROPERTY_ENTRY_U32 ( " touchscreen-size-x " , 1980 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-y " , 1500 ) ,
PROPERTY_ENTRY_STRING ( " firmware-name " , " gsl3692-jumper-ezpad-6-pro.fw " ) ,
2018-05-30 13:43:40 +03:00
PROPERTY_ENTRY_U32 ( " silead,max-fingers " , 10 ) ,
PROPERTY_ENTRY_BOOL ( " silead,home-button " ) ,
{ }
} ;
2018-06-09 00:45:58 +03:00
static const struct ts_dmi_data jumper_ezpad_6_pro_data = {
2018-05-30 13:43:40 +03:00
. acpi_name = " MSSL1680:00 " ,
2018-06-09 00:45:56 +03:00
. properties = jumper_ezpad_6_pro_props ,
2018-05-30 13:43:40 +03:00
} ;
2018-06-09 00:45:56 +03:00
static const struct property_entry jumper_ezpad_mini3_props [ ] = {
2018-10-20 13:21:00 +03:00
PROPERTY_ENTRY_U32 ( " touchscreen-min-x " , 23 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-min-y " , 16 ) ,
2018-06-09 00:45:56 +03:00
PROPERTY_ENTRY_U32 ( " touchscreen-size-x " , 1700 ) ,
2018-10-20 13:21:00 +03:00
PROPERTY_ENTRY_U32 ( " touchscreen-size-y " , 1138 ) ,
2017-06-15 09:48:31 +03:00
PROPERTY_ENTRY_BOOL ( " touchscreen-swapped-x-y " ) ,
2018-06-09 00:45:56 +03:00
PROPERTY_ENTRY_STRING ( " firmware-name " , " gsl3676-jumper-ezpad-mini3.fw " ) ,
PROPERTY_ENTRY_U32 ( " silead,max-fingers " , 10 ) ,
2017-07-01 13:15:22 +03:00
{ }
} ;
2018-06-09 00:45:58 +03:00
static const struct ts_dmi_data jumper_ezpad_mini3_data = {
2017-07-01 13:15:22 +03:00
. acpi_name = " MSSL1680:00 " ,
2018-06-09 00:45:56 +03:00
. properties = jumper_ezpad_mini3_props ,
2017-07-01 13:15:22 +03:00
} ;
2018-06-09 00:45:56 +03:00
static const struct property_entry onda_obook_20_plus_props [ ] = {
2017-10-04 16:30:12 +03:00
PROPERTY_ENTRY_U32 ( " touchscreen-size-x " , 1728 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-y " , 1148 ) ,
2018-06-09 00:45:56 +03:00
PROPERTY_ENTRY_BOOL ( " touchscreen-inverted-x " ) ,
PROPERTY_ENTRY_BOOL ( " touchscreen-inverted-y " ) ,
2017-10-04 16:30:12 +03:00
PROPERTY_ENTRY_BOOL ( " touchscreen-swapped-x-y " ) ,
2018-06-09 00:45:56 +03:00
PROPERTY_ENTRY_STRING ( " firmware-name " , " gsl3676-onda-obook-20-plus.fw " ) ,
PROPERTY_ENTRY_U32 ( " silead,max-fingers " , 10 ) ,
2017-10-19 10:17:28 +03:00
PROPERTY_ENTRY_BOOL ( " silead,home-button " ) ,
2017-10-04 16:30:12 +03:00
{ }
} ;
2018-06-09 00:45:58 +03:00
static const struct ts_dmi_data onda_obook_20_plus_data = {
2017-10-04 16:30:12 +03:00
. acpi_name = " MSSL1680:00 " ,
2018-06-09 00:45:56 +03:00
. properties = onda_obook_20_plus_props ,
2017-10-04 16:30:12 +03:00
} ;
2018-10-10 16:16:40 +03:00
static const struct property_entry onda_v80_plus_v3_props [ ] = {
PROPERTY_ENTRY_U32 ( " touchscreen-min-x " , 22 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-min-y " , 15 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-x " , 1698 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-y " , 1140 ) ,
PROPERTY_ENTRY_BOOL ( " touchscreen-swapped-x-y " ) ,
PROPERTY_ENTRY_STRING ( " firmware-name " ,
" gsl3676-onda-v80-plus-v3.fw " ) ,
PROPERTY_ENTRY_U32 ( " silead,max-fingers " , 10 ) ,
PROPERTY_ENTRY_BOOL ( " silead,home-button " ) ,
{ }
} ;
static const struct ts_dmi_data onda_v80_plus_v3_data = {
. acpi_name = " MSSL1680:00 " ,
. properties = onda_v80_plus_v3_props ,
} ;
2018-07-02 00:47:14 +03:00
static const struct property_entry onda_v820w_32g_props [ ] = {
PROPERTY_ENTRY_U32 ( " touchscreen-size-x " , 1665 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-y " , 1140 ) ,
PROPERTY_ENTRY_BOOL ( " touchscreen-swapped-x-y " ) ,
PROPERTY_ENTRY_STRING ( " firmware-name " ,
" gsl1680-onda-v820w-32g.fw " ) ,
PROPERTY_ENTRY_U32 ( " silead,max-fingers " , 10 ) ,
PROPERTY_ENTRY_BOOL ( " silead,home-button " ) ,
{ }
} ;
static const struct ts_dmi_data onda_v820w_32g_data = {
. acpi_name = " MSSL1680:00 " ,
. properties = onda_v820w_32g_props ,
} ;
2018-06-09 00:45:56 +03:00
static const struct property_entry onda_v891w_v1_props [ ] = {
PROPERTY_ENTRY_U32 ( " touchscreen-min-x " , 46 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-min-y " , 8 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-x " , 1676 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-y " , 1130 ) ,
2017-10-27 13:27:07 +03:00
PROPERTY_ENTRY_STRING ( " firmware-name " ,
2018-06-09 00:45:56 +03:00
" gsl3680-onda-v891w-v1.fw " ) ,
2017-10-27 13:27:07 +03:00
PROPERTY_ENTRY_U32 ( " silead,max-fingers " , 10 ) ,
PROPERTY_ENTRY_BOOL ( " silead,home-button " ) ,
{ }
} ;
2018-06-09 00:45:58 +03:00
static const struct ts_dmi_data onda_v891w_v1_data = {
2017-10-27 13:27:07 +03:00
. acpi_name = " MSSL1680:00 " ,
2018-06-09 00:45:56 +03:00
. properties = onda_v891w_v1_props ,
2017-10-27 13:27:07 +03:00
} ;
2018-06-18 16:11:44 +03:00
static const struct property_entry onda_v891w_v3_props [ ] = {
PROPERTY_ENTRY_U32 ( " touchscreen-min-x " , 35 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-min-y " , 15 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-x " , 1625 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-y " , 1135 ) ,
PROPERTY_ENTRY_BOOL ( " touchscreen-inverted-y " ) ,
PROPERTY_ENTRY_STRING ( " firmware-name " ,
" gsl3676-onda-v891w-v3.fw " ) ,
PROPERTY_ENTRY_U32 ( " silead,max-fingers " , 10 ) ,
PROPERTY_ENTRY_BOOL ( " silead,home-button " ) ,
{ }
} ;
static const struct ts_dmi_data onda_v891w_v3_data = {
. acpi_name = " MSSL1680:00 " ,
. properties = onda_v891w_v3_props ,
} ;
2018-06-09 00:45:56 +03:00
static const struct property_entry pipo_w2s_props [ ] = {
PROPERTY_ENTRY_U32 ( " touchscreen-size-x " , 1660 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-y " , 880 ) ,
2017-12-11 01:02:13 +03:00
PROPERTY_ENTRY_BOOL ( " touchscreen-inverted-x " ) ,
PROPERTY_ENTRY_BOOL ( " touchscreen-swapped-x-y " ) ,
2018-06-09 00:45:56 +03:00
PROPERTY_ENTRY_STRING ( " firmware-name " ,
" gsl1680-pipo-w2s.fw " ) ,
2017-12-11 01:02:13 +03:00
{ }
} ;
2018-06-09 00:45:58 +03:00
static const struct ts_dmi_data pipo_w2s_data = {
2017-12-11 01:02:13 +03:00
. acpi_name = " MSSL1680:00 " ,
2018-06-09 00:45:56 +03:00
. properties = pipo_w2s_props ,
2017-12-11 01:02:13 +03:00
} ;
2018-06-09 00:45:56 +03:00
static const struct property_entry pov_mobii_wintab_p800w_v20_props [ ] = {
PROPERTY_ENTRY_U32 ( " touchscreen-min-x " , 32 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-min-y " , 16 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-x " , 1692 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-y " , 1146 ) ,
2017-12-20 13:30:08 +03:00
PROPERTY_ENTRY_BOOL ( " touchscreen-swapped-x-y " ) ,
2018-06-09 00:45:56 +03:00
PROPERTY_ENTRY_STRING ( " firmware-name " ,
" gsl3680-pov-mobii-wintab-p800w-v20.fw " ) ,
PROPERTY_ENTRY_U32 ( " silead,max-fingers " , 10 ) ,
2017-12-20 13:30:08 +03:00
PROPERTY_ENTRY_BOOL ( " silead,home-button " ) ,
{ }
} ;
2018-06-09 00:45:58 +03:00
static const struct ts_dmi_data pov_mobii_wintab_p800w_v20_data = {
2018-06-09 00:45:56 +03:00
. acpi_name = " MSSL1680:00 " ,
. properties = pov_mobii_wintab_p800w_v20_props ,
2017-12-20 13:30:08 +03:00
} ;
2018-06-09 00:45:56 +03:00
static const struct property_entry pov_mobii_wintab_p800w_v21_props [ ] = {
2018-10-20 13:21:00 +03:00
PROPERTY_ENTRY_U32 ( " touchscreen-min-x " , 1 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-min-y " , 8 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-x " , 1794 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-y " , 1148 ) ,
2017-12-20 13:30:09 +03:00
PROPERTY_ENTRY_BOOL ( " touchscreen-swapped-x-y " ) ,
2018-06-09 00:45:56 +03:00
PROPERTY_ENTRY_STRING ( " firmware-name " ,
" gsl3692-pov-mobii-wintab-p800w.fw " ) ,
2018-10-20 13:21:00 +03:00
PROPERTY_ENTRY_U32 ( " silead,max-fingers " , 10 ) ,
2017-12-20 13:30:09 +03:00
PROPERTY_ENTRY_BOOL ( " silead,home-button " ) ,
{ }
} ;
2018-06-09 00:45:58 +03:00
static const struct ts_dmi_data pov_mobii_wintab_p800w_v21_data = {
2018-06-09 00:45:56 +03:00
. acpi_name = " MSSL1680:00 " ,
. properties = pov_mobii_wintab_p800w_v21_props ,
2017-12-20 13:30:09 +03:00
} ;
2018-12-21 00:21:50 +03:00
static const struct property_entry pov_mobii_wintab_p1006w_v10_props [ ] = {
PROPERTY_ENTRY_U32 ( " touchscreen-min-x " , 1 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-min-y " , 3 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-x " , 1984 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-y " , 1520 ) ,
PROPERTY_ENTRY_BOOL ( " touchscreen-inverted-y " ) ,
PROPERTY_ENTRY_STRING ( " firmware-name " ,
" gsl3692-pov-mobii-wintab-p1006w-v10.fw " ) ,
PROPERTY_ENTRY_U32 ( " silead,max-fingers " , 10 ) ,
PROPERTY_ENTRY_BOOL ( " silead,home-button " ) ,
{ }
} ;
static const struct ts_dmi_data pov_mobii_wintab_p1006w_v10_data = {
. acpi_name = " MSSL1680:00 " ,
. properties = pov_mobii_wintab_p1006w_v10_props ,
} ;
2018-06-09 00:45:56 +03:00
static const struct property_entry teclast_x3_plus_props [ ] = {
PROPERTY_ENTRY_U32 ( " touchscreen-size-x " , 1980 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-y " , 1500 ) ,
PROPERTY_ENTRY_STRING ( " firmware-name " , " gsl1680-teclast-x3-plus.fw " ) ,
2017-12-25 15:45:25 +03:00
PROPERTY_ENTRY_U32 ( " silead,max-fingers " , 10 ) ,
PROPERTY_ENTRY_BOOL ( " silead,home-button " ) ,
{ }
} ;
2018-06-09 00:45:58 +03:00
static const struct ts_dmi_data teclast_x3_plus_data = {
2017-12-25 15:45:25 +03:00
. acpi_name = " MSSL1680:00 " ,
2018-06-09 00:45:56 +03:00
. properties = teclast_x3_plus_props ,
2017-12-25 15:45:25 +03:00
} ;
2018-01-02 21:39:27 +03:00
static const struct property_entry teclast_x98plus2_props [ ] = {
PROPERTY_ENTRY_U32 ( " touchscreen-size-x " , 2048 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-y " , 1280 ) ,
PROPERTY_ENTRY_BOOL ( " touchscreen-inverted-x " ) ,
PROPERTY_ENTRY_BOOL ( " touchscreen-inverted-y " ) ,
PROPERTY_ENTRY_STRING ( " firmware-name " ,
" gsl1686-teclast_x98plus2.fw " ) ,
PROPERTY_ENTRY_U32 ( " silead,max-fingers " , 10 ) ,
{ }
} ;
2018-06-09 00:45:58 +03:00
static const struct ts_dmi_data teclast_x98plus2_data = {
2018-01-02 21:39:27 +03:00
. acpi_name = " MSSL1680:00 " ,
. properties = teclast_x98plus2_props ,
} ;
2018-10-04 15:34:45 +03:00
static const struct property_entry trekstor_primebook_c11_props [ ] = {
PROPERTY_ENTRY_U32 ( " touchscreen-size-x " , 1970 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-y " , 1530 ) ,
PROPERTY_ENTRY_BOOL ( " touchscreen-inverted-y " ) ,
PROPERTY_ENTRY_STRING ( " firmware-name " ,
" gsl1680-trekstor-primebook-c11.fw " ) ,
PROPERTY_ENTRY_U32 ( " silead,max-fingers " , 10 ) ,
PROPERTY_ENTRY_BOOL ( " silead,home-button " ) ,
{ }
} ;
static const struct ts_dmi_data trekstor_primebook_c11_data = {
. acpi_name = " MSSL1680:00 " ,
. properties = trekstor_primebook_c11_props ,
} ;
2018-06-09 00:45:56 +03:00
static const struct property_entry trekstor_primebook_c13_props [ ] = {
PROPERTY_ENTRY_U32 ( " touchscreen-size-x " , 2624 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-y " , 1920 ) ,
PROPERTY_ENTRY_STRING ( " firmware-name " ,
" gsl1680-trekstor-primebook-c13.fw " ) ,
2018-01-23 21:33:38 +03:00
PROPERTY_ENTRY_U32 ( " silead,max-fingers " , 10 ) ,
PROPERTY_ENTRY_BOOL ( " silead,home-button " ) ,
{ }
} ;
2018-06-09 00:45:58 +03:00
static const struct ts_dmi_data trekstor_primebook_c13_data = {
2018-01-23 21:33:38 +03:00
. acpi_name = " MSSL1680:00 " ,
2018-06-09 00:45:56 +03:00
. properties = trekstor_primebook_c13_props ,
2018-01-23 21:33:38 +03:00
} ;
2018-10-08 10:25:05 +03:00
static const struct property_entry trekstor_primetab_t13b_props [ ] = {
PROPERTY_ENTRY_U32 ( " touchscreen-size-x " , 2500 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-y " , 1900 ) ,
PROPERTY_ENTRY_STRING ( " firmware-name " ,
" gsl1680-trekstor-primetab-t13b.fw " ) ,
PROPERTY_ENTRY_U32 ( " silead,max-fingers " , 10 ) ,
PROPERTY_ENTRY_BOOL ( " silead,home-button " ) ,
PROPERTY_ENTRY_BOOL ( " touchscreen-inverted-y " ) ,
{ }
} ;
static const struct ts_dmi_data trekstor_primetab_t13b_data = {
. acpi_name = " MSSL1680:00 " ,
. properties = trekstor_primetab_t13b_props ,
} ;
2018-06-09 00:45:56 +03:00
static const struct property_entry trekstor_surftab_twin_10_1_props [ ] = {
PROPERTY_ENTRY_U32 ( " touchscreen-size-x " , 1900 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-y " , 1280 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-inverted-y " , 1 ) ,
2018-05-30 13:43:41 +03:00
PROPERTY_ENTRY_STRING ( " firmware-name " ,
2018-06-09 00:45:56 +03:00
" gsl3670-surftab-twin-10-1-st10432-8.fw " ) ,
PROPERTY_ENTRY_U32 ( " silead,max-fingers " , 10 ) ,
{ }
} ;
2018-06-09 00:45:58 +03:00
static const struct ts_dmi_data trekstor_surftab_twin_10_1_data = {
2018-06-09 00:45:56 +03:00
. acpi_name = " MSSL1680:00 " ,
. properties = trekstor_surftab_twin_10_1_props ,
} ;
static const struct property_entry trekstor_surftab_wintron70_props [ ] = {
2018-10-20 13:21:00 +03:00
PROPERTY_ENTRY_U32 ( " touchscreen-min-x " , 12 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-min-y " , 8 ) ,
2018-06-09 00:45:56 +03:00
PROPERTY_ENTRY_U32 ( " touchscreen-size-x " , 884 ) ,
PROPERTY_ENTRY_U32 ( " touchscreen-size-y " , 632 ) ,
PROPERTY_ENTRY_STRING ( " firmware-name " ,
" gsl1686-surftab-wintron70-st70416-6.fw " ) ,
2018-05-30 13:43:41 +03:00
PROPERTY_ENTRY_U32 ( " silead,max-fingers " , 10 ) ,
PROPERTY_ENTRY_BOOL ( " silead,home-button " ) ,
{ }
} ;
2018-06-09 00:45:58 +03:00
static const struct ts_dmi_data trekstor_surftab_wintron70_data = {
2018-05-30 13:43:41 +03:00
. acpi_name = " MSSL1680:00 " ,
2018-06-09 00:45:56 +03:00
. properties = trekstor_surftab_wintron70_props ,
2018-05-30 13:43:41 +03:00
} ;
2018-06-09 00:45:56 +03:00
/* NOTE: Please keep this table sorted alphabetically */
2018-06-09 00:45:58 +03:00
static const struct dmi_system_id touchscreen_dmi_table [ ] = {
2018-06-09 00:45:56 +03:00
{
/* Chuwi Hi8 */
. driver_data = ( void * ) & chuwi_hi8_data ,
. matches = {
DMI_MATCH ( DMI_SYS_VENDOR , " ilife " ) ,
DMI_MATCH ( DMI_PRODUCT_NAME , " S806 " ) ,
} ,
} ,
{
/* Chuwi Hi8 (H1D_S806_206) */
. driver_data = ( void * ) & chuwi_hi8_data ,
. matches = {
DMI_MATCH ( DMI_SYS_VENDOR , " Insyde " ) ,
DMI_MATCH ( DMI_PRODUCT_NAME , " BayTrail " ) ,
DMI_MATCH ( DMI_BIOS_VERSION , " H1D_S806_206 " ) ,
} ,
} ,
2019-02-03 21:34:23 +03:00
{
/* Chuwi Hi8 Air (CWI543) */
. driver_data = ( void * ) & chuwi_hi8_air_data ,
. matches = {
DMI_MATCH ( DMI_BOARD_VENDOR , " Default string " ) ,
DMI_MATCH ( DMI_BOARD_NAME , " Cherry Trail CR " ) ,
DMI_MATCH ( DMI_PRODUCT_NAME , " Hi8 Air " ) ,
} ,
} ,
2018-06-09 00:45:56 +03:00
{
/* Chuwi Hi8 Pro (CWI513) */
. driver_data = ( void * ) & chuwi_hi8_pro_data ,
. matches = {
DMI_MATCH ( DMI_SYS_VENDOR , " Hampoo " ) ,
DMI_MATCH ( DMI_PRODUCT_NAME , " X1D3_C806N " ) ,
} ,
} ,
2019-03-03 16:47:27 +03:00
{
/* Chuwi Hi10 Air */
. driver_data = ( void * ) & chuwi_hi10_air_data ,
. matches = {
DMI_MATCH ( DMI_BOARD_VENDOR , " Hampoo " ) ,
DMI_MATCH ( DMI_PRODUCT_SKU , " P1W6_C109D_B " ) ,
} ,
} ,
2018-06-09 00:45:56 +03:00
{
/* Chuwi Vi8 (CWI506) */
. driver_data = ( void * ) & chuwi_vi8_data ,
. matches = {
DMI_MATCH ( DMI_SYS_VENDOR , " Insyde " ) ,
DMI_MATCH ( DMI_PRODUCT_NAME , " i86 " ) ,
DMI_MATCH ( DMI_BIOS_VERSION , " CHUWI.D86JLBNR " ) ,
} ,
} ,
2018-06-09 00:45:57 +03:00
{
/* Chuwi Vi10 (CWI505) */
. driver_data = ( void * ) & chuwi_vi10_data ,
. matches = {
DMI_MATCH ( DMI_BOARD_VENDOR , " Hampoo " ) ,
DMI_MATCH ( DMI_BOARD_NAME , " BYT-PF02 " ) ,
DMI_MATCH ( DMI_SYS_VENDOR , " ilife " ) ,
DMI_MATCH ( DMI_PRODUCT_NAME , " S165 " ) ,
} ,
} ,
2018-07-01 12:32:56 +03:00
{
/* Connect Tablet 9 */
. driver_data = ( void * ) & connect_tablet9_data ,
. matches = {
DMI_MATCH ( DMI_SYS_VENDOR , " Connect " ) ,
DMI_MATCH ( DMI_PRODUCT_NAME , " Tablet 9 " ) ,
} ,
} ,
2017-01-23 20:35:30 +03:00
{
/* CUBE iwork8 Air */
. driver_data = ( void * ) & cube_iwork8_air_data ,
. matches = {
DMI_MATCH ( DMI_SYS_VENDOR , " cube " ) ,
DMI_MATCH ( DMI_PRODUCT_NAME , " i1-TF " ) ,
DMI_MATCH ( DMI_BOARD_NAME , " Cherry Trail CR " ) ,
} ,
} ,
2018-07-31 12:32:56 +03:00
{
/* Cube KNote i1101 */
. driver_data = ( void * ) & cube_knote_i1101_data ,
. matches = {
DMI_MATCH ( DMI_BOARD_VENDOR , " Hampoo " ) ,
DMI_MATCH ( DMI_BOARD_NAME , " L1W6_I1101 " ) ,
DMI_MATCH ( DMI_SYS_VENDOR , " ALLDOCUBE " ) ,
DMI_MATCH ( DMI_PRODUCT_NAME , " i1101 " ) ,
} ,
} ,
2017-01-23 20:35:30 +03:00
{
2018-06-09 00:45:56 +03:00
/* DEXP Ursus 7W */
. driver_data = ( void * ) & dexp_ursus_7w_data ,
2017-01-23 20:35:30 +03:00
. matches = {
DMI_MATCH ( DMI_SYS_VENDOR , " Insyde " ) ,
2018-06-09 00:45:56 +03:00
DMI_MATCH ( DMI_PRODUCT_NAME , " 7W " ) ,
} ,
} ,
{
/* Digma Citi E200 */
. driver_data = ( void * ) & digma_citi_e200_data ,
. matches = {
DMI_MATCH ( DMI_SYS_VENDOR , " Digma " ) ,
DMI_MATCH ( DMI_PRODUCT_NAME , " CITI E200 " ) ,
DMI_MATCH ( DMI_BOARD_NAME , " Cherry Trail CR " ) ,
} ,
} ,
{
/* GP-electronic T701 */
. driver_data = ( void * ) & gp_electronic_t701_data ,
. matches = {
DMI_MATCH ( DMI_SYS_VENDOR , " Insyde " ) ,
DMI_MATCH ( DMI_PRODUCT_NAME , " T701 " ) ,
DMI_MATCH ( DMI_BIOS_VERSION , " BYT70A.YNCHENG.WIN.007 " ) ,
} ,
} ,
{
/* I.T.Works TW701 (same hardware as the Trekstor ST70416-6) */
. driver_data = ( void * ) & trekstor_surftab_wintron70_data ,
. matches = {
DMI_MATCH ( DMI_SYS_VENDOR , " Insyde " ) ,
DMI_MATCH ( DMI_PRODUCT_NAME , " i71c " ) ,
DMI_MATCH ( DMI_BIOS_VERSION , " itWORKS.G.WI71C.JGBMRB " ) ,
} ,
} ,
{
/* I.T.Works TW891 */
. driver_data = ( void * ) & itworks_tw891_data ,
. matches = {
DMI_MATCH ( DMI_SYS_VENDOR , " To be filled by O.E.M. " ) ,
DMI_MATCH ( DMI_PRODUCT_NAME , " TW891 " ) ,
2017-01-23 20:35:30 +03:00
} ,
} ,
2018-05-30 13:43:39 +03:00
{
/* Jumper EZpad 6 Pro */
. driver_data = ( void * ) & jumper_ezpad_6_pro_data ,
. matches = {
DMI_MATCH ( DMI_SYS_VENDOR , " Jumper " ) ,
DMI_MATCH ( DMI_PRODUCT_NAME , " EZpad " ) ,
DMI_MATCH ( DMI_BIOS_VERSION , " 5.12 " ) ,
/* Above matches are too generic, add bios-date match */
DMI_MATCH ( DMI_BIOS_DATE , " 08/18/2017 " ) ,
} ,
} ,
2017-03-22 18:55:54 +03:00
{
2018-06-09 00:45:56 +03:00
/* Jumper EZpad mini3 */
. driver_data = ( void * ) & jumper_ezpad_mini3_data ,
2017-03-22 18:55:54 +03:00
. matches = {
DMI_MATCH ( DMI_SYS_VENDOR , " Insyde " ) ,
2018-06-09 00:45:56 +03:00
/* jumperx.T87.KFBNEEA02 with the version-nr dropped */
DMI_MATCH ( DMI_BIOS_VERSION , " jumperx.T87.KFBNEEA " ) ,
2017-03-22 18:55:54 +03:00
} ,
} ,
2018-12-04 12:20:04 +03:00
{
/* Mediacom Flexbook Edge 11 (same hw as TS Primebook C11) */
. driver_data = ( void * ) & trekstor_primebook_c11_data ,
. matches = {
DMI_MATCH ( DMI_SYS_VENDOR , " MEDIACOM " ) ,
DMI_MATCH ( DMI_PRODUCT_NAME , " FlexBook edge11 - M-FBE11 " ) ,
} ,
} ,
2017-11-26 21:32:58 +03:00
{
2018-06-09 00:45:56 +03:00
/* Onda oBook 20 Plus */
. driver_data = ( void * ) & onda_obook_20_plus_data ,
2017-11-26 21:32:58 +03:00
. matches = {
2018-06-09 00:45:56 +03:00
DMI_MATCH ( DMI_SYS_VENDOR , " ONDA " ) ,
DMI_MATCH ( DMI_PRODUCT_NAME , " OBOOK 20 PLUS " ) ,
2017-11-26 21:32:58 +03:00
} ,
} ,
2018-10-10 16:16:40 +03:00
{
/* ONDA V80 plus v3 (P80PSBG9V3A01501) */
. driver_data = ( void * ) & onda_v80_plus_v3_data ,
. matches = {
DMI_EXACT_MATCH ( DMI_SYS_VENDOR , " ONDA " ) ,
DMI_EXACT_MATCH ( DMI_PRODUCT_NAME , " V80 PLUS " )
} ,
} ,
2018-07-02 00:47:14 +03:00
{
/* ONDA V820w DualOS */
. driver_data = ( void * ) & onda_v820w_32g_data ,
. matches = {
DMI_EXACT_MATCH ( DMI_BOARD_VENDOR , " ONDA " ) ,
DMI_EXACT_MATCH ( DMI_PRODUCT_NAME , " V820w DualOS " )
} ,
} ,
2017-04-09 12:07:44 +03:00
{
2018-06-09 00:45:56 +03:00
/* ONDA V891w revision P891WBEBV1B00 aka v1 */
. driver_data = ( void * ) & onda_v891w_v1_data ,
2017-04-09 12:07:44 +03:00
. matches = {
2018-06-09 00:45:56 +03:00
DMI_EXACT_MATCH ( DMI_BOARD_VENDOR , " ONDA " ) ,
DMI_EXACT_MATCH ( DMI_BOARD_NAME , " ONDA Tablet " ) ,
DMI_EXACT_MATCH ( DMI_BOARD_VERSION , " V001 " ) ,
2017-04-09 12:07:44 +03:00
/* Exact match, different versions need different fw */
2018-06-09 00:45:56 +03:00
DMI_EXACT_MATCH ( DMI_BIOS_VERSION , " ONDA.W89EBBN08 " ) ,
2017-04-09 12:07:44 +03:00
} ,
} ,
2018-06-18 16:11:44 +03:00
{
/* ONDA V891w Dual OS P891DCF2V1A01274 64GB */
. driver_data = ( void * ) & onda_v891w_v3_data ,
. matches = {
DMI_MATCH ( DMI_SYS_VENDOR , " Insyde " ) ,
DMI_MATCH ( DMI_PRODUCT_NAME , " ONDA Tablet " ) ,
DMI_MATCH ( DMI_BIOS_VERSION , " ONDA.D890HBBNR0A " ) ,
} ,
} ,
2018-01-16 22:24:15 +03:00
{
2018-06-09 00:45:56 +03:00
/* Pipo W2S */
. driver_data = ( void * ) & pipo_w2s_data ,
2018-01-16 22:24:15 +03:00
. matches = {
2018-06-09 00:45:56 +03:00
DMI_MATCH ( DMI_SYS_VENDOR , " PIPO " ) ,
DMI_MATCH ( DMI_PRODUCT_NAME , " W2S " ) ,
2018-01-16 22:24:15 +03:00
} ,
} ,
2017-07-12 14:15:11 +03:00
{
/* Ployer Momo7w (same hardware as the Trekstor ST70416-6) */
2018-06-09 00:45:55 +03:00
. driver_data = ( void * ) & trekstor_surftab_wintron70_data ,
2017-07-12 14:15:11 +03:00
. matches = {
DMI_MATCH ( DMI_SYS_VENDOR , " Shenzhen PLOYER " ) ,
DMI_MATCH ( DMI_PRODUCT_NAME , " MOMO7W " ) ,
/* Exact match, different versions need different fw */
DMI_MATCH ( DMI_BIOS_VERSION , " MOMO.G.WI71C.MABMRBA02 " ) ,
} ,
} ,
2017-06-15 09:48:31 +03:00
{
2018-05-30 13:43:40 +03:00
/* Point of View mobii wintab p800w (v2.0) */
. driver_data = ( void * ) & pov_mobii_wintab_p800w_v20_data ,
. matches = {
DMI_MATCH ( DMI_BOARD_VENDOR , " AMI Corporation " ) ,
DMI_MATCH ( DMI_BOARD_NAME , " Aptio CRB " ) ,
DMI_MATCH ( DMI_BIOS_VERSION , " 3BAIR1014 " ) ,
/* Above matches are too generic, add bios-date match */
DMI_MATCH ( DMI_BIOS_DATE , " 10/24/2014 " ) ,
} ,
} ,
{
/* Point of View mobii wintab p800w (v2.1) */
. driver_data = ( void * ) & pov_mobii_wintab_p800w_v21_data ,
2017-06-15 09:48:31 +03:00
. matches = {
DMI_MATCH ( DMI_BOARD_VENDOR , " AMI Corporation " ) ,
DMI_MATCH ( DMI_BOARD_NAME , " Aptio CRB " ) ,
DMI_MATCH ( DMI_BIOS_VERSION , " 3BAIR1013 " ) ,
/* Above matches are too generic, add bios-date match */
DMI_MATCH ( DMI_BIOS_DATE , " 08/22/2014 " ) ,
} ,
} ,
2018-12-21 00:21:50 +03:00
{
/* Point of View mobii wintab p1006w (v1.0) */
. driver_data = ( void * ) & pov_mobii_wintab_p1006w_v10_data ,
. matches = {
DMI_EXACT_MATCH ( DMI_SYS_VENDOR , " Insyde " ) ,
DMI_EXACT_MATCH ( DMI_PRODUCT_NAME , " BayTrail " ) ,
/* Note 105b is Foxcon's USB/PCI vendor id */
DMI_EXACT_MATCH ( DMI_BOARD_VENDOR , " 105B " ) ,
DMI_EXACT_MATCH ( DMI_BOARD_NAME , " 0E57 " ) ,
} ,
} ,
2017-07-01 13:15:22 +03:00
{
2018-06-09 00:45:56 +03:00
/* Teclast X3 Plus */
. driver_data = ( void * ) & teclast_x3_plus_data ,
2018-06-05 04:16:02 +03:00
. matches = {
2018-06-09 00:45:56 +03:00
DMI_MATCH ( DMI_SYS_VENDOR , " TECLAST " ) ,
DMI_MATCH ( DMI_PRODUCT_NAME , " X3 Plus " ) ,
DMI_MATCH ( DMI_BOARD_NAME , " X3 Plus " ) ,
2018-06-05 04:16:02 +03:00
} ,
} ,
2017-12-20 13:30:09 +03:00
{
2018-06-09 00:45:56 +03:00
/* Teclast X98 Plus II */
. driver_data = ( void * ) & teclast_x98plus2_data ,
2017-12-20 13:30:09 +03:00
. matches = {
2018-06-09 00:45:56 +03:00
DMI_MATCH ( DMI_SYS_VENDOR , " TECLAST " ) ,
DMI_MATCH ( DMI_PRODUCT_NAME , " X98 Plus II " ) ,
2017-12-20 13:30:09 +03:00
} ,
} ,
2018-10-04 15:34:45 +03:00
{
/* Trekstor Primebook C11 */
. driver_data = ( void * ) & trekstor_primebook_c11_data ,
. matches = {
DMI_MATCH ( DMI_SYS_VENDOR , " TREKSTOR " ) ,
DMI_MATCH ( DMI_PRODUCT_NAME , " Primebook C11 " ) ,
} ,
} ,
2017-12-25 15:45:25 +03:00
{
/* Trekstor Primebook C13 */
. driver_data = ( void * ) & trekstor_primebook_c13_data ,
. matches = {
DMI_MATCH ( DMI_SYS_VENDOR , " TREKSTOR " ) ,
DMI_MATCH ( DMI_PRODUCT_NAME , " Primebook C13 " ) ,
} ,
} ,
2018-10-08 10:25:05 +03:00
{
/* Trekstor Primetab T13B */
. driver_data = ( void * ) & trekstor_primetab_t13b_data ,
. matches = {
DMI_MATCH ( DMI_SYS_VENDOR , " TREKSTOR " ) ,
DMI_MATCH ( DMI_PRODUCT_NAME , " Primetab T13B " ) ,
} ,
} ,
2018-01-02 21:39:27 +03:00
{
2018-06-09 00:45:56 +03:00
/* TrekStor SurfTab twin 10.1 ST10432-8 */
. driver_data = ( void * ) & trekstor_surftab_twin_10_1_data ,
2018-01-02 21:39:27 +03:00
. matches = {
2018-06-09 00:45:56 +03:00
DMI_MATCH ( DMI_SYS_VENDOR , " TrekStor " ) ,
DMI_MATCH ( DMI_PRODUCT_NAME , " SurfTab twin 10.1 " ) ,
2018-01-02 21:39:27 +03:00
} ,
} ,
2018-01-23 21:33:38 +03:00
{
2018-06-09 00:45:56 +03:00
/* Trekstor Surftab Wintron 7.0 ST70416-6 */
. driver_data = ( void * ) & trekstor_surftab_wintron70_data ,
2018-01-23 21:33:38 +03:00
. matches = {
2018-06-09 00:45:56 +03:00
DMI_MATCH ( DMI_SYS_VENDOR , " Insyde " ) ,
DMI_MATCH ( DMI_PRODUCT_NAME , " ST70416-6 " ) ,
/* Exact match, different versions need different fw */
DMI_MATCH ( DMI_BIOS_VERSION , " TREK.G.WI71C.JGBMRBA04 " ) ,
2018-01-23 21:33:38 +03:00
} ,
} ,
2018-02-22 13:18:38 +03:00
{
2018-06-09 00:45:56 +03:00
/* Trekstor Surftab Wintron 7.0 ST70416-6, newer BIOS */
2018-06-09 00:45:55 +03:00
. driver_data = ( void * ) & trekstor_surftab_wintron70_data ,
2018-02-22 13:18:38 +03:00
. matches = {
2018-06-09 00:45:56 +03:00
DMI_MATCH ( DMI_SYS_VENDOR , " TrekStor " ) ,
DMI_MATCH ( DMI_PRODUCT_NAME ,
" SurfTab wintron 7.0 ST70416-6 " ) ,
/* Exact match, different versions need different fw */
DMI_MATCH ( DMI_BIOS_VERSION , " TREK.G.WI71C.JGBMRBA05 " ) ,
2018-02-22 13:18:38 +03:00
} ,
} ,
2018-03-09 17:03:58 +03:00
{
/* Yours Y8W81, same case and touchscreen as Chuwi Vi8 */
. driver_data = ( void * ) & chuwi_vi8_data ,
. matches = {
DMI_MATCH ( DMI_SYS_VENDOR , " YOURS " ) ,
DMI_MATCH ( DMI_PRODUCT_NAME , " Y8W81 " ) ,
} ,
} ,
2017-01-23 20:35:30 +03:00
{ } ,
} ;
2018-06-09 00:45:58 +03:00
static const struct ts_dmi_data * ts_data ;
2017-04-04 06:25:14 +03:00
2018-06-09 00:45:58 +03:00
static void ts_dmi_add_props ( struct i2c_client * client )
2017-01-23 20:35:30 +03:00
{
2017-04-04 06:25:13 +03:00
struct device * dev = & client - > dev ;
2017-01-23 20:35:30 +03:00
int error ;
if ( has_acpi_companion ( dev ) & &
2018-06-09 00:45:58 +03:00
! strncmp ( ts_data - > acpi_name , client - > name , I2C_NAME_SIZE ) ) {
error = device_add_properties ( dev , ts_data - > properties ) ;
2017-01-23 20:35:30 +03:00
if ( error )
dev_err ( dev , " failed to add properties: %d \n " , error ) ;
}
}
2018-06-09 00:45:58 +03:00
static int ts_dmi_notifier_call ( struct notifier_block * nb ,
2017-01-23 20:35:30 +03:00
unsigned long action , void * data )
{
struct device * dev = data ;
2017-04-04 06:25:13 +03:00
struct i2c_client * client ;
2017-01-23 20:35:30 +03:00
switch ( action ) {
case BUS_NOTIFY_ADD_DEVICE :
2017-04-04 06:25:13 +03:00
client = i2c_verify_client ( dev ) ;
if ( client )
2018-06-09 00:45:58 +03:00
ts_dmi_add_props ( client ) ;
2017-01-23 20:35:30 +03:00
break ;
default :
break ;
}
return 0 ;
}
2018-06-09 00:45:58 +03:00
static struct notifier_block ts_dmi_notifier = {
. notifier_call = ts_dmi_notifier_call ,
2017-01-23 20:35:30 +03:00
} ;
2018-06-09 00:45:58 +03:00
static int __init ts_dmi_init ( void )
2017-01-23 20:35:30 +03:00
{
2017-04-04 06:25:14 +03:00
const struct dmi_system_id * dmi_id ;
2017-01-23 20:35:30 +03:00
int error ;
2018-06-09 00:45:58 +03:00
dmi_id = dmi_first_match ( touchscreen_dmi_table ) ;
2017-04-04 06:25:14 +03:00
if ( ! dmi_id )
return 0 ; /* Not an error */
2018-06-09 00:45:58 +03:00
ts_data = dmi_id - > driver_data ;
2017-04-04 06:25:14 +03:00
2018-06-09 00:45:58 +03:00
error = bus_register_notifier ( & i2c_bus_type , & ts_dmi_notifier ) ;
2017-01-23 20:35:30 +03:00
if ( error )
pr_err ( " %s: failed to register i2c bus notifier: %d \n " ,
__func__ , error ) ;
return error ;
}
/*
* We are registering out notifier after i2c core is initialized and i2c bus
* itself is ready ( which happens at postcore initcall level ) , but before
* ACPI starts enumerating devices ( at subsys initcall level ) .
*/
2018-06-09 00:45:58 +03:00
arch_initcall ( ts_dmi_init ) ;