Commit 78dfc9d1 authored by Hans de Goede's avatar Hans de Goede Committed by Rafael J. Wysocki

ACPI: video: Add auto_detect arg to __acpi_video_get_backlight_type()

Allow callers of __acpi_video_get_backlight_type() to pass a pointer
to a bool which will get set to false if the backlight-type comes from
the cmdline or a DMI quirk and set to true if auto-detection was used.

And make __acpi_video_get_backlight_type() non static so that it can
be called directly outside of video_detect.c .

While at it turn the acpi_video_get_backlight_type() and
acpi_video_backlight_use_native() wrappers into static inline functions
in include/acpi/video.h, so that we need to export one less symbol.

Fixes: 5aa9d943 ("ACPI: video: Don't enable fallback path for creating ACPI backlight by default")
Cc: All applicable <stable@vger.kernel.org>
Reviewed-by: default avatarMario Limonciello <mario.limonciello@amd.com>
Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 7e364e56
...@@ -782,7 +782,7 @@ static bool prefer_native_over_acpi_video(void) ...@@ -782,7 +782,7 @@ static bool prefer_native_over_acpi_video(void)
* Determine which type of backlight interface to use on this system, * Determine which type of backlight interface to use on this system,
* First check cmdline, then dmi quirks, then do autodetect. * First check cmdline, then dmi quirks, then do autodetect.
*/ */
static enum acpi_backlight_type __acpi_video_get_backlight_type(bool native) enum acpi_backlight_type __acpi_video_get_backlight_type(bool native, bool *auto_detect)
{ {
static DEFINE_MUTEX(init_mutex); static DEFINE_MUTEX(init_mutex);
static bool nvidia_wmi_ec_present; static bool nvidia_wmi_ec_present;
...@@ -807,6 +807,9 @@ static enum acpi_backlight_type __acpi_video_get_backlight_type(bool native) ...@@ -807,6 +807,9 @@ static enum acpi_backlight_type __acpi_video_get_backlight_type(bool native)
native_available = true; native_available = true;
mutex_unlock(&init_mutex); mutex_unlock(&init_mutex);
if (auto_detect)
*auto_detect = false;
/* /*
* The below heuristics / detection steps are in order of descending * The below heuristics / detection steps are in order of descending
* presedence. The commandline takes presedence over anything else. * presedence. The commandline takes presedence over anything else.
...@@ -818,6 +821,9 @@ static enum acpi_backlight_type __acpi_video_get_backlight_type(bool native) ...@@ -818,6 +821,9 @@ static enum acpi_backlight_type __acpi_video_get_backlight_type(bool native)
if (acpi_backlight_dmi != acpi_backlight_undef) if (acpi_backlight_dmi != acpi_backlight_undef)
return acpi_backlight_dmi; return acpi_backlight_dmi;
if (auto_detect)
*auto_detect = true;
/* Special cases such as nvidia_wmi_ec and apple gmux. */ /* Special cases such as nvidia_wmi_ec and apple gmux. */
if (nvidia_wmi_ec_present) if (nvidia_wmi_ec_present)
return acpi_backlight_nvidia_wmi_ec; return acpi_backlight_nvidia_wmi_ec;
...@@ -837,15 +843,4 @@ static enum acpi_backlight_type __acpi_video_get_backlight_type(bool native) ...@@ -837,15 +843,4 @@ static enum acpi_backlight_type __acpi_video_get_backlight_type(bool native)
/* No ACPI video/native (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;
} }
EXPORT_SYMBOL(__acpi_video_get_backlight_type);
enum acpi_backlight_type acpi_video_get_backlight_type(void)
{
return __acpi_video_get_backlight_type(false);
}
EXPORT_SYMBOL(acpi_video_get_backlight_type);
bool acpi_video_backlight_use_native(void)
{
return __acpi_video_get_backlight_type(true) == acpi_backlight_native;
}
EXPORT_SYMBOL(acpi_video_backlight_use_native);
...@@ -59,8 +59,6 @@ extern void acpi_video_unregister(void); ...@@ -59,8 +59,6 @@ extern void acpi_video_unregister(void);
extern void acpi_video_register_backlight(void); extern void acpi_video_register_backlight(void);
extern int acpi_video_get_edid(struct acpi_device *device, int type, 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 bool acpi_video_backlight_use_native(void);
/* /*
* Note: The value returned by acpi_video_handles_brightness_key_presses() * Note: The value returned by acpi_video_handles_brightness_key_presses()
* may change over time and should not be cached. * may change over time and should not be cached.
...@@ -69,6 +67,19 @@ extern bool acpi_video_handles_brightness_key_presses(void); ...@@ -69,6 +67,19 @@ extern bool acpi_video_handles_brightness_key_presses(void);
extern int acpi_video_get_levels(struct acpi_device *device, extern int acpi_video_get_levels(struct acpi_device *device,
struct acpi_video_device_brightness **dev_br, struct acpi_video_device_brightness **dev_br,
int *pmax_level); int *pmax_level);
extern enum acpi_backlight_type __acpi_video_get_backlight_type(bool native,
bool *auto_detect);
static inline enum acpi_backlight_type acpi_video_get_backlight_type(void)
{
return __acpi_video_get_backlight_type(false, NULL);
}
static inline bool acpi_video_backlight_use_native(void)
{
return __acpi_video_get_backlight_type(true, NULL) == acpi_backlight_native;
}
#else #else
static inline void acpi_video_report_nolcd(void) { return; }; static inline void acpi_video_report_nolcd(void) { return; };
static inline int acpi_video_register(void) { return -ENODEV; } static inline int acpi_video_register(void) { return -ENODEV; }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment