[coreboot-gerrit] New patch to review for coreboot: b6e9982 veyron: Initialize EC interrupt GPIO and add them to coreboot tables

Patrick Georgi (pgeorgi@google.com) gerrit at coreboot.org
Mon May 4 15:25:08 CEST 2015


Patrick Georgi (pgeorgi at google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/10088

-gerrit

commit b6e9982d909ee634e869e4b713a331b6627254ba
Author: Julius Werner <jwerner at chromium.org>
Date:   Fri Apr 24 17:30:36 2015 -0700

    veyron: Initialize EC interrupt GPIO and add them to coreboot tables
    
    This patch initializes the GPIO for the Chrome EC interrupt line on
    Veyron boards and passes its description through the coreboot table, so
    that payloads with keyboard support can use it to detect pending key
    presses.
    
    BRANCH=none
    BUG=chrome-os-partner:39514
    TEST=Booted Jerry, confirmed that it could still detect keypresses.
    Confirmed that EC log does not show a huge amount of MKBP polls.
    
    Change-Id: I4de35ef411c3acc02282ebf8e764785a1e7bf6f1
    Signed-off-by: Patrick Georgi <pgeorgi at chromium.org>
    Original-Commit-Id: 8ad95d667ef3af3fb217e3c370468dc1d6ec36c9
    Original-Change-Id: I8b426621af088460929cfff0a4b46618e2a86725
    Original-Signed-off-by: Julius Werner <jwerner at chromium.org>
    Original-Reviewed-on: https://chromium-review.googlesource.com/267344
    Original-Reviewed-by: David Hendricks <dhendrix at chromium.org>
    Original-Reviewed-by: Randall Spangler <rspangler at chromium.org>
---
 src/mainboard/google/veyron_jerry/chromeos.c  | 10 ++++++++++
 src/mainboard/google/veyron_mighty/chromeos.c | 10 ++++++++++
 src/mainboard/google/veyron_pinky/chromeos.c  | 10 ++++++++++
 src/mainboard/google/veyron_speedy/chromeos.c | 10 ++++++++++
 4 files changed, 40 insertions(+)

diff --git a/src/mainboard/google/veyron_jerry/chromeos.c b/src/mainboard/google/veyron_jerry/chromeos.c
index d509a01..e0f816c 100644
--- a/src/mainboard/google/veyron_jerry/chromeos.c
+++ b/src/mainboard/google/veyron_jerry/chromeos.c
@@ -32,6 +32,7 @@
 #define GPIO_POWER	GPIO(0, A, 5)
 #define GPIO_RECOVERY	GPIO(0, B, 1)
 #define GPIO_ECINRW	GPIO(0, A, 7)
+#define GPIO_ECIRQ	GPIO(7, A, 7)
 
 void setup_chromeos_gpios(void)
 {
@@ -39,6 +40,7 @@ void setup_chromeos_gpios(void)
 	gpio_input_pullup(GPIO_LID);
 	gpio_input(GPIO_POWER);
 	gpio_input_pullup(GPIO_RECOVERY);
+	gpio_input(GPIO_ECIRQ);
 }
 
 void fill_lb_gpios(struct lb_gpios *gpios)
@@ -92,6 +94,14 @@ void fill_lb_gpios(struct lb_gpios *gpios)
 		GPIO_MAX_NAME_LENGTH);
 	count++;
 
+	/* EC interrupt: GPIO active high */
+	gpios->gpios[count].port = GPIO_ECIRQ.raw;
+	gpios->gpios[count].polarity = ACTIVE_LOW;
+	gpios->gpios[count].value = -1;
+	strncpy((char *)gpios->gpios[count].name, "EC interrupt",
+		GPIO_MAX_NAME_LENGTH);
+	count++;
+
 	/* Reset: GPIO active high (output) */
 	gpios->gpios[count].port = GPIO_RESET.raw;
 	gpios->gpios[count].polarity = ACTIVE_HIGH;
diff --git a/src/mainboard/google/veyron_mighty/chromeos.c b/src/mainboard/google/veyron_mighty/chromeos.c
index d509a01..e0f816c 100644
--- a/src/mainboard/google/veyron_mighty/chromeos.c
+++ b/src/mainboard/google/veyron_mighty/chromeos.c
@@ -32,6 +32,7 @@
 #define GPIO_POWER	GPIO(0, A, 5)
 #define GPIO_RECOVERY	GPIO(0, B, 1)
 #define GPIO_ECINRW	GPIO(0, A, 7)
+#define GPIO_ECIRQ	GPIO(7, A, 7)
 
 void setup_chromeos_gpios(void)
 {
@@ -39,6 +40,7 @@ void setup_chromeos_gpios(void)
 	gpio_input_pullup(GPIO_LID);
 	gpio_input(GPIO_POWER);
 	gpio_input_pullup(GPIO_RECOVERY);
+	gpio_input(GPIO_ECIRQ);
 }
 
 void fill_lb_gpios(struct lb_gpios *gpios)
@@ -92,6 +94,14 @@ void fill_lb_gpios(struct lb_gpios *gpios)
 		GPIO_MAX_NAME_LENGTH);
 	count++;
 
+	/* EC interrupt: GPIO active high */
+	gpios->gpios[count].port = GPIO_ECIRQ.raw;
+	gpios->gpios[count].polarity = ACTIVE_LOW;
+	gpios->gpios[count].value = -1;
+	strncpy((char *)gpios->gpios[count].name, "EC interrupt",
+		GPIO_MAX_NAME_LENGTH);
+	count++;
+
 	/* Reset: GPIO active high (output) */
 	gpios->gpios[count].port = GPIO_RESET.raw;
 	gpios->gpios[count].polarity = ACTIVE_HIGH;
diff --git a/src/mainboard/google/veyron_pinky/chromeos.c b/src/mainboard/google/veyron_pinky/chromeos.c
index dd781aa..b64bae0 100644
--- a/src/mainboard/google/veyron_pinky/chromeos.c
+++ b/src/mainboard/google/veyron_pinky/chromeos.c
@@ -32,6 +32,7 @@
 #define GPIO_POWER	GPIO(0, A, 5)
 #define GPIO_RECOVERY	GPIO(0, B, 1)
 #define GPIO_ECINRW	GPIO(0, A, 7)
+#define GPIO_ECIRQ	GPIO(7, A, 7)
 
 void setup_chromeos_gpios(void)
 {
@@ -39,6 +40,7 @@ void setup_chromeos_gpios(void)
 	gpio_input_pullup(GPIO_LID);
 	gpio_input(GPIO_POWER);
 	gpio_input_pullup(GPIO_RECOVERY);
+	gpio_input(GPIO_ECIRQ);
 }
 
 void fill_lb_gpios(struct lb_gpios *gpios)
@@ -93,6 +95,14 @@ void fill_lb_gpios(struct lb_gpios *gpios)
 		GPIO_MAX_NAME_LENGTH);
 	count++;
 
+	/* EC interrupt: GPIO active high */
+	gpios->gpios[count].port = GPIO_ECIRQ.raw;
+	gpios->gpios[count].polarity = ACTIVE_LOW;
+	gpios->gpios[count].value = -1;
+	strncpy((char *)gpios->gpios[count].name, "EC interrupt",
+		GPIO_MAX_NAME_LENGTH);
+	count++;
+
 	/* Reset: GPIO active high (output) */
 	gpios->gpios[count].port = GPIO_RESET.raw;
 	gpios->gpios[count].polarity = ACTIVE_HIGH;
diff --git a/src/mainboard/google/veyron_speedy/chromeos.c b/src/mainboard/google/veyron_speedy/chromeos.c
index d509a01..e0f816c 100644
--- a/src/mainboard/google/veyron_speedy/chromeos.c
+++ b/src/mainboard/google/veyron_speedy/chromeos.c
@@ -32,6 +32,7 @@
 #define GPIO_POWER	GPIO(0, A, 5)
 #define GPIO_RECOVERY	GPIO(0, B, 1)
 #define GPIO_ECINRW	GPIO(0, A, 7)
+#define GPIO_ECIRQ	GPIO(7, A, 7)
 
 void setup_chromeos_gpios(void)
 {
@@ -39,6 +40,7 @@ void setup_chromeos_gpios(void)
 	gpio_input_pullup(GPIO_LID);
 	gpio_input(GPIO_POWER);
 	gpio_input_pullup(GPIO_RECOVERY);
+	gpio_input(GPIO_ECIRQ);
 }
 
 void fill_lb_gpios(struct lb_gpios *gpios)
@@ -92,6 +94,14 @@ void fill_lb_gpios(struct lb_gpios *gpios)
 		GPIO_MAX_NAME_LENGTH);
 	count++;
 
+	/* EC interrupt: GPIO active high */
+	gpios->gpios[count].port = GPIO_ECIRQ.raw;
+	gpios->gpios[count].polarity = ACTIVE_LOW;
+	gpios->gpios[count].value = -1;
+	strncpy((char *)gpios->gpios[count].name, "EC interrupt",
+		GPIO_MAX_NAME_LENGTH);
+	count++;
+
 	/* Reset: GPIO active high (output) */
 	gpios->gpios[count].port = GPIO_RESET.raw;
 	gpios->gpios[count].polarity = ACTIVE_HIGH;



More information about the coreboot-gerrit mailing list