pci-v5.3-changes
-----BEGIN PGP SIGNATURE-----
iQJIBAABCgAyFiEEgMe7l+5h9hnxdsnuWYigwDrT+vwFAl0siFoUHGJoZWxnYWFz
QGdvb2dsZS5jb20ACgkQWYigwDrT+vzi9A//S4jRyyZrgUr88Az0GbgMhE4b3yqc
uL7om/Sf+443gG6C+aKkZSM/IE9hrbyIKuYq7GGxDkzZ/HkucZo2yIuAHkPgG4ik
QQYJ8fJsmMq1bUht87c1ZZwGP0++Deq/Ns2+VNy/WBYqKLulnV0DvEEaJgPs9C5D
ppwccGdo6UghiujBTpE4ddUBjFjjURWqT6wSnMRDQ4EGwfUhG0MWwwHKI4hbBuaL
N6refuggdYyUUX5FeUOHa6VF6uTnSSAQ75k+40n4nljdayqoumHLskst77o9q5ZI
oXjdpwgmuEqYhfp03HEA4Xo/bBxiRj76NuTiEMKvPokxjpanwbLrdV0GhF0OIlM0
rp1NOI1w+vppFrU+rc2gtq+7hYXFmvdhjS29hFLeD91PP36N5d29jW5NVFpm7GCm
n4TMGAOsu8RB+bNua6ZbZVcDk2EnPgQeIcM0ZPoBtPK19Fg/rScdEU4u/aFE1Y0Q
C+Ks7D1qCvFpHzl/xAg0oo9v/jFsWef3qnQWOzot964Zz4W4NSVvB9Ox6Vbfj6C4
v331LJmlPxG8fxBNA3q28FrTxcG1NW6sgo3WY9VoSp/vc0aqaPKhm7sbraTt5IrI
TwqA/WhnAHv90MQCGFcofANyYTkjPkKk2QBFK6b0suoAmVdwVWWELi1WaZ+HdvgQ
JP7YpmC2cXcQBPk=
=ZGxL
-----END PGP SIGNATURE-----
Merge tag 'pci-v5.3-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci
Pull PCI updates from Bjorn Helgaas:
"Enumeration changes:
- Evaluate PCI Boot Configuration _DSM to learn if firmware wants us
to preserve its resource assignments (Benjamin Herrenschmidt)
- Simplify resource distribution (Nicholas Johnson)
- Decode 32 GT/s link speed (Gustavo Pimentel)
Virtualization:
- Fix incorrect caching of VF config space size (Alex Williamson)
- Fix VF driver probing sysfs knobs (Alex Williamson)
Peer-to-peer DMA:
- Fix dma_virt_ops check (Logan Gunthorpe)
Altera host bridge driver:
- Allow building as module (Ley Foon Tan)
Armada 8K host bridge driver:
- add PHYs support (Miquel Raynal)
DesignWare host bridge driver:
- Export APIs to support removable loadable module (Vidya Sagar)
- Enable Relaxed Ordering erratum workaround only on Tegra20 &
Tegra30 (Vidya Sagar)
Hyper-V host bridge driver:
- Fix use-after-free in eject (Dexuan Cui)
Mobiveil host bridge driver:
- Clean up and fix many issues, including non-identify mapped
windows, 64-bit windows, multi-MSI, class code, INTx clearing (Hou
Zhiqiang)
Qualcomm host bridge driver:
- Use clk bulk API for 2.4.0 controllers (Bjorn Andersson)
- Add QCS404 support (Bjorn Andersson)
- Assert PERST for at least 100ms (Niklas Cassel)
R-Car host bridge driver:
- Add r8a774a1 DT support (Biju Das)
Tegra host bridge driver:
- Add support for Gen2, opportunistic UpdateFC and ACK (PCIe protocol
details) AER, GPIO-based PERST# (Manikanta Maddireddy)
- Fix many issues, including power-on failure cases, interrupt
masking in suspend, UPHY settings, AFI dynamic clock gating,
pending DLL transactions (Manikanta Maddireddy)
Xilinx host bridge driver:
- Fix NWL Multi-MSI programming (Bharat Kumar Gogada)
Endpoint support:
- Fix 64bit BAR support (Alan Mikhak)
- Fix pcitest build issues (Alan Mikhak, Andy Shevchenko)
Bug fixes:
- Fix NVIDIA GPU multi-function power dependencies (Abhishek Sahu)
- Fix NVIDIA GPU HDA enablement issue (Lukas Wunner)
- Ignore lockdep for sysfs "remove" (Marek Vasut)
Misc:
- Convert docs to reST (Changbin Du, Mauro Carvalho Chehab)"
* tag 'pci-v5.3-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (107 commits)
PCI: Enable NVIDIA HDA controllers
tools: PCI: Fix installation when `make tools/pci_install`
PCI: dwc: pci-dra7xx: Fix compilation when !CONFIG_GPIOLIB
PCI: Fix typos and whitespace errors
PCI: mobiveil: Fix INTx interrupt clearing in mobiveil_pcie_isr()
PCI: mobiveil: Fix infinite-loop in the INTx handling function
PCI: mobiveil: Move PCIe PIO enablement out of inbound window routine
PCI: mobiveil: Add upper 32-bit PCI base address setup in inbound window
PCI: mobiveil: Add upper 32-bit CPU base address setup in outbound window
PCI: mobiveil: Mask out hardcoded bits in inbound/outbound windows setup
PCI: mobiveil: Clear the control fields before updating it
PCI: mobiveil: Add configured inbound windows counter
PCI: mobiveil: Fix the valid check for inbound and outbound windows
PCI: mobiveil: Clean-up program_{ib/ob}_windows()
PCI: mobiveil: Remove an unnecessary return value check
PCI: mobiveil: Fix error return values
PCI: mobiveil: Refactor the MEM/IO outbound window initialization
PCI: mobiveil: Make some register updates more readable
PCI: mobiveil: Reformat the code for readability
dt-bindings: PCI: mobiveil: Change gpio_slave and apb_csr to optional
...
This commit is contained in:
commit
fb4da215ed
117 changed files with 4486 additions and 2978 deletions
|
|
@ -52,7 +52,7 @@
|
|||
* irq line disabled until the threaded handler has been run.
|
||||
* IRQF_NO_SUSPEND - Do not disable this IRQ during suspend. Does not guarantee
|
||||
* that this interrupt will wake the system from a suspended
|
||||
* state. See Documentation/power/suspend-and-interrupts.txt
|
||||
* state. See Documentation/power/suspend-and-interrupts.rst
|
||||
* IRQF_FORCE_RESUME - Force enable it on resume even if IRQF_NO_SUSPEND is set
|
||||
* IRQF_NO_THREAD - Interrupt cannot be threaded
|
||||
* IRQF_EARLY_RESUME - Resume IRQ early during syscore instead of at device
|
||||
|
|
|
|||
|
|
@ -16,6 +16,25 @@ typedef unsigned long kernel_ulong_t;
|
|||
|
||||
#define PCI_ANY_ID (~0)
|
||||
|
||||
/**
|
||||
* struct pci_device_id - PCI device ID structure
|
||||
* @vendor: Vendor ID to match (or PCI_ANY_ID)
|
||||
* @device: Device ID to match (or PCI_ANY_ID)
|
||||
* @subvendor: Subsystem vendor ID to match (or PCI_ANY_ID)
|
||||
* @subdevice: Subsystem device ID to match (or PCI_ANY_ID)
|
||||
* @class: Device class, subclass, and "interface" to match.
|
||||
* See Appendix D of the PCI Local Bus Spec or
|
||||
* include/linux/pci_ids.h for a full list of classes.
|
||||
* Most drivers do not need to specify class/class_mask
|
||||
* as vendor/device is normally sufficient.
|
||||
* @class_mask: Limit which sub-fields of the class field are compared.
|
||||
* See drivers/scsi/sym53c8xx_2/ for example of usage.
|
||||
* @driver_data: Data private to the driver.
|
||||
* Most drivers don't need to use driver_data field.
|
||||
* Best practice is to use driver_data as an index
|
||||
* into a static list of equivalent device types,
|
||||
* instead of using it as a pointer.
|
||||
*/
|
||||
struct pci_device_id {
|
||||
__u32 vendor, device; /* Vendor and device ID or PCI_ANY_ID*/
|
||||
__u32 subvendor, subdevice; /* Subsystem ID's or PCI_ANY_ID */
|
||||
|
|
@ -257,17 +276,17 @@ struct pcmcia_device_id {
|
|||
__u16 match_flags;
|
||||
|
||||
__u16 manf_id;
|
||||
__u16 card_id;
|
||||
__u16 card_id;
|
||||
|
||||
__u8 func_id;
|
||||
__u8 func_id;
|
||||
|
||||
/* for real multi-function devices */
|
||||
__u8 function;
|
||||
__u8 function;
|
||||
|
||||
/* for pseudo multi-function devices */
|
||||
__u8 device_no;
|
||||
__u8 device_no;
|
||||
|
||||
__u32 prod_id_hash[4];
|
||||
__u32 prod_id_hash[4];
|
||||
|
||||
/* not matched against in kernelspace */
|
||||
const char * prod_id[4];
|
||||
|
|
|
|||
|
|
@ -107,9 +107,10 @@ static inline void acpiphp_check_host_bridge(struct acpi_device *adev) { }
|
|||
#endif
|
||||
|
||||
extern const guid_t pci_acpi_dsm_guid;
|
||||
#define DEVICE_LABEL_DSM 0x07
|
||||
#define RESET_DELAY_DSM 0x08
|
||||
#define FUNCTION_DELAY_DSM 0x09
|
||||
#define IGNORE_PCI_BOOT_CONFIG_DSM 0x05
|
||||
#define DEVICE_LABEL_DSM 0x07
|
||||
#define RESET_DELAY_DSM 0x08
|
||||
#define FUNCTION_DELAY_DSM 0x09
|
||||
|
||||
#else /* CONFIG_ACPI */
|
||||
static inline void acpi_pci_add_bus(struct pci_bus *bus) { }
|
||||
|
|
|
|||
|
|
@ -151,6 +151,8 @@ static inline const char *pci_power_name(pci_power_t state)
|
|||
#define PCI_PM_BUS_WAIT 50
|
||||
|
||||
/**
|
||||
* typedef pci_channel_state_t
|
||||
*
|
||||
* The pci_channel state describes connectivity between the CPU and
|
||||
* the PCI device. If some PCI bus between here and the PCI device
|
||||
* has crashed or locked up, this info is reflected here.
|
||||
|
|
@ -258,6 +260,7 @@ enum pci_bus_speed {
|
|||
PCIE_SPEED_5_0GT = 0x15,
|
||||
PCIE_SPEED_8_0GT = 0x16,
|
||||
PCIE_SPEED_16_0GT = 0x17,
|
||||
PCIE_SPEED_32_0GT = 0x18,
|
||||
PCI_SPEED_UNKNOWN = 0xff,
|
||||
};
|
||||
|
||||
|
|
@ -383,7 +386,7 @@ struct pci_dev {
|
|||
|
||||
unsigned int is_busmaster:1; /* Is busmaster */
|
||||
unsigned int no_msi:1; /* May not use MSI */
|
||||
unsigned int no_64bit_msi:1; /* May only use 32-bit MSIs */
|
||||
unsigned int no_64bit_msi:1; /* May only use 32-bit MSIs */
|
||||
unsigned int block_cfg_access:1; /* Config space access blocked */
|
||||
unsigned int broken_parity_status:1; /* Generates false positive parity */
|
||||
unsigned int irq_reroute_variant:2; /* Needs IRQ rerouting variant */
|
||||
|
|
@ -506,6 +509,8 @@ struct pci_host_bridge {
|
|||
unsigned int native_shpc_hotplug:1; /* OS may use SHPC hotplug */
|
||||
unsigned int native_pme:1; /* OS may use PCIe PME */
|
||||
unsigned int native_ltr:1; /* OS may use PCIe LTR */
|
||||
unsigned int preserve_config:1; /* Preserve FW resource setup */
|
||||
|
||||
/* Resource alignment requirements */
|
||||
resource_size_t (*align_resource)(struct pci_dev *dev,
|
||||
const struct resource *res,
|
||||
|
|
@ -776,6 +781,50 @@ struct pci_error_handlers {
|
|||
|
||||
|
||||
struct module;
|
||||
|
||||
/**
|
||||
* struct pci_driver - PCI driver structure
|
||||
* @node: List of driver structures.
|
||||
* @name: Driver name.
|
||||
* @id_table: Pointer to table of device IDs the driver is
|
||||
* interested in. Most drivers should export this
|
||||
* table using MODULE_DEVICE_TABLE(pci,...).
|
||||
* @probe: This probing function gets called (during execution
|
||||
* of pci_register_driver() for already existing
|
||||
* devices or later if a new device gets inserted) for
|
||||
* all PCI devices which match the ID table and are not
|
||||
* "owned" by the other drivers yet. This function gets
|
||||
* passed a "struct pci_dev \*" for each device whose
|
||||
* entry in the ID table matches the device. The probe
|
||||
* function returns zero when the driver chooses to
|
||||
* take "ownership" of the device or an error code
|
||||
* (negative number) otherwise.
|
||||
* The probe function always gets called from process
|
||||
* context, so it can sleep.
|
||||
* @remove: The remove() function gets called whenever a device
|
||||
* being handled by this driver is removed (either during
|
||||
* deregistration of the driver or when it's manually
|
||||
* pulled out of a hot-pluggable slot).
|
||||
* The remove function always gets called from process
|
||||
* context, so it can sleep.
|
||||
* @suspend: Put device into low power state.
|
||||
* @suspend_late: Put device into low power state.
|
||||
* @resume_early: Wake device from low power state.
|
||||
* @resume: Wake device from low power state.
|
||||
* (Please see Documentation/power/pci.rst for descriptions
|
||||
* of PCI Power Management and the related functions.)
|
||||
* @shutdown: Hook into reboot_notifier_list (kernel/sys.c).
|
||||
* Intended to stop any idling DMA operations.
|
||||
* Useful for enabling wake-on-lan (NIC) or changing
|
||||
* the power state of a device before reboot.
|
||||
* e.g. drivers/net/e100.c.
|
||||
* @sriov_configure: Optional driver callback to allow configuration of
|
||||
* number of VFs to enable via sysfs "sriov_numvfs" file.
|
||||
* @err_handler: See Documentation/PCI/pci-error-recovery.rst
|
||||
* @groups: Sysfs attribute groups.
|
||||
* @driver: Driver model structure.
|
||||
* @dynids: List of dynamically added device IDs.
|
||||
*/
|
||||
struct pci_driver {
|
||||
struct list_head node;
|
||||
const char *name;
|
||||
|
|
@ -2207,7 +2256,7 @@ static inline u8 pci_vpd_srdt_tag(const u8 *srdt)
|
|||
|
||||
/**
|
||||
* pci_vpd_info_field_size - Extracts the information field length
|
||||
* @lrdt: Pointer to the beginning of an information field header
|
||||
* @info_field: Pointer to the beginning of an information field header
|
||||
*
|
||||
* Returns the extracted information field length.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -1112,7 +1112,7 @@
|
|||
|
||||
#define PCI_VENDOR_ID_AL 0x10b9
|
||||
#define PCI_DEVICE_ID_AL_M1533 0x1533
|
||||
#define PCI_DEVICE_ID_AL_M1535 0x1535
|
||||
#define PCI_DEVICE_ID_AL_M1535 0x1535
|
||||
#define PCI_DEVICE_ID_AL_M1541 0x1541
|
||||
#define PCI_DEVICE_ID_AL_M1563 0x1563
|
||||
#define PCI_DEVICE_ID_AL_M1621 0x1621
|
||||
|
|
@ -1336,6 +1336,7 @@
|
|||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP78S_SMBUS 0x0752
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP77_IDE 0x0759
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP73_SMBUS 0x07D8
|
||||
#define PCI_DEVICE_ID_NVIDIA_GEFORCE_320M 0x08A0
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP79_SMBUS 0x0AA2
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP89_SATA 0x0D85
|
||||
|
||||
|
|
@ -1752,7 +1753,7 @@
|
|||
#define PCI_VENDOR_ID_STALLION 0x124d
|
||||
|
||||
/* Allied Telesyn */
|
||||
#define PCI_VENDOR_ID_AT 0x1259
|
||||
#define PCI_VENDOR_ID_AT 0x1259
|
||||
#define PCI_SUBDEVICE_ID_AT_2700FX 0x2701
|
||||
#define PCI_SUBDEVICE_ID_AT_2701FX 0x2703
|
||||
|
||||
|
|
@ -2550,7 +2551,7 @@
|
|||
#define PCI_DEVICE_ID_KORENIX_JETCARDF2 0x1700
|
||||
#define PCI_DEVICE_ID_KORENIX_JETCARDF3 0x17ff
|
||||
|
||||
#define PCI_VENDOR_ID_HUAWEI 0x19e5
|
||||
#define PCI_VENDOR_ID_HUAWEI 0x19e5
|
||||
|
||||
#define PCI_VENDOR_ID_NETRONOME 0x19ee
|
||||
#define PCI_DEVICE_ID_NETRONOME_NFP4000 0x4000
|
||||
|
|
|
|||
|
|
@ -271,7 +271,7 @@ typedef struct pm_message {
|
|||
* actions to be performed by a device driver's callbacks generally depend on
|
||||
* the platform and subsystem the device belongs to.
|
||||
*
|
||||
* Refer to Documentation/power/runtime_pm.txt for more information about the
|
||||
* Refer to Documentation/power/runtime_pm.rst for more information about the
|
||||
* role of the @runtime_suspend(), @runtime_resume() and @runtime_idle()
|
||||
* callbacks in device runtime power management.
|
||||
*/
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue