summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/device/device_util.c8
-rw-r--r--src/include/device/device.h1
2 files changed, 9 insertions, 0 deletions
diff --git a/src/device/device_util.c b/src/device/device_util.c
index f33c9250dc..ec2d1591ab 100644
--- a/src/device/device_util.c
+++ b/src/device/device_util.c
@@ -5,6 +5,7 @@
#include <console/console.h>
#include <device/device.h>
#include <device/pci_def.h>
+#include <device/pci_ids.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -969,3 +970,10 @@ bool is_pci_bridge(const struct device *pci)
{
return is_pci(pci) && ((pci->hdr_type & 0x7f) == PCI_HEADER_TYPE_BRIDGE);
}
+
+bool is_pci_ioapic(const struct device *pci)
+{
+ return is_pci(pci) && ((pci->class >> 16) == PCI_BASE_CLASS_SYSTEM) &&
+ ((pci->class >> 8) == PCI_CLASS_SYSTEM_PIC) &&
+ ((pci->class & 0xff) >= 0x10);
+}
diff --git a/src/include/device/device.h b/src/include/device/device.h
index f28a46b3bb..053138db99 100644
--- a/src/include/device/device.h
+++ b/src/include/device/device.h
@@ -195,6 +195,7 @@ bool is_pci(const struct device *pci);
bool is_enabled_pci(const struct device *pci);
bool is_pci_dev_on_bus(const struct device *pci, unsigned int bus);
bool is_pci_bridge(const struct device *pci);
+bool is_pci_ioapic(const struct device *pci);
bool is_domain0(const struct device *dev);
bool is_dev_on_domain0(const struct device *dev);