From foo@baz Tue Apr 9 12:12:43 2002 To: Greg KH Date: 07 Jan 2004 17:11:40 -08:00 From: greg@kroah.com Subject: Input: add class support for input devices. 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;