Skip to content

Commit

Permalink
gpio: stm32f7: Add ops get_function
Browse files Browse the repository at this point in the history
This patch adds gpio get_function ops support.
This function reports the state of a gpio.

Signed-off-by: Christophe Kerello <[email protected]>
Reviewed-by: Simon Glass <[email protected]>
Signed-off-by: Patrice Chotard <[email protected]>
  • Loading branch information
pchotard authored and trini committed Nov 16, 2018
1 parent b42d938 commit cad7324
Showing 1 changed file with 20 additions and 0 deletions.
20 changes: 20 additions & 0 deletions drivers/gpio/stm32f7_gpio.c
Original file line number Diff line number Diff line change
Expand Up @@ -65,11 +65,31 @@ static int stm32_gpio_set_value(struct udevice *dev, unsigned offset, int value)
return 0;
}

static int stm32_gpio_get_function(struct udevice *dev, unsigned int offset)
{
struct stm32_gpio_priv *priv = dev_get_priv(dev);
struct stm32_gpio_regs *regs = priv->regs;
int bits_index = MODE_BITS(offset);
int mask = MODE_BITS_MASK << bits_index;
u32 mode;

mode = (readl(&regs->moder) & mask) >> bits_index;
if (mode == STM32_GPIO_MODE_OUT)
return GPIOF_OUTPUT;
if (mode == STM32_GPIO_MODE_IN)
return GPIOF_INPUT;
if (mode == STM32_GPIO_MODE_AN)
return GPIOF_UNUSED;

return GPIOF_FUNC;
}

static const struct dm_gpio_ops gpio_stm32_ops = {
.direction_input = stm32_gpio_direction_input,
.direction_output = stm32_gpio_direction_output,
.get_value = stm32_gpio_get_value,
.set_value = stm32_gpio_set_value,
.get_function = stm32_gpio_get_function,
};

static int gpio_stm32_probe(struct udevice *dev)
Expand Down

0 comments on commit cad7324

Please sign in to comment.