Lines Matching +full:os +full:- +full:initiated

1 /* SPDX-License-Identifier: GPL-2.0 */
7 * Copyright 1997--1999 Martin Mares <mj@ucw.cz>
59 * The PCI interface treats multi-function devices as independent
67 * In the interest of not exposing interfaces to user-space unnecessarily,
68 * the following kernel-only defines are being added here.
79 unsigned char number; /* PCI_SLOT(pci_dev->devfn) */
85 return kobject_name(&slot->kobj); in pci_slot_name()
96 /* #0-5: standard PCI resources */
98 PCI_STD_RESOURCE_END = PCI_STD_RESOURCES + PCI_STD_NUM_BARS - 1,
103 /* Device-specific resources */
106 PCI_IOV_RESOURCE_END = PCI_IOV_RESOURCES + PCI_SRIOV_NUM_BARS - 1,
109 /* PCI-to-PCI (P2P) bridge windows */
126 PCI_BRIDGE_RESOURCE_NUM - 1,
136 * enum pci_interrupt_pin - PCI INTx interrupt values
169 #define PCI_POWER_ERROR ((pci_power_t __force) -1)
220 /* Flag for quirk use to store if quirk-specific ACS is enabled */
222 /* Use a PCIe-to-PCI bridge alias even if !pci_is_pcie */
226 /* Do not use PM reset even if device advertises NoSoftRst- */
230 /* A non-root bridge where translation occurs, stop alias search here */
311 struct list_head bus_list; /* Node in per-bus list */
315 void *sysdata; /* Hook for sys-specific extension */
324 unsigned int class; /* 3 bytes: (base,sub,prog-if) */
338 u8 msix_cap; /* MSI-X capability offset */
350 or supports 64-bit transfers. */
355 this is D0-D3, D0 being fully
375 unsigned int skip_bus_pm:1; /* Internal: Skip bus-level PM */
382 unsigned int d3hot_delay; /* D3hot->D0 transition time in ms */
383 unsigned int d3cold_delay; /* D3cold->D0 transition time in ms */
392 unsigned int eetlp_prefix_path:1; /* End-to-End TLP Prefix */
411 unsigned int pref_64_window:1; /* Pref mem window is 64-bit */
412 unsigned int multifunction:1; /* Multi-function device */
416 unsigned int no_64bit_msi:1; /* May only use 32-bit MSIs */
444 * device as "external-facing". An external-facing device is
484 struct pci_sriov *sriov; /* PF: SR-IOV info */
516 if (dev->is_virtfn) in pci_physfn()
517 dev = dev->physfn; in pci_physfn()
529 return (pdev->error_state != pci_channel_io_normal); in pci_channel_offline()
534 * Group number is limited to a 16-bit value, therefore (int)-1 is
536 * value indicating ->domain_nr is not set by the driver (and
540 #define PCI_DOMAIN_NR_NOT_SET (-1)
558 unsigned int native_aer:1; /* OS may use PCIe AER */
559 unsigned int native_pcie_hotplug:1; /* OS may use PCIe hotplug */
560 unsigned int native_shpc_hotplug:1; /* OS may use SHPC hotplug */
561 unsigned int native_pme:1; /* OS may use PCIe PME */
562 unsigned int native_ltr:1; /* OS may use PCIe LTR */
563 unsigned int native_dpc:1; /* OS may use PCIe DPC */
581 return (void *)bridge->private; in pci_host_bridge_priv()
611 * This does not apply to ACPI _CRS windows, even with the _DEC subtractive-
637 void *sysdata; /* Hook for sys-specific extension */
663 return PCI_DEVID(dev->bus->number, dev->devfn); in pci_dev_id()
667 * Returns true if the PCI bus is root (behind host-PCI bridge),
670 * Some code assumes that "bus->self == NULL" means that bus is a root bus.
671 * This is incorrect because "virtual" buses added for SR-IOV (via
672 * virtfn_add_bus()) have "bus->self == NULL" but are not root buses.
676 return !(pbus->parent); in pci_is_root_bus()
680 * pci_is_bridge - check if the PCI device is a bridge
688 return dev->hdr_type == PCI_HEADER_TYPE_BRIDGE || in pci_is_bridge()
689 dev->hdr_type == PCI_HEADER_TYPE_CARDBUS; in pci_is_bridge()
693 list_for_each_entry(dev, &bus->devices, bus_list) \
699 if (pci_is_root_bus(dev->bus)) in pci_upstream_bridge()
702 return dev->bus->self; in pci_upstream_bridge()
708 return pci_dev->msi_enabled || pci_dev->msix_enabled; in pci_dev_msi_enabled()
723 /* Translate above to generic errno for passing back through non-PCI code */
731 return -ENOENT; in pcibios_err_to_errno()
733 return -ENOTTY; in pcibios_err_to_errno()
735 return -ENODEV; in pcibios_err_to_errno()
737 return -EFAULT; in pcibios_err_to_errno()
739 return -EIO; in pcibios_err_to_errno()
741 return -ENOSPC; in pcibios_err_to_errno()
744 return -ERANGE; in pcibios_err_to_errno()
747 /* Low-level architecture-dependent routines */
784 * PCI Error Recovery System (PCI-ERS). If a PCI device driver provides
818 /* MMIO has been re-enabled, but not DMA */
836 * struct pci_driver - PCI driver structure
857 * pulled out of a hot-pluggable slot).
866 * Useful for enabling wake-on-lan (NIC) or changing
871 * @sriov_set_msix_vec_count: PF Driver callback to change number of MSI-X
873 * This will change MSI-X Table Size in the VF Message Control
876 * MSI-X vectors available for distribution to the VFs.
877 * @err_handler: See Documentation/PCI/pci-error-recovery.rst
887 const struct pci_device_id *id_table; /* Must be non-NULL for probe to be called */
889 void (*remove)(struct pci_dev *dev); /* Device removed (NULL if not a hot-plug capable driver) */
906 * PCI_DEVICE - macro used to describe a specific PCI device
919 * PCI_DEVICE_DRIVER_OVERRIDE - macro used to describe a PCI device with
934 * PCI_DRIVER_OVERRIDE_DEVICE_VFIO - macro used to describe a VFIO
948 * PCI_DEVICE_SUB - macro used to describe a specific PCI device with subsystem
962 * PCI_DEVICE_CLASS - macro used to describe a specific PCI device class
963 * @dev_class: the class, subclass, prog-if triple for this device
976 * PCI_VDEVICE - macro used to describe a specific PCI device in short form
990 * PCI_DEVICE_DATA - macro used to describe a specific PCI device in very short form
1016 #define PCI_IRQ_MSIX (1 << 2) /* Allow MSI-X interrupts */
1017 #define PCI_IRQ_AFFINITY (1 << 3) /* Auto-assign affinity */
1034 PCIE_BUS_SAFE, /* Use largest MPS boot-time devices support */
1043 /* Do NOT directly access these two variables, unless you are arch-specific PCI
1046 /* Some device drivers need know if PCI is initiated */
1055 /* Architecture-specific versions may override this (weak) */
1119 #define dev_is_pci(d) ((d)->bus == &pci_bus_type)
1120 #define dev_is_pf(d) ((dev_is_pci(d) ? to_pci_dev(d)->is_physfn : false))
1211 /* User-space driven config access */
1232 return !pdev->broken_intx_masking; in pci_intx_mask_supported()
1237 return (atomic_read(&pdev->enable_cnt) > 0); in pci_is_enabled()
1242 return pdev->is_managed; in pci_is_managed()
1294 return max(ilog2(bytes), 20) - 20; in pci_rebar_bytes_to_size()
1354 /* Helper functions for low-level code (drivers/pci/setup-[bus,res].c) */
1429 pcibios_resource_to_bus(pdev->bus, &region, &pdev->resource[bar]); in pci_bus_address()
1433 /* Proper probing supporting hot-pluggable devices */
1444 * module_pci_driver() - Helper macro for registering a PCI driver
1455 * builtin_pci_driver() - Helper macro for registering a PCI driver
1493 * into the device's MSI-X table and must be handled by some
1507 dma_pool_create(name, &pdev->dev, size, align, allocation)
1516 u16 entry; /* Driver uses to specify entry, OS writes */
1546 static inline int pci_msi_vec_count(struct pci_dev *dev) { return -ENOSYS; } in pci_msi_vec_count()
1548 static inline int pci_msix_vec_count(struct pci_dev *dev) { return -ENOSYS; } in pci_msix_vec_count()
1553 { return -ENOSYS; } in pci_enable_msi()
1556 { return -ENOSYS; } in pci_enable_msix_range()
1559 { return -ENOSYS; } in pci_enable_msix_exact()
1566 if ((flags & PCI_IRQ_LEGACY) && min_vecs == 1 && dev->irq) in pci_alloc_irq_vectors_affinity()
1568 return -ENOSPC; in pci_alloc_irq_vectors_affinity()
1578 return -EINVAL; in pci_irq_vector()
1579 return dev->irq; in pci_irq_vector()
1589 * pci_irqd_intx_xlate() - Translate PCI INTx value to an IRQ domain hwirq
1597 * Translate a PCI INTx interrupt number from device tree in the range 1-4, as
1599 * 0-3 suitable for use in a 4 entry IRQ domain. That is, subtract one from the
1602 * Returns 0 on success, or -EINVAL if the interrupt specifier is out of range.
1614 return -EINVAL; in pci_irqd_intx_xlate()
1616 *out_hwirq = intx - PCI_INTERRUPT_INTA; in pci_irqd_intx_xlate()
1665 { return -EINVAL; } in pci_enable_ptm()
1698 return bus->domain_nr; in pci_domain_nr()
1785 static inline int pci_enable_device(struct pci_dev *dev) { return -EIO; } in pci_enable_device()
1787 static inline int pcim_enable_device(struct pci_dev *pdev) { return -EIO; } in pcim_enable_device()
1789 { return -EBUSY; } in pci_assign_resource()
1826 { return -EIO; } in pci_request_regions()
1831 { return -EINVAL; } in pci_register_io_range()
1833 static inline unsigned long pci_address_to_pio(phys_addr_t addr) { return -1; } in pci_address_to_pio()
1857 { return -EINVAL; } in pci_irqd_intx_xlate()
1866 return -EINVAL; in pci_irq_vector()
1874 return -ENOSPC; in pci_alloc_irq_vectors_affinity()
1886 /* Include architecture-dependent settings and functions */
1894 * pci_mmap_resource_range() maps a specific BAR, and vm->vm_pgoff
1897 * pci_mmap_page_range() is the legacy architecture-specific interface,
1915 #define pci_iobar_pfn(pdev, bar, vma) (-EINVAL)
1928 #define pci_resource_start(dev, bar) ((dev)->resource[(bar)].start)
1929 #define pci_resource_end(dev, bar) ((dev)->resource[(bar)].end)
1930 #define pci_resource_flags(dev, bar) ((dev)->resource[(bar)].flags)
1934 (pci_resource_end((dev), (bar)) - \
1938 * Similar to the helpers above, these manipulate per-pci_dev
1939 * driver-specific data. They are really just a wrapper around
1944 return dev_get_drvdata(&pdev->dev); in pci_get_drvdata()
1949 dev_set_drvdata(&pdev->dev, data); in pci_set_drvdata()
1954 return dev_name(&pdev->dev); in pci_name()
1963 * For at least a part of these bugs we need a work-around, so both
1964 * generic (drivers/pci/quirks.c) and per-architecture code can define
1999 ".long " #hook " - . \n" \
2124 /* Architecture-specific versions may override these (weak) */
2178 return -ENOSYS; in pci_iov_virtfn_bus()
2182 return -ENOSYS; in pci_iov_virtfn_devfn()
2185 { return -ENODEV; } in pci_enable_sriov()
2190 return -ENODEV; in pci_iov_sysfs_link()
2194 return -ENOSYS; in pci_iov_add_virtfn()
2218 * pci_pcie_cap - get the saved PCIe capability offset
2230 return dev->pcie_cap; in pci_pcie_cap()
2234 * pci_is_pcie - check if the PCI device is PCI Express capable
2245 * pcie_caps_reg - get the PCIe Capabilities Register
2250 return dev->pcie_flags_reg; in pcie_caps_reg()
2254 * pci_pcie_type - get the PCIe device/port type
2263 * pcie_find_root_port - Get the PCIe root port device
2292 #define PCI_VPD_LTIN_RO_DATA 0x10 /* Read-Only Data */
2293 #define PCI_VPD_LTIN_RW_DATA 0x11 /* Read-Write Data */
2306 * pci_vpd_alloc - Allocate buffer and read VPD into it
2315 * pci_vpd_find_id_string - Locate id string in VPD
2320 * Returns the index of the id string or -ENOENT if not found.
2325 * pci_vpd_find_ro_info_keyword - Locate info field keyword in VPD RO section
2331 * Returns the index of the information field keyword data or -ENOENT if
2338 * pci_vpd_check_csum - Check VPD checksum
2346 /* PCI <-> OF binding helpers */
2365 return pdev ? pdev->dev.of_node : NULL; in pci_device_to_OF_node()
2370 return bus ? bus->dev.of_node : NULL; in pci_bus_to_OF_node()
2388 return pdev->dev.archdata.edev; in pci_dev_to_eeh_dev()
2401 pdev->dev_flags |= PCI_DEV_FLAGS_ASSIGNED; in pci_set_dev_assigned()
2405 pdev->dev_flags &= ~PCI_DEV_FLAGS_ASSIGNED; in pci_clear_dev_assigned()
2409 return (pdev->dev_flags & PCI_DEV_FLAGS_ASSIGNED) == PCI_DEV_FLAGS_ASSIGNED; in pci_is_dev_assigned()
2413 * pci_ari_enabled - query ARI forwarding status
2420 return bus->self && bus->self->ari_enabled; in pci_ari_enabled()
2424 * pci_is_thunderbolt_attached - whether device is on a Thunderbolt daisy chain
2429 * Thunderbolt-attached. (But rather soldered to the mainboard usually.)
2435 if (pdev->is_thunderbolt) in pci_is_thunderbolt_attached()
2439 if (parent->is_thunderbolt) in pci_is_thunderbolt_attached()
2450 #include <linux/pci-dma-compat.h>
2453 dev_printk(level, &(pdev)->dev, fmt, ##arg)
2455 #define pci_emerg(pdev, fmt, arg...) dev_emerg(&(pdev)->dev, fmt, ##arg)
2456 #define pci_alert(pdev, fmt, arg...) dev_alert(&(pdev)->dev, fmt, ##arg)
2457 #define pci_crit(pdev, fmt, arg...) dev_crit(&(pdev)->dev, fmt, ##arg)
2458 #define pci_err(pdev, fmt, arg...) dev_err(&(pdev)->dev, fmt, ##arg)
2459 #define pci_warn(pdev, fmt, arg...) dev_warn(&(pdev)->dev, fmt, ##arg)
2460 #define pci_notice(pdev, fmt, arg...) dev_notice(&(pdev)->dev, fmt, ##arg)
2461 #define pci_info(pdev, fmt, arg...) dev_info(&(pdev)->dev, fmt, ##arg)
2462 #define pci_dbg(pdev, fmt, arg...) dev_dbg(&(pdev)->dev, fmt, ##arg)
2465 dev_notice_ratelimited(&(pdev)->dev, fmt, ##arg)
2468 dev_info_ratelimited(&(pdev)->dev, fmt, ##arg)
2472 dev_driver_string(&(pdev)->dev), pci_name(pdev), ##arg)
2476 dev_driver_string(&(pdev)->dev), pci_name(pdev), ##arg)