summaryrefslogtreecommitdiffstats
path: root/drivers/hid/hid-generic.c
diff options
context:
space:
mode:
authorBenjamin Tissoires <benjamin.tissoires@redhat.com>2017-12-08 09:29:44 -0500
committerJiri Kosina <jkosina@suse.cz>2018-03-06 10:00:51 -0500
commitc17a7476e4c41884d82e3675c25ceae982c07a63 (patch)
tree577796c9bda4e5663207717afdfd79b054764b9c /drivers/hid/hid-generic.c
parent001fab49dd4fcf64b1b8ccecb8656baa3f3f1a9a (diff)
HID: core: rewrite the hid-generic automatic unbind
We actually can have the unbind/rebind logic in hid-core.c, leaving only the match function in hid-generic. This makes hid-generic simpler and the whole logic simpler too. Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'drivers/hid/hid-generic.c')
-rw-r--r--drivers/hid/hid-generic.c33
1 files changed, 0 insertions, 33 deletions
diff --git a/drivers/hid/hid-generic.c b/drivers/hid/hid-generic.c
index 3c0a1bf433d7..c25b4718de44 100644
--- a/drivers/hid/hid-generic.c
+++ b/drivers/hid/hid-generic.c
@@ -26,37 +26,6 @@
26 26
27static struct hid_driver hid_generic; 27static struct hid_driver hid_generic;
28 28
29static int __unmap_hid_generic(struct device *dev, void *data)
30{
31 struct hid_driver *hdrv = data;
32 struct hid_device *hdev = to_hid_device(dev);
33
34 /* only unbind matching devices already bound to hid-generic */
35 if (hdev->driver != &hid_generic ||
36 hid_match_device(hdev, hdrv) == NULL)
37 return 0;
38
39 if (dev->parent) /* Needed for USB */
40 device_lock(dev->parent);
41 device_release_driver(dev);
42 if (dev->parent)
43 device_unlock(dev->parent);
44
45 return 0;
46}
47
48static void hid_generic_add_driver(struct hid_driver *hdrv)
49{
50 bus_for_each_dev(&hid_bus_type, NULL, hdrv, __unmap_hid_generic);
51}
52
53static void hid_generic_removed_driver(struct hid_driver *hdrv)
54{
55 int ret;
56
57 ret = driver_attach(&hid_generic.driver);
58}
59
60static int __check_hid_generic(struct device_driver *drv, void *data) 29static int __check_hid_generic(struct device_driver *drv, void *data)
61{ 30{
62 struct hid_driver *hdrv = to_hid_driver(drv); 31 struct hid_driver *hdrv = to_hid_driver(drv);
@@ -97,8 +66,6 @@ static struct hid_driver hid_generic = {
97 .name = "hid-generic", 66 .name = "hid-generic",
98 .id_table = hid_table, 67 .id_table = hid_table,
99 .match = hid_generic_match, 68 .match = hid_generic_match,
100 .bus_add_driver = hid_generic_add_driver,
101 .bus_removed_driver = hid_generic_removed_driver,
102}; 69};
103module_hid_driver(hid_generic); 70module_hid_driver(hid_generic);
104 71