diff options
author | Tomasz Nowicki <tn@semihalf.com> | 2016-09-09 21:24:04 +0200 |
---|---|---|
committer | Bjorn Helgaas <helgaas@kernel.org> | 2016-12-06 13:45:48 -0600 |
commit | 5b69b85ba1ddd36be01f5c57830b37a3c8256009 (patch) | |
tree | 3b4c7adb6b95adde34d539322274895ebb43eff0 /drivers/acpi/utils.c | |
parent | 13983eb89d5afaa65acd4479fad151cbd4de5509 (diff) | |
download | talos-obmc-linux-5b69b85ba1ddd36be01f5c57830b37a3c8256009.tar.gz talos-obmc-linux-5b69b85ba1ddd36be01f5c57830b37a3c8256009.zip |
PCI/ACPI: Check for platform-specific MCFG quirks
The PCIe spec (r3.0, sec 7.2.2) specifies an "Enhanced Configuration Access
Mechanism" (ECAM) for memory-mapped access to configuration space. ECAM is
required for PCIe systems unless there's a standard firmware interface for
config access.
In the absence of a firmware interface, we use pci_generic_ecam_ops, and on
ACPI systems, we discover the ECAM space via the MCFG table and/or the _CBA
method.
Unfortunately some systems provide MCFG but don't implement ECAM according
to spec, so we need a mechanism for quirks to make those systems work.
Add an MCFG quirk mechanism to override the config accessor functions
and/or the memory-mapped address space.
A quirk is selected if it matches all of the following:
- OEM ID
- OEM Table ID
- OEM Revision
- PCI segment (from _SEG)
- PCI bus number range (from _CRS, wildcard allowed)
If the quirk specifies config accessor functions or a memory-mapped address
range, these override the defaults.
[bhelgaas: changelog, reorder quirk matching, fix oem_revision typo per
Duc, add under #ifdef CONFIG_PCI_QUIRKS]
Signed-off-by: Tomasz Nowicki <tn@semihalf.com>
Signed-off-by: Dongdong Liu <liudongdong3@huawei.com>
Signed-off-by: Christopher Covington <cov@codeaurora.org>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Diffstat (limited to 'drivers/acpi/utils.c')
0 files changed, 0 insertions, 0 deletions