[coreboot-gerrit] New patch to review for coreboot: lib/gpio: add pullup & pulldown gpio_base2_value() variants

Aaron Durbin (adurbin@chromium.org) gerrit at coreboot.org
Thu Jul 7 05:57:18 CEST 2016


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

-gerrit

commit 6816e68e0994c1e1e0cd3e547d9a268eefcbcb35
Author: Aaron Durbin <adurbin at chromium.org>
Date:   Wed Jul 6 22:37:10 2016 -0500

    lib/gpio: add pullup & pulldown gpio_base2_value() variants
    
    Provide common implementations for gpio_base2_value() variants
    which configure the gpio for internal pullups and pulldowns.
    
    BUG=chrome-os-partner:54949
    BRANCH=None
    TEST=Built and used on reef for memory config.
    
    Change-Id: I9be8813328e99d28eb4145501450caab25d51f37
    Signed-off-by: Aaron Durbin <adurbin at chromuim.org>
---
 src/include/gpio.h |  5 +++++
 src/lib/gpio.c     | 35 +++++++++++++++++++++++++++++++----
 2 files changed, 36 insertions(+), 4 deletions(-)

diff --git a/src/include/gpio.h b/src/include/gpio.h
index 69a0828..3a8951c 100644
--- a/src/include/gpio.h
+++ b/src/include/gpio.h
@@ -56,8 +56,13 @@ uint16_t gpio_acpi_pin(gpio_t gpio);
  *
  * gpio[]: pin positions to read. gpio[0] is less significant than gpio[1].
  * num_gpio: number of pins to read.
+ *
+ * There are also pulldown and pullup variants which default each gpio to
+ * be configured with an internal pulldown and pullup, respectively.
  */
 int gpio_base2_value(gpio_t gpio[], int num_gpio);
+int gpio_pulldown_base2_value(gpio_t gpio[], int num_gpio);
+int gpio_pullup_base2_value(gpio_t gpio[], int num_gpio);
 
 /*
  * Read the value presented by the set of GPIOs, when each pin is interpreted
diff --git a/src/lib/gpio.c b/src/lib/gpio.c
index 81d6f6b..03cc455 100644
--- a/src/lib/gpio.c
+++ b/src/lib/gpio.c
@@ -19,13 +19,10 @@
 #include <delay.h>
 #include <gpio.h>
 
-int gpio_base2_value(gpio_t gpio[], int num_gpio)
+static int _gpio_base2_value(gpio_t gpio[], int num_gpio)
 {
 	int i, result = 0;
 
-	for (i = 0; i < num_gpio; i++)
-		gpio_input(gpio[i]);
-
 	/* Wait until signals become stable */
 	udelay(10);
 
@@ -35,6 +32,36 @@ int gpio_base2_value(gpio_t gpio[], int num_gpio)
 	return result;
 }
 
+int gpio_base2_value(gpio_t gpio[], int num_gpio)
+{
+	int i;
+
+	for (i = 0; i < num_gpio; i++)
+		gpio_input(gpio[i]);
+
+	return _gpio_base2_value(gpio, num_gpio);
+}
+
+int gpio_pulldown_base2_value(gpio_t gpio[], int num_gpio)
+{
+	int i;
+
+	for (i = 0; i < num_gpio; i++)
+		gpio_input_pulldown(gpio[i]);
+
+	return _gpio_base2_value(gpio, num_gpio);
+}
+
+int gpio_pullup_base2_value(gpio_t gpio[], int num_gpio)
+{
+	int i;
+
+	for (i = 0; i < num_gpio; i++)
+		gpio_input_pullup(gpio[i]);
+
+	return _gpio_base2_value(gpio, num_gpio);
+}
+
 int _gpio_base3_value(gpio_t gpio[], int num_gpio, int binary_first)
 {
 	/*



More information about the coreboot-gerrit mailing list