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
8 * Copyright (C) 2021-2023 Hans de Goede <hdegoede@redhat.com>
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
,
62 /* Cyberbook T116 Android version */
64 DMI_MATCH(DMI_BOARD_VENDOR
, "Default string"),
65 DMI_MATCH(DMI_BOARD_NAME
, "Cherry Trail CR"),
66 /* Above strings are much too generic, also match on SKU + BIOS date */
67 DMI_MATCH(DMI_PRODUCT_SKU
, "20170531"),
68 DMI_MATCH(DMI_BIOS_DATE
, "07/12/2017"),
70 .driver_data
= (void *)&cyberbook_t116_info
,
74 .ident
= "CZC ODEON TPC-10 (\"P10T\")",
76 DMI_MATCH(DMI_SYS_VENDOR
, "CZC"),
77 DMI_MATCH(DMI_PRODUCT_NAME
, "ODEON*TPC-10"),
79 .driver_data
= (void *)&czc_p10t
,
82 /* CZC P10T variant */
83 .ident
= "ViewSonic ViewPad 10",
85 DMI_MATCH(DMI_SYS_VENDOR
, "ViewSonic"),
86 DMI_MATCH(DMI_PRODUCT_NAME
, "VPAD10"),
88 .driver_data
= (void *)&czc_p10t
,
91 /* Lenovo Yoga Book X90F / X90L */
93 DMI_EXACT_MATCH(DMI_SYS_VENDOR
, "Intel Corporation"),
94 DMI_EXACT_MATCH(DMI_PRODUCT_NAME
, "CHERRYVIEW D1 PLATFORM"),
95 DMI_EXACT_MATCH(DMI_PRODUCT_VERSION
, "YETI-11"),
97 .driver_data
= (void *)&lenovo_yogabook_x90_info
,
100 /* Lenovo Yoga Book X91F / X91L */
102 /* Inexact match to match F + L versions */
103 DMI_MATCH(DMI_PRODUCT_NAME
, "Lenovo YB1-X91"),
105 .driver_data
= (void *)&lenovo_yogabook_x91_info
,
109 * Lenovo Yoga Tablet 2 Pro 1380F/L (13")
110 * This has more or less the same BIOS as the 830F/L or 1050F/L
111 * (8" and 10") below, but unlike the 8"/10" models which share
112 * the same mainboard this model has a different mainboard.
113 * This match for the 13" model MUST come before the 8" + 10"
114 * match since that one will also match the 13" model!
117 DMI_MATCH(DMI_SYS_VENDOR
, "Intel Corp."),
118 DMI_MATCH(DMI_PRODUCT_NAME
, "VALLEYVIEW C0 PLATFORM"),
119 DMI_MATCH(DMI_BOARD_NAME
, "BYT-T FFD8"),
120 /* Full match so as to NOT match the 830/1050 BIOS */
121 DMI_MATCH(DMI_BIOS_VERSION
, "BLADE_21.X64.0005.R00.1504101516"),
123 .driver_data
= (void *)&lenovo_yoga_tab2_1380_info
,
127 * Lenovo Yoga Tablet 2 830F/L or 1050F/L
128 * The 8" and 10" Lenovo Yoga Tablet 2 use the same mainboard.
131 DMI_MATCH(DMI_SYS_VENDOR
, "Intel Corp."),
132 DMI_MATCH(DMI_PRODUCT_NAME
, "VALLEYVIEW C0 PLATFORM"),
133 DMI_MATCH(DMI_BOARD_NAME
, "BYT-T FFD8"),
134 /* Partial match on beginning of BIOS version */
135 DMI_MATCH(DMI_BIOS_VERSION
, "BLADE_21"),
137 .driver_data
= (void *)&lenovo_yoga_tab2_830_1050_info
,
140 /* Lenovo Yoga Tab 3 Pro YT3-X90F */
142 DMI_MATCH(DMI_SYS_VENDOR
, "Intel Corporation"),
143 DMI_MATCH(DMI_PRODUCT_VERSION
, "Blade3-10A-001"),
145 .driver_data
= (void *)&lenovo_yt3_info
,
148 /* Medion Lifetab S10346 */
150 DMI_MATCH(DMI_BOARD_VENDOR
, "AMI Corporation"),
151 DMI_MATCH(DMI_BOARD_NAME
, "Aptio CRB"),
152 /* Above strings are much too generic, also match on BIOS date */
153 DMI_MATCH(DMI_BIOS_DATE
, "10/22/2015"),
155 .driver_data
= (void *)&medion_lifetab_s10346_info
,
158 /* Nextbook Ares 8 (BYT version) */
160 DMI_MATCH(DMI_SYS_VENDOR
, "Insyde"),
161 DMI_MATCH(DMI_PRODUCT_NAME
, "M890BAP"),
163 .driver_data
= (void *)&nextbook_ares8_info
,
166 /* Nextbook Ares 8A (CHT version) */
168 DMI_MATCH(DMI_SYS_VENDOR
, "Insyde"),
169 DMI_MATCH(DMI_PRODUCT_NAME
, "CherryTrail"),
170 DMI_MATCH(DMI_BIOS_VERSION
, "M882"),
172 .driver_data
= (void *)&nextbook_ares8a_info
,
177 DMI_MATCH(DMI_SYS_VENDOR
, "PEAQ"),
178 DMI_MATCH(DMI_PRODUCT_NAME
, "PEAQ PMM C1010 MD99187"),
180 .driver_data
= (void *)&peaq_c1010_info
,
183 /* Vexia Edu Atla 10 tablet 9V version */
185 DMI_MATCH(DMI_BOARD_VENDOR
, "AMI Corporation"),
186 DMI_MATCH(DMI_BOARD_NAME
, "Aptio CRB"),
187 /* Above strings are too generic, also match on BIOS date */
188 DMI_MATCH(DMI_BIOS_DATE
, "08/25/2014"),
190 .driver_data
= (void *)&vexia_edu_atla10_info
,
193 /* Whitelabel (sold as various brands) TM800A550L */
195 DMI_MATCH(DMI_BOARD_VENDOR
, "AMI Corporation"),
196 DMI_MATCH(DMI_BOARD_NAME
, "Aptio CRB"),
197 /* Above strings are too generic, also match on BIOS version */
198 DMI_MATCH(DMI_BIOS_VERSION
, "ZY-8-BI-PX4S70VTR400-X423B-005-D"),
200 .driver_data
= (void *)&whitelabel_tm800a550l_info
,
203 /* Xiaomi Mi Pad 2 */
205 DMI_MATCH(DMI_SYS_VENDOR
, "Xiaomi Inc"),
206 DMI_MATCH(DMI_PRODUCT_NAME
, "Mipad2"),
208 .driver_data
= (void *)&xiaomi_mipad2_info
,
212 MODULE_DEVICE_TABLE(dmi
, x86_android_tablet_ids
);