[coreboot-gerrit] New patch to review for coreboot: 0115898 AMD hudson: add imc fan control

WANG Siyuan (wangsiyuanbuaa@gmail.com) gerrit at coreboot.org
Mon Nov 4 11:30:54 CET 2013


WANG Siyuan (wangsiyuanbuaa at gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/4023

-gerrit

commit 0115898369726593ff6e484504cbe2ece283e1fa
Author: WANG Siyuan <wangsiyuanbuaa at gmail.com>
Date:   Mon Nov 4 17:49:07 2013 +0800

    AMD hudson: add imc fan control
    
    Add fan control related registers initialization in southbridge.
    
    Change-Id: Iaf287aeb84b033f14620fad76665d74f5551fe7e
    Signed-off-by: WANG Siyuan <SiYuan.Wang at amd.com>
    Signed-off-by: WANG Siyuan <wangsiyuanbuaa at gmail.com>
---
 src/southbridge/amd/agesa/hudson/Makefile.inc |  1 +
 src/southbridge/amd/agesa/hudson/imc.c        | 40 +++++++++++++++++++++++++++
 src/southbridge/amd/agesa/hudson/imc.h        | 14 ++++++++++
 3 files changed, 55 insertions(+)

diff --git a/src/southbridge/amd/agesa/hudson/Makefile.inc b/src/southbridge/amd/agesa/hudson/Makefile.inc
index d50d09e..3d4d995 100644
--- a/src/southbridge/amd/agesa/hudson/Makefile.inc
+++ b/src/southbridge/amd/agesa/hudson/Makefile.inc
@@ -9,6 +9,7 @@ ramstage-y += hda.c
 ramstage-y += pci.c
 ramstage-y += pcie.c
 ramstage-y += sd.c
+ramstage-y += imc.c
 
 ramstage-$(CONFIG_GENERATE_ACPI_TABLES) += fadt.c
 ramstage-y += reset.c
diff --git a/src/southbridge/amd/agesa/hudson/imc.c b/src/southbridge/amd/agesa/hudson/imc.c
new file mode 100644
index 0000000..57b3fee
--- /dev/null
+++ b/src/southbridge/amd/agesa/hudson/imc.c
@@ -0,0 +1,40 @@
+#include "imc.h"
+#include "amdlib.h"
+
+void imc_fan_control(void)
+{
+	write8(ACPI_MMIO_BASE + PMIO2_BASE + 0x00, 0x06);
+	write8(ACPI_MMIO_BASE + PMIO2_BASE + 0x01, 0x06);
+	write8(ACPI_MMIO_BASE + PMIO2_BASE + 0x02, 0xf7);
+	write8(ACPI_MMIO_BASE + PMIO2_BASE + 0x03, 0xff);
+	write8(ACPI_MMIO_BASE + PMIO2_BASE + 0x04, 0xff);
+
+#if !CONFIG_SOUTHBRIDGE_AMD_AGESA_YANGTZE
+	write8(ACPI_MMIO_BASE + PMIO2_BASE + 0x10, 0x06);
+	write8(ACPI_MMIO_BASE + PMIO2_BASE + 0x11, 0x06);
+	write8(ACPI_MMIO_BASE + PMIO2_BASE + 0x12, 0xf7);
+	write8(ACPI_MMIO_BASE + PMIO2_BASE + 0x13, 0xff);
+	write8(ACPI_MMIO_BASE + PMIO2_BASE + 0x14, 0xff);
+#endif
+
+#if CONFIG_SOUTHBRIDGE_AMD_AGESA_YANGTZE
+	UINT8                        PciData;
+	PCI_ADDR                      PciAddress;
+	AMD_CONFIG_PARAMS             StdHeader;
+	PciAddress.AddressValue = MAKE_SBDFO (0, 0, 0x18, 0x3, 0x1E4);
+	LibAmdPciRead(AccessWidth8, PciAddress, &PciData, &StdHeader);
+	PciData &= (UINT8)0x8F;
+	PciData |= 0x10;
+	LibAmdPciWrite(AccessWidth8, PciAddress, &PciData, &StdHeader);
+#endif
+
+	imc_func_0x83();
+	imc_func_0x85();
+	imc_func_0x81();
+}
+
+void write_imc_msg(u8 idx, u8 val)
+{
+	outb(idx, 0x3e);
+	outb(val, 0x3f);
+}
diff --git a/src/southbridge/amd/agesa/hudson/imc.h b/src/southbridge/amd/agesa/hudson/imc.h
new file mode 100644
index 0000000..c7a134b
--- /dev/null
+++ b/src/southbridge/amd/agesa/hudson/imc.h
@@ -0,0 +1,14 @@
+#ifndef _IMC_FAN_CONTROL_H_
+#define _IMC_FAN_CONTROL_H_
+
+#include <arch/io.h>
+#include "FchPlatform.h"
+
+void imc_fan_control(void);
+void write_imc_msg(u8 idx, u8 val);
+void imc_func_0x81(void);
+void imc_func_0x83(void);
+void imc_func_0x85(void);
+void imc_func_0x89(void);
+
+#endif



More information about the coreboot-gerrit mailing list