summaryrefslogtreecommitdiff
path: root/common/gpio_common.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/gpio_common.c')
-rw-r--r--common/gpio_common.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/common/gpio_common.c b/common/gpio_common.c
index 11ab9fa4e7..e310814847 100644
--- a/common/gpio_common.c
+++ b/common/gpio_common.c
@@ -61,6 +61,34 @@ static int last_val_changed(int i, int v)
/*****************************************************************************/
/* GPIO API */
+void gpio_config_module(enum module_id id, int enable)
+{
+ const struct gpio_alt_func *af = gpio_alt_funcs;
+ int i;
+
+ /* Set module's pins to alternate functions */
+ for (i = 0; i < gpio_alt_funcs_count; i++, af++) {
+ if (id != af->module_id)
+ continue; /* Pins for some other module */
+
+ if (enable) {
+ gpio_set_flags_by_mask(af->port, af->mask, af->flags);
+ gpio_set_alternate_function(af->port, af->mask,
+ af->func);
+ } else {
+ gpio_set_flags_by_mask(af->port, af->mask, GPIO_INPUT);
+ gpio_set_alternate_function(af->port, af->mask, -1);
+ }
+ }
+}
+
+void gpio_set_flags(enum gpio_signal signal, int flags)
+{
+ const struct gpio_info *g = gpio_list + signal;
+
+ gpio_set_flags_by_mask(g->port, g->mask, flags);
+}
+
const char *gpio_get_name(enum gpio_signal signal)
{
return gpio_list[signal].name;