summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyösti Mälkki <kyosti.malkki@gmail.com>2019-07-29 16:38:14 +0300
committerMartin Roth <martinroth@google.com>2019-08-02 15:47:53 +0000
commit3f98d41b6e546223d8a13245ad197f0d67b4e094 (patch)
treeb2431a67439f0f39f706e44cbc71c1fa4b426782
parente825d3f4d69c1e3700ac3ce2896168fd9f092f19 (diff)
device/pci_ops: Make PCI_BDF() available in all stages
Caller needs to take into account that bus numbers may have not been assigned yet. Same issue existed before with early ramstage and mostly does not cause problems when used with static devices on bus 0. Change-Id: I4865b4277dbc858c8c2ffd2052defcaa1a92173c Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/34614 Reviewed-by: Nico Huber <nico.h@gmx.de> Reviewed-by: Furquan Shaikh <furquan@google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
-rw-r--r--src/device/pci_device.c5
-rw-r--r--src/device/pci_ops.c6
-rw-r--r--src/include/device/pci_ops.h32
3 files changed, 22 insertions, 21 deletions
diff --git a/src/device/pci_device.c b/src/device/pci_device.c
index 7786043a6c..5765529f86 100644
--- a/src/device/pci_device.c
+++ b/src/device/pci_device.c
@@ -630,11 +630,6 @@ void pci_dev_enable_resources(struct device *dev)
pci_write_config16(dev, PCI_COMMAND, command);
}
-void __noreturn pcidev_die(void)
-{
- die("PCI: dev is NULL!\n");
-}
-
void pci_bus_enable_resources(struct device *dev)
{
u16 ctrl;
diff --git a/src/device/pci_ops.c b/src/device/pci_ops.c
index 96133155be..6f42978e82 100644
--- a/src/device/pci_ops.c
+++ b/src/device/pci_ops.c
@@ -14,6 +14,7 @@
#define __SIMPLE_DEVICE__
#include <stdint.h>
+#include <console/console.h>
#include <device/pci.h>
#include <device/pci_def.h>
#include <device/pci_ops.h>
@@ -85,3 +86,8 @@ u16 pci_s_find_capability(pci_devfn_t dev, u16 cap)
{
return pci_s_find_next_capability(dev, cap, 0);
}
+
+void __noreturn pcidev_die(void)
+{
+ die("PCI: dev is NULL!\n");
+}
diff --git a/src/include/device/pci_ops.h b/src/include/device/pci_ops.h
index 9a9c575e3c..5cc803c737 100644
--- a/src/include/device/pci_ops.h
+++ b/src/include/device/pci_ops.h
@@ -23,22 +23,7 @@
#include <device/pci_type.h>
#include <arch/pci_ops.h>
-#ifdef __SIMPLE_DEVICE__
-
-/* Avoid name collisions as different stages have different signature
- * for these functions. The _s_ stands for simple, fundamental IO or
- * MMIO variant.
- */
-#define pci_read_config8 pci_s_read_config8
-#define pci_read_config16 pci_s_read_config16
-#define pci_read_config32 pci_s_read_config32
-#define pci_write_config8 pci_s_write_config8
-#define pci_write_config16 pci_s_write_config16
-#define pci_write_config32 pci_s_write_config32
-#else
-
-#include <device/pci.h>
-
+#ifndef __ROMCC__
void __noreturn pcidev_die(void);
static __always_inline pci_devfn_t pcidev_bdf(const struct device *dev)
@@ -52,6 +37,21 @@ static __always_inline pci_devfn_t pcidev_assert(const struct device *dev)
pcidev_die();
return pcidev_bdf(dev);
}
+#endif
+
+#ifdef __SIMPLE_DEVICE__
+
+/* Avoid name collisions as different stages have different signature
+ * for these functions. The _s_ stands for simple, fundamental IO or
+ * MMIO variant.
+ */
+#define pci_read_config8 pci_s_read_config8
+#define pci_read_config16 pci_s_read_config16
+#define pci_read_config32 pci_s_read_config32
+#define pci_write_config8 pci_s_write_config8
+#define pci_write_config16 pci_s_write_config16
+#define pci_write_config32 pci_s_write_config32
+#else
static __always_inline
u8 pci_read_config8(const struct device *dev, u16 reg)