summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDustin Harrison <dustin.harrison@sutus.com>2011-05-12 18:29:38 +0200
committerNoe Rubinstein <nrubinstein@proformatique.com>2011-06-23 10:38:59 +0200
commit88aae1ccf13fb79b8aa4b40a4ea3241057ccbe27 (patch)
tree8557a4ed7babaff3001eea9e3ef60a71c38b0886
parentc2c3993f8044cf8a1efb44c874429186ccad9298 (diff)
Fix AHCI SATA support on Truxton (and for all EP80579 chips) and enable AHCI.
Signed-off-by: Dustin Harrison <dustin.harrison@sutus.com> ---
-rw-r--r--src/mainboard/intel/truxton/romstage.c8
-rw-r--r--src/southbridge/intel/i3100/sata.c10
2 files changed, 16 insertions, 2 deletions
diff --git a/src/mainboard/intel/truxton/romstage.c b/src/mainboard/intel/truxton/romstage.c
index 00b49e38d..b13ffc17c 100644
--- a/src/mainboard/intel/truxton/romstage.c
+++ b/src/mainboard/intel/truxton/romstage.c
@@ -38,6 +38,12 @@
#include "cpu/x86/bist.h"
#include <spd.h>
+/* SATA */
+#define SATA_MODE_IDE 0x00
+#define SATA_MODE_AHCI 0x01
+
+#define SATA_MAP 0x90
+
/* RCBA registers */
#define RCBA 0xF0
#define DEFAULT_RCBA 0xFEA00000
@@ -86,6 +92,8 @@ static void early_config(void)
write16(DEFAULT_RCBA + RCBA_D29IR, 0x3237);
write16(DEFAULT_RCBA + RCBA_D28IR, 0x3214);
+ /* Setup sata mode */
+ pci_write_config8(PCI_DEV(0, 0x1F, 2), SATA_MAP, (SATA_MODE_AHCI << 6) | (0 << 0));
}
#include "northbridge/intel/i3100/raminit_ep80579.c"
diff --git a/src/southbridge/intel/i3100/sata.c b/src/southbridge/intel/i3100/sata.c
index af22600f9..edc2fe022 100644
--- a/src/southbridge/intel/i3100/sata.c
+++ b/src/southbridge/intel/i3100/sata.c
@@ -31,7 +31,7 @@ typedef struct southbridge_intel_i3100_config config_t;
static void sata_init(struct device *dev)
{
- u8 ahci;
+ u8 ahci;
/* Get the chip configuration */
ahci = (pci_read_config8(dev, SATA_MAP) >> 6) & 0x03;
@@ -43,9 +43,15 @@ static void sata_init(struct device *dev)
/* AHCI mode */
pci_write_config8(dev, SATA_MAP, (1 << 6) | (0 << 0));
+ pci_write_config8(dev, SATA_CMD, 0x07);
/* Enable ports */
- pci_write_config8(dev, SATA_PCS, 0x03);
+#ifdef CONFIG_CPU_INTEL_EP80579
+ pci_write_config8(dev, SATA_PCS + 1, 0x03);
+#else
+ pci_write_config8(dev, SATA_PCS, 0x03);
pci_write_config8(dev, SATA_PCS + 1, 0x0F);
+#endif
+ pci_write_config8(dev, SATA_PCS + 2, 0x00);
/* Setup timings */
pci_write_config16(dev, SATA_PTIM, 0x8000);