Lines Matching defs:pdev
209 * @pdev: the PCI device
213 int pci_status_get_and_clear_errors(struct pci_dev *pdev)
218 ret = pci_read_config_word(pdev, PCI_STATUS, &status);
224 pci_write_config_word(pdev, PCI_STATUS, status);
231 static void __iomem *__pci_ioremap_resource(struct pci_dev *pdev, int bar,
234 struct resource *res = &pdev->resource[bar];
242 pci_err(pdev, "can't ioremap BAR %d: %pR\n", bar, res);
252 void __iomem *pci_ioremap_bar(struct pci_dev *pdev, int bar)
254 return __pci_ioremap_resource(pdev, bar, false);
258 void __iomem *pci_ioremap_wc_bar(struct pci_dev *pdev, int bar)
260 return __pci_ioremap_resource(pdev, bar, true);
1719 static void pci_restore_config_dword(struct pci_dev *pdev, int offset,
1724 pci_read_config_dword(pdev, offset, &val);
1729 pci_dbg(pdev, "restore config %#04x: %#010x -> %#010x\n",
1731 pci_write_config_dword(pdev, offset, saved_val);
1735 pci_read_config_dword(pdev, offset, &val);
1743 static void pci_restore_config_space_range(struct pci_dev *pdev,
1750 pci_restore_config_dword(pdev, 4 * index,
1751 pdev->saved_config_space[index],
1755 static void pci_restore_config_space(struct pci_dev *pdev)
1757 if (pdev->hdr_type == PCI_HEADER_TYPE_NORMAL) {
1758 pci_restore_config_space_range(pdev, 10, 15, 0, false);
1760 pci_restore_config_space_range(pdev, 4, 9, 10, false);
1761 pci_restore_config_space_range(pdev, 0, 3, 0, false);
1762 } else if (pdev->hdr_type == PCI_HEADER_TYPE_BRIDGE) {
1763 pci_restore_config_space_range(pdev, 12, 15, 0, false);
1770 pci_restore_config_space_range(pdev, 9, 11, 0, true);
1771 pci_restore_config_space_range(pdev, 0, 8, 0, false);
1773 pci_restore_config_space_range(pdev, 0, 15, 0, false);
1777 static void pci_restore_rebar_state(struct pci_dev *pdev)
1782 pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_REBAR);
1786 pci_read_config_dword(pdev, pos + PCI_REBAR_CTRL, &ctrl);
1794 pci_read_config_dword(pdev, pos + PCI_REBAR_CTRL, &ctrl);
1796 res = pdev->resource + bar_idx;
1800 pci_write_config_dword(pdev, pos + PCI_REBAR_CTRL, ctrl);
2133 static struct pci_devres *get_pci_dr(struct pci_dev *pdev)
2137 dr = devres_find(&pdev->dev, pcim_release, NULL, NULL);
2144 return devres_get(&pdev->dev, new_dr, NULL, NULL);
2147 static struct pci_devres *find_pci_dr(struct pci_dev *pdev)
2149 if (pci_is_managed(pdev))
2150 return devres_find(&pdev->dev, pcim_release, NULL, NULL);
2156 * @pdev: PCI device to be initialized
2160 int pcim_enable_device(struct pci_dev *pdev)
2165 dr = get_pci_dr(pdev);
2171 rc = pci_enable_device(pdev);
2173 pdev->is_managed = 1;
2182 * @pdev: PCI device to pin
2184 * Pin managed PCI device @pdev. Pinned device won't be disabled on
2185 * driver detach. @pdev must have been enabled with
2188 void pcim_pin_device(struct pci_dev *pdev)
2192 dr = find_pci_dr(pdev);
2432 struct pci_dev *pdev = pme_dev->dev;
2434 if (pdev->pme_poll) {
2435 struct pci_dev *bridge = pdev->bus->self;
2436 struct device *dev = &pdev->dev;
2461 pdev->current_state != PCI_D3cold)
2462 pci_pme_wakeup(pdev, NULL);
2958 void pci_config_pm_runtime_get(struct pci_dev *pdev)
2960 struct device *dev = &pdev->dev;
2967 * pdev->current_state is set to PCI_D3cold during suspending,
2976 if (pdev->current_state == PCI_D3cold)
2980 void pci_config_pm_runtime_put(struct pci_dev *pdev)
2982 struct device *dev = &pdev->dev;
3572 static bool pci_acs_flags_enabled(struct pci_dev *pdev, u16 acs_flags)
3577 pos = pdev->acs_cap;
3586 pci_read_config_word(pdev, pos + PCI_ACS_CAP, &cap);
3589 pci_read_config_word(pdev, pos + PCI_ACS_CTRL, &ctrl);
3595 * @pdev: device to test
3609 bool pci_acs_enabled(struct pci_dev *pdev, u16 acs_flags)
3613 ret = pci_dev_specific_acs_enabled(pdev, acs_flags);
3622 if (!pci_is_pcie(pdev))
3625 switch (pci_pcie_type(pdev)) {
3648 return pci_acs_flags_enabled(pdev, acs_flags);
3660 if (!pdev->multifunction)
3663 return pci_acs_flags_enabled(pdev, acs_flags);
3685 struct pci_dev *pdev, *parent = start;
3688 pdev = parent;
3690 if (!pci_acs_enabled(pdev, acs_flags))
3693 if (pci_is_root_bus(pdev->bus))
3696 parent = pdev->bus->self;
3697 } while (pdev != end);
3721 * @pdev: PCI device
3728 static int pci_rebar_find_pos(struct pci_dev *pdev, int bar)
3733 pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_REBAR);
3737 pci_read_config_dword(pdev, pos + PCI_REBAR_CTRL, &ctrl);
3744 pci_read_config_dword(pdev, pos + PCI_REBAR_CTRL, &ctrl);
3755 * @pdev: PCI device
3761 u32 pci_rebar_get_possible_sizes(struct pci_dev *pdev, int bar)
3766 pos = pci_rebar_find_pos(pdev, bar);
3770 pci_read_config_dword(pdev, pos + PCI_REBAR_CAP, &cap);
3774 if (pdev->vendor == PCI_VENDOR_ID_ATI && pdev->device == 0x731f &&
3784 * @pdev: PCI device
3790 int pci_rebar_get_current_size(struct pci_dev *pdev, int bar)
3795 pos = pci_rebar_find_pos(pdev, bar);
3799 pci_read_config_dword(pdev, pos + PCI_REBAR_CTRL, &ctrl);
3805 * @pdev: PCI device
3812 int pci_rebar_set_size(struct pci_dev *pdev, int bar, int size)
3817 pos = pci_rebar_find_pos(pdev, bar);
3821 pci_read_config_dword(pdev, pos + PCI_REBAR_CTRL, &ctrl);
3824 pci_write_config_dword(pdev, pos + PCI_REBAR_CTRL, ctrl);
3973 * @pdev: PCI device whose resources were previously reserved by
3981 void pci_release_region(struct pci_dev *pdev, int bar)
3985 if (pci_resource_len(pdev, bar) == 0)
3987 if (pci_resource_flags(pdev, bar) & IORESOURCE_IO)
3988 release_region(pci_resource_start(pdev, bar),
3989 pci_resource_len(pdev, bar));
3990 else if (pci_resource_flags(pdev, bar) & IORESOURCE_MEM)
3991 release_mem_region(pci_resource_start(pdev, bar),
3992 pci_resource_len(pdev, bar));
3994 dr = find_pci_dr(pdev);
4002 * @pdev: PCI device whose resources are to be reserved
4007 * Mark the PCI region associated with PCI device @pdev BAR @bar as
4019 static int __pci_request_region(struct pci_dev *pdev, int bar,
4024 if (pci_resource_len(pdev, bar) == 0)
4027 if (pci_resource_flags(pdev, bar) & IORESOURCE_IO) {
4028 if (!request_region(pci_resource_start(pdev, bar),
4029 pci_resource_len(pdev, bar), res_name))
4031 } else if (pci_resource_flags(pdev, bar) & IORESOURCE_MEM) {
4032 if (!__request_mem_region(pci_resource_start(pdev, bar),
4033 pci_resource_len(pdev, bar), res_name,
4038 dr = find_pci_dr(pdev);
4045 pci_warn(pdev, "BAR %d: can't reserve %pR\n", bar,
4046 &pdev->resource[bar]);
4052 * @pdev: PCI device whose resources are to be reserved
4056 * Mark the PCI region associated with PCI device @pdev BAR @bar as
4064 int pci_request_region(struct pci_dev *pdev, int bar, const char *res_name)
4066 return __pci_request_region(pdev, bar, res_name, 0);
4072 * @pdev: PCI device whose resources were previously reserved
4078 void pci_release_selected_regions(struct pci_dev *pdev, int bars)
4084 pci_release_region(pdev, i);
4088 static int __pci_request_selected_regions(struct pci_dev *pdev, int bars,
4095 if (__pci_request_region(pdev, i, res_name, excl))
4102 pci_release_region(pdev, i);
4110 * @pdev: PCI device whose resources are to be reserved
4114 int pci_request_selected_regions(struct pci_dev *pdev, int bars,
4117 return __pci_request_selected_regions(pdev, bars, res_name, 0);
4121 int pci_request_selected_regions_exclusive(struct pci_dev *pdev, int bars,
4124 return __pci_request_selected_regions(pdev, bars, res_name,
4131 * @pdev: PCI device whose resources were previously reserved by
4139 void pci_release_regions(struct pci_dev *pdev)
4141 pci_release_selected_regions(pdev, (1 << PCI_STD_NUM_BARS) - 1);
4147 * @pdev: PCI device whose resources are to be reserved
4150 * Mark all PCI regions associated with PCI device @pdev as
4158 int pci_request_regions(struct pci_dev *pdev, const char *res_name)
4160 return pci_request_selected_regions(pdev,
4167 * @pdev: PCI device whose resources are to be reserved
4170 * Mark all PCI regions associated with PCI device @pdev as being reserved
4180 int pci_request_regions_exclusive(struct pci_dev *pdev, const char *res_name)
4182 return pci_request_selected_regions_exclusive(pdev,
4381 * res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
4382 * base = devm_pci_remap_cfg_resource(&pdev->dev, res);
4654 * @pdev: the PCI device to operate on
4657 * Enables/disables PCI INTx for device @pdev
4659 void pci_intx(struct pci_dev *pdev, int enable)
4663 pci_read_config_word(pdev, PCI_COMMAND, &pci_command);
4673 pci_write_config_word(pdev, PCI_COMMAND, new);
4675 dr = find_pci_dr(pdev);
4913 * @pdev: Device whose link to wait for.
4920 static int pcie_wait_for_link_status(struct pci_dev *pdev,
4932 pcie_capability_read_word(pdev, PCI_EXP_LNKSTA, &lnksta);
4943 * @pdev: Device whose link to retrain.
4953 int pcie_retrain_link(struct pci_dev *pdev, bool use_lt)
4963 rc = pcie_wait_for_link_status(pdev, use_lt, !use_lt);
4967 pcie_capability_set_word(pdev, PCI_EXP_LNKCTL, PCI_EXP_LNKCTL_RL);
4968 if (pdev->clear_retrain_link) {
4974 pcie_capability_clear_word(pdev, PCI_EXP_LNKCTL, PCI_EXP_LNKCTL_RL);
4977 return pcie_wait_for_link_status(pdev, use_lt, !use_lt);
4982 * @pdev: Bridge device
4988 static bool pcie_wait_for_link_delay(struct pci_dev *pdev, bool active,
4997 if (!pdev->link_active_reporting) {
5013 rc = pcie_wait_for_link_status(pdev, false, active);
5016 rc = pcie_failed_link_retrain(pdev);
5032 * @pdev: Bridge device
5037 bool pcie_wait_for_link(struct pci_dev *pdev, bool active)
5039 return pcie_wait_for_link_delay(pdev, active, 100);
5051 const struct pci_dev *pdev;
5055 list_for_each_entry(pdev, &bus->devices, bus_list) {
5056 if (pdev->d3cold_delay < min_delay)
5057 min_delay = pdev->d3cold_delay;
5058 if (pdev->d3cold_delay > max_delay)
5059 max_delay = pdev->d3cold_delay;
5221 struct pci_dev *pdev;
5227 list_for_each_entry(pdev, &dev->bus->devices, bus_list)
5228 if (pdev != dev)
5360 struct pci_dev *pdev = to_pci_dev(dev);
5365 m = pdev->reset_methods[i];
5395 struct pci_dev *pdev = to_pci_dev(dev);
5401 pdev->reset_methods[0] = 0;
5402 pci_warn(pdev, "All device reset methods disabled by user");
5407 pci_init_reset_methods(pdev);
5424 pci_err(pdev, "Invalid reset method '%s'", name);
5428 if (pci_reset_fn_methods[m].reset_fn(pdev, PCI_RESET_PROBE)) {
5429 pci_err(pdev, "Unsupported reset method '%s'", name);
5434 pci_err(pdev, "Too many reset methods\n");
5444 if (pci_reset_fn_methods[1].reset_fn(pdev, PCI_RESET_PROBE) == 0 &&
5446 pci_warn(pdev, "Device-specific reset disabled/de-prioritized by user");
5447 memcpy(pdev->reset_methods, reset_methods, sizeof(pdev->reset_methods));
5466 struct pci_dev *pdev = to_pci_dev(kobj_to_dev(kobj));
5468 if (!pci_reset_supported(pdev))
6031 * @pdev: top level PCI device to reset via slot/bus
6035 int pci_reset_bus(struct pci_dev *pdev)
6037 return (!pci_probe_reset_slot(pdev->slot)) ?
6038 __pci_reset_slot(pdev->slot) : __pci_reset_bus(pdev->bus);
6509 bool pci_pr3_present(struct pci_dev *pdev)
6516 adev = ACPI_COMPANION(&pdev->dev);
6582 bool pci_device_is_present(struct pci_dev *pdev)
6586 /* Check PF if pdev is a VF, since VF Vendor/Device IDs are 0xffff */
6587 pdev = pci_physfn(pdev);
6588 if (pci_dev_is_disconnected(pdev))
6590 return pci_bus_read_dev_vendor_id(pdev->bus, pdev->devfn, &v, 0);