aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavel Pisa <ppisa@pikron.com>2007-08-29 23:23:38 +0100
committerRussell King <rmk+kernel@arm.linux.org.uk>2007-08-30 10:14:25 +0100
commita98b38b83db3d377ede6b72cebe7ed2dc4127766 (patch)
tree991ca82cc039b0d9bf521bcc8cbabf398b2aa76c
parentfd51bcc5dc4073b18308f25846aa3b421fa3c42e (diff)
[ARM] 4561/1: i.MX/MX1 GPIO parenthes omission and input setup fix
During GPIO testing on PiMX1 board there has been revealed problem with some pins input functions. The GIUS bit has to be set for inputs to work reliably too. It is surprising that input worked on some inputs with incorrect setup before. DR is not mandatory, but it ensures stable constant level on internal traces. Signed-off-by: Pavel Pisa <pisa@cmp.felk.cvut.cz> Acked-by: Sascha Hauer <s.hauer@pengutronix.de> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r--arch/arm/mach-imx/generic.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/arm/mach-imx/generic.c b/arch/arm/mach-imx/generic.c
index c342595dc31..4cfc9d3af28 100644
--- a/arch/arm/mach-imx/generic.c
+++ b/arch/arm/mach-imx/generic.c
@@ -101,10 +101,11 @@ EXPORT_SYMBOL(imx_gpio_mode);
int imx_gpio_request(unsigned gpio, const char *label)
{
- if(gpio >= (GPIO_PORT_MAX + 1) * 32)
+ if(gpio >= (GPIO_PORT_MAX + 1) * 32) {
printk(KERN_ERR "imx_gpio: Attempt to request nonexistent GPIO %d for \"%s\"\n",
gpio, label ? label : "?");
return -EINVAL;
+ }
if(test_and_set_bit(gpio, imx_gpio_alloc_map)) {
printk(KERN_ERR "imx_gpio: GPIO %d already used. Allocation for \"%s\" failed\n",
@@ -129,7 +130,7 @@ EXPORT_SYMBOL(imx_gpio_free);
int imx_gpio_direction_input(unsigned gpio)
{
- imx_gpio_mode(gpio| GPIO_IN);
+ imx_gpio_mode(gpio | GPIO_IN | GPIO_GIUS | GPIO_DR);
return 0;
}