diff options
Diffstat (limited to 'drivers/acpi/acpi_video.c')
| -rw-r--r-- | drivers/acpi/acpi_video.c | 43 | 
1 files changed, 28 insertions, 15 deletions
| diff --git a/drivers/acpi/acpi_video.c b/drivers/acpi/acpi_video.c index 2ea1781290cc..0c884020f74b 100644 --- a/drivers/acpi/acpi_video.c +++ b/drivers/acpi/acpi_video.c @@ -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); | 
