[coreboot-gerrit] New patch to review for coreboot: b2bbb0a AMD Hudson/Yangtze: Enable support for SATA port multipliers
Bruce Griffith (Bruce.Griffith@se-eng.com)
gerrit at coreboot.org
Thu Jul 25 07:04:44 CEST 2013
Bruce Griffith (Bruce.Griffith at se-eng.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/3808
-gerrit
commit b2bbb0af937dd6ea48b2aa187ece848963f0d462
Author: Bruce Griffith <bruce.griffith at se-eng.com>
Date: Tue Jul 23 11:50:12 2013 -0600
AMD Hudson/Yangtze: Enable support for SATA port multipliers
Change-Id: Ie87873b093f3e2a6a5c83b96ccb6c898d3e25f72
Signed-off-by: Bruce Griffith <bruce.griffith at se-eng.com>
Reviewed-on: http://gerrit/925
Reviewed-by: Martin Roth <martin.roth at se-eng.com>
---
src/southbridge/amd/agesa/hudson/sata.c | 28 +++++++++++++++++++++++++++-
1 file changed, 27 insertions(+), 1 deletion(-)
diff --git a/src/southbridge/amd/agesa/hudson/sata.c b/src/southbridge/amd/agesa/hudson/sata.c
index cc8bf95..883deeb 100644
--- a/src/southbridge/amd/agesa/hudson/sata.c
+++ b/src/southbridge/amd/agesa/hudson/sata.c
@@ -29,7 +29,33 @@
static void sata_init(struct device *dev)
{
-}
+ /**************************************
+ * Configure the SATA port multiplier *
+ **************************************/
+ #define BYTE_TO_DWORD_OFFSET(x) (x/4)
+ #define AHCI_BASE_ADDRESS_REG 0x24
+ #define MISC_CONTROL_REG 0x40
+ #define UNLOCK_BIT (1<<0)
+ #define SATA_CAPABILITIES_REG 0xFC
+ #define CFG_CAP_SPM (1<<12)
+
+ volatile u32 *ahci_ptr =
+ (u32*)(pci_read_config32(dev, AHCI_BASE_ADDRESS_REG) & 0xFFFFFF00);
+ u32 temp;
+
+ /* unlock the write-protect */
+ temp = pci_read_config32(dev, MISC_CONTROL_REG);
+ temp |= UNLOCK_BIT;
+ pci_write_config32(dev, MISC_CONTROL_REG, temp);
+
+ /* set the SATA AHCI mode to allow port expanders */
+ *(ahci_ptr + BYTE_TO_DWORD_OFFSET(SATA_CAPABILITIES_REG)) |= CFG_CAP_SPM;
+
+ /* lock the write-protect */
+ temp = pci_read_config32(dev, MISC_CONTROL_REG);
+ temp &= ~UNLOCK_BIT;
+ pci_write_config32(dev, MISC_CONTROL_REG, temp);
+};
static struct pci_operations lops_pci = {
/* .set_subsystem = pci_dev_set_subsystem, */
More information about the coreboot-gerrit
mailing list