I committed all this except for one thing:

diff -uNr ./freebios2/src/southbridge/amd/amd8111/amd8111_early_smbus.c 
../freebios2/src/southbridge/amd/amd8111/amd8111_early_smbus.c
--- ./freebios2/src/southbridge/amd/amd8111/amd8111_early_smbus.c       2003-10-13 
06:01:13.000000000 -0400
+++ ../freebios2/src/southbridge/amd/amd8111/amd8111_early_smbus.c      2003-12-01 
16:14:18.000000000 -0500
@@ -120,24 +120,19 @@
                return;
        }
 
-       /* setup transaction */
-       /* disable interrupts */
-       outw(inw(SMBUS_IO_BASE + SMBGCTL) & ~((1<<10)|(1<<9)|(1<<8)|(1<<4)),
-                       SMBUS_IO_BASE + SMBGCTL);
+//By LYH Begin
+       outb(0x37,SMBUS_IO_BASE + SMBGSTATUS);
        /* set the device I'm talking too */
-       outw(((device & 0x7f) << 1) | 1, SMBUS_IO_BASE + SMBHSTADDR);
-       outb(address & 0xFF, SMBUS_IO_BASE + SMBHSTCMD);
-       /* set up for a byte data write */ /* FIXME */
-       outw((inw(SMBUS_IO_BASE + SMBGCTL) & ~7) | (0x1), SMBUS_IO_BASE + SMBGCTL);
-       /* clear any lingering errors, so the transaction will run */
-       /* Do I need to write the bits to a 1 to clear an error? */
-       outw(inw(SMBUS_IO_BASE + SMBGSTATUS), SMBUS_IO_BASE + SMBGSTATUS);
+       outw(((device & 0x7f) << 1) | 0, SMBUS_IO_BASE + SMBHSTADDR);
+        
+       /* data to send */
+        outb(val, SMBUS_IO_BASE + SMBHSTDAT);
 
-       /* clear the data word...*/
-       outw(val, SMBUS_IO_BASE + SMBHSTDAT);
+       outb(address & 0xFF, SMBUS_IO_BASE + SMBHSTCMD);
 
        /* start the command */
-       outw((inw(SMBUS_IO_BASE + SMBGCTL) | (1 << 3)), SMBUS_IO_BASE + SMBGCTL);
+       outb(0xa, SMBUS_IO_BASE + SMBGCTL);
+//By LYH END
 
        /* poll for transaction completion */
        smbus_wait_until_done();


I'm a little worried about removing some of those lines, such as:

/* disable interrupts */
outw(inw(SMBUS_IO_BASE + SMBGCTL) & ~((1<<10)|(1<<9)|(1<<8)|(1<<4)),
                       SMBUS_IO_BASE + SMBGCTL);

does it hurt to leave this in? OR:

-       /* clear any lingering errors, so the transaction will run */
-       /* Do I need to write the bits to a 1 to clear an error? */
-       outw(inw(SMBUS_IO_BASE + SMBGSTATUS), SMBUS_IO_BASE + SMBGSTATUS);


why remove this? 

comments?

ron

_______________________________________________
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios

Reply via email to