[coreboot-gerrit] New patch to review for coreboot: glados: Implement Chrome OS specific handlers

Aaron Durbin (adurbin@chromium.org) gerrit at coreboot.org
Wed Aug 19 16:10:42 CEST 2015


Aaron Durbin (adurbin at chromium.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/11281

-gerrit

commit 819ebf1b524855512371707bab8df116b43e7594
Author: Duncan Laurie <dlaurie at chromium.org>
Date:   Thu Aug 13 12:54:27 2015 -0700

    glados: Implement Chrome OS specific handlers
    
    Implement the required Chrome OS specific handlers to read the
    recovery mode, clear the recovery mode, read the lid switch state,
    and read the write protect state using the appropriate methods.
    
    Also update the Chrome OS ACPI device to use the GPIO definitions
    that are exposed now by the SOC.
    
    BUG=chrome-os-partner:43515
    BRANCH=none
    TEST=build and boot on glados and successfully enter recovery mode
    
    Original-Change-Id: Ifd51c11dc71b7d091615c29a618454a6a2cc33d7
    Original-Signed-off-by: Duncan Laurie <dlaurie at chromium.org>
    Original-Reviewed-on: https://chromium-review.googlesource.com/293515
    Original-Reviewed-by: Aaron Durbin <adurbin at chromium.org>
    
    Change-Id: Ia6ef83a80b9729654bc87bb81bd8d7c1b01d7f42
    Signed-off-by: Duncan Laurie <dlaurie at chromium.org>
---
 src/mainboard/google/glados/acpi/chromeos.asl | 10 +++++++---
 src/mainboard/google/glados/chromeos.c        | 28 +++++++++++++++++++++++----
 2 files changed, 31 insertions(+), 7 deletions(-)

diff --git a/src/mainboard/google/glados/acpi/chromeos.asl b/src/mainboard/google/glados/acpi/chromeos.asl
index 8edbff3..09f7ed1 100644
--- a/src/mainboard/google/glados/acpi/chromeos.asl
+++ b/src/mainboard/google/glados/acpi/chromeos.asl
@@ -17,7 +17,11 @@
  * Foundation, Inc.
  */
 
-Name (OIPG, Package() {
-	Package () { 0x0001, 0, 0xFFFFFFFF, "INT344B:00" }, // no recovery button
-	Package () { 0x0003, 1, 71, "INT344B:00" }, // firmware write protect
+#include <soc/gpio.h>
+
+Name (OIPG, Package () {
+	/* No physical recovery GPIO. */
+	Package () { 0x0001, 0, 0xFFFFFFFF, "INT344B:00" },
+	/* Firmware write protect GPIO. */
+	Package () { 0x0003, 1, GPP_C23, "INT344B:00" },
 })
diff --git a/src/mainboard/google/glados/chromeos.c b/src/mainboard/google/glados/chromeos.c
index 70d78e0..f7a8770 100644
--- a/src/mainboard/google/glados/chromeos.c
+++ b/src/mainboard/google/glados/chromeos.c
@@ -23,10 +23,14 @@
 #include <device/device.h>
 #include <device/pci.h>
 #include <rules.h>
+#include <gpio.h>
 #include <soc/gpio.h>
 #include <string.h>
+#include <ec/google/chromeec/ec.h>
 #include <vendorcode/google/chromeos/chromeos.h>
 
+#include "ec.h"
+
 #if ENV_RAMSTAGE
 #include <boot/coreboot_tables.h>
 
@@ -55,20 +59,36 @@ void fill_lb_gpios(struct lb_gpios *gpios)
 
 int get_lid_switch(void)
 {
-	return 1;
+	/* Read lid switch state from the EC. */
+	return !!(google_chromeec_get_switches() & EC_SWITCH_LID_OPEN);
 }
-/* The dev-switch is virtual */
+
 int get_developer_mode_switch(void)
 {
+	/* No physical developer mode switch. */
 	return 0;
 }
 
 int get_recovery_mode_switch(void)
 {
-	return 0;
+	/* Check for dedicated recovery switch first. */
+	if (google_chromeec_get_switches() & EC_SWITCH_DEDICATED_RECOVERY)
+		return 1;
+
+	/* Otherwise check if the EC has posted the keyboard recovery event. */
+	return !!(google_chromeec_get_events_b() &
+		  EC_HOST_EVENT_MASK(EC_HOST_EVENT_KEYBOARD_RECOVERY));
+}
+
+int clear_recovery_mode_switch(void)
+{
+	/* Clear keyboard recovery event. */
+	return google_chromeec_clear_events_b(
+		EC_HOST_EVENT_MASK(EC_HOST_EVENT_KEYBOARD_RECOVERY));
 }
 
 int get_write_protect_state(void)
 {
-	return 0;
+	/* Read PCH_WP GPIO. */
+	return gpio_get(GPP_C23);
 }



More information about the coreboot-gerrit mailing list