forked from mirrors/linux
		
	ACPI: video: Prefer native over vendor
When available prefer native backlight control over vendor backlight control. Testing has shown that there are quite a few laptop models which rely on native backlight control (they don't have ACPI video bus backlight control) and on which acpi_osi_is_win8() returns false. Currently __acpi_video_get_backlight_type() returns vendor on these laptops, leading to an empty /sys/class/backlight. As a workaround for this acpi_video_backlight_use_native() has been temporarily changed to always return true. This re-introduces the problem of having multiple backlight devices under /sys/class/backlight for a single panel. Change __acpi_video_get_backlight_type() to prefer native over vendor when available. So that it returns native on these models. And change acpi_video_backlight_use_native() back to only return true when __acpi_video_get_backlight_type() returns native. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
		
							parent
							
								
									a5df42521f
								
							
						
					
					
						commit
						fb1836c913
					
				
					 1 changed files with 3 additions and 15 deletions
				
			
		| 
						 | 
					@ -776,10 +776,10 @@ static enum acpi_backlight_type __acpi_video_get_backlight_type(bool native)
 | 
				
			||||||
		return acpi_backlight_video;
 | 
							return acpi_backlight_video;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Use native if available */
 | 
						/* Use native if available */
 | 
				
			||||||
	if (native_available && prefer_native_over_acpi_video())
 | 
						if (native_available)
 | 
				
			||||||
		return acpi_backlight_native;
 | 
							return acpi_backlight_native;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* No ACPI video (old hw), use vendor specific fw methods. */
 | 
						/* No ACPI video/native (old hw), use vendor specific fw methods. */
 | 
				
			||||||
	return acpi_backlight_vendor;
 | 
						return acpi_backlight_vendor;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -791,18 +791,6 @@ EXPORT_SYMBOL(acpi_video_get_backlight_type);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool acpi_video_backlight_use_native(void)
 | 
					bool acpi_video_backlight_use_native(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	/*
 | 
						return __acpi_video_get_backlight_type(true) == acpi_backlight_native;
 | 
				
			||||||
	 * Call __acpi_video_get_backlight_type() to let it know that
 | 
					 | 
				
			||||||
	 * a native backlight is available.
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	__acpi_video_get_backlight_type(true);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/*
 | 
					 | 
				
			||||||
	 * For now just always return true. There is a whole bunch of laptop
 | 
					 | 
				
			||||||
	 * models where (video_caps & ACPI_VIDEO_BACKLIGHT) is false causing
 | 
					 | 
				
			||||||
	 * __acpi_video_get_backlight_type() to return vendor, while these
 | 
					 | 
				
			||||||
	 * models only have a native backlight control.
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	return true;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
EXPORT_SYMBOL(acpi_video_backlight_use_native);
 | 
					EXPORT_SYMBOL(acpi_video_backlight_use_native);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue