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); | 	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 |  * This is kind of nasty. Hardware using Intel chipsets may require | ||||||
|  * the video opregion code to be run first in order to initialise |  * the video opregion code to be run first in order to initialise | ||||||
|  |  | ||||||
|  | @ -2,6 +2,7 @@ | ||||||
| #define __ACPI_VIDEO_H | #define __ACPI_VIDEO_H | ||||||
| 
 | 
 | ||||||
| #include <linux/errno.h> /* for ENODEV */ | #include <linux/errno.h> /* for ENODEV */ | ||||||
|  | #include <linux/types.h> /* for bool */ | ||||||
| 
 | 
 | ||||||
| struct acpi_device; | struct acpi_device; | ||||||
| 
 | 
 | ||||||
|  | @ -31,6 +32,7 @@ extern int acpi_video_get_edid(struct acpi_device *device, int type, | ||||||
| 			       int device_id, void **edid); | 			       int device_id, void **edid); | ||||||
| extern enum acpi_backlight_type acpi_video_get_backlight_type(void); | 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 void acpi_video_set_dmi_backlight_type(enum acpi_backlight_type type); | ||||||
|  | extern bool acpi_video_handles_brightness_key_presses(void); | ||||||
| #else | #else | ||||||
| static inline int acpi_video_register(void) { return 0; } | static inline int acpi_video_register(void) { return 0; } | ||||||
| static inline void acpi_video_unregister(void) { return; } | 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 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 | ||||||
| 
 | 
 | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Hans de Goede
						Hans de Goede