From: Dmitry Torokhov <dtor_core@ameritech.net>
To: Vojtech Pavlik <vojtech@suse.cz>
Cc: Andrew Morton <akpm@osdl.org>, linux-kernel@vger.kernel.org
Subject: [PATCH 8/19] serio rebind
Date: Mon, 28 Jun 2004 00:16:27 -0500 [thread overview]
Message-ID: <200406280016.29032.dtor_core@ameritech.net> (raw)
In-Reply-To: <200406280015.38752.dtor_core@ameritech.net>
===================================================================
ChangeSet@1.1782, 2004-06-27 15:56:07-05:00, dtor_core@ameritech.net
Input: allow users manually rebind serio ports, like this:
echo -n "psmouse" > /sys/bus/serio/devices/serio0/driver
echo -n "atkbd" > /sys/bus/serio/devices/serio1/driver
echo -n "none" > /sys/bus/serio/devices/serio1/driver
echo -n "reconnect" > /sys/bus/serio/devices/serio1/driver
echo -n "rescan" > /sys/bus/serio/devices/serio1/driver
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
serio.c | 34 +++++++++++++++++++++++++++++++++-
1 files changed, 33 insertions(+), 1 deletion(-)
===================================================================
diff -Nru a/drivers/input/serio/serio.c b/drivers/input/serio/serio.c
--- a/drivers/input/serio/serio.c 2004-06-27 17:49:15 -05:00
+++ b/drivers/input/serio/serio.c 2004-06-27 17:49:15 -05:00
@@ -257,7 +257,39 @@
{
return sprintf(buf, "%s\n", dev->driver ? dev->driver->name : "(none)");
}
-static DEVICE_ATTR(driver, S_IRUGO, serio_show_driver, NULL);
+
+static ssize_t serio_rebind_driver(struct device *dev, const char *buf, size_t count)
+{
+ struct serio *serio = to_serio_port(dev);
+ struct device_driver *drv;
+ struct kobject *k;
+ int retval;
+
+ retval = down_interruptible(&serio_sem);
+ if (retval)
+ return retval;
+
+ retval = count;
+ if (!strncmp(buf, "none", count)) {
+ serio_disconnect_port(serio);
+ } else if (!strncmp(buf, "reconnect", count)) {
+ serio_reconnect_port(serio);
+ } else if (!strncmp(buf, "rescan", count)) {
+ serio_disconnect_port(serio);
+ serio_connect_port(serio, NULL);
+ } else if ((k = kset_find_obj(&serio_bus.drivers, buf)) != NULL) {
+ drv = container_of(k, struct device_driver, kobj);
+ serio_disconnect_port(serio);
+ serio_connect_port(serio, to_serio_driver(drv));
+ } else {
+ retval = -EINVAL;
+ }
+
+ up(&serio_sem);
+
+ return retval;
+}
+static DEVICE_ATTR(driver, S_IWUSR | S_IRUGO, serio_show_driver, serio_rebind_driver);
static void serio_release_port(struct device *dev)
{
next prev parent reply other threads:[~2004-06-28 5:28 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-06-28 5:08 [PATCH 0/19] New set of input patches Dmitry Torokhov
2004-06-28 5:09 ` [PATCH 1/19] psmouse state locking Dmitry Torokhov
2004-06-28 5:10 ` [PATCH 2/19] serio connect/disconnect mandatory Dmitry Torokhov
2004-06-28 5:11 ` [PATCH 3/19] serio renames 1 Dmitry Torokhov
2004-06-28 5:12 ` [PATCH 4/19] serio renames 2 Dmitry Torokhov
2004-06-28 5:13 ` [PATCH 5/19] serio dynamic allocation Dmitry Torokhov
2004-06-28 5:14 ` [PATCH 6/19] serio avoid recursion Dmitry Torokhov
2004-06-28 5:15 ` [PATCH 7/19] serio sysfs intergration Dmitry Torokhov
2004-06-28 5:16 ` Dmitry Torokhov [this message]
2004-06-28 5:17 ` PATCH 9/19] serio manual bind Dmitry Torokhov
2004-06-28 5:17 ` [PATCH 10/19] serio_raw driver Dmitry Torokhov
2004-06-28 5:19 ` [PATCH 11/19] add platform_device_register_simple Dmitry Torokhov
2004-06-28 5:19 ` [PATCH 12/19] convert i8042 into a platform device Dmitry Torokhov
2004-06-28 5:21 ` [PATCH 13/19] more platform device conversions Dmitry Torokhov
2004-06-28 5:22 ` [PATCH 14/19] bind serio ports and their parents Dmitry Torokhov
2004-06-28 5:23 ` [PATCH 15/19] synaptics passthrough handling Dmitry Torokhov
2004-06-28 5:24 ` [PATCH 16/19] add bus' default driver attributes Dmitry Torokhov
2004-06-28 5:25 ` [PATCH 17/19] serio use bus' default driver/device attributes Dmitry Torokhov
2004-06-28 5:26 ` [PATCH 18/19] add driver_find Dmitry Torokhov
2004-06-28 5:27 ` [PATCH 19/19] serio use driver_find Dmitry Torokhov
2004-06-28 6:52 ` [PATCH 0/19] New set of input patches Vojtech Pavlik
2004-06-28 7:13 ` Dmitry Torokhov
2004-06-28 7:51 ` Vojtech Pavlik
2004-06-28 10:32 ` Neil Brown
2004-06-28 12:13 ` Vojtech Pavlik
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=200406280016.29032.dtor_core@ameritech.net \
--to=dtor_core@ameritech.net \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
--cc=vojtech@suse.cz \
/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