OXPCIe: Reinitialize UART after pci_dev_set_resources()
authorStefan Reinauer <reinauer@chromium.org>
Tue, 10 May 2011 19:54:56 +0000 (12:54 -0700)
committerStefan Reinauer <stefan.reinauer@coreboot.org>
Fri, 9 Mar 2012 19:32:30 +0000 (20:32 +0100)
... and only pull in early init code if the OXPCIe is used for console.

Change-Id: I01feca3b9e8376a75c17554ba1bd200d523dff8d
Signed-off-by: Stefan Reinauer <reinauer@google.com>
Reviewed-on: http://review.coreboot.org/692
Tested-by: build bot (Jenkins)
Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
src/drivers/oxford/oxpcie/Makefile.inc
src/drivers/oxford/oxpcie/oxpcie.c

index 7d3a26f5093b85c4f8b29fa600a586b47dff52ff..7f4aa58e9338d8cdfa9e65be3e4e8b3951669171 100644 (file)
@@ -1,3 +1,5 @@
 driver-$(CONFIG_DRIVERS_OXFORD_OXPCIE) += oxpcie.c
 
+ifeq ($(CONFIG_CONSOLE_SERIAL8250MEM),y)
 romstage-$(CONFIG_DRIVERS_OXFORD_OXPCIE) += oxpcie_early.c
+endif
index e1fb65f9db318090f6c10576d170ce92a17f6285..8afdd1f74ea05342ef4a744226b62f9b17fdcf26 100644 (file)
@@ -23,7 +23,6 @@
 #include <device/pci_ids.h>
 #include <console/console.h>
 #include <arch/io.h>
-#include <uart8250.h>
 
 static void oxford_oxpcie_enable(device_t dev)
 {
@@ -41,9 +40,20 @@ static void oxford_oxpcie_enable(device_t dev)
                        (read32(res->base + 4) & 3));
 }
 
+
+static void oxford_oxpcie_set_resources(struct device *dev)
+{
+       pci_dev_set_resources(dev);
+
+#if CONFIG_CONSOLE_SERIAL8250MEM
+       /* Re-initialize OXPCIe base address after set_resources */
+       uartmem_init();
+#endif
+}
+
 static struct device_operations oxford_oxpcie_ops = {
        .read_resources   = pci_dev_read_resources,
-       .set_resources    = pci_dev_set_resources,
+       .set_resources    = oxford_oxpcie_set_resources,
        .enable_resources = pci_dev_enable_resources,
        .init             = oxford_oxpcie_enable,
        .scan_bus         = 0,