diff options
-rw-r--r-- | common/gpio.c | 33 | ||||
-rw-r--r-- | include/gpio.h | 21 | ||||
-rw-r--r-- | include/gpio_list.h | 13 |
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) = { |