1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * DMI based code to deal with broken DSDTs on X86 tablets which ship with
4 * Android as (part of) the factory image. The factory kernels shipped on these
5 * devices typically have a bunch of things hardcoded, rather than specified
11 #include <linux/dmi.h>
12 #include <linux/init.h>
13 #include <linux/mod_devicetable.h>
14 #include <linux/module.h>
16 #include "x86-android-tablets.h"
18 const struct dmi_system_id x86_android_tablet_ids[] __initconst = {
20 /* Acer Iconia One 7 B1-750 */
22 DMI_MATCH(DMI_SYS_VENDOR, "Insyde"),
23 DMI_MATCH(DMI_PRODUCT_NAME, "VESPA2"),
25 .driver_data = (void *)&acer_b1_750_info,
28 /* Advantech MICA-071 */
30 DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Advantech"),
31 DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "MICA-071"),
33 .driver_data = (void *)&advantech_mica_071_info,
36 /* Asus MeMO Pad 7 ME176C */
38 DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
39 DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "ME176C"),
41 .driver_data = (void *)&asus_me176c_info,
46 DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
47 DMI_MATCH(DMI_PRODUCT_NAME, "TF103C"),
49 .driver_data = (void *)&asus_tf103c_info,
52 /* Chuwi Hi8 (CWI509) */
54 DMI_MATCH(DMI_BOARD_VENDOR, "Hampoo"),
55 DMI_MATCH(DMI_BOARD_NAME, "BYT-PA03C"),
56 DMI_MATCH(DMI_SYS_VENDOR, "ilife"),
57 DMI_MATCH(DMI_PRODUCT_NAME, "S806"),
59 .driver_data = (void *)&chuwi_hi8_info,
63 .ident = "CZC ODEON TPC-10 (\"P10T\")",
65 DMI_MATCH(DMI_SYS_VENDOR, "CZC"),
66 DMI_MATCH(DMI_PRODUCT_NAME, "ODEON*TPC-10"),
68 .driver_data = (void *)&czc_p10t,
71 /* CZC P10T variant */
72 .ident = "ViewSonic ViewPad 10",
74 DMI_MATCH(DMI_SYS_VENDOR, "ViewSonic"),
75 DMI_MATCH(DMI_PRODUCT_NAME, "VPAD10"),
77 .driver_data = (void *)&czc_p10t,
80 /* Lenovo Yoga Book X90F / X90L */
82 DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Intel Corporation"),
83 DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "CHERRYVIEW D1 PLATFORM"),
84 DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "YETI-11"),
86 .driver_data = (void *)&lenovo_yogabook_x90_info,
89 /* Lenovo Yoga Book X91F / X91L */
91 /* Non exact match to match F + L versions */
92 DMI_MATCH(DMI_PRODUCT_NAME, "Lenovo YB1-X91"),
94 .driver_data = (void *)&lenovo_yogabook_x91_info,
98 * Lenovo Yoga Tablet 2 830F/L or 1050F/L (The 8" and 10"
99 * Lenovo Yoga Tablet 2 use the same mainboard)
102 DMI_MATCH(DMI_SYS_VENDOR, "Intel Corp."),
103 DMI_MATCH(DMI_PRODUCT_NAME, "VALLEYVIEW C0 PLATFORM"),
104 DMI_MATCH(DMI_BOARD_NAME, "BYT-T FFD8"),
105 /* Partial match on beginning of BIOS version */
106 DMI_MATCH(DMI_BIOS_VERSION, "BLADE_21"),
108 .driver_data = (void *)&lenovo_yoga_tab2_830_1050_info,
111 /* Lenovo Yoga Tab 3 Pro YT3-X90F */
113 DMI_MATCH(DMI_SYS_VENDOR, "Intel Corporation"),
114 DMI_MATCH(DMI_PRODUCT_NAME, "CHERRYVIEW D1 PLATFORM"),
115 DMI_MATCH(DMI_PRODUCT_VERSION, "Blade3-10A-001"),
117 .driver_data = (void *)&lenovo_yt3_info,
120 /* Medion Lifetab S10346 */
122 DMI_MATCH(DMI_BOARD_VENDOR, "AMI Corporation"),
123 DMI_MATCH(DMI_BOARD_NAME, "Aptio CRB"),
124 /* Above strings are much too generic, also match on BIOS date */
125 DMI_MATCH(DMI_BIOS_DATE, "10/22/2015"),
127 .driver_data = (void *)&medion_lifetab_s10346_info,
130 /* Nextbook Ares 8 */
132 DMI_MATCH(DMI_SYS_VENDOR, "Insyde"),
133 DMI_MATCH(DMI_PRODUCT_NAME, "M890BAP"),
135 .driver_data = (void *)&nextbook_ares8_info,
140 DMI_MATCH(DMI_SYS_VENDOR, "PEAQ"),
141 DMI_MATCH(DMI_PRODUCT_NAME, "PEAQ PMM C1010 MD99187"),
143 .driver_data = (void *)&peaq_c1010_info,
146 /* Whitelabel (sold as various brands) TM800A550L */
148 DMI_MATCH(DMI_BOARD_VENDOR, "AMI Corporation"),
149 DMI_MATCH(DMI_BOARD_NAME, "Aptio CRB"),
150 /* Above strings are too generic, also match on BIOS version */
151 DMI_MATCH(DMI_BIOS_VERSION, "ZY-8-BI-PX4S70VTR400-X423B-005-D"),
153 .driver_data = (void *)&whitelabel_tm800a550l_info,
156 /* Xiaomi Mi Pad 2 */
158 DMI_MATCH(DMI_SYS_VENDOR, "Xiaomi Inc"),
159 DMI_MATCH(DMI_PRODUCT_NAME, "Mipad2"),
161 .driver_data = (void *)&xiaomi_mipad2_info,
165 MODULE_DEVICE_TABLE(dmi, x86_android_tablet_ids);