[LinuxBIOS] r2548 - trunk/LinuxBIOSv2/src/southbridge/nvidia/mcp55

svn at openbios.org svn at openbios.org
Sat Feb 3 16:23:34 CET 2007


Author: stepan
Date: 2007-02-03 16:23:34 +0100 (Sat, 03 Feb 2007)
New Revision: 2548

Modified:
   trunk/LinuxBIOSv2/src/southbridge/nvidia/mcp55/mcp55_smbus.h
Log:
Nvidia MCP55 uses CMD to send/receive bytes instead of DAT0, 
that's the same as broadcom/bcm5785. 

Signed-off-by: bxshi <bingxunshi at gmail.com>
Acked-by: Stefan Reinauer <stepan at coresystems.de>



Modified: trunk/LinuxBIOSv2/src/southbridge/nvidia/mcp55/mcp55_smbus.h
===================================================================
--- trunk/LinuxBIOSv2/src/southbridge/nvidia/mcp55/mcp55_smbus.h	2007-02-03 10:43:48 UTC (rev 2547)
+++ trunk/LinuxBIOSv2/src/southbridge/nvidia/mcp55/mcp55_smbus.h	2007-02-03 15:23:34 UTC (rev 2548)
@@ -80,9 +80,7 @@
 	/* set the device I'm talking too */
 	outb(((device & 0x7f) << 1)|1 , smbus_io_base + SMBXMITADD);
 	smbus_delay();
-	/* set the command/address... */
-	outb(0, smbus_io_base + SMBHSTCMD);
-	smbus_delay();
+
 	/* byte data recv */
 	outb(0x05, smbus_io_base + SMBHSTPRTCL);
 	smbus_delay();
@@ -95,7 +93,7 @@
 	global_status_register = inb(smbus_io_base + SMBHSTSTAT) & 0x80; /* lose check */
 
 	/* read results of transaction */
-	byte = inb(smbus_io_base + SMBHSTDAT0);
+	byte = inb(smbus_io_base + SMBHSTCMD);
 
 	if (global_status_register != 0x80) { // lose check, otherwise it should be 0
 		return -1;
@@ -109,13 +107,14 @@
 	outb(val, smbus_io_base + SMBHSTDAT0);
 	smbus_delay();
 
+	/* set the command... */
+	outb(val, smbus_io_base + SMBHSTCMD);
+	smbus_delay();
+
 	/* set the device I'm talking too */
 	outb(((device & 0x7f) << 1) | 0, smbus_io_base + SMBXMITADD);
 	smbus_delay();
 
-	outb(0, smbus_io_base + SMBHSTCMD);
-	smbus_delay();
-
 	/* set up for a byte data write */
 	outb(0x04, smbus_io_base + SMBHSTPRTCL);
 	smbus_delay();





More information about the coreboot mailing list