[coreboot-gerrit] New patch to review for coreboot: IT8772F: Add switch to enable HWM(Hardware Monitor)

Matt DeVillier (matt.devillier@gmail.com) gerrit at coreboot.org
Thu Dec 24 21:29:11 CET 2015


Matt DeVillier (matt.devillier at gmail.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/12798

-gerrit

commit 790599b282f29081e7f33122b018f887f3a9c014
Author: Ted Kuo <tedkuo at ami.com.tw>
Date:   Wed Mar 18 10:42:22 2015 +0800

    IT8772F: Add switch to enable HWM(Hardware Monitor)
    
    Setup External Temperature to read via thermal diode/resistor
    into TMPINx register by setting thermal_mode switch.
    
    BUG=none
    TEST=Compiled, verified
    Signed-off-by: Ted Kuo <tedkuo at ami.com.tw>
    
    Change-Id: I0e8621b92faa5c6246e009d2f852c8d4db484034
    Reviewed-on: https://chromium-review.googlesource.com/260545
    Reviewed-by: Shawn N <shawnn at chromium.org>
    Commit-Queue: Ted Kuo <tedkuo at ami.com.tw>
    Tested-by: Ted Kuo <tedkuo at ami.com.tw>
    (cherry picked from commit 973e2d393f2595b756f8aa20f6fbe3b6e045621a)
    Reviewed-on: https://chromium-review.googlesource.com/262340
    Signed-off-by: Matt DeVillier <matt.devillier at gmail.com>
---
 src/superio/ite/it8772f/chip.h    |  6 ++++++
 src/superio/ite/it8772f/it8772f.h |  7 +++++++
 src/superio/ite/it8772f/superio.c | 44 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 57 insertions(+)

diff --git a/src/superio/ite/it8772f/chip.h b/src/superio/ite/it8772f/chip.h
index 78ded22..2ceeee0 100644
--- a/src/superio/ite/it8772f/chip.h
+++ b/src/superio/ite/it8772f/chip.h
@@ -37,6 +37,12 @@ struct superio_ite_it8772f_config {
 	u8 peci_tmpin;
 
 	/*
+	 * Enable thermal mode on tmpinx.
+	 */
+	u8 tmpin1_mode;
+	u8 tmpin2_mode;
+
+	/*
 	 * Enable a FAN for sofware control.
 	 */
 	u8 fan1_enable;
diff --git a/src/superio/ite/it8772f/it8772f.h b/src/superio/ite/it8772f/it8772f.h
index 2c6c44b..4c15a00 100644
--- a/src/superio/ite/it8772f/it8772f.h
+++ b/src/superio/ite/it8772f/it8772f.h
@@ -17,6 +17,12 @@
 #ifndef SUPERIO_ITE_IT8772F_H
 #define SUPERIO_ITE_IT8772F_H
 
+/* Supported thermal mode on TMPINx */
+enum thermal_mode {
+	THERMAL_DIODE		= 1,
+	THERMAL_RESISTOR,
+};
+
 #define IT8772F_BASE 0x2e
 
 #define IT8772F_FDC  0x00 /* Floppy disk controller */
@@ -28,6 +34,7 @@
 #define IT8772F_IR   0x0a /* Consumer IR */
 
 /* Environmental Controller interface */
+#define IT8772F_CONFIGURATION			0x00
 #define IT8772F_INTERFACE_SELECT		0x0a
 #define  IT8772F_INTERFACE_PSEUDO_EOC		(1 << 7)
 #define  IT8772F_INTERFACE_SMB_ENABLE		(1 << 6)
diff --git a/src/superio/ite/it8772f/superio.c b/src/superio/ite/it8772f/superio.c
index 6c6a503..cac6898 100644
--- a/src/superio/ite/it8772f/superio.c
+++ b/src/superio/ite/it8772f/superio.c
@@ -16,6 +16,7 @@
 
 #include <device/device.h>
 #include <device/pnp.h>
+#include <console/console.h>
 #include <pc80/keyboard.h>
 #include <arch/io.h>
 #include <delay.h>
@@ -97,6 +98,43 @@ static void it8772f_enable_peci(struct resource *res, int tmpin)
 }
 
 /*
+ * Setup External Temperature to read via thermal diode/resistor
+ * into TMPINx register
+ */
+static void it8772f_enable_tmpin(struct resource *res, int tmpin,
+				enum thermal_mode mode)
+{
+	u8 reg;
+
+	if (tmpin != 1 && tmpin != 2)
+		return;
+
+	reg = it8772f_envc_read(res, IT8772F_ADC_TEMP_CHANNEL_ENABLE);
+
+	switch (mode) {
+	case THERMAL_DIODE:
+		/* Thermal Diode Mode */
+		it8772f_envc_write(res, IT8772F_ADC_TEMP_CHANNEL_ENABLE,
+				   reg | tmpin);
+		break;
+	case THERMAL_RESISTOR:
+		/* Thermal Resistor Mode */
+		it8772f_envc_write(res, IT8772F_ADC_TEMP_CHANNEL_ENABLE,
+				   reg | (tmpin << 3));
+		break;
+	default:
+		printk(BIOS_ERR, "Unsupported thermal mode 0x%x on TMPIN%d\n",
+			mode, tmpin);
+		return;
+	}
+
+	reg = it8772f_envc_read(res, IT8772F_CONFIGURATION);
+
+	/* Enable the startup of monitoring operation */
+	it8772f_envc_write(res, IT8772F_CONFIGURATION, reg | 0x01);
+}
+
+/*
  * Setup a FAN PWM interface for software control
  */
 static void it8772f_enable_fan(struct resource *res, int fan)
@@ -160,6 +198,12 @@ static void it8772f_init(struct device *dev)
 		/* Enable PECI if configured */
 		it8772f_enable_peci(res, conf->peci_tmpin);
 
+		/* Enable HWM if configured */
+		if (conf->tmpin1_mode)
+			it8772f_enable_tmpin(res, 1, conf->tmpin1_mode);
+		if (conf->tmpin2_mode)
+			it8772f_enable_tmpin(res, 2, conf->tmpin2_mode);
+
 		/* Enable FANx if configured */
 		if (conf->fan1_enable)
 			it8772f_enable_fan(res, 1);



More information about the coreboot-gerrit mailing list