summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common/gpio.c33
-rw-r--r--include/gpio.h21
-rw-r--r--include/gpio_list.h13
3 files changed, 32 insertions, 35 deletions
diff --git a/common/gpio.c b/common/gpio.c
index 167207318f..e8652e7e9e 100644
--- a/common/gpio.c
+++ b/common/gpio.c
@@ -9,6 +9,7 @@
#include "console.h"
#include "gpio.h"
#include "host_command.h"
+#include "registers.h"
#include "system.h"
#include "util.h"
@@ -58,6 +59,35 @@ static int last_val_changed(int i, int v)
}
}
+/* GPIO alternate function structure */
+struct gpio_alt_func {
+ /* Port base address */
+ uint32_t port;
+
+ /* Bitmask on that port (multiple bits allowed) */
+ uint32_t mask;
+
+ /* Alternate function number */
+ uint8_t func;
+
+ /* Module ID (as uint8_t, since enum would be 32-bit) */
+ uint8_t module_id;
+
+ /* Flags (GPIO_*; see above). */
+ uint16_t flags;
+};
+
+/*
+ * Construct the gpio_alt_funcs array. This array is used by gpio_config_module
+ * to enable and disable GPIO alternate functions on a module by module basis.
+ */
+#define ALTERNATE(pinmask, function, module, flags) \
+ {GPIO_##pinmask, function, module, flags},
+
+static const struct gpio_alt_func gpio_alt_funcs[] = {
+ #include "gpio.wrap"
+};
+
/*
* GPIO_CONFIG_ALL_PORTS signifies a "don't care" for the GPIO port. This is
* used in gpio_config_pins(). When the port parameter is set to this, the
@@ -74,7 +104,8 @@ static int gpio_config_pins(enum module_id id,
int rv = EC_ERROR_INVAL;
/* Find pins and set to alternate functions */
- for (af = gpio_alt_funcs; af < gpio_alt_funcs + gpio_alt_funcs_count;
+ for (af = gpio_alt_funcs;
+ af < gpio_alt_funcs + ARRAY_SIZE(gpio_alt_funcs);
af++) {
if (af->module_id != id)
continue; /* Pins for some other module */
diff --git a/include/gpio.h b/include/gpio.h
index b259025739..d7dcd9d3ca 100644
--- a/include/gpio.h
+++ b/include/gpio.h
@@ -85,27 +85,6 @@ extern void (* const gpio_irq_handlers[])(enum gpio_signal signal);
extern const int gpio_ih_count;
#define GPIO_IH_COUNT gpio_ih_count
-/* GPIO alternate function structure, for use by board.c */
-struct gpio_alt_func {
- /* Port base address */
- uint32_t port;
-
- /* Bitmask on that port (multiple bits allowed) */
- uint32_t mask;
-
- /* Alternate function number */
- uint8_t func;
-
- /* Module ID (as uint8_t, since enum would be 32-bit) */
- uint8_t module_id;
-
- /* Flags (GPIO_*; see above). */
- uint16_t flags;
-};
-
-extern const struct gpio_alt_func gpio_alt_funcs[];
-extern const int gpio_alt_funcs_count;
-
/**
* Pre-initialize GPIOs.
*
diff --git a/include/gpio_list.h b/include/gpio_list.h
index a94b6e7a9c..ba0b63e321 100644
--- a/include/gpio_list.h
+++ b/include/gpio_list.h
@@ -21,19 +21,6 @@ const struct gpio_info gpio_list[] = {
BUILD_ASSERT(ARRAY_SIZE(gpio_list) == GPIO_COUNT);
-/*
- * Construct the gpio_alt_funcs array. This array is used by gpio_config_module
- * to enable and disable GPIO alternate functions on a module by module basis.
- */
-#define ALTERNATE(pinmask, function, module, flags) \
- {GPIO_##pinmask, function, module, flags},
-
-const struct gpio_alt_func gpio_alt_funcs[] = {
- #include "gpio.wrap"
-};
-
-const int gpio_alt_funcs_count = ARRAY_SIZE(gpio_alt_funcs);
-
/* GPIO Interrupt Handlers */
#define GPIO_INT(name, pin, flags, signal) signal,
void (* const gpio_irq_handlers[])(enum gpio_signal signal) = {