summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2015-05-27 10:42:28 +1000
committerChris Johns <chrisj@rtems.org>2015-06-01 10:36:58 +1000
commit1383c80c5ae53f5ab399122034dc967c667abc15 (patch)
tree7e1b24c1eda4536246a141024edbc8c72bd0205d
parente35a65e99512000ab0107c4fc64f89aa84f7de38 (diff)
downloadrtems-libbsd-1383c80c5ae53f5ab399122034dc967c667abc15.tar.bz2
Add conditional support for RTEMS PCI to the waf build.
Check for the "rtems/pci.h" header and provide conditional build support with waf to build for BSPs that do not have PCI support. The Makefile build always defines HAVE_RTEMS_PCI_H which is the same state with this change. The PCI calls still exist however they do nothing and return a constant. Any PCI based driver that makes these calls on a BSP that does not have PCI support will not work which is understandable. Either change the driver or add PCI support the BSP.
-rw-r--r--Makefile1
-rwxr-xr-xmakefile.py1
-rw-r--r--rtemsbsd/rtems/rtems-bsd-pci_bus.c8
-rw-r--r--rtemsbsd/rtems/rtems-bsd-pci_cfgreg.c19
-rwxr-xr-xwaf_generator.py1
-rw-r--r--wscript1
6 files changed, 24 insertions, 7 deletions
diff --git a/Makefile b/Makefile
index fcf31e74..1b0cd4f1 100644
--- a/Makefile
+++ b/Makefile
@@ -27,6 +27,7 @@ COMMON_FLAGS += -ImDNSResponder/mDNSCore
COMMON_FLAGS += -ImDNSResponder/mDNSShared
COMMON_FLAGS += -ImDNSResponder/mDNSPosix
COMMON_FLAGS += -Itestsuite/include
+COMMON_FLAGS += -DHAVE_RTEMS_PCI_H=1
COMMON_FLAGS += -Wall
COMMON_FLAGS += -Wno-format
COMMON_FLAGS += -MT $@ -MD -MP -MF $(basename $@).d
diff --git a/makefile.py b/makefile.py
index ea041bdc..122650f4 100755
--- a/makefile.py
+++ b/makefile.py
@@ -191,6 +191,7 @@ class ModuleManager(builder.ModuleManager):
'COMMON_FLAGS += -ImDNSResponder/mDNSShared\n' \
'COMMON_FLAGS += -ImDNSResponder/mDNSPosix\n' \
'COMMON_FLAGS += -Itestsuite/include\n' \
+ 'COMMON_FLAGS += -DHAVE_RTEMS_PCI_H=1\n' \
'COMMON_FLAGS += -Wall\n' \
'COMMON_FLAGS += -Wno-format\n' \
'COMMON_FLAGS += -MT $@ -MD -MP -MF $(basename $@).d\n' \
diff --git a/rtemsbsd/rtems/rtems-bsd-pci_bus.c b/rtemsbsd/rtems/rtems-bsd-pci_bus.c
index f673083b..f687e0f5 100644
--- a/rtemsbsd/rtems/rtems-bsd-pci_bus.c
+++ b/rtemsbsd/rtems/rtems-bsd-pci_bus.c
@@ -52,21 +52,27 @@ __FBSDID("$FreeBSD$");
#include <rtems/bsd/local/pcib_if.h>
#define pci_find_device rtems_pci_find_device
+#if HAVE_RTEMS_PCI_H
#include <rtems/pci.h>
+#endif
#include <machine/bus.h>
int
pcibios_pcib_route_interrupt(device_t pcib, device_t dev, int pin)
{
+#if HAVE_RTEMS_PCI_H
int bus;
int slot;
int func;
uint8_t irq;
-
+
bus = pci_get_bus(dev);
slot = pci_get_slot(dev);
func = pci_get_function(dev);
pci_read_config_byte(bus, slot, func, PCI_INTERRUPT_LINE, &irq);
return irq;
+#else
+ return 0;
+#endif
}
diff --git a/rtemsbsd/rtems/rtems-bsd-pci_cfgreg.c b/rtemsbsd/rtems/rtems-bsd-pci_cfgreg.c
index f126c31f..b9bdd31b 100644
--- a/rtemsbsd/rtems/rtems-bsd-pci_cfgreg.c
+++ b/rtemsbsd/rtems/rtems-bsd-pci_cfgreg.c
@@ -49,11 +49,12 @@ __FBSDID("$FreeBSD$");
#include <dev/pci/pcivar.h>
#include <dev/pci/pcireg.h>
#define pci_find_device rtems_pci_find_device
+#if HAVE_RTEMS_PCI_H
#include <rtems/pci.h>
+#endif
-
-/*
- * Initialise access to PCI configuration space
+/*
+ * Initialise access to PCI configuration space
*/
int
pci_cfgregopen(void)
@@ -61,12 +62,13 @@ pci_cfgregopen(void)
return(1);
}
-/*
+/*
* Read configuration space register
*/
u_int32_t
pci_cfgregread(int bus, int slot, int func, int reg, int bytes)
{
+#if HAVE_RTEMS_PCI_H
u_int32_t value;
uint8_t v8;
uint16_t v16;
@@ -89,14 +91,18 @@ pci_cfgregread(int bus, int slot, int func, int reg, int bytes)
}
return value;
+#else
+ return 0;
+#endif
}
-/*
- * Write configuration space register
+/*
+ * Write configuration space register
*/
void
pci_cfgregwrite(int bus, int slot, int func, int reg, u_int32_t data, int bytes)
{
+#if HAVE_RTEMS_PCI_H
uint8_t v8 = data & 0xff;
uint16_t v16 = data & 0xffff;
uint32_t v32 = data;
@@ -112,4 +118,5 @@ pci_cfgregwrite(int bus, int slot, int func, int reg, u_int32_t data, int bytes)
pci_write_config_dword( bus, slot, func, reg, v32 );
break;
}
+#endif
}
diff --git a/waf_generator.py b/waf_generator.py
index b3c80558..4c9be070 100755
--- a/waf_generator.py
+++ b/waf_generator.py
@@ -242,6 +242,7 @@ class ModuleManager(builder.ModuleManager):
self.add('')
self.add('def bsp_configure(conf, arch_bsp):')
self.add(' conf.check(header_name = "dlfcn.h", features = "c")')
+ self.add(' conf.check(header_name = "rtems/pci.h", features = "c", mandatory = False)')
self.add('')
self.add('def configure(conf):')
self.add(' if conf.options.auto_regen:')
diff --git a/wscript b/wscript
index d1438ee6..d02d3684 100644
--- a/wscript
+++ b/wscript
@@ -37,6 +37,7 @@ def options(opt):
def bsp_configure(conf, arch_bsp):
conf.check(header_name = "dlfcn.h", features = "c")
+ conf.check(header_name = "rtems/pci.h", features = "c", mandatory = False)
def configure(conf):
if conf.options.auto_regen: