All of lore.kernel.org
 help / color / mirror / Atom feed
From: Luca Tettamanti <kronos.it@gmail.com>
To: Alex Deucher <alexdeucher@gmail.com>
Cc: airlied@gmail.com, dri-devel@lists.freedesktop.org,
	Alex Deucher <alexander.deucher@amd.com>, joeyli <jlee@suse.com>,
	linux-acpi@vger.kernel.org, Zhang Rui <rui.zhang@intel.com>,
	Len Brown <lenb@kernel.org>
Subject: [PATCH/RFC] drm/radeon: ACPI: veto the keypress on ATIF events
Date: Wed, 1 Aug 2012 15:49:00 +0200	[thread overview]
Message-ID: <20120801134900.GA7909@growl> (raw)
In-Reply-To: <CADnq5_Meh0nW90PZ=kAJdK=WjZKTdr7+5vN=vza+PzyJnEWKAA@mail.gmail.com>

AMD ACPI interface may overload the standard event
ACPI_VIDEO_NOTIFY_PROBE (0x81) to signal AMD-specific events. In such
cases we don't want to send the keypress (KEY_SWITCHVIDEOMODE) to the
userspace because the user did not press the mode switch key (the
spurious keypress confuses the DE which usually changes the
display configuration and messes up a dual-screen setup).
This patch gives the radeon driver the chance to examine the event and
block the keypress if the event is an "AMD event".

Signed-off-by: Luca Tettamanti <kronos.it@gmail.com>
---
Any comment from ACPI front?

 drivers/acpi/video.c                 |   10 ++++++++--
 drivers/gpu/drm/radeon/radeon_acpi.c |    7 ++++++-
 2 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c
index 1e0a9e1..a8592c4 100644
--- a/drivers/acpi/video.c
+++ b/drivers/acpi/video.c
@@ -1457,7 +1457,12 @@ static void acpi_video_bus_notify(struct acpi_device *device, u32 event)
 		acpi_video_device_enumerate(video);
 		acpi_video_device_rebind(video);
 		acpi_bus_generate_proc_event(device, event, 0);
-		keycode = KEY_SWITCHVIDEOMODE;
+		/* This event is also overloaded by AMD ACPI interface, don't
+		 * send the key press if the event has been handled elsewhere
+		 * (e.g. radeon DRM driver).
+		 */
+		if (!acpi_notifier_call_chain(device, event, 0))
+			keycode = KEY_SWITCHVIDEOMODE;
 		break;
 
 	case ACPI_VIDEO_NOTIFY_CYCLE:	/* Cycle Display output hotkey pressed. */
@@ -1479,7 +1484,8 @@ static void acpi_video_bus_notify(struct acpi_device *device, u32 event)
 		break;
 	}
 
-	if (event != ACPI_VIDEO_NOTIFY_SWITCH)
+	if (event != ACPI_VIDEO_NOTIFY_SWITCH &&
+			event != ACPI_VIDEO_NOTIFY_PROBE)
 		acpi_notifier_call_chain(device, event, 0);
 
 	if (keycode) {
diff --git a/drivers/gpu/drm/radeon/radeon_acpi.c b/drivers/gpu/drm/radeon/radeon_acpi.c
index 96de08d..ee0d29e 100644
--- a/drivers/gpu/drm/radeon/radeon_acpi.c
+++ b/drivers/gpu/drm/radeon/radeon_acpi.c
@@ -273,7 +273,12 @@ int radeon_atif_handler(struct radeon_device *rdev,
 	}
 	/* TODO: check other events */
 
-	return NOTIFY_OK;
+	/* We've handled the event, stop the notifier chain. The ACPI interface
+	 * overloads ACPI_VIDEO_NOTIFY_PROBE, we don't want to send that to
+	 * userspace if the event was generated only to signal a SBIOS
+	 * request.
+	 */
+	return NOTIFY_BAD;
 }
 
 /* Call all ACPI methods here */
-- 
1.7.10.4

  parent reply	other threads:[~2012-08-01 13:49 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-25 17:38 [PATCH] drm/radeon: add new AMD ACPI header and update relevant code alexdeucher
2012-07-26 12:58 ` Luca Tettamanti
2012-07-26 15:35   ` Alex Deucher
2012-07-26 19:33     ` Luca Tettamanti
2012-07-26 19:42       ` Alex Deucher
2012-07-26 19:58         ` Alex Deucher
2012-07-28 14:56         ` Luca Tettamanti
2012-07-28 21:29           ` Alex Deucher
2012-07-29 13:06             ` Luca Tettamanti
2012-07-30 14:20               ` Alex Deucher
2012-07-30 20:24                 ` Luca Tettamanti
2012-07-30 20:30                   ` Alex Deucher
2012-07-30 20:36                     ` Luca Tettamanti
2012-07-30 20:45                   ` Alex Deucher
2012-07-31  9:16                     ` Luca Tettamanti
2012-07-31 13:58                       ` Alex Deucher
2012-07-31 20:05                         ` Luca Tettamanti
2012-07-31 21:33                           ` Alex Deucher
2012-08-01  8:57                             ` Luca Tettamanti
2012-08-01 13:56                               ` Alex Deucher
2012-08-02 15:03                                 ` Alex Deucher
2012-08-02 16:31                                   ` Luca Tettamanti
2012-08-02 16:33                                     ` Alex Deucher
2012-08-02 20:54                                       ` Alex Deucher
2012-08-01 13:49                             ` Luca Tettamanti [this message]
2012-08-01 14:02                               ` [PATCH/RFC] drm/radeon: ACPI: veto the keypress on ATIF events Alex Deucher
2012-08-01 14:50                               ` joeyli
2012-08-02  0:45                               ` Zhang Rui
2012-08-02 13:46                                 ` Luca Tettamanti
2012-08-03  1:40                                   ` Zhang Rui
2012-08-03  1:45                                     ` Alex Deucher
2012-08-03  2:06                                       ` Zhang Rui
2012-07-29 19:33             ` [PATCH] drm/radeon: add new AMD ACPI header and update relevant code Luca Tettamanti
2012-07-30 14:29               ` Alex Deucher
2012-07-29  3:51           ` joeyli
2012-07-29 13:10             ` Luca Tettamanti
2012-07-30  8:32               ` joeyli
2012-07-30 14:16                 ` Luca Tettamanti
2012-07-28 14:39     ` Pali Rohár
2012-07-27  2:50   ` joeyli
2012-07-27  3:31     ` Alex Deucher
2012-07-27  4:46       ` joeyli
2012-07-27  9:02         ` Luca Tettamanti
2012-07-27 13:21         ` Alex Deucher
2012-07-27 15:32           ` joeyli
2012-07-27 15:36             ` joeyli
2012-07-27 16:31             ` Alex Deucher

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=20120801134900.GA7909@growl \
    --to=kronos.it@gmail.com \
    --cc=airlied@gmail.com \
    --cc=alexander.deucher@amd.com \
    --cc=alexdeucher@gmail.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=jlee@suse.com \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=rui.zhang@intel.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.