Skip to content

Commit

Permalink
gpio: zynq: Add support for reading gpio pin state
Browse files Browse the repository at this point in the history
Add zynq_gpio_get_function() which return status on gpio pin.
This function enables gpio status command.

Signed-off-by: Michal Simek <[email protected]>
  • Loading branch information
Michal Simek committed Mar 29, 2016
1 parent aff07bf commit 40048d4
Showing 1 changed file with 22 additions and 0 deletions.
22 changes: 22 additions & 0 deletions drivers/gpio/zynq_gpio.c
Original file line number Diff line number Diff line change
Expand Up @@ -299,11 +299,33 @@ static int zynq_gpio_direction_output(struct udevice *dev, unsigned gpio,
return 0;
}

static int zynq_gpio_get_function(struct udevice *dev, unsigned offset)
{
u32 reg;
unsigned int bank_num, bank_pin_num;
struct zynq_gpio_privdata *priv = dev_get_priv(dev);

if (check_gpio(offset, dev) < 0)
return -1;

zynq_gpio_get_bank_pin(offset, &bank_num, &bank_pin_num, dev);

/* set the GPIO pin as output */
reg = readl(priv->base + ZYNQ_GPIO_DIRM_OFFSET(bank_num));
reg &= BIT(bank_pin_num);
if (reg)
return GPIOF_OUTPUT;
else
return GPIOF_INPUT;
}

static const struct dm_gpio_ops gpio_zynq_ops = {
.direction_input = zynq_gpio_direction_input,
.direction_output = zynq_gpio_direction_output,
.get_value = zynq_gpio_get_value,
.set_value = zynq_gpio_set_value,
.get_function = zynq_gpio_get_function,

};

static const struct udevice_id zynq_gpio_ids[] = {
Expand Down

0 comments on commit 40048d4

Please sign in to comment.