forked from mirrors/linux
		
	ACPI / video: Add a acpi_video_handles_brightness_key_presses() helper
Several drivers want to know if the acpi-video is generating key-presses for brightness change hotkeys to avoid sending double key-events to userspace for these. Currently these driver use this construct for this: if (acpi_video_get_backlight_type() == acpi_backlight_vendor) report_brightness_key_event(); This indirect way of detecting if acpi-video is active does not make the code easier to understand, and in some cases it is wrong because just because the preferred type != vendor does not mean that acpi-video is actually listening for brightness events, e.g. there may be no acpi-video bus on the system at all. This commit adds a acpi_video_handles_brightness_key_presses() helper function, making the code needing this functionality both easier to read and more correct. 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
							
								
									74bf8efb5f
								
							
						
					
					
						commit
						90b066b15e
					
				
					 2 changed files with 18 additions and 0 deletions
				
			
		|  | @ -2072,6 +2072,18 @@ void acpi_video_unregister_backlight(void) | |||
| 	mutex_unlock(®ister_count_mutex); | ||||
| } | ||||
| 
 | ||||
| bool acpi_video_handles_brightness_key_presses(void) | ||||
| { | ||||
| 	bool have_video_busses; | ||||
| 
 | ||||
| 	mutex_lock(&video_list_lock); | ||||
| 	have_video_busses = !list_empty(&video_bus_head); | ||||
| 	mutex_unlock(&video_list_lock); | ||||
| 
 | ||||
| 	return have_video_busses; | ||||
| } | ||||
| EXPORT_SYMBOL(acpi_video_handles_brightness_key_presses); | ||||
| 
 | ||||
| /*
 | ||||
|  * This is kind of nasty. Hardware using Intel chipsets may require | ||||
|  * the video opregion code to be run first in order to initialise | ||||
|  |  | |||
|  | @ -2,6 +2,7 @@ | |||
| #define __ACPI_VIDEO_H | ||||
| 
 | ||||
| #include <linux/errno.h> /* for ENODEV */ | ||||
| #include <linux/types.h> /* for bool */ | ||||
| 
 | ||||
| struct acpi_device; | ||||
| 
 | ||||
|  | @ -31,6 +32,7 @@ extern int acpi_video_get_edid(struct acpi_device *device, int type, | |||
| 			       int device_id, void **edid); | ||||
| extern enum acpi_backlight_type acpi_video_get_backlight_type(void); | ||||
| extern void acpi_video_set_dmi_backlight_type(enum acpi_backlight_type type); | ||||
| extern bool acpi_video_handles_brightness_key_presses(void); | ||||
| #else | ||||
| static inline int acpi_video_register(void) { return 0; } | ||||
| static inline void acpi_video_unregister(void) { return; } | ||||
|  | @ -46,6 +48,10 @@ static inline enum acpi_backlight_type acpi_video_get_backlight_type(void) | |||
| static inline void acpi_video_set_dmi_backlight_type(enum acpi_backlight_type type) | ||||
| { | ||||
| } | ||||
| static inline bool acpi_video_handles_brightness_key_presses(void) | ||||
| { | ||||
| 	return false; | ||||
| } | ||||
| #endif | ||||
| 
 | ||||
| #endif | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Hans de Goede
						Hans de Goede