I discovered I didn't need to do the reset when falling down to 1.5g. So here 
is a patch that simplifies it.

Signed-off-by: Dan Lykowski<lyko...@gmail.com>


      
Index: src/southbridge/amd/sb600/sb600_sata.c
===================================================================
--- src/southbridge/amd/sb600/sb600_sata.c	(revision 3891)
+++ src/southbridge/amd/sb600/sb600_sata.c	(working copy)
@@ -181,23 +181,14 @@
 			/* Try to do something about it. */
 			printk_spew("SATA device detected but not talking. Trying lower speed.\n");
 
			/* Read in Port-N Serial ATA Control Register */
 			byte = readb(sata_bar5 + 0x12C + 0x80 * i);
-
-			/* Set Reset Bit and 1.5g bit */
-			byte |= 0x11; 
+			byte |= 0x10; /* Set Force 1.5g bit */
 			writeb(byte, (sata_bar5 + 0x12C + 0x80 * i));
-			
+
 			/* Wait 1ms */			
 			mdelay(1); 
 
-			/* Clear Reset Bit */
-			byte &= ~0x01; 
-			writeb(byte, (sata_bar5 + 0x12C + 0x80 * i));
-
-			/* Wait 1ms */
-			mdelay(1);
-
 			/* Reread status */
 			byte = readb(sata_bar5 + 0x128 + 0x80 * i);
 			printk_spew("SATA port %i status = %x\n", i, byte);
--
coreboot mailing list: coreboot@coreboot.org
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to