Merge branches 'acpi-video' and 'acpi-x86'
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 4 Mar 2019 10:17:28 +0000 (11:17 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 4 Mar 2019 10:17:28 +0000 (11:17 +0100)
* acpi-video:
  ACPI / video: Extend chassis-type detection with a "Lunch Box" check
  ACPI / video: Refactor and fix dmi_is_desktop()

* acpi-x86:
  ACPI / x86: Make PWM2 device always present at Lenovo Yoga Book

drivers/acpi/acpi_video.c
drivers/acpi/x86/utils.c

index f0b52266b3ac6c45ea83a7f446513a179d60531b..d73afb562ad9587b828ce9471958dc77046b082b 100644 (file)
@@ -2124,21 +2124,29 @@ static int __init intel_opregion_present(void)
        return opregion;
 }
 
+/* Check if the chassis-type indicates there is no builtin LCD panel */
 static bool dmi_is_desktop(void)
 {
        const char *chassis_type;
+       unsigned long type;
 
        chassis_type = dmi_get_system_info(DMI_CHASSIS_TYPE);
        if (!chassis_type)
                return false;
 
-       if (!strcmp(chassis_type, "3") || /*  3: Desktop */
-           !strcmp(chassis_type, "4") || /*  4: Low Profile Desktop */
-           !strcmp(chassis_type, "5") || /*  5: Pizza Box */
-           !strcmp(chassis_type, "6") || /*  6: Mini Tower */
-           !strcmp(chassis_type, "7") || /*  7: Tower */
-           !strcmp(chassis_type, "11"))  /* 11: Main Server Chassis */
+       if (kstrtoul(chassis_type, 10, &type) != 0)
+               return false;
+
+       switch (type) {
+       case 0x03: /* Desktop */
+       case 0x04: /* Low Profile Desktop */
+       case 0x05: /* Pizza Box */
+       case 0x06: /* Mini Tower */
+       case 0x07: /* Tower */
+       case 0x10: /* Lunch Box */
+       case 0x11: /* Main Server Chassis */
                return true;
+       }
 
        return false;
 }
index 9a8e286dd86fde392751864044ca09be170e0ce8..c6df1480274113792ddb12d0c089f35d71b62dbd 100644 (file)
@@ -56,6 +56,11 @@ static const struct always_present_id always_present_ids[] = {
         */
        ENTRY("80860F09", "1", ICPU(INTEL_FAM6_ATOM_SILVERMONT), {}),
        ENTRY("80862288", "1", ICPU(INTEL_FAM6_ATOM_AIRMONT), {}),
+
+       /* Lenovo Yoga Book uses PWM2 for keyboard backlight control */
+       ENTRY("80862289", "2", ICPU(INTEL_FAM6_ATOM_AIRMONT), {
+                       DMI_MATCH(DMI_PRODUCT_NAME, "Lenovo YB1-X9"),
+               }),
        /*
         * The INT0002 device is necessary to clear wakeup interrupt sources
         * on Cherry Trail devices, without it we get nobody cared IRQ msgs.