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()
252 static const struct pci_device_id *pci_match_device(struct pci_driver *drv, in pci_match_device() argument
259 if (dev->driver_override && strcmp(dev->driver_override, drv->name)) in pci_match_device()
263 spin_lock(&drv->dynids.lock); in pci_match_device()
264 list_for_each_entry(dynid, &drv->dynids.list, node) { in pci_match_device()
270 spin_unlock(&drv->dynids.lock); in pci_match_device()
273 found_id = pci_match_id(drv->id_table, dev); in pci_match_device()
283 struct pci_driver *drv; member
292 struct pci_driver *pci_drv = ddi->drv; in local_pci_probe()
323 static int pci_call_probe(struct pci_driver *drv, struct pci_dev *dev, in pci_call_probe() argument
327 struct drv_dev_and_id ddi = { drv, dev, id }; in pci_call_probe()
373 static int __pci_device_probe(struct pci_driver *drv, struct pci_dev *pci_dev) in __pci_device_probe() argument
378 if (!pci_dev->driver && drv->probe) { in __pci_device_probe()
381 id = pci_match_device(drv, pci_dev); in __pci_device_probe()
383 error = pci_call_probe(drv, pci_dev, id); in __pci_device_probe()
403 struct pci_driver *drv = to_pci_driver(dev->driver); in pci_device_probe() local
410 error = __pci_device_probe(drv, pci_dev); in pci_device_probe()
422 struct pci_driver *drv = pci_dev->driver; in pci_device_remove() local
424 if (drv) { in pci_device_remove()
425 if (drv->remove) { in pci_device_remove()
427 drv->remove(pci_dev); in pci_device_remove()
460 struct pci_driver *drv = pci_dev->driver; in pci_device_shutdown() local
464 if (drv && drv->shutdown) in pci_device_shutdown()
465 drv->shutdown(pci_dev); in pci_device_shutdown()
552 struct pci_driver *drv = pci_dev->driver; in pci_legacy_suspend() local
554 if (drv && drv->suspend) { in pci_legacy_suspend()
558 error = drv->suspend(pci_dev, state); in pci_legacy_suspend()
559 suspend_report_result(drv->suspend, error); in pci_legacy_suspend()
567 drv->suspend); in pci_legacy_suspend()
579 struct pci_driver *drv = pci_dev->driver; in pci_legacy_suspend_late() local
581 if (drv && drv->suspend_late) { in pci_legacy_suspend_late()
585 error = drv->suspend_late(pci_dev, state); in pci_legacy_suspend_late()
586 suspend_report_result(drv->suspend_late, error); in pci_legacy_suspend_late()
594 drv->suspend_late); in pci_legacy_suspend_late()
613 struct pci_driver *drv = pci_dev->driver; in pci_legacy_resume_early() local
615 return drv && drv->resume_early ? in pci_legacy_resume_early()
616 drv->resume_early(pci_dev) : 0; in pci_legacy_resume_early()
622 struct pci_driver *drv = pci_dev->driver; in pci_legacy_resume() local
626 return drv && drv->resume ? in pci_legacy_resume()
627 drv->resume(pci_dev) : pci_pm_reenable_device(pci_dev); in pci_legacy_resume()
649 struct pci_driver *drv = pci_dev->driver; in pci_has_legacy_pm_support() local
650 bool ret = drv && (drv->suspend || drv->suspend_late || drv->resume in pci_has_legacy_pm_support()
651 || drv->resume_early); in pci_has_legacy_pm_support()
658 WARN(ret && drv->driver.pm, "driver %s device %04x:%04x\n", in pci_has_legacy_pm_support()
659 drv->name, pci_dev->vendor, pci_dev->device); in pci_has_legacy_pm_support()
668 struct device_driver *drv = dev->driver; in pci_pm_prepare() local
677 if (drv && drv->pm && drv->pm->prepare) { in pci_pm_prepare()
678 int error = drv->pm->prepare(dev); in pci_pm_prepare()
807 struct device_driver *drv = dev->driver; in pci_pm_resume_noirq() local
815 if (drv && drv->pm && drv->pm->resume_noirq) in pci_pm_resume_noirq()
816 error = drv->pm->resume_noirq(dev); in pci_pm_resume_noirq()
907 struct device_driver *drv = dev->driver; in pci_pm_freeze_noirq() local
912 if (drv && drv->pm && drv->pm->freeze_noirq) { in pci_pm_freeze_noirq()
915 error = drv->pm->freeze_noirq(dev); in pci_pm_freeze_noirq()
916 suspend_report_result(drv->pm->freeze_noirq, error); in pci_pm_freeze_noirq()
935 struct device_driver *drv = dev->driver; in pci_pm_thaw_noirq() local
949 if (drv && drv->pm && drv->pm->thaw_noirq) in pci_pm_thaw_noirq()
950 error = drv->pm->thaw_noirq(dev); in pci_pm_thaw_noirq()
1020 struct device_driver *drv = dev->driver; in pci_pm_poweroff_noirq() local
1025 if (!drv || !drv->pm) { in pci_pm_poweroff_noirq()
1030 if (drv->pm->poweroff_noirq) { in pci_pm_poweroff_noirq()
1033 error = drv->pm->poweroff_noirq(dev); in pci_pm_poweroff_noirq()
1034 suspend_report_result(drv->pm->poweroff_noirq, error); in pci_pm_poweroff_noirq()
1060 struct device_driver *drv = dev->driver; in pci_pm_restore_noirq() local
1074 if (drv && drv->pm && drv->pm->restore_noirq) in pci_pm_restore_noirq()
1075 error = drv->pm->restore_noirq(dev); in pci_pm_restore_noirq()
1278 int __pci_register_driver(struct pci_driver *drv, struct module *owner, in __pci_register_driver() argument
1282 drv->driver.name = drv->name; in __pci_register_driver()
1283 drv->driver.bus = &pci_bus_type; in __pci_register_driver()
1284 drv->driver.owner = owner; in __pci_register_driver()
1285 drv->driver.mod_name = mod_name; in __pci_register_driver()
1287 spin_lock_init(&drv->dynids.lock); in __pci_register_driver()
1288 INIT_LIST_HEAD(&drv->dynids.list); in __pci_register_driver()
1291 return driver_register(&drv->driver); in __pci_register_driver()
1305 void pci_unregister_driver(struct pci_driver *drv) in pci_unregister_driver() argument
1307 driver_unregister(&drv->driver); in pci_unregister_driver()
1308 pci_free_dynids(drv); in pci_unregister_driver()
1346 static int pci_bus_match(struct device *dev, struct device_driver *drv) in pci_bus_match() argument
1355 pci_drv = to_pci_driver(drv); in pci_bus_match()