[coreboot-gerrit] Patch set updated for coreboot: 93806cc device/pci_early.c: Mixes up variants of a typedefs to 'u32'

Edward O'Callaghan (eocallaghan@alterapraxis.com) gerrit at coreboot.org
Sat Jul 12 12:05:52 CEST 2014


Edward O'Callaghan (eocallaghan at alterapraxis.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/6225

-gerrit

commit 93806cc15cd88defa8fc3025f73771dd8faf5961
Author: Edward O'Callaghan <eocallaghan at alterapraxis.com>
Date:   Wed Jul 9 04:55:16 2014 +1000

    device/pci_early.c: Mixes up variants of a typedefs to 'u32'
    
    Unfortunately coreboot has to deal with ROMCC's short comings which has
    lead to a little bit of confusion due to typedefs. Essentially, coreboot
    defines four typedefs:
    
     * 'typedef struct device * device_t' in ramstage not in SIMPLE_DEVICE mode
     * 'typedef u32 device_t' in romstage or when SIMPLE_DEVICE is defined
     * 'typedef u32 pnp_devfn_t'
     * 'typedef u32 pci_devfn_t'
    
    Some early functions make use of 'device_t' over 'pci_devfn_t' and since
    the C type-checker does not enforce typedefs to the same type 'u32'
    these are never noticed. Fix these so that 'device_t' does not conflict
    in romstage for later work. We later plan to have 'pnp_devfn_t' and
    'pci_devfn_t' as the only variants of 'u32' and 'device_t' to be a
    struct pointer type exclusively.
    
    Change-Id: I948801f5be968a934798f1bad7722649758cd4d3
    Signed-off-by: Edward O'Callaghan <eocallaghan at alterapraxis.com>
---
 src/device/pci_early.c   | 7 +++----
 src/include/device/pci.h | 6 ++++++
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/device/pci_early.c b/src/device/pci_early.c
index e31287e..e690211 100644
--- a/src/device/pci_early.c
+++ b/src/device/pci_early.c
@@ -25,8 +25,7 @@
 #include <delay.h>
 
 #ifdef __PRE_RAM__
-
-unsigned pci_find_next_capability(device_t dev, unsigned cap, unsigned last)
+unsigned pci_find_next_capability(pci_devfn_t dev, unsigned cap, unsigned last)
 {
 	unsigned pos = 0;
 	u16 status;
@@ -69,11 +68,11 @@ unsigned pci_find_next_capability(device_t dev, unsigned cap, unsigned last)
 	return 0;
 }
 
-unsigned pci_find_capability(device_t dev, unsigned cap)
+unsigned pci_find_capability(pci_devfn_t dev, unsigned cap)
 {
 	return pci_find_next_capability(dev, cap, 0);
 }
-#endif
+#endif /* __PRE_RAM__ */
 
 
 #if CONFIG_EARLY_PCI_BRIDGE
diff --git a/src/include/device/pci.h b/src/include/device/pci.h
index 8175970..0670da4 100644
--- a/src/include/device/pci.h
+++ b/src/include/device/pci.h
@@ -102,8 +102,14 @@ static inline const struct pci_operations *ops_pci(device_t dev)
 
 #endif /* ! __SIMPLE_DEVICE__ */
 
+#ifdef __PRE_RAM__
+unsigned pci_find_next_capability(pci_devfn_t dev, unsigned cap, unsigned last);
+unsigned pci_find_capability(pci_devfn_t dev, unsigned cap);
+#else /* !__PRE_RAM__ */
 unsigned pci_find_next_capability(device_t dev, unsigned cap, unsigned last);
 unsigned pci_find_capability(device_t dev, unsigned cap);
+#endif /* __PRE_RAM__ */
+
 void pci_early_bridge_init(void);
 int pci_early_device_probe(u8 bus, u8 dev, u32 mmio_base);
 



More information about the coreboot-gerrit mailing list