|
@@ -2123,6 +2123,25 @@ static int __init intel_opregion_present(void)
|
|
|
return opregion;
|
|
|
}
|
|
|
|
|
|
+static bool dmi_is_desktop(void)
|
|
|
+{
|
|
|
+ const char *chassis_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 */
|
|
|
+ return true;
|
|
|
+
|
|
|
+ return false;
|
|
|
+}
|
|
|
+
|
|
|
int acpi_video_register(void)
|
|
|
{
|
|
|
int ret = 0;
|
|
@@ -2143,8 +2162,12 @@ int acpi_video_register(void)
|
|
|
* win8 ready (where we also prefer the native backlight driver, so
|
|
|
* normally the acpi_video code should not register there anyways).
|
|
|
*/
|
|
|
- if (only_lcd == -1)
|
|
|
- only_lcd = acpi_osi_is_win8();
|
|
|
+ if (only_lcd == -1) {
|
|
|
+ if (dmi_is_desktop() && acpi_osi_is_win8())
|
|
|
+ only_lcd = true;
|
|
|
+ else
|
|
|
+ only_lcd = false;
|
|
|
+ }
|
|
|
|
|
|
dmi_check_system(video_dmi_table);
|
|
|
|