[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