blackfin: GPIO: Implement more GPIO APIs
Implement more GPIO APIs in case GPIOLIB is disabled. Signed-off-by: Sonic Zhang <sonic.zhang@analog.com> Signed-off-by: Bob Liu <lliubbo@gmail.com>
This commit is contained in:
parent
494b794808
commit
45abc49d19
|
@ -26,6 +26,7 @@
|
||||||
#ifndef __ASSEMBLY__
|
#ifndef __ASSEMBLY__
|
||||||
|
|
||||||
#include <linux/compiler.h>
|
#include <linux/compiler.h>
|
||||||
|
#include <linux/gpio.h>
|
||||||
|
|
||||||
/***********************************************************
|
/***********************************************************
|
||||||
*
|
*
|
||||||
|
@ -244,6 +245,49 @@ static inline int gpio_set_debounce(unsigned gpio, unsigned debounce)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline int gpio_request_one(unsigned gpio, unsigned long flags, const char *label)
|
||||||
|
{
|
||||||
|
int err;
|
||||||
|
|
||||||
|
err = bfin_gpio_request(gpio, label);
|
||||||
|
if (err)
|
||||||
|
return err;
|
||||||
|
|
||||||
|
if (flags & GPIOF_DIR_IN)
|
||||||
|
err = bfin_gpio_direction_input(gpio);
|
||||||
|
else
|
||||||
|
err = bfin_gpio_direction_output(gpio,
|
||||||
|
(flags & GPIOF_INIT_HIGH) ? 1 : 0);
|
||||||
|
|
||||||
|
if (err)
|
||||||
|
bfin_gpio_free(gpio);
|
||||||
|
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int gpio_request_array(const struct gpio *array, size_t num)
|
||||||
|
{
|
||||||
|
int i, err;
|
||||||
|
|
||||||
|
for (i = 0; i < num; i++, array++) {
|
||||||
|
err = gpio_request_one(array->gpio, array->flags, array->label);
|
||||||
|
if (err)
|
||||||
|
goto err_free;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
err_free:
|
||||||
|
while (i--)
|
||||||
|
bfin_gpio_free((--array)->gpio);
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void gpio_free_array(const struct gpio *array, size_t num)
|
||||||
|
{
|
||||||
|
while (num--)
|
||||||
|
bfin_gpio_free((array++)->gpio);
|
||||||
|
}
|
||||||
|
|
||||||
static inline int __gpio_get_value(unsigned gpio)
|
static inline int __gpio_get_value(unsigned gpio)
|
||||||
{
|
{
|
||||||
return bfin_gpio_get_value(gpio);
|
return bfin_gpio_get_value(gpio);
|
||||||
|
|
Loading…
Reference in New Issue