9
0
Fork 0

ARM: PXA: use generic gpio prototypes

PXA is the only architecture that uses its own prototypes for
the gpio functions because it uses static inline variants of
these functions. For the sake of streamlining with other architectures
move them to a C file and use the generic gpio prototypes.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
Sascha Hauer 2015-08-06 12:43:42 +02:00
parent 3086fd8bb4
commit 74fe5182a8
3 changed files with 33 additions and 32 deletions

View File

@ -66,3 +66,35 @@ int __init pxa_init_gpio(int start, int end)
return 0;
}
int gpio_get_value(unsigned gpio)
{
return GPLR(gpio) & GPIO_bit(gpio);
}
void gpio_set_value(unsigned gpio, int value)
{
if (value)
GPSR(gpio) = GPIO_bit(gpio);
else
GPCR(gpio) = GPIO_bit(gpio);
}
int gpio_direction_input(unsigned gpio)
{
if (__gpio_is_inverted(gpio))
GPDR(gpio) |= GPIO_bit(gpio);
else
GPDR(gpio) &= ~GPIO_bit(gpio);
return 0;
}
int gpio_direction_output(unsigned gpio, int value)
{
gpio_set_value(gpio, value);
if (__gpio_is_inverted(gpio))
GPDR(gpio) &= ~GPIO_bit(gpio);
else
GPDR(gpio) |= GPIO_bit(gpio);
return 0;
}

View File

@ -20,6 +20,7 @@
#ifndef __ASM_ARCH_PXA_GPIO_H
#define __ASM_ARCH_PXA_GPIO_H
#include <asm-generic/gpio.h>
#include <mach/hardware.h>
#define GPIO_REGS_VIRT (0x40E00000)

View File

@ -31,38 +31,6 @@
#define GFER_OFFSET 0x3C
#define GEDR_OFFSET 0x48
static inline int gpio_get_value(unsigned gpio)
{
return GPLR(gpio) & GPIO_bit(gpio);
}
static inline void gpio_set_value(unsigned gpio, int value)
{
if (value)
GPSR(gpio) = GPIO_bit(gpio);
else
GPCR(gpio) = GPIO_bit(gpio);
}
static inline int gpio_direction_input(unsigned gpio)
{
if (__gpio_is_inverted(gpio))
GPDR(gpio) |= GPIO_bit(gpio);
else
GPDR(gpio) &= ~GPIO_bit(gpio);
return 0;
}
static inline int gpio_direction_output(unsigned gpio, int value)
{
gpio_set_value(gpio, value);
if (__gpio_is_inverted(gpio))
GPDR(gpio) &= ~GPIO_bit(gpio);
else
GPDR(gpio) |= GPIO_bit(gpio);
return 0;
}
/* NOTE: some PXAs have fewer on-chip GPIOs (like PXA255, with 85).
* Those cases currently cause holes in the GPIO number space, the
* actual number of the last GPIO is recorded by 'pxa_last_gpio'.