[LinuxBIOS] [PATCH] cleaned up MCP55 chipset code

bxshi bingxunshi at gmail.com
Fri Feb 2 02:03:19 CET 2007


>
> >yhlu wrote:
> > Good, Please apply at first. we may produce patch regarding with smbus
> > for send/receive byte
> > ( using CMD byte instead of DAT0)
> >
>
> >It's in. please go ahead.


Nvidia MCP55 use CMD to send/receive byte instead of DAT0 , the same as
broadcom/bcm5785. I have write a patch to do this.

signed-off-by : bxshi < bingxunshi at gmail.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20070202/babc1a30/attachment.html>
-------------- next part --------------
===================================================================
--- src/southbridge/nvidia/mcp55/mcp55_smbus.h  (revision 2544)
+++ src/southbridge/nvidia/mcp55/mcp55_smbus.h  (working copy)
@@ -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