diff options
Diffstat (limited to 'drivers/gpio/stmpe-gpio.c')
-rw-r--r-- | drivers/gpio/stmpe-gpio.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/gpio/stmpe-gpio.c b/drivers/gpio/stmpe-gpio.c index 932759db1ac2..7c9e6a052c45 100644 --- a/drivers/gpio/stmpe-gpio.c +++ b/drivers/gpio/stmpe-gpio.c | |||
@@ -315,11 +315,11 @@ static int __devinit stmpe_gpio_probe(struct platform_device *pdev) | |||
315 | 315 | ||
316 | ret = stmpe_enable(stmpe, STMPE_BLOCK_GPIO); | 316 | ret = stmpe_enable(stmpe, STMPE_BLOCK_GPIO); |
317 | if (ret) | 317 | if (ret) |
318 | return ret; | 318 | goto out_free; |
319 | 319 | ||
320 | ret = stmpe_gpio_irq_init(stmpe_gpio); | 320 | ret = stmpe_gpio_irq_init(stmpe_gpio); |
321 | if (ret) | 321 | if (ret) |
322 | goto out_free; | 322 | goto out_disable; |
323 | 323 | ||
324 | ret = request_threaded_irq(irq, NULL, stmpe_gpio_irq, IRQF_ONESHOT, | 324 | ret = request_threaded_irq(irq, NULL, stmpe_gpio_irq, IRQF_ONESHOT, |
325 | "stmpe-gpio", stmpe_gpio); | 325 | "stmpe-gpio", stmpe_gpio); |
@@ -345,6 +345,8 @@ out_freeirq: | |||
345 | free_irq(irq, stmpe_gpio); | 345 | free_irq(irq, stmpe_gpio); |
346 | out_removeirq: | 346 | out_removeirq: |
347 | stmpe_gpio_irq_remove(stmpe_gpio); | 347 | stmpe_gpio_irq_remove(stmpe_gpio); |
348 | out_disable: | ||
349 | stmpe_disable(stmpe, STMPE_BLOCK_GPIO); | ||
348 | out_free: | 350 | out_free: |
349 | kfree(stmpe_gpio); | 351 | kfree(stmpe_gpio); |
350 | return ret; | 352 | return ret; |