diff options
Diffstat (limited to 'drivers/of/gpio.c')
-rw-r--r-- | drivers/of/gpio.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/drivers/of/gpio.c b/drivers/of/gpio.c new file mode 100644 index 0000000000..d4314f3e28 --- /dev/null +++ b/drivers/of/gpio.c @@ -0,0 +1,28 @@ +#define DEBUG + +#include <common.h> +#include <errno.h> +#include <of.h> +#include <gpio.h> + +int of_get_named_gpio(struct device_node *np, + const char *propname, int index) +{ + int ret; + struct device_node *gpio_np; + const void *gpio_spec; + + ret = of_parse_phandles_with_args(np, propname, "#gpio-cells", index, + &gpio_np, &gpio_spec); + if (ret) { + pr_debug("%s: can't parse gpios property: %d\n", __func__, ret); + return -EINVAL; + } + + ret = gpio_get_num(gpio_np->device, be32_to_cpup(gpio_spec)); + if (ret < 0) + return ret; + + return ret; +} + |