Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.1.
  1// SPDX-License-Identifier: GPL-2.0-or-later
  2/*
  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
  6 * in their DSDT.
  7 *
  8 * Copyright (C) 2021-2023 Hans de Goede <hdegoede@redhat.com>
  9 */
 10
 11#include <linux/dmi.h>
 12#include <linux/init.h>
 13#include <linux/mod_devicetable.h>
 14#include <linux/module.h>
 15
 16#include "x86-android-tablets.h"
 17
 18const struct dmi_system_id x86_android_tablet_ids[] __initconst = {
 19	{
 20		/* Acer Iconia One 7 B1-750 */
 21		.matches = {
 22			DMI_MATCH(DMI_SYS_VENDOR, "Insyde"),
 23			DMI_MATCH(DMI_PRODUCT_NAME, "VESPA2"),
 24		},
 25		.driver_data = (void *)&acer_b1_750_info,
 26	},
 27	{
 28		/* Advantech MICA-071 */
 29		.matches = {
 30			DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Advantech"),
 31			DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "MICA-071"),
 32		},
 33		.driver_data = (void *)&advantech_mica_071_info,
 34	},
 35	{
 36		/* Asus MeMO Pad 7 ME176C */
 37		.matches = {
 38			DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
 39			DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "ME176C"),
 40		},
 41		.driver_data = (void *)&asus_me176c_info,
 42	},
 43	{
 44		/* Asus TF103C */
 45		.matches = {
 46			DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
 47			DMI_MATCH(DMI_PRODUCT_NAME, "TF103C"),
 48		},
 49		.driver_data = (void *)&asus_tf103c_info,
 50	},
 51	{
 52		/* Chuwi Hi8 (CWI509) */
 53		.matches = {
 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"),
 58		},
 59		.driver_data = (void *)&chuwi_hi8_info,
 60	},
 61	{
 62		/* Cyberbook T116 Android version */
 63		.matches = {
 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"),
 69		},
 70		.driver_data = (void *)&cyberbook_t116_info,
 71	},
 72	{
 73		/* CZC P10T */
 74		.ident = "CZC ODEON TPC-10 (\"P10T\")",
 75		.matches = {
 76			DMI_MATCH(DMI_SYS_VENDOR, "CZC"),
 77			DMI_MATCH(DMI_PRODUCT_NAME, "ODEON*TPC-10"),
 78		},
 79		.driver_data = (void *)&czc_p10t,
 80	},
 81	{
 82		/* CZC P10T variant */
 83		.ident = "ViewSonic ViewPad 10",
 84		.matches = {
 85			DMI_MATCH(DMI_SYS_VENDOR, "ViewSonic"),
 86			DMI_MATCH(DMI_PRODUCT_NAME, "VPAD10"),
 87		},
 88		.driver_data = (void *)&czc_p10t,
 89	},
 90	{
 91		/* Lenovo Yoga Book X90F / X90L */
 92		.matches = {
 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"),
 96		},
 97		.driver_data = (void *)&lenovo_yogabook_x90_info,
 98	},
 99	{
100		/* Lenovo Yoga Book X91F / X91L */
101		.matches = {
102			/* Non exact match to match F + L versions */
103			DMI_MATCH(DMI_PRODUCT_NAME, "Lenovo YB1-X91"),
104		},
105		.driver_data = (void *)&lenovo_yogabook_x91_info,
106	},
107	{
108		/*
109		 * Lenovo Yoga Tablet 2 830F/L or 1050F/L (The 8" and 10"
110		 * Lenovo Yoga Tablet 2 use the same mainboard)
111		 */
112		.matches = {
113			DMI_MATCH(DMI_SYS_VENDOR, "Intel Corp."),
114			DMI_MATCH(DMI_PRODUCT_NAME, "VALLEYVIEW C0 PLATFORM"),
115			DMI_MATCH(DMI_BOARD_NAME, "BYT-T FFD8"),
116			/* Partial match on beginning of BIOS version */
117			DMI_MATCH(DMI_BIOS_VERSION, "BLADE_21"),
118		},
119		.driver_data = (void *)&lenovo_yoga_tab2_830_1050_info,
120	},
121	{
122		/* Lenovo Yoga Tab 3 Pro YT3-X90F */
123		.matches = {
124			DMI_MATCH(DMI_SYS_VENDOR, "Intel Corporation"),
125			DMI_MATCH(DMI_PRODUCT_NAME, "CHERRYVIEW D1 PLATFORM"),
126			DMI_MATCH(DMI_PRODUCT_VERSION, "Blade3-10A-001"),
127		},
128		.driver_data = (void *)&lenovo_yt3_info,
129	},
130	{
131		/* Medion Lifetab S10346 */
132		.matches = {
133			DMI_MATCH(DMI_BOARD_VENDOR, "AMI Corporation"),
134			DMI_MATCH(DMI_BOARD_NAME, "Aptio CRB"),
135			/* Above strings are much too generic, also match on BIOS date */
136			DMI_MATCH(DMI_BIOS_DATE, "10/22/2015"),
137		},
138		.driver_data = (void *)&medion_lifetab_s10346_info,
139	},
140	{
141		/* Nextbook Ares 8 (BYT version) */
142		.matches = {
143			DMI_MATCH(DMI_SYS_VENDOR, "Insyde"),
144			DMI_MATCH(DMI_PRODUCT_NAME, "M890BAP"),
145		},
146		.driver_data = (void *)&nextbook_ares8_info,
147	},
148	{
149		/* Nextbook Ares 8A (CHT version)*/
150		.matches = {
151			DMI_MATCH(DMI_SYS_VENDOR, "Insyde"),
152			DMI_MATCH(DMI_PRODUCT_NAME, "CherryTrail"),
153			DMI_MATCH(DMI_BIOS_VERSION, "M882"),
154		},
155		.driver_data = (void *)&nextbook_ares8a_info,
156	},
157	{
158		/* Peaq C1010 */
159		.matches = {
160			DMI_MATCH(DMI_SYS_VENDOR, "PEAQ"),
161			DMI_MATCH(DMI_PRODUCT_NAME, "PEAQ PMM C1010 MD99187"),
162		},
163		.driver_data = (void *)&peaq_c1010_info,
164	},
165	{
166		/* Whitelabel (sold as various brands) TM800A550L */
167		.matches = {
168			DMI_MATCH(DMI_BOARD_VENDOR, "AMI Corporation"),
169			DMI_MATCH(DMI_BOARD_NAME, "Aptio CRB"),
170			/* Above strings are too generic, also match on BIOS version */
171			DMI_MATCH(DMI_BIOS_VERSION, "ZY-8-BI-PX4S70VTR400-X423B-005-D"),
172		},
173		.driver_data = (void *)&whitelabel_tm800a550l_info,
174	},
175	{
176		/* Xiaomi Mi Pad 2 */
177		.matches = {
178			DMI_MATCH(DMI_SYS_VENDOR, "Xiaomi Inc"),
179			DMI_MATCH(DMI_PRODUCT_NAME, "Mipad2"),
180		},
181		.driver_data = (void *)&xiaomi_mipad2_info,
182	},
183	{ }
184};
185MODULE_DEVICE_TABLE(dmi, x86_android_tablet_ids);