ARM: ixp4xx: fix gpio rework

Commit 098e30f655 "ARM: ixp4xx: stop broadcasting the custom GPIO API"
changed the internal gpio code of ixp4xx to be accessible only from
common.c, but unfortunately that broke the Goramo MultiLink code, which
uses this API.

This tries to restore the previous state without exposing the
API globally again. A better solution might be needed.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Krzysztof Halasa <khc@pm.waw.pl>
Cc: Imre Kaloz <kaloz@openwrt.org>
This commit is contained in:
Arnd Bergmann 2014-02-03 17:40:14 +01:00
parent 926aabde63
commit 48ba81f6fd
2 changed files with 10 additions and 3 deletions

View File

@ -99,7 +99,7 @@ void __init ixp4xx_map_io(void)
#define IXP4XX_GPIO_CLK_0 14
#define IXP4XX_GPIO_CLK_1 15
static void gpio_line_config(u8 line, u32 direction)
void gpio_line_config(u8 line, u32 direction)
{
if (direction == IXP4XX_GPIO_IN)
*IXP4XX_GPIO_GPOER |= (1 << line);
@ -107,12 +107,12 @@ static void gpio_line_config(u8 line, u32 direction)
*IXP4XX_GPIO_GPOER &= ~(1 << line);
}
static void gpio_line_get(u8 line, int *value)
void gpio_line_get(u8 line, int *value)
{
*value = (*IXP4XX_GPIO_GPINR >> line) & 0x1;
}
static void gpio_line_set(u8 line, int value)
void gpio_line_set(u8 line, int value)
{
if (value == IXP4XX_GPIO_HIGH)
*IXP4XX_GPIO_GPOUTR |= (1 << line);

View File

@ -17,6 +17,13 @@
#include <asm/mach/pci.h>
#include <asm/system_info.h>
#define IXP4XX_GPIO_OUT 0x1
#define IXP4XX_GPIO_IN 0x2
void gpio_line_config(u8 line, u32 direction);
void gpio_line_get(u8 line, int *value);
void gpio_line_set(u8 line, int value);
#define SLOT_ETHA 0x0B /* IDSEL = AD21 */
#define SLOT_ETHB 0x0C /* IDSEL = AD20 */
#define SLOT_MPCI 0x0D /* IDSEL = AD19 */