* [PATCH] sysfs input class patch - [1/1]
@ 2004-01-08 1:08 Greg KH
0 siblings, 0 replies; only message in thread
From: Greg KH @ 2004-01-08 1:08 UTC (permalink / raw)
To: Andrew Morton; +Cc: linux-kernel, linux-hotplug-devel
Hi,
Here's a single patch against 2.6.1-rc2 (should apply cleanly to 2.6.0)
that adds input device class support to sysfs.
This patch require the sysfs simple class patch that is currently in the
-mm tree. Only USB mice end up creating a symlink to the device that
the input device is assigned to at this time. I'll add the other
one-line changes to the input drivers at a later time.
Andrew, can you please add this patch to your -mm tree to get some
testing?
Note, Al Viro has pointed out a race condition with unloading modules
that use the simple class code to add sysfs support. I'll work on
fixing that up properly. Until then, these patches are good to play
with, just be careful when unloading modules that you don't have any
sysfs files open (a very rare occurrence in the wild, but very easy to
duplicate if you want to.)
Thanks a lot to Hanna Linder for early versions of this patch, on which
this is based.
thanks,
greg k-h
diff -Nru a/drivers/input/evdev.c b/drivers/input/evdev.c
--- a/drivers/input/evdev.c Wed Jan 7 17:12:01 2004
+++ b/drivers/input/evdev.c Wed Jan 7 17:12:01 2004
@@ -92,6 +92,7 @@
static void evdev_free(struct evdev *evdev)
{
devfs_remove("input/event%d", evdev->minor);
+ simple_remove_class_device(MKDEV(INPUT_MAJOR, EVDEV_MINOR_BASE + evdev->minor));
evdev_table[evdev->minor] = NULL;
kfree(evdev);
}
@@ -426,6 +427,9 @@
devfs_mk_cdev(MKDEV(INPUT_MAJOR, EVDEV_MINOR_BASE + minor),
S_IFCHR|S_IRUGO|S_IWUSR, "input/event%d", minor);
+ simple_add_class_device(&input_class,
+ MKDEV(INPUT_MAJOR, EVDEV_MINOR_BASE + minor),
+ dev->dev, "event%d", minor);
return &evdev->handle;
}
diff -Nru a/drivers/input/joydev.c b/drivers/input/joydev.c
--- a/drivers/input/joydev.c Wed Jan 7 17:12:01 2004
+++ b/drivers/input/joydev.c Wed Jan 7 17:12:01 2004
@@ -145,6 +145,7 @@
{
devfs_remove("js%d", joydev->minor);
joydev_table[joydev->minor] = NULL;
+ simple_remove_class_device(MKDEV(INPUT_MAJOR, JOYDEV_MINOR_BASE + joydev->minor));
kfree(joydev);
}
@@ -444,6 +445,9 @@
devfs_mk_cdev(MKDEV(INPUT_MAJOR, JOYDEV_MINOR_BASE + minor),
S_IFCHR|S_IRUGO|S_IWUSR, "js%d", minor);
+ simple_add_class_device(&input_class,
+ MKDEV(INPUT_MAJOR, JOYDEV_MINOR_BASE + minor),
+ dev->dev, "js%d", minor);
return &joydev->handle;
}
diff -Nru a/drivers/input/mousedev.c b/drivers/input/mousedev.c
--- a/drivers/input/mousedev.c Wed Jan 7 17:12:01 2004
+++ b/drivers/input/mousedev.c Wed Jan 7 17:12:01 2004
@@ -203,6 +203,7 @@
static void mousedev_free(struct mousedev *mousedev)
{
devfs_remove("input/mouse%d", mousedev->minor);
+ simple_remove_class_device(MKDEV(INPUT_MAJOR, MOUSEDEV_MINOR_BASE + mousedev->minor));
mousedev_table[mousedev->minor] = NULL;
kfree(mousedev);
}
@@ -464,6 +465,9 @@
devfs_mk_cdev(MKDEV(INPUT_MAJOR, MOUSEDEV_MINOR_BASE + minor),
S_IFCHR|S_IRUGO|S_IWUSR, "input/mouse%d", minor);
+ simple_add_class_device(&input_class,
+ MKDEV(INPUT_MAJOR, MOUSEDEV_MINOR_BASE + minor),
+ dev->dev, "mouse%d", minor);
return &mousedev->handle;
}
@@ -542,7 +546,8 @@
devfs_mk_cdev(MKDEV(INPUT_MAJOR, MOUSEDEV_MINOR_BASE + MOUSEDEV_MIX),
S_IFCHR|S_IRUGO|S_IWUSR, "input/mice");
-
+ simple_add_class_device(&input_class, MKDEV(INPUT_MAJOR, MOUSEDEV_MINOR_BASE + MOUSEDEV_MIX),
+ NULL, "mice");
#ifdef CONFIG_INPUT_MOUSEDEV_PSAUX
if (!(mousedev_mix.misc = !misc_register(&psaux_mouse)))
@@ -561,6 +566,7 @@
misc_deregister(&psaux_mouse);
#endif
devfs_remove("input/mice");
+ simple_remove_class_device(MKDEV(INPUT_MAJOR, MOUSEDEV_MINOR_BASE + MOUSEDEV_MIX));
input_unregister_handler(&mousedev_handler);
}
diff -Nru a/drivers/input/tsdev.c b/drivers/input/tsdev.c
--- a/drivers/input/tsdev.c Wed Jan 7 17:12:01 2004
+++ b/drivers/input/tsdev.c Wed Jan 7 17:12:01 2004
@@ -119,6 +119,7 @@
static void tsdev_free(struct tsdev *tsdev)
{
devfs_remove("input/ts%d", tsdev->minor);
+ simple_remove_class_device(MKDEV(INPUT_MAJOR, TSDEV_MINOR_BASE + tsdev->minor));
tsdev_table[tsdev->minor] = NULL;
kfree(tsdev);
}
@@ -333,6 +334,9 @@
devfs_mk_cdev(MKDEV(INPUT_MAJOR, TSDEV_MINOR_BASE + minor),
S_IFCHR|S_IRUGO|S_IWUSR, "input/ts%d", minor);
+ simple_add_class_device(&input_class,
+ MKDEV(INPUT_MAJOR, TSDEV_MINOR_BASE + minor),
+ dev->dev, "ts%d", minor);
return &tsdev->handle;
}
diff -Nru a/drivers/usb/input/hid-input.c b/drivers/usb/input/hid-input.c
--- a/drivers/usb/input/hid-input.c Wed Jan 7 17:12:01 2004
+++ b/drivers/usb/input/hid-input.c Wed Jan 7 17:12:01 2004
@@ -592,6 +592,7 @@
hidinput->input.id.vendor = dev->descriptor.idVendor;
hidinput->input.id.product = dev->descriptor.idProduct;
hidinput->input.id.version = dev->descriptor.bcdDevice;
+ hidinput->input.dev = &dev->dev;
}
for (i = 0; i < report->maxfield; i++)
diff -Nru a/include/linux/input.h b/include/linux/input.h
--- a/include/linux/input.h Wed Jan 7 17:12:01 2004
+++ b/include/linux/input.h Wed Jan 7 17:12:01 2004
@@ -809,6 +809,7 @@
int (*erase_effect)(struct input_dev *dev, int effect_id);
struct input_handle *grab;
+ struct device *dev;
struct list_head h_list;
struct list_head node;
-------------------------------------------------------
This SF.net email is sponsored by: Perforce Software.
Perforce is the Fast Software Configuration Management System offering
advanced branching capabilities and atomic changes on 50+ platforms.
Free Eval! http://www.perforce.com/perforce/loadprog.html
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
Linux-hotplug-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2004-01-08 1:08 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-01-08 1:08 [PATCH] sysfs input class patch - [1/1] Greg KH
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).