From a03793d770596fb37a726221bd0752780e982630 Mon Sep 17 00:00:00 2001 From: Dan Carpenter Date: Wed, 10 Nov 2010 23:59:20 -0800 Subject: [PATCH] --- yaml --- r: 221861 b: refs/heads/master c: 17d01f28e160f8a9c9ecda2e335d0047ec9e7388 h: refs/heads/master i: 221859: a4a8d5505a08d942f21935f963135ff1497abeee v: v3 --- [refs] | 2 +- trunk/drivers/input/misc/pcf8574_keypad.c | 23 ++++++++++------------- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/[refs] b/[refs] index fa35b8c1ea91..5ab65e77799e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a4503199f66dd13ddce1c1bb830fd414d9669f88 +refs/heads/master: 17d01f28e160f8a9c9ecda2e335d0047ec9e7388 diff --git a/trunk/drivers/input/misc/pcf8574_keypad.c b/trunk/drivers/input/misc/pcf8574_keypad.c index 4b42ffc0532a..d1583aea1721 100644 --- a/trunk/drivers/input/misc/pcf8574_keypad.c +++ b/trunk/drivers/input/misc/pcf8574_keypad.c @@ -127,14 +127,6 @@ static int __devinit pcf8574_kp_probe(struct i2c_client *client, const struct i2 idev->id.product = 0x0001; idev->id.version = 0x0100; - input_set_drvdata(idev, lp); - - ret = input_register_device(idev); - if (ret) { - dev_err(&client->dev, "input_register_device() failed\n"); - goto fail_register; - } - lp->laststate = read_state(lp); ret = request_threaded_irq(client->irq, NULL, pcf8574_kp_irq_handler, @@ -142,16 +134,21 @@ static int __devinit pcf8574_kp_probe(struct i2c_client *client, const struct i2 DRV_NAME, lp); if (ret) { dev_err(&client->dev, "IRQ %d is not free\n", client->irq); - goto fail_irq; + goto fail_free_device; + } + + ret = input_register_device(idev); + if (ret) { + dev_err(&client->dev, "input_register_device() failed\n"); + goto fail_free_irq; } i2c_set_clientdata(client, lp); return 0; - fail_irq: - input_unregister_device(idev); - fail_register: - input_set_drvdata(idev, NULL); + fail_free_irq: + free_irq(client->irq, lp); + fail_free_device: input_free_device(idev); fail_allocate: kfree(lp);