aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorPavel Pisa <ppisa@pikron.com>2007-08-29 18:23:38 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2007-08-30 05:14:25 -0400
commita98b38b83db3d377ede6b72cebe7ed2dc4127766 (patch)
tree991ca82cc039b0d9bf521bcc8cbabf398b2aa76c /arch/arm
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>
Diffstat (limited to 'arch/arm')
-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 c342595dc318..4cfc9d3af28a 100644
--- a/arch/arm/mach-imx/generic.c
+++ b/arch/arm/mach-imx/generic.c
@@ -101,10 +101,11 @@ EXPORT_SYMBOL(imx_gpio_mode);
101 101
102int imx_gpio_request(unsigned gpio, const char *label) 102int imx_gpio_request(unsigned gpio, const char *label)
103{ 103{
104 if(gpio >= (GPIO_PORT_MAX + 1) * 32) 104 if(gpio >= (GPIO_PORT_MAX + 1) * 32) {
105 printk(KERN_ERR "imx_gpio: Attempt to request nonexistent GPIO %d for \"%s\"\n", 105 printk(KERN_ERR "imx_gpio: Attempt to request nonexistent GPIO %d for \"%s\"\n",
106 gpio, label ? label : "?"); 106 gpio, label ? label : "?");
107 return -EINVAL; 107 return -EINVAL;
108 }
108 109
109 if(test_and_set_bit(gpio, imx_gpio_alloc_map)) { 110 if(test_and_set_bit(gpio, imx_gpio_alloc_map)) {
110 printk(KERN_ERR "imx_gpio: GPIO %d already used. Allocation for \"%s\" failed\n", 111 printk(KERN_ERR "imx_gpio: GPIO %d already used. Allocation for \"%s\" failed\n",
@@ -129,7 +130,7 @@ EXPORT_SYMBOL(imx_gpio_free);
129 130
130int imx_gpio_direction_input(unsigned gpio) 131int imx_gpio_direction_input(unsigned gpio)
131{ 132{
132 imx_gpio_mode(gpio| GPIO_IN); 133 imx_gpio_mode(gpio | GPIO_IN | GPIO_GIUS | GPIO_DR);
133 return 0; 134 return 0;
134} 135}
135 136