[coreboot] New patch to review for coreboot: 2551459 Random VIA fixups to make it faster or non-crashing

Rudolf Marek (r.marek@assembler.cz) gerrit at coreboot.org
Tue Jun 5 01:02:30 CEST 2012


Rudolf Marek (r.marek at assembler.cz) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/1097

-gerrit

commit 255145949fe31a194c8e47b0af0d73b6775907c3
Author: Rudolf Marek <r.marek at assembler.cz>
Date:   Tue Jun 5 00:31:09 2012 +0200

    Random VIA fixups to make it faster or non-crashing
    
    IOAPIC uses now read32/write32 which is redirected, possibly even better is to use common IOAPIC setup
    ditch out the dump of PCI space, it takes way a lot time with serialICE.
    
    Change-Id: I029091973cee3dafc39a8d4b18aae4d8c6d10127
    Signed-off-by: Rudolf Marek <r.marek at assembler.cz>
---
 src/southbridge/via/k8t890/pcie.c      |    7 ++++++-
 src/southbridge/via/k8t890/traf_ctrl.c |   14 +++++++-------
 src/southbridge/via/vt8237r/vt8237r.c  |    2 ++
 3 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/src/southbridge/via/k8t890/pcie.c b/src/southbridge/via/k8t890/pcie.c
index 2840bf3..6ec1c41 100644
--- a/src/southbridge/via/k8t890/pcie.c
+++ b/src/southbridge/via/k8t890/pcie.c
@@ -35,6 +35,11 @@ static void pcie_common_init(struct device *dev)
 {
 	u8 reg;
 	int i, up;
+#if CONFIG_ULINUX
+	int loops = 2;
+#else
+	int loops = 1000;
+#endif
 
 	/* Disable downstream read cycle retry,
 	 * otherwise the bus scan will hang if no device is plugged in. */
@@ -64,7 +69,7 @@ static void pcie_common_init(struct device *dev)
 
 	/* Wait up to 100ms for link to come up */
 	up = 0;
-	for (i=0; i<1000; i++) {
+	for (i=0; i<loops; i++) {
 		if (pci_read_config16(dev, 0x52) & (1<<13)) {
 			up = 1;
 			break;
diff --git a/src/southbridge/via/k8t890/traf_ctrl.c b/src/southbridge/via/k8t890/traf_ctrl.c
index d3ed1e7..c55052c 100644
--- a/src/southbridge/via/k8t890/traf_ctrl.c
+++ b/src/southbridge/via/k8t890/traf_ctrl.c
@@ -21,6 +21,7 @@
 #include <device/pci.h>
 #include <device/pci_ids.h>
 #include <console/console.h>
+#include <arch/io.h>
 #include "k8t890.h"
 
 extern unsigned long log2(unsigned long x);
@@ -96,14 +97,13 @@ static void traf_ctrl_enable_generic(struct device *dev)
 	apic = (u32 *)K8T890_APIC_BASE;
 
 	/* Set APIC to FSB transported messages. */
-	apic[0] = 3;
-	data = apic[4];
-	apic[4] = (data & 0xFFFFFE) | 1;
-
+	write32(K8T890_APIC_BASE, 3);
+	data = read32(K8T890_APIC_BASE + 0x10);
+	write32(K8T890_APIC_BASE + 0x10, (data & 0xFFFFFE) | 1);
 	/* Set APIC ID. */
-	apic[0] = 0;
-	data = apic[4];
-	apic[4] = (data & 0xF0FFFF) | (K8T890_APIC_ID << 24);
+	write32(K8T890_APIC_BASE, 0);
+	data = read32(K8T890_APIC_BASE + 0x10);
+	write32(K8T890_APIC_BASE + 0x10, (data & 0xF0FFFF) | (K8T890_APIC_ID << 24));
 }
 
 static void traf_ctrl_enable_k8m890(struct device *dev)
diff --git a/src/southbridge/via/vt8237r/vt8237r.c b/src/southbridge/via/vt8237r/vt8237r.c
index 586df66..c8eaca1 100644
--- a/src/southbridge/via/vt8237r/vt8237r.c
+++ b/src/southbridge/via/vt8237r/vt8237r.c
@@ -54,6 +54,7 @@ void writeback(struct device *dev, u16 where, u8 what)
 
 void dump_south(device_t dev)
 {
+#if CONFIG_ULINUX == 0
 	int i, j;
 
 	for (i = 0; i < 256; i += 16) {
@@ -62,6 +63,7 @@ void dump_south(device_t dev)
 			printk(BIOS_DEBUG, "%02x ", pci_read_config8(dev, i + j));
 		printk(BIOS_DEBUG, "\n");
 	}
+#endif
 }
 
 static void vt8237r_enable(struct device *dev)




More information about the coreboot mailing list