浏览代码

[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>
Pavel Pisa 17 年之前
父节点
当前提交
a98b38b83d
共有 1 个文件被更改,包括 3 次插入2 次删除
  1. 3 2
      arch/arm/mach-imx/generic.c

+ 3 - 2
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;
 }