Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 115054
b: refs/heads/master
c: 57ffe9d
h: refs/heads/master
v: v3
  • Loading branch information
Uwe Kleine-König authored and Dmitry Torokhov committed Aug 8, 2008
1 parent 44a65ea commit 0518bc9
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 24 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 34a7c48c221676ff8322ca4b8ded84eada34cf12
refs/heads/master: 57ffe9d539e0eb741bb9ca8f2834d210e70ee2e3
35 changes: 12 additions & 23 deletions trunk/drivers/input/keyboard/gpio_keys.c
Original file line number Diff line number Diff line change
Expand Up @@ -56,29 +56,18 @@ static void gpio_check_button(unsigned long _data)

static irqreturn_t gpio_keys_isr(int irq, void *dev_id)
{
struct platform_device *pdev = dev_id;
struct gpio_keys_platform_data *pdata = pdev->dev.platform_data;
struct gpio_keys_drvdata *ddata = platform_get_drvdata(pdev);
int i;
struct gpio_button_data *bdata = dev_id;
struct gpio_keys_button *button = bdata->button;

for (i = 0; i < pdata->nbuttons; i++) {
struct gpio_keys_button *button = &pdata->buttons[i];
BUG_ON(irq != gpio_to_irq(button->gpio));

if (irq == gpio_to_irq(button->gpio)) {
struct gpio_button_data *bdata = &ddata->data[i];

if (button->debounce_interval)
mod_timer(&bdata->timer,
jiffies +
msecs_to_jiffies(button->debounce_interval));
else
gpio_keys_report_event(button, bdata->input);

return IRQ_HANDLED;
}
}
if (button->debounce_interval)
mod_timer(&bdata->timer,
jiffies + msecs_to_jiffies(button->debounce_interval));
else
gpio_keys_report_event(button, bdata->input);

return IRQ_NONE;
return IRQ_HANDLED;
}

static int __devinit gpio_keys_probe(struct platform_device *pdev)
Expand Down Expand Up @@ -151,7 +140,7 @@ static int __devinit gpio_keys_probe(struct platform_device *pdev)
IRQF_SAMPLE_RANDOM | IRQF_TRIGGER_RISING |
IRQF_TRIGGER_FALLING,
button->desc ? button->desc : "gpio_keys",
pdev);
bdata);
if (error) {
pr_err("gpio-keys: Unable to claim irq %d; error %d\n",
irq, error);
Expand All @@ -178,7 +167,7 @@ static int __devinit gpio_keys_probe(struct platform_device *pdev)

fail2:
while (--i >= 0) {
free_irq(gpio_to_irq(pdata->buttons[i].gpio), pdev);
free_irq(gpio_to_irq(pdata->buttons[i].gpio), &ddata->data[i]);
if (pdata->buttons[i].debounce_interval)
del_timer_sync(&ddata->data[i].timer);
gpio_free(pdata->buttons[i].gpio);
Expand All @@ -203,7 +192,7 @@ static int __devexit gpio_keys_remove(struct platform_device *pdev)

for (i = 0; i < pdata->nbuttons; i++) {
int irq = gpio_to_irq(pdata->buttons[i].gpio);
free_irq(irq, pdev);
free_irq(irq, &ddata->data[i]);
if (pdata->buttons[i].debounce_interval)
del_timer_sync(&ddata->data[i].timer);
gpio_free(pdata->buttons[i].gpio);
Expand Down

0 comments on commit 0518bc9

Please sign in to comment.