All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matthew Garrett <mjg59@srcf.ucam.org>
To: linux-input@vger.kernel.org
Cc: linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org,
	kristen.c.accardi@intel.com
Subject: Version 2: [PATCH 2/3] ACPI: Send switch event on dock events
Date: Thu, 29 May 2008 09:22:02 +0100	[thread overview]
Message-ID: <20080529082202.GD16444@srcf.ucam.org> (raw)
In-Reply-To: <20080528132152.GB32646@srcf.ucam.org>

Send a switch event on docking for consistency with docks that don't 
present as a separate device.

Signed-off-by: Matthew Garrett <mjg@redhat.com>

---

Added a dependency on CONFIG_INPUT for the dock driver. This is 
consistent with the other ACPI modules that send input events.

diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
index c52fca8..df8de04 100644
--- a/drivers/acpi/Kconfig
+++ b/drivers/acpi/Kconfig
@@ -160,6 +160,7 @@ config ACPI_FAN
 
 config ACPI_DOCK
 	tristate "Dock"
+	depends on INPUT
 	depends on EXPERIMENTAL
 	help
 	  This driver adds support for ACPI controlled docking stations
diff --git a/drivers/acpi/dock.c b/drivers/acpi/dock.c
index fa44fb9..a67e74c 100644
--- a/drivers/acpi/dock.c
+++ b/drivers/acpi/dock.c
@@ -25,6 +25,7 @@
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/init.h>
+#include <linux/input.h>
 #include <linux/types.h>
 #include <linux/notifier.h>
 #include <linux/platform_device.h>
@@ -65,6 +66,7 @@ struct dock_station {
 	struct mutex hp_lock;
 	struct list_head dependent_devices;
 	struct list_head hotplug_devices;
+	struct input_dev *dock_input;
 };
 
 struct dock_dependent_device {
@@ -345,10 +347,13 @@ static void dock_event(struct dock_station *ds, u32 event, int num)
 	char event_string[13];
 	char *envp[] = { event_string, NULL };
 
-	if (num == UNDOCK_EVENT)
+	if (num == UNDOCK_EVENT) {
+		input_report_switch(dock_station->dock_input, SW_DOCK, 0);
 		sprintf(event_string, "EVENT=undock");
-	else
+	} else {
+		input_report_switch(dock_station->dock_input, SW_DOCK, 1);
 		sprintf(event_string, "EVENT=dock");
+	}
 
 	/*
 	 * Indicate that the status of the dock station has
@@ -834,6 +839,19 @@ static int dock_add(acpi_handle handle)
 		goto dock_add_err;
 	}
 
+	/* Set up input device */
+	dock_station->dock_input = input_allocate_device();
+	dock_station->dock_input->name = "ACPI dock";
+	dock_station->dock_input->phys = "dock/input0";
+	dock_station->dock_input->id.bustype = BUS_HOST;
+	dock_station->dock_input->dev.parent = &dock_device->dev;
+	set_bit(EV_SW, dock_station->dock_input->evbit);
+	set_bit(SW_DOCK, dock_station->dock_input->swbit);
+	ret = input_register_device(dock_station->dock_input);
+
+	if (ret)
+		input_free_device(dock_station->dock_input);
+
 	printk(KERN_INFO PREFIX "%s \n", ACPI_DOCK_DRIVER_DESCRIPTION);
 
 	return 0;
@@ -881,6 +899,8 @@ static int dock_remove(void)
 	device_remove_file(&dock_device->dev, &dev_attr_flags);
 	platform_device_unregister(dock_device);
 
+	input_unregister_device(dock_station->dock_input);
+
 	/* free dock station memory */
 	kfree(dock_station);
 	dock_station = NULL;

-- 
Matthew Garrett | mjg59@srcf.ucam.org

  parent reply	other threads:[~2008-05-29  8:22 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-05-23 16:09 [PATCH] Add switch for dock events Matthew Garrett
2008-05-24  1:23 ` Andrew Morton
2008-05-28 13:06 ` [PATCH 1/3] Input: " Matthew Garrett
2008-05-28 13:21   ` [PATCH 2/3] ACPI: Send switch event on " Matthew Garrett
2008-05-28 13:29     ` [PATCH 3/3] Misc: Add HP WMI laptop extras driver Matthew Garrett
2008-05-29  5:42       ` RESEND: " Andrew Morton
2008-05-29  8:07         ` Matthew Garrett
2008-05-29  8:23       ` Matthew Garrett
2008-06-02 23:30         ` Andrew Morton
2008-06-07 10:00       ` Carlos Corbacho
2008-05-28 13:34     ` Matthew Garrett
2008-05-29  5:32     ` RESEND: [PATCH 2/3] ACPI: Send switch event on dock events Andrew Morton
2008-05-29  8:15       ` Matthew Garrett
2008-05-29  8:22     ` Matthew Garrett [this message]
2008-06-09  9:48       ` Version 2: " Andrew Morton
2008-05-28 13:33   ` RESEND: " Matthew Garrett
2008-05-29  8:20   ` Version 2: [PATCH 1/3] Input: Add switch for " Matthew Garrett
2008-05-28 13:32 ` RESEND: " Matthew Garrett
2008-05-28 13:33 ` Matthew Garrett

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=20080529082202.GD16444@srcf.ucam.org \
    --to=mjg59@srcf.ucam.org \
    --cc=kristen.c.accardi@intel.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /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.