Lines Matching refs:dev
35 struct device *dev;
41 * @dev: Port service device to release
44 * device_unregister(dev). Release all resources being claimed.
46 static void release_pcie_device(struct device *dev)
48 kfree(to_pcie_device(dev));
56 static int pcie_message_numbers(struct pci_dev *dev, int mask,
71 pcie_capability_read_word(dev, PCI_EXP_FLAGS, ®16);
80 pos = dev->aer_cap;
82 pci_read_config_dword(dev, pos + PCI_ERR_ROOT_STATUS,
91 pos = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_DPC);
93 pci_read_config_word(dev, pos + PCI_EXP_DPC_CAP,
106 * @dev: PCI Express port to handle
112 static int pcie_port_enable_irq_vec(struct pci_dev *dev, int *irqs, int mask)
118 nr_entries = pci_alloc_irq_vectors(dev, 1, PCIE_PORT_MAX_MSI_ENTRIES,
124 nvec = pcie_message_numbers(dev, mask, &pme, &aer, &dpc);
126 pci_free_irq_vectors(dev);
142 pci_free_irq_vectors(dev);
144 nr_entries = pci_alloc_irq_vectors(dev, nvec, nvec,
153 pcie_irq = pci_irq_vector(dev, pme);
160 irqs[PCIE_PORT_SERVICE_AER_SHIFT] = pci_irq_vector(dev, aer);
163 irqs[PCIE_PORT_SERVICE_DPC_SHIFT] = pci_irq_vector(dev, dpc);
170 * @dev: PCI Express port to handle
176 static int pcie_init_service_irqs(struct pci_dev *dev, int *irqs, int mask)
192 if (pcie_port_enable_irq_vec(dev, irqs, mask) == 0)
197 ret = pci_alloc_irq_vectors(dev, 1, 1, PCI_IRQ_LEGACY);
202 irqs[i] = pci_irq_vector(dev, 0);
209 * @dev: PCI Express port to examine
217 static int get_port_device_capability(struct pci_dev *dev)
219 struct pci_host_bridge *host = pci_find_host_bridge(dev->bus);
222 if (dev->is_hotplug_bridge &&
223 (pci_pcie_type(dev) == PCI_EXP_TYPE_ROOT_PORT ||
224 pci_pcie_type(dev) == PCI_EXP_TYPE_DOWNSTREAM) &&
232 pcie_capability_clear_word(dev, PCI_EXP_SLTCTL,
237 if ((pci_pcie_type(dev) == PCI_EXP_TYPE_ROOT_PORT ||
238 pci_pcie_type(dev) == PCI_EXP_TYPE_RC_EC) &&
239 dev->aer_cap && pci_aer_available() &&
245 if ((pci_pcie_type(dev) == PCI_EXP_TYPE_ROOT_PORT ||
246 pci_pcie_type(dev) == PCI_EXP_TYPE_RC_EC) &&
255 pcie_pme_interrupt_enable(dev, false);
262 if (pci_find_ext_capability(dev, PCI_EXT_CAP_ID_DPC) &&
267 if (pci_pcie_type(dev) == PCI_EXP_TYPE_DOWNSTREAM ||
268 pci_pcie_type(dev) == PCI_EXP_TYPE_ROOT_PORT) {
271 pcie_capability_read_dword(dev, PCI_EXP_LNKCAP, &linkcap);
301 device->release = release_pcie_device; /* callback to free pcie dev */
305 device->parent = &pdev->dev;
321 * @dev: PCI Express port to register
326 static int pcie_port_device_register(struct pci_dev *dev)
332 status = pci_enable_device(dev);
337 capabilities = get_port_device_capability(dev);
341 pci_set_master(dev);
349 status = pcie_init_service_irqs(dev, irqs, capabilities);
363 if (!pcie_device_init(dev, service, irqs[i]))
372 pci_free_irq_vectors(dev);
374 pci_disable_device(dev);
380 static int pcie_port_device_iter(struct device *dev, void *data)
386 if ((dev->bus == &pcie_port_bus_type) && dev->driver) {
387 service_driver = to_service_driver(dev->driver);
390 return cb(to_pcie_device(dev));
398 * @dev: PCI Express port to handle
400 static int pcie_port_device_suspend(struct device *dev)
403 return device_for_each_child(dev, &off, pcie_port_device_iter);
406 static int pcie_port_device_resume_noirq(struct device *dev)
409 return device_for_each_child(dev, &off, pcie_port_device_iter);
414 * @dev: PCI Express port to handle
416 static int pcie_port_device_resume(struct device *dev)
419 return device_for_each_child(dev, &off, pcie_port_device_iter);
424 * @dev: PCI Express port to handle
426 static int pcie_port_device_runtime_suspend(struct device *dev)
429 return device_for_each_child(dev, &off, pcie_port_device_iter);
434 * @dev: PCI Express port to handle
436 static int pcie_port_device_runtime_resume(struct device *dev)
439 return device_for_each_child(dev, &off, pcie_port_device_iter);
443 static int remove_iter(struct device *dev, void *data)
445 if (dev->bus == &pcie_port_bus_type)
446 device_unregister(dev);
463 pdrvs->dev = device;
473 * @dev: PCI Express port the service is associated with
478 struct device *pcie_port_find_device(struct pci_dev *dev,
484 pdrvs.dev = NULL;
486 device_for_each_child(&dev->dev, &pdrvs, find_service_iter);
488 device = pdrvs.dev;
495 * @dev: PCI Express port the service devices to unregister are associated with
500 static void pcie_port_device_remove(struct pci_dev *dev)
502 device_for_each_child(&dev->dev, NULL, remove_iter);
503 pci_free_irq_vectors(dev);
508 * @dev: PCI Express port service device to probe against
514 static int pcie_port_probe_service(struct device *dev)
520 if (!dev || !dev->driver)
523 driver = to_service_driver(dev->driver);
527 pciedev = to_pcie_device(dev);
532 get_device(dev);
538 * @dev: PCI Express port service device to handle
545 static int pcie_port_remove_service(struct device *dev)
550 if (!dev || !dev->driver)
553 pciedev = to_pcie_device(dev);
554 driver = to_service_driver(dev->driver);
557 put_device(dev);
564 * @dev: PCI Express port service device to handle
571 static void pcie_port_shutdown_service(struct device *dev) {}
632 static int pcie_port_runtime_suspend(struct device *dev)
634 if (!to_pci_dev(dev)->bridge_d3)
637 return pcie_port_device_runtime_suspend(dev);
640 static int pcie_port_runtime_idle(struct device *dev)
647 return to_pci_dev(dev)->bridge_d3 ? 0 : -EBUSY;
673 * @dev: PCI-Express port device being probed
679 static int pcie_portdrv_probe(struct pci_dev *dev,
682 int type = pci_pcie_type(dev);
685 if (!pci_is_pcie(dev) ||
693 pcie_link_rcec(dev);
695 status = pcie_port_device_register(dev);
699 pci_save_state(dev);
701 dev_pm_set_driver_flags(&dev->dev, DPM_FLAG_NO_DIRECT_COMPLETE |
704 if (pci_bridge_d3_possible(dev)) {
710 pm_runtime_set_autosuspend_delay(&dev->dev, 100);
711 pm_runtime_use_autosuspend(&dev->dev);
712 pm_runtime_mark_last_busy(&dev->dev);
713 pm_runtime_put_autosuspend(&dev->dev);
714 pm_runtime_allow(&dev->dev);
720 static void pcie_portdrv_remove(struct pci_dev *dev)
722 if (pci_bridge_d3_possible(dev)) {
723 pm_runtime_forbid(&dev->dev);
724 pm_runtime_get_noresume(&dev->dev);
725 pm_runtime_dont_use_autosuspend(&dev->dev);
728 pcie_port_device_remove(dev);
730 pci_disable_device(dev);
733 static void pcie_portdrv_shutdown(struct pci_dev *dev)
735 if (pci_bridge_d3_possible(dev)) {
736 pm_runtime_forbid(&dev->dev);
737 pm_runtime_get_noresume(&dev->dev);
738 pm_runtime_dont_use_autosuspend(&dev->dev);
741 pcie_port_device_remove(dev);
744 static pci_ers_result_t pcie_portdrv_error_detected(struct pci_dev *dev,
752 static pci_ers_result_t pcie_portdrv_slot_reset(struct pci_dev *dev)
755 device_for_each_child(&dev->dev, &off, pcie_port_device_iter);
757 pci_restore_state(dev);
758 pci_save_state(dev);
762 static pci_ers_result_t pcie_portdrv_mmio_enabled(struct pci_dev *dev)