Modified: branches/2008R1/arch/blackfin/mach-bf533/boards/stamp.c (4205 => 4206)
--- branches/2008R1/arch/blackfin/mach-bf533/boards/stamp.c 2008-02-01 06:49:55 UTC (rev 4205)
+++ branches/2008R1/arch/blackfin/mach-bf533/boards/stamp.c 2008-02-01 09:48:37 UTC (rev 4206)
@@ -423,9 +423,9 @@
#include <linux/gpio_keys.h>
static struct gpio_keys_button bfin_gpio_keys_table[] = {
- {BTN_0, GPIO_PF5, 1, "gpio-keys: BTN0"},
- {BTN_1, GPIO_PF6, 1, "gpio-keys: BTN1"},
- {BTN_2, GPIO_PF8, 1, "gpio-keys: BTN2"},
+ {BTN_0, GPIO_PF5, 0, "gpio-keys: BTN0"},
+ {BTN_1, GPIO_PF6, 0, "gpio-keys: BTN1"},
+ {BTN_2, GPIO_PF8, 0, "gpio-keys: BTN2"},
};
static struct gpio_keys_platform_data bfin_gpio_keys_data = {
Modified: branches/2008R1/arch/blackfin/mach-common/ints-priority.c (4205 => 4206)
--- branches/2008R1/arch/blackfin/mach-common/ints-priority.c 2008-02-01 06:49:55 UTC (rev 4205)
+++ branches/2008R1/arch/blackfin/mach-common/ints-priority.c 2008-02-01 09:48:37 UTC (rev 4206)
@@ -430,17 +430,9 @@
return 0;
}
+ set_gpio_inen(gpionr, 0);
set_gpio_dir(gpionr, 0);
- set_gpio_inen(gpionr, 1);
- if (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) {
- gpio_edge_triggered[gpio_bank(gpionr)] |= gpio_bit(gpionr);
- set_gpio_edge(gpionr, 1);
- } else {
- set_gpio_edge(gpionr, 0);
- gpio_edge_triggered[gpio_bank(gpionr)] &= ~gpio_bit(gpionr);
- }
-
if ((type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING))
== (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING))
set_gpio_both(gpionr, 1);
@@ -452,6 +444,18 @@
else
set_gpio_polar(gpionr, 0); /* high or rising edge denoted by zero */
+ if (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) {
+ set_gpio_edge(gpionr, 1);
+ set_gpio_inen(gpionr, 1);
+ gpio_edge_triggered[gpio_bank(gpionr)] |= gpio_bit(gpionr);
+ set_gpio_data(gpionr, 0);
+
+ } else {
+ set_gpio_edge(gpionr, 0);
+ gpio_edge_triggered[gpio_bank(gpionr)] &= ~gpio_bit(gpionr);
+ set_gpio_inen(gpionr, 1);
+ }
+
SSYNC();
if (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING))