Lines Matching refs:drv
51 int pci_add_dynid(struct pci_driver *drv, in pci_add_dynid() argument
71 spin_lock(&drv->dynids.lock); in pci_add_dynid()
72 list_add_tail(&dynid->node, &drv->dynids.list); in pci_add_dynid()
73 spin_unlock(&drv->dynids.lock); in pci_add_dynid()
75 return driver_attach(&drv->driver); in pci_add_dynid()
79 static void pci_free_dynids(struct pci_driver *drv) in pci_free_dynids() argument
83 spin_lock(&drv->dynids.lock); in pci_free_dynids()
84 list_for_each_entry_safe(dynid, n, &drv->dynids.list, node) { in pci_free_dynids()
88 spin_unlock(&drv->dynids.lock); in pci_free_dynids()
254 static const struct pci_device_id *pci_match_device(struct pci_driver *drv, in pci_match_device() argument
261 if (dev->driver_override && strcmp(dev->driver_override, drv->name)) in pci_match_device()
265 spin_lock(&drv->dynids.lock); in pci_match_device()
266 list_for_each_entry(dynid, &drv->dynids.list, node) { in pci_match_device()
272 spin_unlock(&drv->dynids.lock); in pci_match_device()
275 found_id = pci_match_id(drv->id_table, dev); in pci_match_device()
285 struct pci_driver *drv; member
294 struct pci_driver *pci_drv = ddi->drv; in local_pci_probe()
324 static int pci_call_probe(struct pci_driver *drv, struct pci_dev *dev, in pci_call_probe() argument
328 struct drv_dev_and_id ddi = { drv, dev, id }; in pci_call_probe()
374 static int __pci_device_probe(struct pci_driver *drv, struct pci_dev *pci_dev) in __pci_device_probe() argument
379 if (!pci_dev->driver && drv->probe) { in __pci_device_probe()
382 id = pci_match_device(drv, pci_dev); in __pci_device_probe()
384 error = pci_call_probe(drv, pci_dev, id); in __pci_device_probe()
394 struct pci_driver *drv; in pci_device_probe() local
397 drv = to_pci_driver(dev->driver); in pci_device_probe()
400 error = __pci_device_probe(drv, pci_dev); in pci_device_probe()
410 struct pci_driver *drv = pci_dev->driver; in pci_device_remove() local
412 if (drv) { in pci_device_remove()
413 if (drv->remove) { in pci_device_remove()
415 drv->remove(pci_dev); in pci_device_remove()
447 struct pci_driver *drv = pci_dev->driver; in pci_device_shutdown() local
451 if (drv && drv->shutdown) in pci_device_shutdown()
452 drv->shutdown(pci_dev); in pci_device_shutdown()
539 struct pci_driver *drv = pci_dev->driver; in pci_legacy_suspend() local
541 if (drv && drv->suspend) { in pci_legacy_suspend()
545 error = drv->suspend(pci_dev, state); in pci_legacy_suspend()
546 suspend_report_result(drv->suspend, error); in pci_legacy_suspend()
554 drv->suspend); in pci_legacy_suspend()
566 struct pci_driver *drv = pci_dev->driver; in pci_legacy_suspend_late() local
568 if (drv && drv->suspend_late) { in pci_legacy_suspend_late()
572 error = drv->suspend_late(pci_dev, state); in pci_legacy_suspend_late()
573 suspend_report_result(drv->suspend_late, error); in pci_legacy_suspend_late()
581 drv->suspend_late); in pci_legacy_suspend_late()
600 struct pci_driver *drv = pci_dev->driver; in pci_legacy_resume_early() local
602 return drv && drv->resume_early ? in pci_legacy_resume_early()
603 drv->resume_early(pci_dev) : 0; in pci_legacy_resume_early()
609 struct pci_driver *drv = pci_dev->driver; in pci_legacy_resume() local
613 return drv && drv->resume ? in pci_legacy_resume()
614 drv->resume(pci_dev) : pci_pm_reenable_device(pci_dev); in pci_legacy_resume()
636 struct pci_driver *drv = pci_dev->driver; in pci_has_legacy_pm_support() local
637 bool ret = drv && (drv->suspend || drv->suspend_late || drv->resume in pci_has_legacy_pm_support()
638 || drv->resume_early); in pci_has_legacy_pm_support()
645 WARN(ret && drv->driver.pm, "driver %s device %04x:%04x\n", in pci_has_legacy_pm_support()
646 drv->name, pci_dev->vendor, pci_dev->device); in pci_has_legacy_pm_support()
655 struct device_driver *drv = dev->driver; in pci_pm_prepare() local
665 if (drv && drv->pm && drv->pm->prepare) in pci_pm_prepare()
666 error = drv->pm->prepare(dev); in pci_pm_prepare()
787 struct device_driver *drv = dev->driver; in pci_pm_resume_noirq() local
795 if (drv && drv->pm && drv->pm->resume_noirq) in pci_pm_resume_noirq()
796 error = drv->pm->resume_noirq(dev); in pci_pm_resume_noirq()
887 struct device_driver *drv = dev->driver; in pci_pm_freeze_noirq() local
892 if (drv && drv->pm && drv->pm->freeze_noirq) { in pci_pm_freeze_noirq()
895 error = drv->pm->freeze_noirq(dev); in pci_pm_freeze_noirq()
896 suspend_report_result(drv->pm->freeze_noirq, error); in pci_pm_freeze_noirq()
915 struct device_driver *drv = dev->driver; in pci_pm_thaw_noirq() local
935 if (drv && drv->pm && drv->pm->thaw_noirq) in pci_pm_thaw_noirq()
936 error = drv->pm->thaw_noirq(dev); in pci_pm_thaw_noirq()
1006 struct device_driver *drv = dev->driver; in pci_pm_poweroff_noirq() local
1011 if (!drv || !drv->pm) { in pci_pm_poweroff_noirq()
1016 if (drv->pm->poweroff_noirq) { in pci_pm_poweroff_noirq()
1019 error = drv->pm->poweroff_noirq(dev); in pci_pm_poweroff_noirq()
1020 suspend_report_result(drv->pm->poweroff_noirq, error); in pci_pm_poweroff_noirq()
1046 struct device_driver *drv = dev->driver; in pci_pm_restore_noirq() local
1060 if (drv && drv->pm && drv->pm->restore_noirq) in pci_pm_restore_noirq()
1061 error = drv->pm->restore_noirq(dev); in pci_pm_restore_noirq()
1257 int __pci_register_driver(struct pci_driver *drv, struct module *owner, in __pci_register_driver() argument
1261 drv->driver.name = drv->name; in __pci_register_driver()
1262 drv->driver.bus = &pci_bus_type; in __pci_register_driver()
1263 drv->driver.owner = owner; in __pci_register_driver()
1264 drv->driver.mod_name = mod_name; in __pci_register_driver()
1266 spin_lock_init(&drv->dynids.lock); in __pci_register_driver()
1267 INIT_LIST_HEAD(&drv->dynids.list); in __pci_register_driver()
1270 return driver_register(&drv->driver); in __pci_register_driver()
1284 void pci_unregister_driver(struct pci_driver *drv) in pci_unregister_driver() argument
1286 driver_unregister(&drv->driver); in pci_unregister_driver()
1287 pci_free_dynids(drv); in pci_unregister_driver()
1325 static int pci_bus_match(struct device *dev, struct device_driver *drv) in pci_bus_match() argument
1334 pci_drv = to_pci_driver(drv); in pci_bus_match()