summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorRicardo Salveti <ricardo.salveti@linaro.org>2016-08-11 04:17:29 -0300
committerKumar Gala <kumar.gala@linaro.org>2016-10-27 14:48:43 +0000
commita9f2061dfba87ffbf64bf856bc3060376ca355ad (patch)
tree226634b83adba723f6ce502ecfadf754c9852e83 /drivers
parent3bdc77ee094c0f4f88379dd3159cd10199dc3a61 (diff)
gpio: stm32: introduce alternative function config
STM32F4 requires the alternative function config to be set, so just initialize that as part of the gpio configure call. Change-Id: I33a4a8efec59c5ebe7dc3f3580f0dd2bf7ded7f4 Signed-off-by: Ricardo Salveti <ricardo.salveti@linaro.org> Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpio/gpio_stm32.c2
-rw-r--r--drivers/gpio/gpio_stm32.h3
-rw-r--r--drivers/pinmux/stm32/pinmux_stm32.c7
3 files changed, 7 insertions, 5 deletions
diff --git a/drivers/gpio/gpio_stm32.c b/drivers/gpio/gpio_stm32.c
index 8f223a5b6..8af46aba7 100644
--- a/drivers/gpio/gpio_stm32.c
+++ b/drivers/gpio/gpio_stm32.c
@@ -69,7 +69,7 @@ static int gpio_stm32_config(struct device *dev, int access_op,
return map_res;
}
- if (stm32_gpio_configure(cfg->base, pin, pincfg)) {
+ if (stm32_gpio_configure(cfg->base, pin, pincfg, 0)) {
return -EIO;
}
diff --git a/drivers/gpio/gpio_stm32.h b/drivers/gpio/gpio_stm32.h
index cb577084f..51dc847fd 100644
--- a/drivers/gpio/gpio_stm32.h
+++ b/drivers/gpio/gpio_stm32.h
@@ -64,8 +64,9 @@ int stm32_gpio_flags_to_conf(int flags, int *conf);
* @param base_addr GPIO port base address
* @param pin IO pin
* @param func GPIO mode
+ * @param altf Alternate function
*/
-int stm32_gpio_configure(uint32_t *base_addr, int pin, int func);
+int stm32_gpio_configure(uint32_t *base_addr, int pin, int func, int altf);
/**
* @brief helper for setting of GPIO pin output
diff --git a/drivers/pinmux/stm32/pinmux_stm32.c b/drivers/pinmux/stm32/pinmux_stm32.c
index 4936b04da..9b5760ad3 100644
--- a/drivers/pinmux/stm32/pinmux_stm32.c
+++ b/drivers/pinmux/stm32/pinmux_stm32.c
@@ -52,7 +52,7 @@ static int enable_port(uint32_t port, struct device *clk)
return clock_control_on(clk, subsys);
}
-static int stm32_pin_configure(int pin, int func)
+static int stm32_pin_configure(int pin, int func, int altf)
{
/* determine IO port registers location */
uint32_t offset = STM32_PORT(pin) * GPIO_REG_SIZE;
@@ -61,7 +61,8 @@ static int stm32_pin_configure(int pin, int func)
/* not much here, on STM32F10x the alternate function is
* controller by setting up GPIO pins in specific mode.
*/
- return stm32_gpio_configure((uint32_t *)port_base, STM32_PIN(pin), func);
+ return stm32_gpio_configure((uint32_t *)port_base,
+ STM32_PIN(pin), func, altf);
}
/**
@@ -86,7 +87,7 @@ int _pinmux_stm32_set(uint32_t pin, uint32_t func,
/* determine config for alternate function */
config = stm32_get_pin_config(pin, func);
- return stm32_pin_configure(pin, config);
+ return stm32_pin_configure(pin, config, func);
}
/**