Lines Matching refs:drv

58 static void serio_attach_driver(struct serio_driver *drv);
60 static int serio_connect_driver(struct serio *serio, struct serio_driver *drv) in serio_connect_driver() argument
65 retval = drv->connect(serio, drv); in serio_connect_driver()
76 if (serio->drv && serio->drv->reconnect) in serio_reconnect_driver()
77 retval = serio->drv->reconnect(serio); in serio_reconnect_driver()
86 if (serio->drv) in serio_disconnect_driver()
87 serio->drv->disconnect(serio); in serio_disconnect_driver()
108 static int serio_bind_driver(struct serio *serio, struct serio_driver *drv) in serio_bind_driver() argument
112 if (serio_match_port(drv->id_table, serio)) { in serio_bind_driver()
114 serio->dev.driver = &drv->driver; in serio_bind_driver()
115 if (serio_connect_driver(serio, drv)) { in serio_bind_driver()
125 drv->description, error); in serio_bind_driver()
403 struct device_driver *drv; in drvctl_store() local
418 } else if ((drv = driver_find(buf, &serio_bus)) != NULL) { in drvctl_store()
420 error = serio_bind_driver(serio, to_serio_driver(drv)); in drvctl_store()
753 static ssize_t description_show(struct device_driver *drv, char *buf) in description_show() argument
755 struct serio_driver *driver = to_serio_driver(drv); in description_show()
760 static ssize_t bind_mode_show(struct device_driver *drv, char *buf) in bind_mode_show() argument
762 struct serio_driver *serio_drv = to_serio_driver(drv); in bind_mode_show()
766 static ssize_t bind_mode_store(struct device_driver *drv, const char *buf, size_t count) in bind_mode_store() argument
768 struct serio_driver *serio_drv = to_serio_driver(drv); in bind_mode_store()
794 struct serio_driver *drv = to_serio_driver(dev->driver); in serio_driver_probe() local
796 return serio_connect_driver(serio, drv); in serio_driver_probe()
810 if (serio->drv && serio->drv->cleanup) in serio_cleanup()
811 serio->drv->cleanup(serio); in serio_cleanup()
822 static void serio_attach_driver(struct serio_driver *drv) in serio_attach_driver() argument
826 error = driver_attach(&drv->driver); in serio_attach_driver()
829 drv->driver.name, error); in serio_attach_driver()
832 int __serio_register_driver(struct serio_driver *drv, struct module *owner, const char *mod_name) in __serio_register_driver() argument
834 bool manual_bind = drv->manual_bind; in __serio_register_driver()
837 drv->driver.bus = &serio_bus; in __serio_register_driver()
838 drv->driver.owner = owner; in __serio_register_driver()
839 drv->driver.mod_name = mod_name; in __serio_register_driver()
845 drv->manual_bind = true; in __serio_register_driver()
847 error = driver_register(&drv->driver); in __serio_register_driver()
850 drv->driver.name, error); in __serio_register_driver()
859 drv->manual_bind = false; in __serio_register_driver()
860 error = serio_queue_event(drv, NULL, SERIO_ATTACH_DRIVER); in __serio_register_driver()
862 driver_unregister(&drv->driver); in __serio_register_driver()
871 void serio_unregister_driver(struct serio_driver *drv) in serio_unregister_driver() argument
877 drv->manual_bind = true; /* so serio_find_driver ignores it */ in serio_unregister_driver()
878 serio_remove_pending_events(drv); in serio_unregister_driver()
882 if (serio->drv == drv) { in serio_unregister_driver()
890 driver_unregister(&drv->driver); in serio_unregister_driver()
895 static void serio_set_drv(struct serio *serio, struct serio_driver *drv) in serio_set_drv() argument
898 serio->drv = drv; in serio_set_drv()
902 static int serio_bus_match(struct device *dev, struct device_driver *drv) in serio_bus_match() argument
905 struct serio_driver *serio_drv = to_serio_driver(drv); in serio_bus_match()
977 int serio_open(struct serio *serio, struct serio_driver *drv) in serio_open() argument
979 serio_set_drv(serio, drv); in serio_open()
1007 if (likely(serio->drv)) { in serio_interrupt()
1008 ret = serio->drv->interrupt(serio, data, dfl); in serio_interrupt()