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