i3100: Add init sequence
authorSven Schnelle <svens@stackframe.org>
Tue, 31 Jan 2012 21:40:50 +0000 (22:40 +0100)
committerSven Schnelle <svens@stackframe.org>
Tue, 31 Jan 2012 22:31:41 +0000 (23:31 +0100)
i3100 misses the magic SATA init sequence, which makes all
requests fail. Captured from the vendor BIOS, which writes
those bits on all configurations.

Change-Id: I293b7d9cd681181311ecaced6d7df9b2706c711f
Signed-off-by: Sven Schnelle <svens@stackframe.org>
Reviewed-on: http://review.coreboot.org/600
Tested-by: build bot (Jenkins)
src/southbridge/intel/i3100/sata.c

index af22600f90cf02a23872d223dd85ab395bbc060e..1925f888ed560d1931f9bb891b112a8530b6b780 100644 (file)
@@ -81,6 +81,24 @@ static void sata_init(struct device *dev)
          pci_write_config8(dev, SATA_PCS + 1, 0x0f);
 
        }
+
+       /* secret init sequence, required */
+       pci_write_config32(dev, 0x94, 0x00400180);
+       pci_write_config32(dev, 0xa0, 0x18);
+       pci_write_config32(dev, 0xa4, 0x224);
+       pci_write_config32(dev, 0xa0, 0x42);
+       pci_write_config32(dev, 0xa4, 0x22006d);
+       pci_write_config32(dev, 0xa0, 0x84);
+       pci_write_config32(dev, 0xa4, 0x24);
+       pci_write_config32(dev, 0xa0, 0x7a);
+       pci_write_config32(dev, 0xa4, 0x220000);
+       pci_write_config32(dev, 0xa0, 0x9c);
+       pci_write_config32(dev, 0xa4, 0x24);
+       pci_write_config32(dev, 0xa0, 0x90);
+       pci_write_config32(dev, 0xa4, 0x220000);
+       pci_write_config32(dev, 0xa0, 0xa0);
+       pci_write_config32(dev, 0xa4, 0x12492aa);
+
        printk(BIOS_DEBUG, "SATA Enabled\n");
 }