From: Hans de Goede <hdegoede@redhat.com>
To: "Rafael J. Wysocki" <rjw@rjwysocki.net>,
Darren Hart <dvhart@infradead.org>
Cc: "Aaron Lu" <aaron.lu@intel.com>,
"Ben Skeggs" <bskeggs@redhat.com>, "Lee Chun-Yi" <jlee@suse.com>,
"Peter Feuerer" <peter@piie.net>,
"Corentin Chary" <corentin.chary@gmail.com>,
"Cezary Jackiewicz" <cezary.jackiewicz@gmail.com>,
"Matthew Garrett" <mjg59@srcf.ucam.org>,
"Pali Rohár" <pali.rohar@gmail.com>,
"Jonathan Woithe" <jwoithe@just42.net>,
"Ike Panhc" <ike.pan@canonical.com>,
"Anisse Astier" <anisse@astier.eu>,
"Henrique de Moraes Holschuh" <ibm-acpi@hmh.eng.br>,
"Azael Avalos" <coproscefalo@gmail.com>,
linux-acpi@vger.kernel.org, platform-driver-x86@vger.kernel.org,
acpi4asus-user@lists.sourceforge.net,
ibm-acpi-devel@lists.sourceforge.net,
"Hans de Goede" <hdegoede@redhat.com>
Subject: [PATCH v3 02/35] asus-wmi: Use acpi_video_unregister_backlight instead of acpi_video_unregister
Date: Tue, 16 Jun 2015 16:27:40 +0200 [thread overview]
Message-ID: <1434464893-3529-3-git-send-email-hdegoede@redhat.com> (raw)
In-Reply-To: <1434464893-3529-1-git-send-email-hdegoede@redhat.com>
acpi_video_unregister() not only unregisters the acpi-video backlight
interface but also unregisters the acpi video bus event listener, causing
e.g. brightness hotkey presses to no longer generate keypress events.
The unregistering of the acpi video bus event listener usually is
undesirable, which by itself is a good reason to switch to
acpi_video_unregister_backlight().
Another problem with using acpi_video_unregister() rather then using
acpi_video_unregister_backlight() is that on systems with an intel video
opregion (most systems) and a wmi_backlight_power quirk, whether or not
the acpi video bus event listener actually gets unregistered depends on
module load ordering:
Scenario a:
1) acpi/video.ko gets loaded (*), does not do acpi_video_register as there
is an intel opregion.
2) intel.ko gets loaded, calls acpi_video_register() which registers both
the listener and the acpi backlight interface
3) asus-wmi.ko gets loaded, calls acpi_video_unregister() causing both
the listener and the acpi backlight interface to unregister
Scenario b:
1) acpi/video.ko gets loaded (*), does not do acpi_video_register as there
is an intel opregion.
2) asus-wmi.ko gets loaded, calls acpi_video_dmi_promote_vendor(),
calls acpi_video_unregister(), which is a nop since acpi_video_register
has not yet been called
2) intel.ko gets loaded, calls acpi_video_register() which registers
the listener, but does not register the acpi backlight interface due to
the call to the preciding call to acpi_video_dmi_promote_vendor()
*) acpi/video.ko always loads first as both other modules depend on it.
So we end up with or without an acpi video bus event listener depending
on module load ordering, not good.
Switching to using acpi_video_unregister_backlight() means that independ
of ordering we will always have an acpi video bus event listener fixing
this.
Note that this commit means that systems without an intel video opregion,
and systems which were hitting scenario a wrt module load ordering, are
now getting an acpi video bus event listener while before they were not!
On some systems this may cause the brightness hotkeys to start generating
keypresses while before they were not (good), while on other systems this
may cause the brightness hotkeys to generate multiple keypress events for
a single press (not so good). Since on most systems the acpi video bus is
the canonical source for brightness events I believe that the latter case
will needs to be handled on a case by case basis by filtering out the
duplicate keypresses at the other source for them.
Cc: Corentin Chary <corentin.chary@gmail.com>
Cc: acpi4asus-user@lists.sourceforge.net
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
drivers/platform/x86/asus-wmi.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c
index 7543a56..945145d 100644
--- a/drivers/platform/x86/asus-wmi.c
+++ b/drivers/platform/x86/asus-wmi.c
@@ -1777,7 +1777,7 @@ static int asus_wmi_add(struct platform_device *pdev)
acpi_video_dmi_promote_vendor();
if (!acpi_video_backlight_support()) {
pr_info("Disabling ACPI video driver\n");
- acpi_video_unregister();
+ acpi_video_unregister_backlight();
err = asus_wmi_backlight_init(asus);
if (err && err != -ENODEV)
goto fail_backlight;
--
2.3.6
next prev parent reply other threads:[~2015-06-16 14:27 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-16 14:27 [PATCH v3 00/35] acpi-video: Rewrite backlight interface selection logic Hans de Goede
2015-06-16 14:27 ` [PATCH v3 01/35] apple_gmux: Use acpi_video_unregister_backlight instead of acpi_video_unregister Hans de Goede
2015-06-16 14:27 ` Hans de Goede [this message]
2015-06-16 14:27 ` [PATCH v3 03/35] samsung-laptop: " Hans de Goede
2015-06-16 14:27 ` [PATCH v3 04/35] apple-gmux: Stop using acpi_video_dmi_demote_vendor() Hans de Goede
2015-06-16 14:27 ` [PATCH v3 05/35] acpi-video-detect: Remove the unused acpi_video_dmi_demote_vendor() function Hans de Goede
2015-06-16 14:27 ` [PATCH v3 06/35] acpi-video-detect: Make acpi_video_get_capabilities a private function Hans de Goede
2015-06-16 14:27 ` [PATCH v3 07/35] acpi-video-detect: Move acpi_is_video_device() to acpi/scan.c Hans de Goede
2015-06-16 14:27 ` [PATCH v3 08/35] acpi-video-detect: Move acpi_osi_is_win8 to osl.c Hans de Goede
2015-06-16 14:27 ` [PATCH v3 09/35] acpi-video-detect: video: Make video_detect code part of the video module Hans de Goede
2015-06-16 14:27 ` [PATCH v3 10/35] acpi-video-detect: Rewrite backlight interface selection logic Hans de Goede
2015-06-16 14:27 ` [PATCH v3 11/35] acpi-video-detect: Unregister acpi_video backlight when dmi quirks are added Hans de Goede
2015-06-16 14:27 ` [PATCH v3 12/35] drm: i915: Port to new backlight interface selection API Hans de Goede
2015-06-16 14:27 ` [PATCH v3 13/35] acpi-video: " Hans de Goede
2015-06-16 14:27 ` [PATCH v3 14/35] acpi-video: Move backlight notifier to video_detect.c Hans de Goede
2015-06-16 14:27 ` [PATCH v3 15/35] acpi-video: Move dmi_check_system from module_init to acpi_video_register Hans de Goede
2015-06-16 14:27 ` [PATCH v3 16/35] acpi-video: Fix acpi_video _register vs _unregister_backlight race Hans de Goede
2015-06-16 14:27 ` [PATCH v3 17/35] acer-wmi: Port to new backlight interface selection API Hans de Goede
2015-06-16 14:27 ` [PATCH v3 18/35] apple-gmux: " Hans de Goede
2015-06-16 14:27 ` [PATCH v3 19/35] asus-laptop: " Hans de Goede
2015-06-16 14:27 ` [PATCH v3 20/35] asus-wmi: " Hans de Goede
2015-06-16 14:27 ` [PATCH v3 21/35] compal-laptop: " Hans de Goede
2015-06-16 14:28 ` [PATCH v3 22/35] dell-laptop: " Hans de Goede
2015-06-16 14:28 ` [PATCH v3 23/35] dell-wmi: " Hans de Goede
2015-06-16 14:28 ` [PATCH v3 24/35] eeepc-laptop: " Hans de Goede
2015-06-16 14:28 ` [PATCH v3 25/35] fujitsu-laptop: " Hans de Goede
2015-06-16 14:28 ` [PATCH v3 26/35] ideapad-laptop: " Hans de Goede
2015-06-16 14:28 ` [PATCH v3 27/35] intel-oaktrail: " Hans de Goede
2015-06-16 14:28 ` [PATCH v3 28/35] msi-laptop: " Hans de Goede
2015-06-18 5:59 ` joeyli
2015-06-16 14:28 ` [PATCH v3 29/35] msi-wmi: " Hans de Goede
2015-06-16 14:28 ` [PATCH v3 30/35] samsung-laptop: " Hans de Goede
[not found] ` <1434464893-3529-1-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-06-16 14:28 ` [PATCH v3 31/35] sony-laptop: " Hans de Goede
2015-06-16 14:28 ` [PATCH v3 32/35] thinkpad-acpi: " Hans de Goede
2015-06-16 14:28 ` [PATCH v3 33/35] toshiba-acpi: " Hans de Goede
2015-06-16 14:28 ` [PATCH v3 34/35] acpi-video-detect: Remove old API Hans de Goede
2015-06-16 14:28 ` [PATCH v3 35/35] acpi-video: Make acpi_video_unregister_backlight() private Hans de Goede
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1434464893-3529-3-git-send-email-hdegoede@redhat.com \
--to=hdegoede@redhat.com \
--cc=aaron.lu@intel.com \
--cc=acpi4asus-user@lists.sourceforge.net \
--cc=anisse@astier.eu \
--cc=bskeggs@redhat.com \
--cc=cezary.jackiewicz@gmail.com \
--cc=coproscefalo@gmail.com \
--cc=corentin.chary@gmail.com \
--cc=dvhart@infradead.org \
--cc=ibm-acpi-devel@lists.sourceforge.net \
--cc=ibm-acpi@hmh.eng.br \
--cc=ike.pan@canonical.com \
--cc=jlee@suse.com \
--cc=jwoithe@just42.net \
--cc=linux-acpi@vger.kernel.org \
--cc=mjg59@srcf.ucam.org \
--cc=pali.rohar@gmail.com \
--cc=peter@piie.net \
--cc=platform-driver-x86@vger.kernel.org \
--cc=rjw@rjwysocki.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox