diff options
Diffstat (limited to 'common/gpio.c')
-rw-r--r-- | common/gpio.c | 37 |
1 files changed, 27 insertions, 10 deletions
diff --git a/common/gpio.c b/common/gpio.c index 0fd34d4a79..167207318f 100644 --- a/common/gpio.c +++ b/common/gpio.c @@ -58,17 +58,17 @@ static int last_val_changed(int i, int v) } } -/*****************************************************************************/ -/* GPIO API */ - -void gpio_config_module(enum module_id id, int enable) -{ - /* Set all the alternate functions for this module. */ - gpio_config_pins(id, GPIO_CONFIG_ALL_PORTS, 0, enable); -} +/* + * 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 + * pin_mask parameter is ignored. + */ +#define GPIO_CONFIG_ALL_PORTS 0xFFFFFFFF -int gpio_config_pins(enum module_id id, - uint32_t port, uint32_t pin_mask, int enable) +static int gpio_config_pins(enum module_id id, + uint32_t port, + uint32_t pin_mask, + int enable) { const struct gpio_alt_func *af; int rv = EC_ERROR_INVAL; @@ -107,6 +107,23 @@ int gpio_config_pins(enum module_id id, return rv; } +/*****************************************************************************/ +/* GPIO API */ + +int gpio_config_module(enum module_id id, int enable) +{ + /* Set all the alternate functions for this module. */ + return gpio_config_pins(id, GPIO_CONFIG_ALL_PORTS, 0, enable); +} + +int gpio_config_pin(enum module_id id, enum gpio_signal signal, int enable) +{ + return gpio_config_pins(id, + gpio_list[signal].port, + gpio_list[signal].mask, + enable); +} + void gpio_set_flags(enum gpio_signal signal, int flags) { const struct gpio_info *g = gpio_list + signal; |