From: 黄涛 Date: Sat, 30 Jul 2011 14:56:06 +0000 (+0800) Subject: Revert "Input: gpio_input: disable_irq -> disable_irq_nosync" X-Git-Tag: firefly_0821_release~9890 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=4b27fed6975d09cc72fe8cbabd6a1183fe68dfd7;p=firefly-linux-kernel-4.4.55.git Revert "Input: gpio_input: disable_irq -> disable_irq_nosync" This reverts commit 22c233c3439e9b6bf86b0bb9d952d9d9b676d590. --- diff --git a/drivers/input/misc/gpio_input.c b/drivers/input/misc/gpio_input.c index 7e66f8cbd755..0d5c5bdbe14a 100644 --- a/drivers/input/misc/gpio_input.c +++ b/drivers/input/misc/gpio_input.c @@ -181,7 +181,7 @@ static irqreturn_t gpio_event_input_irq_handler(int irq, void *dev_id) ds->info->type, key_entry->code, keymap_index, key_entry->gpio); } else { - disable_irq_nosync(irq); + disable_irq(irq); ks->debounce = DEBOUNCE_UNSTABLE; } spin_unlock_irqrestore(&ds->irq_lock, irqflags); @@ -244,9 +244,11 @@ int gpio_event_input_func(struct gpio_event_input_devs *input_devs, di = container_of(info, struct gpio_event_input_info, info); if (func == GPIO_EVENT_FUNC_SUSPEND) { + spin_lock_irqsave(&ds->irq_lock, irqflags); if (ds->use_irq) for (i = 0; i < di->keymap_size; i++) disable_irq(gpio_to_irq(di->keymap[i].gpio)); + spin_unlock_irqrestore(&ds->irq_lock, irqflags); hrtimer_cancel(&ds->timer); return 0; } diff --git a/drivers/input/misc/gpio_matrix.c b/drivers/input/misc/gpio_matrix.c index 90866c4dcc69..6d1c1a7ff67d 100644 --- a/drivers/input/misc/gpio_matrix.c +++ b/drivers/input/misc/gpio_matrix.c @@ -219,7 +219,7 @@ static irqreturn_t gpio_keypad_irq_handler(int irq_in, void *dev_id) return IRQ_HANDLED; for (i = 0; i < mi->ninputs; i++) - disable_irq_nosync(gpio_to_irq(mi->input_gpios[i])); + disable_irq(gpio_to_irq(mi->input_gpios[i])); for (i = 0; i < mi->noutputs; i++) { if (gpio_keypad_flags & GPIOKPF_DRIVE_INACTIVE) gpio_set_value(mi->output_gpios[i],