gpio: generalize for all generic gpio providers
The Blackfin gpio command isn't terribly Blackfin-specific. So generalize the few pieces into two new optional helpers: name_to_gpio() - turn a string name into a GPIO # gpio_status() - display current pin bindings (think /proc/gpio) Once these pieces are pulled out, we can relocate the cmd_gpio.c into the common directory. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
This commit is contained in:
@@ -196,6 +196,59 @@ static inline int gpio_is_valid(int number)
|
||||
return number >= 0 && number < MAX_BLACKFIN_GPIOS;
|
||||
}
|
||||
|
||||
#include <linux/ctype.h>
|
||||
|
||||
static inline int name_to_gpio(const char *name)
|
||||
{
|
||||
int port_base;
|
||||
|
||||
if (tolower(*name) == 'p') {
|
||||
++name;
|
||||
|
||||
switch (tolower(*name)) {
|
||||
#ifdef GPIO_PA0
|
||||
case 'a': port_base = GPIO_PA0; break;
|
||||
#endif
|
||||
#ifdef GPIO_PB0
|
||||
case 'b': port_base = GPIO_PB0; break;
|
||||
#endif
|
||||
#ifdef GPIO_PC0
|
||||
case 'c': port_base = GPIO_PC0; break;
|
||||
#endif
|
||||
#ifdef GPIO_PD0
|
||||
case 'd': port_base = GPIO_PD0; break;
|
||||
#endif
|
||||
#ifdef GPIO_PE0
|
||||
case 'e': port_base = GPIO_PE0; break;
|
||||
#endif
|
||||
#ifdef GPIO_PF0
|
||||
case 'f': port_base = GPIO_PF0; break;
|
||||
#endif
|
||||
#ifdef GPIO_PG0
|
||||
case 'g': port_base = GPIO_PG0; break;
|
||||
#endif
|
||||
#ifdef GPIO_PH0
|
||||
case 'h': port_base = GPIO_PH0; break;
|
||||
#endif
|
||||
#ifdef GPIO_PI0
|
||||
case 'i': port_base = GPIO_PI0; break;
|
||||
#endif
|
||||
#ifdef GPIO_PJ
|
||||
case 'j': port_base = GPIO_PJ0; break;
|
||||
#endif
|
||||
default: return -1;
|
||||
}
|
||||
|
||||
++name;
|
||||
} else
|
||||
port_base = 0;
|
||||
|
||||
return port_base + simple_strtoul(name, NULL, 10);
|
||||
}
|
||||
#define name_to_gpio(n) name_to_gpio(n)
|
||||
|
||||
#define gpio_status() bfin_gpio_labels()
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
#endif /* __ARCH_BLACKFIN_GPIO_H__ */
|
||||
|
Reference in New Issue
Block a user