Merge branch 'acpi-misc'
[linux-2.6-microblaze.git] / drivers / acpi / acpi_video.c
index 2ea1781..0c88402 100644 (file)
@@ -1392,7 +1392,7 @@ acpi_video_get_next_level(struct acpi_video_device *device,
                                break;
                }
        }
-       /* Ajust level_current to closest available level */
+       /* Adjust level_current to closest available level */
        level_current += delta;
        for (i = ACPI_VIDEO_FIRST_LEVEL; i < device->brightness->count; i++) {
                l = device->brightness->levels[i];
@@ -1555,7 +1555,7 @@ acpi_video_bus_get_devices(struct acpi_video_bus *video,
 
 /*
  * Win8 requires setting bit2 of _DOS to let firmware know it shouldn't
- * preform any automatic brightness change on receiving a notification.
+ * perform any automatic brightness change on receiving a notification.
  */
 static int acpi_video_bus_start_devices(struct acpi_video_bus *video)
 {
@@ -2182,6 +2182,30 @@ static bool dmi_is_desktop(void)
        return false;
 }
 
+/*
+ * We're seeing a lot of bogus backlight interfaces on newer machines
+ * without a LCD such as desktops, servers and HDMI sticks. Checking the
+ * lcd flag fixes this, enable this by default on any machines which are:
+ * 1.  Win8 ready (where we also prefer the native backlight driver, so
+ *     normally the acpi_video code should not register there anyways); *and*
+ * 2.1 Report a desktop/server DMI chassis-type, or
+ * 2.2 Are an ACPI-reduced-hardware platform (and thus won't use the EC for
+       backlight control)
+ */
+static bool should_check_lcd_flag(void)
+{
+       if (!acpi_osi_is_win8())
+               return false;
+
+       if (dmi_is_desktop())
+               return true;
+
+       if (acpi_reduced_hardware())
+               return true;
+
+       return false;
+}
+
 int acpi_video_register(void)
 {
        int ret = 0;
@@ -2195,19 +2219,8 @@ int acpi_video_register(void)
                goto leave;
        }
 
-       /*
-        * We're seeing a lot of bogus backlight interfaces on newer machines
-        * without a LCD such as desktops, servers and HDMI sticks. Checking
-        * the lcd flag fixes this, so enable this on any machines which are
-        * 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) {
-               if (dmi_is_desktop() && acpi_osi_is_win8())
-                       only_lcd = true;
-               else
-                       only_lcd = false;
-       }
+       if (only_lcd == -1)
+               only_lcd = should_check_lcd_flag();
 
        dmi_check_system(video_dmi_table);