[coreboot-gerrit] New patch to review for coreboot: e69ed98 Add imc fan control to Parmer

WANG Siyuan (wangsiyuanbuaa@gmail.com) gerrit at coreboot.org
Mon Nov 4 11:30:55 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/4025

-gerrit

commit e69ed984876cbf5beb8bdc94070cc54f08e1c23f
Author: WANG Siyuan <wangsiyuanbuaa at gmail.com>
Date:   Mon Nov 4 18:00:06 2013 +0800

    Add imc fan control to Parmer
    
    imc can control fan automatically on Parmer.
    
    Change-Id: I2609ca6b41cf0b8dec497488344d23f150910622
    Signed-off-by: WANG Siyuan <SiYuan.Wang at amd.com>
    Signed-off-by: WANG Siyuan <wangsiyuanbuaa at gmail.com>
---
 src/mainboard/amd/parmer/Makefile.inc      |  1 +
 src/mainboard/amd/parmer/get_bus_conf.c    |  5 +++
 src/mainboard/amd/parmer/imc_fan_control.c | 57 ++++++++++++++++++++++++++++++
 3 files changed, 63 insertions(+)

diff --git a/src/mainboard/amd/parmer/Makefile.inc b/src/mainboard/amd/parmer/Makefile.inc
index 3103f70..cfcff53 100644
--- a/src/mainboard/amd/parmer/Makefile.inc
+++ b/src/mainboard/amd/parmer/Makefile.inc
@@ -26,3 +26,4 @@ ramstage-y += buildOpts.c
 ramstage-y += agesawrapper.c
 ramstage-y += BiosCallOuts.c
 ramstage-y += PlatformGnbPcie.c
+ramstage-y += imc_fan_control.c
diff --git a/src/mainboard/amd/parmer/get_bus_conf.c b/src/mainboard/amd/parmer/get_bus_conf.c
index c92fea9..83e33e7 100644
--- a/src/mainboard/amd/parmer/get_bus_conf.c
+++ b/src/mainboard/amd/parmer/get_bus_conf.c
@@ -25,6 +25,7 @@
 #include <stdlib.h>
 #include <cpu/amd/amdfam14.h>
 #include "agesawrapper.h"
+#include "imc.h"
 
 /* Global variables for MB layouts and these will be shared by irqtable mptable
  * and acpi_tables busnum is default.
@@ -134,4 +135,8 @@ void get_bus_conf(void)
 	bus_isa = 10;
 	apicid_base = CONFIG_MAX_CPUS;
 	apicid_hudson = apicid_base;
+
+#if defined CONFIG_HUDSON_IMC_FWM && (CONFIG_HUDSON_IMC_FWM == 1)
+	imc_fan_control();
+#endif
 }
diff --git a/src/mainboard/amd/parmer/imc_fan_control.c b/src/mainboard/amd/parmer/imc_fan_control.c
new file mode 100644
index 0000000..6d56d75
--- /dev/null
+++ b/src/mainboard/amd/parmer/imc_fan_control.c
@@ -0,0 +1,57 @@
+#include <delay.h>
+#include "imc.h"
+
+void imc_func_0x81(void)
+{
+	write_imc_msg(MSG_REG0, 0x00);
+	write_imc_msg(MSG_REG1, 0x00);
+	write_imc_msg(MSG_REG2, 0x3d);
+	write_imc_msg(MSG_REG3, 0x0e);
+	write_imc_msg(MSG_REG4, 0x00);
+	write_imc_msg(MSG_REG5, 0x54);
+	write_imc_msg(MSG_REG6, 0x98);
+	write_imc_msg(MSG_REG7, 0x02);
+	write_imc_msg(MSG_REG8, 0x01);
+	write_imc_msg(MSG_REG9, 0x00);
+	write_imc_msg(MSG_SYS_TO_IMC, Fun_81);
+	mdelay(50);
+}
+
+void imc_func_0x83(void)
+{
+	write_imc_msg(MSG_REG0, 0x00);
+	write_imc_msg(MSG_REG1, 0x00);
+	write_imc_msg(MSG_REG2, 0x46);
+	write_imc_msg(MSG_REG3, 0x3c);
+	write_imc_msg(MSG_REG4, 0x32);
+	write_imc_msg(MSG_REG5, 0xff);
+	write_imc_msg(MSG_REG6, 0xff);
+	write_imc_msg(MSG_REG7, 0xff);
+	write_imc_msg(MSG_REG8, 0xff);
+	write_imc_msg(MSG_REG9, 0xff);
+	write_imc_msg(MSG_REGA, 0x4b);
+	write_imc_msg(MSG_REGB, 0x00);
+	write_imc_msg(MSG_SYS_TO_IMC, Fun_83);
+	mdelay(50);
+}
+
+void imc_func_0x85(void)
+{
+	write_imc_msg(MSG_REG0, 0x00);
+	write_imc_msg(MSG_REG1, 0x00);
+	write_imc_msg(MSG_REG2, 0x5a);
+	write_imc_msg(MSG_REG3, 0x46);
+	write_imc_msg(MSG_REG4, 0x28);
+	write_imc_msg(MSG_REG5, 0xff);
+	write_imc_msg(MSG_REG6, 0xff);
+	write_imc_msg(MSG_REG7, 0xff);
+	write_imc_msg(MSG_REG8, 0xff);
+	write_imc_msg(MSG_REG9, 0xff);
+	write_imc_msg(MSG_SYS_TO_IMC, Fun_85);
+	mdelay(50);
+}
+
+void imc_func_0x89(void)
+{
+	/* not use */
+}



More information about the coreboot-gerrit mailing list