blackfin: make name_to_gpio be a weak symbol
This required moving it into a C file from the header. The only user of a non-default name_to_gpio is blackfin, therefore build tested with the blackfin bct-brettl2 build, which is one I picked at random. Also tested with a build for the ARM tec board which uses the default/fallback implementation. Inspection with objdump shows that both have done the right thing. This change was requested by Marek during review of the sunxi patch series. Signed-off-by: Ian Campbell <ijc@hellion.org.uk> Cc: Marek Vasut <marex@denx.de> Cc: Wolfgang Denk <wd@denx.de> Cc: Sonic Zhang <sonic.adi@gmail.com>
This commit is contained in:
parent
3fa1981e24
commit
fd11bea2cc
|
|
@ -759,6 +759,54 @@ void bfin_reset_boot_spi_cs(unsigned short pin)
|
||||||
udelay(1);
|
udelay(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
void gpio_labels(void)
|
void gpio_labels(void)
|
||||||
{
|
{
|
||||||
int c, gpio;
|
int c, gpio;
|
||||||
|
|
|
||||||
|
|
@ -160,55 +160,6 @@ static inline int gpio_is_valid(int number)
|
||||||
|
|
||||||
#include <linux/ctype.h>
|
#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() gpio_labels()
|
#define gpio_status() gpio_labels()
|
||||||
|
|
||||||
#endif /* __ASSEMBLY__ */
|
#endif /* __ASSEMBLY__ */
|
||||||
|
|
|
||||||
|
|
@ -11,9 +11,10 @@
|
||||||
#include <dm.h>
|
#include <dm.h>
|
||||||
#include <asm/gpio.h>
|
#include <asm/gpio.h>
|
||||||
|
|
||||||
#ifndef name_to_gpio
|
int __weak name_to_gpio(const char *name)
|
||||||
#define name_to_gpio(name) simple_strtoul(name, NULL, 10)
|
{
|
||||||
#endif
|
return simple_strtoul(name, NULL, 10);
|
||||||
|
}
|
||||||
|
|
||||||
enum gpio_cmd {
|
enum gpio_cmd {
|
||||||
GPIO_INPUT,
|
GPIO_INPUT,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue