gpio-button-hotplug: fix active_low handling, possibly broken in r37643

Signed-off-by: Felix Fietkau <nbd@openwrt.org>

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@37664 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
Felix Fietkau 2013-08-03 11:49:50 +00:00
parent d3be69f35e
commit 6d9f7bbe10

View File

@ -274,23 +274,24 @@ struct gpio_keys_polled_dev {
struct gpio_keys_button_data data[0];
};
static inline int gpio_button_get_value(struct gpio_keys_button *button,
struct gpio_keys_button_data *bdata)
static int gpio_button_get_value(struct gpio_keys_button *button,
struct gpio_keys_button_data *bdata)
{
int val;
if (bdata->can_sleep)
return !!gpio_get_value_cansleep(button->gpio);
val = !!gpio_get_value_cansleep(button->gpio);
else
return !!gpio_get_value(button->gpio);
val = !!gpio_get_value(button->gpio);
return val ^ button->active_low;
}
static void gpio_keys_polled_check_state(struct gpio_keys_button *button,
struct gpio_keys_button_data *bdata)
{
int state;
int state = gpio_button_get_value(button, bdata);
state = gpio_button_get_value(button, bdata);
state = !!(state ^ button->active_low);
if (state != bdata->last_state) {
unsigned int type = button->type ?: EV_KEY;