[SeaBIOS] [PATCH 2/4] pci: add foreachcap() helper

Eduard - Gabriel Munteanu eduard.munteanu at linux360.ro
Sat Aug 28 17:02:56 CEST 2010


This iterates over capabilities exposed by PCI devices. It's needed by
IOMMU initialization code to discover the Secure Device capability.

Signed-off-by: Eduard - Gabriel Munteanu <eduard.munteanu at linux360.ro>
---
 src/pci.h |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/src/pci.h b/src/pci.h
index 9c3108c..60e0359 100644
--- a/src/pci.h
+++ b/src/pci.h
@@ -2,6 +2,7 @@
 #define __PCI_H
 
 #include "types.h" // u32
+#include "pci_regs.h" // PCI_CAPABILITY_LIST et al.
 
 static inline u8 pci_bdf_to_bus(u16 bdf) {
     return bdf >> 8;
@@ -52,6 +53,10 @@ int pci_next(int bdf, int *pmax);
     for (MAX=0x0100, BDF=pci_next(0, &MAX)      \
          ; BDF >= 0                             \
          ; BDF=pci_next(BDF+1, &MAX))
+#define foreachcap(BDF, PTR, CAP)                                         \
+    for (PTR = PCI_CAPABILITY_LIST, CAP = pci_config_readb(BDF, PTR);     \
+         CAP;                                                             \
+         PTR = CAP + PCI_CAP_LIST_NEXT, CAP = pci_config_readb(BDF, PTR))
 
 #define foreachpci_in_bus(BDF, MAX, BUS)                                \
     for (MAX = pci_bus_devfn_to_bdf(BUS, 0) + 0x0100,                   \
-- 
1.7.1




More information about the SeaBIOS mailing list