lkml.org 
[lkml]   [2021]   [Oct]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [PATCH 16/17] [NOT-FOR-MERGE] media: atomsip: pci: add DMI match for Microsoft Surface 3 with broken DMI (OEMB)
    From
    Hi,

    On 10/17/21 18:19, Tsuchiya Yuto wrote:
    > This commit is added for Surface 3 with broken DMI table. HACK-ish.
    > Not intended for upstreaming. Thus, NOT-FOR-MERGE. But, if someone
    > knows a nicer way to address this, comments are welcome...
    >
    >> 8-----------------------------------------------------------------8<
    >
    > On some Microsoft Surface 3, the DMI table gets corrupted for unknown
    > reasons and breaks existing DMI matching used for device-specific quirks.
    >
    > This commit adds the (broken) DMI data into dmi_system_id tables used
    > for quirks so that the driver can enable quirks even on the affected
    > systems.
    >
    > On affected systems, the DMI data will look like this:
    >
    > $ grep . /sys/devices/virtual/dmi/id/{bios_vendor,board_name,board_vendor,\
    > chassis_vendor,product_name,sys_vendor}
    > /sys/devices/virtual/dmi/id/bios_vendor:American Megatrends Inc.
    > /sys/devices/virtual/dmi/id/board_name:OEMB
    > /sys/devices/virtual/dmi/id/board_vendor:OEMB
    > /sys/devices/virtual/dmi/id/chassis_vendor:OEMB
    > /sys/devices/virtual/dmi/id/product_name:OEMB
    > /sys/devices/virtual/dmi/id/sys_vendor:OEMB

    I wonder what the bios_date field contains ? Typically when the DMI strings
    are no good (e.g. often they contain "Default String" or "To be filled by OEM")
    we add a check on the bios-date, which together with the broken strings is
    considered unique enough to still allow a match with broken strings in the
    kernel.

    Also have you tried doing something like "load bios/setup defaults" in
    the BIOS setup ? Maybe that helps ?

    Regards,

    Hans





    >
    > Expected:
    >
    > $ grep . /sys/devices/virtual/dmi/id/{bios_vendor,board_name,board_vendor,\
    > chassis_vendor,product_name,sys_vendor}
    > /sys/devices/virtual/dmi/id/bios_vendor:American Megatrends Inc.
    > /sys/devices/virtual/dmi/id/board_name:Surface 3
    > /sys/devices/virtual/dmi/id/board_vendor:Microsoft Corporation
    > /sys/devices/virtual/dmi/id/chassis_vendor:Microsoft Corporation
    > /sys/devices/virtual/dmi/id/product_name:Surface 3
    > /sys/devices/virtual/dmi/id/sys_vendor:Microsoft Corporation
    >
    > Signed-off-by: Tsuchiya Yuto <kitakar@gmail.com>
    > ---
    > .../staging/media/atomisp/pci/atomisp_gmin_platform.c | 11 +++++++++++
    > 1 file changed, 11 insertions(+)
    >
    > diff --git a/drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c b/drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c
    > index 948eb6f809f5..3868d64cbc2b 100644
    > --- a/drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c
    > +++ b/drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c
    > @@ -377,6 +377,17 @@ static const struct dmi_system_id gmin_vars[] = {
    > },
    > .driver_data = surface3_vars,
    > },
    > + {
    > + .ident = "Surface 3",
    > + .matches = {
    > + /* DMI data for Surface 3 with broken DMI table */
    > + DMI_MATCH(DMI_BIOS_VENDOR, "American Megatrends Inc."),
    > + DMI_MATCH(DMI_BOARD_NAME, "OEMB"),
    > + DMI_MATCH(DMI_PRODUCT_NAME, "OEMB"),
    > + DMI_MATCH(DMI_SYS_VENDOR, "OEMB"),
    > + },
    > + .driver_data = surface3_vars,
    > + },
    > {}
    > };
    >
    >

    \
     
     \ /
      Last update: 2021-10-18 09:57    [W:3.896 / U:0.108 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site