compat: backport PCI: Add accessors for PCI Express Capability
authorLuis R. Rodriguez <mcgrof@do-not-panic.com>
Wed, 5 Sep 2012 01:15:30 +0000 (18:15 -0700)
committerLuis R. Rodriguez <mcgrof@do-not-panic.com>
Wed, 5 Sep 2012 02:25:27 +0000 (19:25 -0700)
commitfbc930e41dabb4f7c56dd432e374c223ab02cb76
tree0d85301a5786d158750ae5a270a30056048e8ad0
parent99d7ff910e3c38efadacbc6506cd898afcbf9b4e
compat: backport PCI: Add accessors for PCI Express Capability

This backports this patch:

commit 8c0d3a02c1309eb6112d2e7c8172e8ceb26ecfca
Author: Jiang Liu <jiang.liu@huawei.com>
Date:   Tue Jul 24 17:20:05 2012 +0800

    PCI: Add accessors for PCI Express Capability

    The PCI Express Capability (PCIe spec r3.0, sec 7.8) comes in two
    versions, v1 and v2.  In v1 Capability structures (PCIe spec r1.0 and
    r1.1), some fields are optional, so the structure size depends on the
    device type.

    This patch adds functions to access this capability so drivers don't
    have to be aware of the differences between v1 and v2.  Note that these
    new functions apply only to the "PCI Express Capability," not to any of
    the other "PCI Express Extended Capabilities" (AER, VC, ACS, MFVC, etc.)

    Function pcie_capability_read_word/dword() reads the PCIe Capabilities
    register and returns the value in the reference parameter "val".  If
    the PCIe Capabilities register is not implemented on the PCIe device,
    "val" is set to 0.

    Function pcie_capability_write_word/dword() writes the value to the
    specified PCIe Capability register.

    Function pcie_capability_clear_and_set_word/dword() sets and/or clears bits
    of a PCIe Capability register.

    [bhelgaas: changelog, drop "pci_" prefixes, don't export
    pcie_capability_reg_implemented()]
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Signed-off-by: Yijing Wang <wangyijing@huawei.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
This is not yet upstream into a public release but based on
star alignments I can confidently say this will be part
of the v3.7-rc1 release unless Linus throws a shit fit over
it.

Worth mentioning is that the pci_dev->pcie_flags_reg
is not available on older kernels so we had to write
a pcie_flags_reg() helper. Additionally a lot of pci_reg.h
updates were made into the respective header file as they
were introduced.

mcgrof@garbanzo ~/compat (git::master)$ time ckmake
Trying kernel 3.5.0-030500-generic [OK]
Trying kernel 3.4.4-030404-generic [OK]
Trying kernel 3.3.7-030307-generic [OK]
Trying kernel 3.2.2-030202-generic [OK]
Trying kernel 3.1.10-030110-generic [OK]
Trying kernel 3.0.18-030018-generic [OK]
Trying kernel 2.6.39-02063904-generic [OK]
Trying kernel 2.6.38-02063808-generic [OK]
Trying kernel 2.6.37-02063706-generic [OK]
Trying kernel 2.6.36-02063604-generic [OK]
Trying kernel 2.6.35-02063512-generic [OK]
Trying kernel 2.6.34-02063410-generic [OK]
Trying kernel 2.6.33-02063305-generic [OK]
Trying kernel 2.6.32-02063255-generic [OK]
Trying kernel 2.6.31-02063113-generic [OK]
Trying kernel 2.6.30-02063010-generic [OK]
Trying kernel 2.6.29-02062906-generic [OK]
Trying kernel 2.6.28-02062810-generic [OK]
Trying kernel 2.6.27-020627-generic [OK]
Trying kernel 2.6.26-020626-generic [OK]
Trying kernel 2.6.25-020625-generic [OK]
Trying kernel 2.6.24-020624-generic [OK]

real    0m59.966s
user    3m12.628s
sys     0m29.542s

Signed-off-by: Luis R. Rodriguez <mcgrof@do-not-panic.com>
compat/compat-3.7.c
include/linux/compat-2.6.28.h
include/linux/compat-2.6.29.h
include/linux/compat-2.6.30.h
include/linux/compat-3.3.h
include/linux/compat-3.7.h