On Mon, 2008-01-21 at 00:24 +0100, Ronald Hoogenboom wrote:
> (LPC is the only datapath to the SB and CPU, so it has to!). We could
> optimize by omitting the wait for SPI ready when there is no data to be
> read, eg. readcnt==0. I'll have a look at what can be gained by that.
> 
Omitting it saves 10 seconds with the unconditional 10us delay, reducing
to 40~45 secs. So I think it is worth putting it in. With the
conditional delay, it is not so easily measurable, because of the
natural variance much larger than 10 us...
Patch follows...

Signed-off-by: Ronald Hoogenboom <[EMAIL PROTECTED]>

---

Index: spi.c
===================================================================
--- spi.c	(revision 3066)
+++ spi.c	(working copy)
@@ -227,12 +227,14 @@
 	 * We can't use writecnt directly, but have to use a strange encoding.
 	 */ 
 	outb(((0x4 + (fast_spi ? 1 : 0)) << 4) | ((readcnt & 0x3) << 2) | (writeenc), port);
-	do {
-		busy = inb(port) & 0x80;
-	} while (busy);
-
-	for (i = 0; i < readcnt; i++) {
-		readarr[i] = inb(port + 5 + i);
+	if (readcnt > 0) {
+		do {
+			busy = inb(port) & 0x80;
+		} while (busy);
+		i=0;
+		do {
+			readarr[i] = inb(port + 5 + i);
+		} while (++i < readcnt);
 	}
 
 	return 0;
-- 
coreboot mailing list
coreboot@coreboot.org
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to