fdt: Add polarity-aware gpio functions to fdtdec

Add get and set gpio functions to fdtdec that take into account the
polarity field in fdtdec_gpio_state.flags.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Simon Glass <sjg@chromium.org>
master
Sean Paul 12 years ago committed by Gerald Van Baren
parent aadef0a1bc
commit 202ff75375
  1. 16
      include/fdtdec.h
  2. 20
      lib/fdtdec.c

@ -90,6 +90,22 @@ struct fdt_gpio_state {
#define fdt_gpio_isvalid(x) ((x)->gpio != FDT_GPIO_NONE)
/**
* Read the GPIO taking into account the polarity of the pin.
*
* @param gpio pointer to the decoded gpio
* @return value of the gpio if successful, < 0 if unsuccessful
*/
int fdtdec_get_gpio(struct fdt_gpio_state *gpio);
/**
* Write the GPIO taking into account the polarity of the pin.
*
* @param gpio pointer to the decoded gpio
* @return 0 if successful
*/
int fdtdec_set_gpio(struct fdt_gpio_state *gpio, int val);
/**
* Find the next numbered alias for a peripheral. This is used to enumerate
* all the peripherals of a certain type.
*

@ -487,6 +487,26 @@ int fdtdec_decode_gpio(const void *blob, int node, const char *prop_name,
return err == 1 ? 0 : err;
}
int fdtdec_get_gpio(struct fdt_gpio_state *gpio)
{
int val;
if (!fdt_gpio_isvalid(gpio))
return -1;
val = gpio_get_value(gpio->gpio);
return gpio->flags & FDT_GPIO_ACTIVE_LOW ? val ^ 1 : val;
}
int fdtdec_set_gpio(struct fdt_gpio_state *gpio, int val)
{
if (!fdt_gpio_isvalid(gpio))
return -1;
val = gpio->flags & FDT_GPIO_ACTIVE_LOW ? val ^ 1 : val;
return gpio_set_value(gpio->gpio, val);
}
int fdtdec_setup_gpio(struct fdt_gpio_state *gpio)
{
/*

Loading…
Cancel
Save