Lines Matching full:driver
24 * pci_epf_linkup() - Notify the function driver that EPC device has
29 * Invoke to notify the function driver that EPC device has established
34 if (!epf->driver) { in pci_epf_linkup()
35 dev_WARN(&epf->dev, "epf device not bound to driver\n"); in pci_epf_linkup()
39 epf->driver->ops->linkup(epf); in pci_epf_linkup()
44 * pci_epf_unbind() - Notify the function driver that the binding between the
48 * Invoke to notify the function driver that the binding between the EPF device
53 if (!epf->driver) { in pci_epf_unbind()
54 dev_WARN(&epf->dev, "epf device not bound to driver\n"); in pci_epf_unbind()
58 epf->driver->ops->unbind(epf); in pci_epf_unbind()
59 module_put(epf->driver->owner); in pci_epf_unbind()
64 * pci_epf_bind() - Notify the function driver that the EPF device has been
68 * Invoke to notify the function driver that it has been bound to a EPC device
72 if (!epf->driver) { in pci_epf_bind()
73 dev_WARN(&epf->dev, "epf device not bound to driver\n"); in pci_epf_bind()
77 if (!try_module_get(epf->driver->owner)) in pci_epf_bind()
80 return epf->driver->ops->bind(epf); in pci_epf_bind()
148 static void pci_epf_remove_cfs(struct pci_epf_driver *driver) in pci_epf_remove_cfs() argument
156 list_for_each_entry_safe(group, tmp, &driver->epf_group, group_entry) in pci_epf_remove_cfs()
158 list_del(&driver->epf_group); in pci_epf_remove_cfs()
163 * pci_epf_unregister_driver() - unregister the PCI EPF driver
164 * @driver: the PCI EPF driver that has to be unregistered
166 * Invoke to unregister the PCI EPF driver.
168 void pci_epf_unregister_driver(struct pci_epf_driver *driver) in pci_epf_unregister_driver() argument
170 pci_epf_remove_cfs(driver); in pci_epf_unregister_driver()
171 driver_unregister(&driver->driver); in pci_epf_unregister_driver()
175 static int pci_epf_add_cfs(struct pci_epf_driver *driver) in pci_epf_add_cfs() argument
183 INIT_LIST_HEAD(&driver->epf_group); in pci_epf_add_cfs()
185 id = driver->id_table; in pci_epf_add_cfs()
189 pci_epf_remove_cfs(driver); in pci_epf_add_cfs()
194 list_add_tail(&group->group_entry, &driver->epf_group); in pci_epf_add_cfs()
203 * __pci_epf_register_driver() - register a new PCI EPF driver
204 * @driver: structure representing PCI EPF driver
205 * @owner: the owner of the module that registers the PCI EPF driver
207 * Invoke to register a new PCI EPF driver.
209 int __pci_epf_register_driver(struct pci_epf_driver *driver, in __pci_epf_register_driver() argument
214 if (!driver->ops) in __pci_epf_register_driver()
217 if (!driver->ops->bind || !driver->ops->unbind || !driver->ops->linkup) in __pci_epf_register_driver()
220 driver->driver.bus = &pci_epf_bus_type; in __pci_epf_register_driver()
221 driver->driver.owner = owner; in __pci_epf_register_driver()
223 ret = driver_register(&driver->driver); in __pci_epf_register_driver()
227 pci_epf_add_cfs(driver); in __pci_epf_register_driver()
248 * the EPF device to a EPF driver
335 struct pci_epf_driver *driver = to_pci_epf_driver(drv); in pci_epf_device_match() local
337 if (driver->id_table) in pci_epf_device_match()
338 return pci_epf_match_id(driver->id_table, epf); in pci_epf_device_match()
346 struct pci_epf_driver *driver = to_pci_epf_driver(dev->driver); in pci_epf_device_probe() local
348 if (!driver->probe) in pci_epf_device_probe()
351 epf->driver = driver; in pci_epf_device_probe()
353 return driver->probe(epf); in pci_epf_device_probe()
360 struct pci_epf_driver *driver = to_pci_epf_driver(dev->driver); in pci_epf_device_remove() local
362 if (driver->remove) in pci_epf_device_remove()
363 ret = driver->remove(epf); in pci_epf_device_remove()
364 epf->driver = NULL; in pci_epf_device_remove()