From: Stephen Boyd <sboyd@codeaurora.org> To: Dmitry Torokhov <dmitry.torokhov@gmail.com> Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-input@vger.kernel.org Subject: [PATCH v2 01/10] Input: pmic8xxx-pwrkey - switch to using managed resources Date: Thu, 2 Jan 2014 16:37:31 -0800 [thread overview] Message-ID: <1388709460-19222-2-git-send-email-sboyd@codeaurora.org> (raw) In-Reply-To: <1388709460-19222-1-git-send-email-sboyd@codeaurora.org> From: Dmitry Torokhov <dmitry.torokhov@gmail.com> This simplifies error handling and device removal paths. Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> Acked-by: Stephen Boyd <sboyd@codeaurora.org> Signed-off-by: Stephen Boyd <sboyd@codeaurora.org> --- drivers/input/misc/pmic8xxx-pwrkey.c | 74 ++++++++++++------------------------ 1 file changed, 25 insertions(+), 49 deletions(-) diff --git a/drivers/input/misc/pmic8xxx-pwrkey.c b/drivers/input/misc/pmic8xxx-pwrkey.c index ef938405a9c6..aaf332510623 100644 --- a/drivers/input/misc/pmic8xxx-pwrkey.c +++ b/drivers/input/misc/pmic8xxx-pwrkey.c @@ -32,7 +32,6 @@ * @key_press_irq: key press irq number */ struct pmic8xxx_pwrkey { - struct input_dev *pwr; int key_press_irq; }; @@ -110,22 +109,22 @@ static int pmic8xxx_pwrkey_probe(struct platform_device *pdev) return -ENODEV; } - pwrkey = kzalloc(sizeof(*pwrkey), GFP_KERNEL); + pwrkey = devm_kzalloc(&pdev->dev, sizeof(*pwrkey), GFP_KERNEL); if (!pwrkey) return -ENOMEM; - pwr = input_allocate_device(); + pwrkey->key_press_irq = key_press_irq; + + pwr = devm_input_allocate_device(&pdev->dev); if (!pwr) { dev_dbg(&pdev->dev, "Can't allocate power button\n"); - err = -ENOMEM; - goto free_pwrkey; + return -ENOMEM; } input_set_capability(pwr, EV_KEY, KEY_POWER); pwr->name = "pmic8xxx_pwrkey"; pwr->phys = "pmic8xxx_pwrkey/input0"; - pwr->dev.parent = &pdev->dev; delay = (pdata->kpd_trigger_delay_us << 10) / USEC_PER_SEC; delay = 1 + ilog2(delay); @@ -133,7 +132,7 @@ static int pmic8xxx_pwrkey_probe(struct platform_device *pdev) err = regmap_read(regmap, PON_CNTL_1, &pon_cntl); if (err < 0) { dev_err(&pdev->dev, "failed reading PON_CNTL_1 err=%d\n", err); - goto free_input_dev; + return err; } pon_cntl &= ~PON_CNTL_TRIG_DELAY_MASK; @@ -146,66 +145,43 @@ static int pmic8xxx_pwrkey_probe(struct platform_device *pdev) err = regmap_write(regmap, PON_CNTL_1, pon_cntl); if (err < 0) { dev_err(&pdev->dev, "failed writing PON_CNTL_1 err=%d\n", err); - goto free_input_dev; + return err; } - err = input_register_device(pwr); + err = devm_request_irq(&pdev->dev, key_press_irq, pwrkey_press_irq, + IRQF_TRIGGER_RISING, + "pmic8xxx_pwrkey_press", pwr); if (err) { - dev_dbg(&pdev->dev, "Can't register power key: %d\n", err); - goto free_input_dev; + dev_err(&pdev->dev, "Can't get %d IRQ for pwrkey: %d\n", + key_press_irq, err); + return err; } - pwrkey->key_press_irq = key_press_irq; - pwrkey->pwr = pwr; - - platform_set_drvdata(pdev, pwrkey); - - err = request_irq(key_press_irq, pwrkey_press_irq, - IRQF_TRIGGER_RISING, "pmic8xxx_pwrkey_press", pwr); - if (err < 0) { - dev_dbg(&pdev->dev, "Can't get %d IRQ for pwrkey: %d\n", - key_press_irq, err); - goto unreg_input_dev; + err = devm_request_irq(&pdev->dev, key_release_irq, pwrkey_release_irq, + IRQF_TRIGGER_RISING, + "pmic8xxx_pwrkey_release", pwr); + if (err) { + dev_err(&pdev->dev, "Can't get %d IRQ for pwrkey: %d\n", + key_release_irq, err); + return err; } - err = request_irq(key_release_irq, pwrkey_release_irq, - IRQF_TRIGGER_RISING, "pmic8xxx_pwrkey_release", pwr); - if (err < 0) { - dev_dbg(&pdev->dev, "Can't get %d IRQ for pwrkey: %d\n", - key_release_irq, err); - - goto free_press_irq; + err = input_register_device(pwr); + if (err) { + dev_err(&pdev->dev, "Can't register power key: %d\n", err); + return err; } + platform_set_drvdata(pdev, pwrkey); device_init_wakeup(&pdev->dev, pdata->wakeup); return 0; - -free_press_irq: - free_irq(key_press_irq, pwrkey); -unreg_input_dev: - input_unregister_device(pwr); - pwr = NULL; -free_input_dev: - input_free_device(pwr); -free_pwrkey: - kfree(pwrkey); - return err; } static int pmic8xxx_pwrkey_remove(struct platform_device *pdev) { - struct pmic8xxx_pwrkey *pwrkey = platform_get_drvdata(pdev); - int key_release_irq = platform_get_irq(pdev, 0); - int key_press_irq = platform_get_irq(pdev, 1); - device_init_wakeup(&pdev->dev, 0); - free_irq(key_press_irq, pwrkey->pwr); - free_irq(key_release_irq, pwrkey->pwr); - input_unregister_device(pwrkey->pwr); - kfree(pwrkey); - return 0; } -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation
WARNING: multiple messages have this Message-ID (diff)
From: sboyd@codeaurora.org (Stephen Boyd) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v2 01/10] Input: pmic8xxx-pwrkey - switch to using managed resources Date: Thu, 2 Jan 2014 16:37:31 -0800 [thread overview] Message-ID: <1388709460-19222-2-git-send-email-sboyd@codeaurora.org> (raw) In-Reply-To: <1388709460-19222-1-git-send-email-sboyd@codeaurora.org> From: Dmitry Torokhov <dmitry.torokhov@gmail.com> This simplifies error handling and device removal paths. Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> Acked-by: Stephen Boyd <sboyd@codeaurora.org> Signed-off-by: Stephen Boyd <sboyd@codeaurora.org> --- drivers/input/misc/pmic8xxx-pwrkey.c | 74 ++++++++++++------------------------ 1 file changed, 25 insertions(+), 49 deletions(-) diff --git a/drivers/input/misc/pmic8xxx-pwrkey.c b/drivers/input/misc/pmic8xxx-pwrkey.c index ef938405a9c6..aaf332510623 100644 --- a/drivers/input/misc/pmic8xxx-pwrkey.c +++ b/drivers/input/misc/pmic8xxx-pwrkey.c @@ -32,7 +32,6 @@ * @key_press_irq: key press irq number */ struct pmic8xxx_pwrkey { - struct input_dev *pwr; int key_press_irq; }; @@ -110,22 +109,22 @@ static int pmic8xxx_pwrkey_probe(struct platform_device *pdev) return -ENODEV; } - pwrkey = kzalloc(sizeof(*pwrkey), GFP_KERNEL); + pwrkey = devm_kzalloc(&pdev->dev, sizeof(*pwrkey), GFP_KERNEL); if (!pwrkey) return -ENOMEM; - pwr = input_allocate_device(); + pwrkey->key_press_irq = key_press_irq; + + pwr = devm_input_allocate_device(&pdev->dev); if (!pwr) { dev_dbg(&pdev->dev, "Can't allocate power button\n"); - err = -ENOMEM; - goto free_pwrkey; + return -ENOMEM; } input_set_capability(pwr, EV_KEY, KEY_POWER); pwr->name = "pmic8xxx_pwrkey"; pwr->phys = "pmic8xxx_pwrkey/input0"; - pwr->dev.parent = &pdev->dev; delay = (pdata->kpd_trigger_delay_us << 10) / USEC_PER_SEC; delay = 1 + ilog2(delay); @@ -133,7 +132,7 @@ static int pmic8xxx_pwrkey_probe(struct platform_device *pdev) err = regmap_read(regmap, PON_CNTL_1, &pon_cntl); if (err < 0) { dev_err(&pdev->dev, "failed reading PON_CNTL_1 err=%d\n", err); - goto free_input_dev; + return err; } pon_cntl &= ~PON_CNTL_TRIG_DELAY_MASK; @@ -146,66 +145,43 @@ static int pmic8xxx_pwrkey_probe(struct platform_device *pdev) err = regmap_write(regmap, PON_CNTL_1, pon_cntl); if (err < 0) { dev_err(&pdev->dev, "failed writing PON_CNTL_1 err=%d\n", err); - goto free_input_dev; + return err; } - err = input_register_device(pwr); + err = devm_request_irq(&pdev->dev, key_press_irq, pwrkey_press_irq, + IRQF_TRIGGER_RISING, + "pmic8xxx_pwrkey_press", pwr); if (err) { - dev_dbg(&pdev->dev, "Can't register power key: %d\n", err); - goto free_input_dev; + dev_err(&pdev->dev, "Can't get %d IRQ for pwrkey: %d\n", + key_press_irq, err); + return err; } - pwrkey->key_press_irq = key_press_irq; - pwrkey->pwr = pwr; - - platform_set_drvdata(pdev, pwrkey); - - err = request_irq(key_press_irq, pwrkey_press_irq, - IRQF_TRIGGER_RISING, "pmic8xxx_pwrkey_press", pwr); - if (err < 0) { - dev_dbg(&pdev->dev, "Can't get %d IRQ for pwrkey: %d\n", - key_press_irq, err); - goto unreg_input_dev; + err = devm_request_irq(&pdev->dev, key_release_irq, pwrkey_release_irq, + IRQF_TRIGGER_RISING, + "pmic8xxx_pwrkey_release", pwr); + if (err) { + dev_err(&pdev->dev, "Can't get %d IRQ for pwrkey: %d\n", + key_release_irq, err); + return err; } - err = request_irq(key_release_irq, pwrkey_release_irq, - IRQF_TRIGGER_RISING, "pmic8xxx_pwrkey_release", pwr); - if (err < 0) { - dev_dbg(&pdev->dev, "Can't get %d IRQ for pwrkey: %d\n", - key_release_irq, err); - - goto free_press_irq; + err = input_register_device(pwr); + if (err) { + dev_err(&pdev->dev, "Can't register power key: %d\n", err); + return err; } + platform_set_drvdata(pdev, pwrkey); device_init_wakeup(&pdev->dev, pdata->wakeup); return 0; - -free_press_irq: - free_irq(key_press_irq, pwrkey); -unreg_input_dev: - input_unregister_device(pwr); - pwr = NULL; -free_input_dev: - input_free_device(pwr); -free_pwrkey: - kfree(pwrkey); - return err; } static int pmic8xxx_pwrkey_remove(struct platform_device *pdev) { - struct pmic8xxx_pwrkey *pwrkey = platform_get_drvdata(pdev); - int key_release_irq = platform_get_irq(pdev, 0); - int key_press_irq = platform_get_irq(pdev, 1); - device_init_wakeup(&pdev->dev, 0); - free_irq(key_press_irq, pwrkey->pwr); - free_irq(key_release_irq, pwrkey->pwr); - input_unregister_device(pwrkey->pwr); - kfree(pwrkey); - return 0; } -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation
next prev parent reply other threads:[~2014-01-03 0:37 UTC|newest] Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top 2014-01-03 0:37 [PATCH v2 00/10] Use regmap+devm+DT in pm8xxx input drivers Stephen Boyd 2014-01-03 0:37 ` Stephen Boyd 2014-01-03 0:37 ` Stephen Boyd [this message] 2014-01-03 0:37 ` [PATCH v2 01/10] Input: pmic8xxx-pwrkey - switch to using managed resources Stephen Boyd 2014-01-03 0:37 ` [PATCH v2 02/10] genirq: Add devm_request_any_context_irq() Stephen Boyd 2014-01-03 0:37 ` Stephen Boyd 2014-01-06 22:24 ` Stephen Boyd 2014-01-06 22:24 ` Stephen Boyd 2014-01-14 20:47 ` Stephen Boyd 2014-01-14 20:47 ` Stephen Boyd 2014-02-07 21:08 ` Stephen Boyd 2014-02-07 21:08 ` Stephen Boyd 2014-02-09 14:30 ` [tip:irq/core] " tip-bot for Stephen Boyd 2014-02-11 6:46 ` Stephen Boyd 2014-02-11 7:19 ` Ingo Molnar 2014-02-11 14:32 ` Thomas Gleixner 2014-02-11 16:39 ` Dmitry Torokhov 2014-02-18 22:11 ` Stephen Boyd 2014-01-03 0:37 ` [PATCH v2 03/10] Input: pmic8xxx-keypad - Switch to using managed resources Stephen Boyd 2014-01-03 0:37 ` Stephen Boyd 2014-01-03 0:37 ` Stephen Boyd 2014-01-03 0:37 ` [PATCH v2 04/10] Input: pmic8xxx-keypad - Migrate to regmap APIs Stephen Boyd 2014-01-03 0:37 ` Stephen Boyd 2014-01-03 0:37 ` [PATCH v2 05/10] Input: pmic8xxx-pwrkey - Migrate to DT Stephen Boyd 2014-01-03 0:37 ` Stephen Boyd 2014-01-03 0:37 ` [PATCH v2 06/10] Input: pm8xxx-vibrator - Add DT match table Stephen Boyd 2014-01-03 0:37 ` Stephen Boyd 2014-01-03 1:17 ` Dmitry Torokhov 2014-01-03 1:17 ` Dmitry Torokhov 2014-01-03 1:17 ` Dmitry Torokhov 2014-01-03 1:27 ` Stephen Boyd 2014-01-03 1:27 ` Stephen Boyd 2014-01-03 0:37 ` [PATCH v2 07/10] Input: pmic8xxx-keypad - Migrate to DT Stephen Boyd 2014-01-03 0:37 ` Stephen Boyd 2014-01-03 0:37 ` [PATCH v2 08/10] devicetree: bindings: Document PM8921/8058 keypads Stephen Boyd 2014-01-03 0:37 ` Stephen Boyd 2014-01-03 0:37 ` Stephen Boyd 2014-01-03 0:37 ` [PATCH v2 09/10] devicetree: bindings: Document PM8921/8058 power keys Stephen Boyd 2014-01-03 0:37 ` Stephen Boyd 2014-01-03 0:37 ` Stephen Boyd 2014-01-03 0:37 ` [PATCH v2 10/10] devicetree: bindings: Document PM8921/8058 vibrators Stephen Boyd 2014-01-03 0:37 ` Stephen Boyd 2014-01-03 0:37 ` Stephen Boyd
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1388709460-19222-2-git-send-email-sboyd@codeaurora.org \ --to=sboyd@codeaurora.org \ --cc=dmitry.torokhov@gmail.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-arm-msm@vger.kernel.org \ --cc=linux-input@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.