]> git.karo-electronics.de Git - linux-beck.git/commitdiff
PCI/AER: Factor out HEST device type matching
authorBjorn Helgaas <bhelgaas@google.com>
Thu, 6 Jun 2013 18:10:47 +0000 (12:10 -0600)
committerBjorn Helgaas <bhelgaas@google.com>
Thu, 6 Jun 2013 20:33:27 +0000 (14:33 -0600)
This factors out the matching of HEST structure type and PCIe device type
to improve readability.  No functional change.

Tested-by: Betty Dall <betty.dall@hp.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
drivers/pci/pcie/aer/aerdrv_acpi.c

index 4f798ab629c8f4b16a74df60ca507e1a8de174c2..e7ea5735a61fcb0f875104d123035abafd1a0f6f 100644 (file)
@@ -29,6 +29,22 @@ static inline int hest_match_pci(struct acpi_hest_aer_common *p,
                 p->function == PCI_FUNC(pci->devfn));
 }
 
+static inline bool hest_match_type(struct acpi_hest_header *hest_hdr,
+                               struct pci_dev *dev)
+{
+       u16 hest_type = hest_hdr->type;
+       u8 pcie_type = pci_pcie_type(dev);
+
+       if ((hest_type == ACPI_HEST_TYPE_AER_ROOT_PORT &&
+               pcie_type == PCI_EXP_TYPE_ROOT_PORT) ||
+           (hest_type == ACPI_HEST_TYPE_AER_ENDPOINT &&
+               pcie_type == PCI_EXP_TYPE_ENDPOINT) ||
+           (hest_type == ACPI_HEST_TYPE_AER_BRIDGE &&
+               (dev->class >> 16) == PCI_BASE_CLASS_BRIDGE))
+               return true;
+       return false;
+}
+
 struct aer_hest_parse_info {
        struct pci_dev *pci_dev;
        int firmware_first;
@@ -38,28 +54,11 @@ static int aer_hest_parse(struct acpi_hest_header *hest_hdr, void *data)
 {
        struct aer_hest_parse_info *info = data;
        struct acpi_hest_aer_common *p;
-       u8 pcie_type = 0;
-       u8 bridge = 0;
        int ff = 0;
 
-       switch (hest_hdr->type) {
-       case ACPI_HEST_TYPE_AER_ROOT_PORT:
-               pcie_type = PCI_EXP_TYPE_ROOT_PORT;
-               break;
-       case ACPI_HEST_TYPE_AER_ENDPOINT:
-               pcie_type = PCI_EXP_TYPE_ENDPOINT;
-               break;
-       case ACPI_HEST_TYPE_AER_BRIDGE:
-               if ((info->pci_dev->class >> 16) == PCI_BASE_CLASS_BRIDGE)
-                       bridge = 1;
-               break;
-       default:
-               return 0;
-       }
-
        p = (struct acpi_hest_aer_common *)(hest_hdr + 1);
        if (p->flags & ACPI_HEST_GLOBAL) {
-               if ((pci_pcie_type(info->pci_dev) == pcie_type) || bridge)
+               if (hest_match_type(hest_hdr, info->pci_dev))
                        ff = !!(p->flags & ACPI_HEST_FIRMWARE_FIRST);
        } else
                if (hest_match_pci(p, info->pci_dev))