| From foo@baz Mon Apr 9 17:09:24 CEST 2018 |
| From: Hans de Goede <hdegoede@redhat.com> |
| Date: Sat, 23 Dec 2017 19:41:47 +0100 |
| Subject: ACPI / video: Default lcd_only to true on Win8-ready and newer machines |
| |
| From: Hans de Goede <hdegoede@redhat.com> |
| |
| |
| [ Upstream commit 5928c281524fe451114e04f1dfa11246a37e859f ] |
| |
| We're seeing a lot of bogus backlight interfaces on newer machines without |
| a LCD such as desktops, servers and HDMI sticks. This causes userspace to |
| show a non-functional brightness slider in e.g. the GNOME3 system menu, |
| which is undesirable. And, in general, we should simply just not register |
| a non functional backlight interface. |
| |
| Checking the LCD flag causes the bogus acpi_video backlight interfaces to |
| go away (on the machines this was tested on). |
| |
| This change sets the lcd_only option by default on any machines which |
| are Win8-ready, to fix this. |
| |
| This is not entirely without a risk of regressions, but video_detect.c |
| already prefers native-backlight interfaces over the acpi_video one |
| on Win8-ready machines, calling acpi_video_unregister_backlight() as soon |
| as a native interface shows up. This is done because the ACPI backlight |
| interface often is broken on Win8-ready machines, because win8 does not |
| seem to actually use it. |
| |
| So in practice we already end up not registering the ACPI backlight |
| interface on (most) Win8-ready machines with a LCD panel, thus this |
| change does not change anything for (most) machines with a LCD panel |
| and on machines without a LCD panel we actually don't want to register |
| any backlight interfaces. |
| |
| This has been tested on the following machines and fixes a bogus backlight |
| interface showing up there: |
| - Desktop with an Asrock B150M Pro4S/D3 m.b. using i5-6500 builtin gfx |
| - Intel Compute Stick STK1AW32SC |
| - Meegopad T08 HDMI stick |
| |
| Bogus backlight interfaces have also been reported on: |
| - Desktop with Asus H87I-Plus m.b. |
| - Desktop with ASRock B75M-ITX m.b. |
| - Desktop with Gigabyte Z87-D3HP m.b. |
| - Dell PowerEdge T20 desktop |
| |
| Link: https://bugzilla.redhat.com/show_bug.cgi?id=1097436 |
| Link: https://bugzilla.redhat.com/show_bug.cgi?id=1133327 |
| Link: https://bugzilla.redhat.com/show_bug.cgi?id=1133329 |
| Link: https://bugzilla.redhat.com/show_bug.cgi?id=1133646 |
| Signed-off-by: Hans de Goede <hdegoede@redhat.com> |
| Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/acpi/acpi_video.c | 14 ++++++++++++-- |
| 1 file changed, 12 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/acpi/acpi_video.c |
| +++ b/drivers/acpi/acpi_video.c |
| @@ -87,8 +87,8 @@ MODULE_PARM_DESC(report_key_events, |
| static bool device_id_scheme = false; |
| module_param(device_id_scheme, bool, 0444); |
| |
| -static bool only_lcd = false; |
| -module_param(only_lcd, bool, 0444); |
| +static int only_lcd = -1; |
| +module_param(only_lcd, int, 0444); |
| |
| static int register_count; |
| static DEFINE_MUTEX(register_count_mutex); |
| @@ -2082,6 +2082,16 @@ 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) |
| + only_lcd = acpi_osi_is_win8(); |
| + |
| dmi_check_system(video_dmi_table); |
| |
| ret = acpi_bus_register_driver(&acpi_video_bus); |