Skip to content

Commit 85982de

Browse files
cwhuangkitakar5525
authored andcommitted
Surface3-OEMB: ASoC: add quirk for Surface 3 with broken DMI table
Some Microsoft Surface 3 owners including me encountered a strange issue when play Android-x86 on the tablet. The DMI table was erased due to unknown reason and sound doesn't work in Android-x86 (but it's normal in Windows). See more details: https://groups.google.com/d/msg/android-x86/z6GDuvV2oWk/mzyg0RQiCAAJ Since the DMI table is incorrect, kernel won't enable quirk for it. To workaround such an issue, add quirk for the bad data "OEMB". It should not affect any product with correct DMI data. === (Commit message from kitakar5525 <34676735+kitakar5525@users.noreply.github.com>) (am from http://git.osdn.net/view?p=android-x86/kernel.git;a=commitdiff;h=18e2e857c57633b25b3b4120f212224a108cd883) (author: Chih-Wei Huang <cwhuang@linux.org.tw> Tue, 18 Sep 2018 03:01:37 +0000 (11:01 +0800)) (Changed commit title from "ASoC: add quirk for Surface 3 with bad DMI table") On some Surface 3, DMI table gets corrupted for unknown reasons and breaks existing DMI matching used for device-specific quirks. This commit adds the (broken) DMI info for the affected Surface 3. Fixes Sound feature on Surface 3 with broken DMI table. Note here that this issue will not necessarily happen after playing around with Android-x86. I heard a report from a person on the IRC channel that on the affected system, only Manjaro was used. On affected systems, dmidecode will look like this: $ sudo dmidecode [...] BIOS Information Vendor: American Megatrends Inc. [...] System Information Manufacturer: OEMB Product Name: OEMB [...] Expected: $ sudo dmidecode [...] BIOS Information Vendor: (???, I think something like "Microsoft Corporation") [...] System Information Manufacturer: Microsoft Corporation Product Name: Surface 3 [...]
1 parent 749a4a6 commit 85982de

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

sound/soc/codecs/rt5645.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3672,6 +3672,15 @@ static const struct dmi_system_id dmi_platform_data[] = {
36723672
},
36733673
.driver_data = (void *)&intel_braswell_platform_data,
36743674
},
3675+
{
3676+
.ident = "Microsoft Surface 3",
3677+
.matches = {
3678+
DMI_MATCH(DMI_BIOS_VENDOR, "American Megatrends Inc."),
3679+
DMI_MATCH(DMI_SYS_VENDOR, "OEMB"),
3680+
DMI_MATCH(DMI_PRODUCT_NAME, "OEMB"),
3681+
},
3682+
.driver_data = (void *)&intel_braswell_platform_data,
3683+
},
36753684
{
36763685
/*
36773686
* Match for the GPDwin which unfortunately uses somewhat

sound/soc/intel/common/soc-acpi-intel-cht-match.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,12 @@ static const struct dmi_system_id cht_table[] = {
2626
DMI_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"),
2727
DMI_MATCH(DMI_PRODUCT_NAME, "Surface 3"),
2828
},
29+
.callback = cht_surface_quirk_cb,
30+
.matches = {
31+
DMI_MATCH(DMI_BIOS_VENDOR, "American Megatrends Inc."),
32+
DMI_MATCH(DMI_SYS_VENDOR, "OEMB"),
33+
DMI_MATCH(DMI_PRODUCT_NAME, "OEMB"),
34+
},
2935
},
3036
{ }
3137
};

0 commit comments

Comments
 (0)