summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefano Babic <sbabic@denx.de>2010-04-13 12:07:00 +0200
committertrix <trix@windriver.com>2010-04-30 05:23:25 -0500
commit7d27cd08b4c1adfd58c54aaa8b8c8f4eeb3c7021 (patch)
treeb0ae3f3b50855a1ba00a578ca658bced4aff7d60
parentdfe83352cb58c55dfdbd5b535cb335526cb1c581 (diff)
downloadblackbird-obmc-uboot-7d27cd08b4c1adfd58c54aaa8b8c8f4eeb3c7021.tar.gz
blackbird-obmc-uboot-7d27cd08b4c1adfd58c54aaa8b8c8f4eeb3c7021.zip
MX31: add accessor function to get a gpio
The patch adds an accessor function to get the value of a gpio. Signed-off-by: Stefano Babic <sbabic@denx.de>
-rw-r--r--arch/arm/include/asm/arch-mx31/mx31.h5
-rw-r--r--drivers/gpio/mx31_gpio.c15
2 files changed, 20 insertions, 0 deletions
diff --git a/arch/arm/include/asm/arch-mx31/mx31.h b/arch/arm/include/asm/arch-mx31/mx31.h
index 3cc4b350b6..f702d260f1 100644
--- a/arch/arm/include/asm/arch-mx31/mx31.h
+++ b/arch/arm/include/asm/arch-mx31/mx31.h
@@ -37,12 +37,17 @@ enum mx31_gpio_direction {
extern int mx31_gpio_direction(unsigned int gpio,
enum mx31_gpio_direction direction);
extern void mx31_gpio_set(unsigned int gpio, unsigned int value);
+extern int mx31_gpio_get(unsigned int gpio);
#else
static inline int mx31_gpio_direction(unsigned int gpio,
enum mx31_gpio_direction direction)
{
return 1;
}
+static inline int mx31_gpio_get(unsigned int gpio)
+{
+ return 1;
+}
static inline void mx31_gpio_set(unsigned int gpio, unsigned int value)
{
}
diff --git a/drivers/gpio/mx31_gpio.c b/drivers/gpio/mx31_gpio.c
index 737aafa822..b07f038156 100644
--- a/drivers/gpio/mx31_gpio.c
+++ b/drivers/gpio/mx31_gpio.c
@@ -71,3 +71,18 @@ void mx31_gpio_set(unsigned int gpio, unsigned int value)
l &= ~(1 << gpio);
__REG(gpio_ports[port] + GPIO_DR) = l;
}
+
+int mx31_gpio_get(unsigned int gpio)
+{
+ unsigned int port = gpio >> 5;
+ u32 l;
+
+ if (port >= ARRAY_SIZE(gpio_ports))
+ return -1;
+
+ gpio &= 0x1f;
+
+ l = (__REG(gpio_ports[port] + GPIO_DR) >> gpio) & 0x01;
+
+ return l;
+}
OpenPOWER on IntegriCloud