Skip to content
Snippets Groups Projects
Commit fd11bea2 authored by Ian Campbell's avatar Ian Campbell Committed by Tom Rini
Browse files

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: default avatarIan Campbell <ijc@hellion.org.uk>
Cc: Marek Vasut <marex@denx.de>
Cc: Wolfgang Denk <wd@denx.de>
Cc: Sonic Zhang <sonic.adi@gmail.com>
parent 3fa1981e
No related branches found
No related tags found
No related merge requests found
......@@ -759,6 +759,54 @@ void bfin_reset_boot_spi_cs(unsigned short pin)
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)
{
int c, gpio;
......
......@@ -160,55 +160,6 @@ static inline int gpio_is_valid(int number)
#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()
#endif /* __ASSEMBLY__ */
......
......@@ -11,9 +11,10 @@
#include <dm.h>
#include <asm/gpio.h>
#ifndef name_to_gpio
#define name_to_gpio(name) simple_strtoul(name, NULL, 10)
#endif
int __weak name_to_gpio(const char *name)
{
return simple_strtoul(name, NULL, 10);
}
enum gpio_cmd {
GPIO_INPUT,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment