[coreboot-gerrit] Change in coreboot[master]: superio/ite/it8720f: Implement power control

Samuel Holland (Code Review) gerrit at coreboot.org
Fri Mar 30 22:20:53 CEST 2018


Samuel Holland has uploaded this change for review. ( https://review.coreboot.org/25463


Change subject: superio/ite/it8720f: Implement power control
......................................................................

superio/ite/it8720f: Implement power control

Program the Super I/O to turn the machine on or restore its power state
when AC power is restored.

Based on code from src/superio/nuvoton/nct5572d/superio.c.

Change-Id: I1f3432f43b0784c3696bf1d7233b83d3a203af20
Signed-off-by: Samuel Holland <samuel at sholland.org>
---
M src/superio/ite/it8720f/superio.c
1 file changed, 24 insertions(+), 0 deletions(-)



  git pull ssh://review.coreboot.org:29418/coreboot refs/changes/63/25463/1

diff --git a/src/superio/ite/it8720f/superio.c b/src/superio/ite/it8720f/superio.c
index 912da38..be44e39 100644
--- a/src/superio/ite/it8720f/superio.c
+++ b/src/superio/ite/it8720f/superio.c
@@ -18,12 +18,35 @@
 #include <device/device.h>
 #include <device/pnp.h>
 #include <pc80/keyboard.h>
+#include <pc80/mc146818rtc.h>
 #include <superio/ite/common/env_ctrl.h>
 #include <superio/conf_mode.h>
+#include <types.h>
 
 #include "chip.h"
 #include "it8720f.h"
 
+#define MAINBOARD_POWER_OFF	0
+#define MAINBOARD_POWER_ON	1
+#define MAINBOARD_POWER_KEEP	2
+
+static void power_control_init(struct device *dev)
+{
+	int power_on = MAINBOARD_POWER_OFF;
+	u8 addr, value;
+
+	get_option(&power_on, "power_on_after_fail");
+	if (power_on == MAINBOARD_POWER_OFF)
+		return;
+	pnp_enter_conf_mode(dev);
+	pnp_set_logical_device(dev);
+	addr = power_on == MAINBOARD_POWER_KEEP ? 0xf2 : 0xf4;
+	value = pnp_read_config(dev, addr);
+	value |= BIT(5);
+	pnp_write_config(dev, addr, value);
+	pnp_exit_conf_mode(dev);
+}
+
 static void it8720f_init(struct device *dev)
 {
 	const struct superio_ite_it8720f_config *conf;
@@ -39,6 +62,7 @@
 		if (!conf || !res)
 			break;
 		ite_ec_init(res->base, &conf->ec);
+		power_control_init(dev);
 		break;
 	case IT8720F_KBCK:
 		pc_keyboard_init(NO_AUX_DEVICE);

-- 
To view, visit https://review.coreboot.org/25463
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I1f3432f43b0784c3696bf1d7233b83d3a203af20
Gerrit-Change-Number: 25463
Gerrit-PatchSet: 1
Gerrit-Owner: Samuel Holland <samuel at sholland.org>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.coreboot.org/pipermail/coreboot-gerrit/attachments/20180330/ef7a5a46/attachment.html>


More information about the coreboot-gerrit mailing list