Commit 8a37c65d authored by Luca Tettamanti's avatar Luca Tettamanti Committed by Alex Deucher
Browse files

ACPI video: allow events handlers to veto the keypress



The standard video events may be overloaded for device specific
purposes. For example AMD ACPI interface overloads
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 handlers the chance to examine the event and
block the keypress if the event is device specific.
v2: refactor as suggested by Zhang Rui <rui.zhang@intel.com>

Signed-off-by: default avatarLuca Tettamanti <kronos.it@gmail.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent c4917074
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -1448,7 +1448,6 @@ static void acpi_video_bus_notify(struct acpi_device *device, u32 event)
	case ACPI_VIDEO_NOTIFY_SWITCH:	/* User requested a switch,
					 * most likely via hotkey. */
		acpi_bus_generate_proc_event(device, event, 0);
		if (!acpi_notifier_call_chain(device, event, 0))
		keycode = KEY_SWITCHVIDEOMODE;
		break;

@@ -1479,8 +1478,9 @@ static void acpi_video_bus_notify(struct acpi_device *device, u32 event)
		break;
	}

	if (event != ACPI_VIDEO_NOTIFY_SWITCH)
		acpi_notifier_call_chain(device, event, 0);
	if (acpi_notifier_call_chain(device, event, 0))
		/* Something vetoed the keypress. */
		keycode = 0;

	if (keycode) {
		input_report_key(input, keycode, 1);