Lines Matching refs:drv
56 static void serio_attach_driver(struct serio_driver *drv);
58 static int serio_connect_driver(struct serio *serio, struct serio_driver *drv) in serio_connect_driver() argument
63 retval = drv->connect(serio, drv); in serio_connect_driver()
74 if (serio->drv && serio->drv->reconnect) in serio_reconnect_driver()
75 retval = serio->drv->reconnect(serio); in serio_reconnect_driver()
84 if (serio->drv) in serio_disconnect_driver()
85 serio->drv->disconnect(serio); in serio_disconnect_driver()
106 static int serio_bind_driver(struct serio *serio, struct serio_driver *drv) in serio_bind_driver() argument
110 if (serio_match_port(drv->id_table, serio)) { in serio_bind_driver()
112 serio->dev.driver = &drv->driver; in serio_bind_driver()
113 if (serio_connect_driver(serio, drv)) { in serio_bind_driver()
123 drv->description, error); in serio_bind_driver()
401 struct device_driver *drv; in drvctl_store() local
416 } else if ((drv = driver_find(buf, &serio_bus)) != NULL) { in drvctl_store()
418 error = serio_bind_driver(serio, to_serio_driver(drv)); in drvctl_store()
751 static ssize_t description_show(struct device_driver *drv, char *buf) in description_show() argument
753 struct serio_driver *driver = to_serio_driver(drv); in description_show()
758 static ssize_t bind_mode_show(struct device_driver *drv, char *buf) in bind_mode_show() argument
760 struct serio_driver *serio_drv = to_serio_driver(drv); in bind_mode_show()
764 static ssize_t bind_mode_store(struct device_driver *drv, const char *buf, size_t count) in bind_mode_store() argument
766 struct serio_driver *serio_drv = to_serio_driver(drv); in bind_mode_store()
792 struct serio_driver *drv = to_serio_driver(dev->driver); in serio_driver_probe() local
794 return serio_connect_driver(serio, drv); in serio_driver_probe()
808 if (serio->drv && serio->drv->cleanup) in serio_cleanup()
809 serio->drv->cleanup(serio); in serio_cleanup()
820 static void serio_attach_driver(struct serio_driver *drv) in serio_attach_driver() argument
824 error = driver_attach(&drv->driver); in serio_attach_driver()
827 drv->driver.name, error); in serio_attach_driver()
830 int __serio_register_driver(struct serio_driver *drv, struct module *owner, const char *mod_name) in __serio_register_driver() argument
832 bool manual_bind = drv->manual_bind; in __serio_register_driver()
835 drv->driver.bus = &serio_bus; in __serio_register_driver()
836 drv->driver.owner = owner; in __serio_register_driver()
837 drv->driver.mod_name = mod_name; in __serio_register_driver()
843 drv->manual_bind = true; in __serio_register_driver()
845 error = driver_register(&drv->driver); in __serio_register_driver()
848 drv->driver.name, error); in __serio_register_driver()
857 drv->manual_bind = false; in __serio_register_driver()
858 error = serio_queue_event(drv, NULL, SERIO_ATTACH_DRIVER); in __serio_register_driver()
860 driver_unregister(&drv->driver); in __serio_register_driver()
869 void serio_unregister_driver(struct serio_driver *drv) in serio_unregister_driver() argument
875 drv->manual_bind = true; /* so serio_find_driver ignores it */ in serio_unregister_driver()
876 serio_remove_pending_events(drv); in serio_unregister_driver()
880 if (serio->drv == drv) { in serio_unregister_driver()
888 driver_unregister(&drv->driver); in serio_unregister_driver()
893 static void serio_set_drv(struct serio *serio, struct serio_driver *drv) in serio_set_drv() argument
896 serio->drv = drv; in serio_set_drv()
900 static int serio_bus_match(struct device *dev, struct device_driver *drv) in serio_bus_match() argument
903 struct serio_driver *serio_drv = to_serio_driver(drv); in serio_bus_match()
975 int serio_open(struct serio *serio, struct serio_driver *drv) in serio_open() argument
977 serio_set_drv(serio, drv); in serio_open()
1005 if (likely(serio->drv)) { in serio_interrupt()
1006 ret = serio->drv->interrupt(serio, data, dfl); in serio_interrupt()