All of lore.kernel.org
 help / color / mirror / Atom feed
From: ChiYuan Huang <u0084500@gmail.com>
To: Rob Herring <robh+dt@kernel.org>,
	Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
	Lee Jones <lee@kernel.org>,
	Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: cy_huang <cy_huang@richtek.com>,
	"open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" 
	<devicetree@vger.kernel.org>, lkml <linux-kernel@vger.kernel.org>,
	linux-input@vger.kernel.org
Subject: Re: [PATCH v4 3/3] input: misc: rt5120: Add power key support
Date: Mon, 22 Aug 2022 09:12:25 +0800	[thread overview]
Message-ID: <CADiBU39vExtLYQZO=p=Zf_k3da1SWVjogLtvs1Oi1vCXn46bqg@mail.gmail.com> (raw)
In-Reply-To: <1660100142-32493-4-git-send-email-u0084500@gmail.com>

Dear reviewers:

cy_huang <u0084500@gmail.com> 於 2022年8月10日 週三 上午10:55寫道:
>
> From: ChiYuan Huang <cy_huang@richtek.com>
>
> Add RT5120 PMIC power key support.
>
> Signed-off-by: ChiYuan Huang <cy_huang@richtek.com>
> ---
> Since v4:
> - Add "Copyright" string and refine for GPL version string.
>
> Since v3:
> - Simplify the power key irq handler key report
> - Since press and release irq not needed to keep in private data, change 'press',
>   'release' irq as local variable only.
> - Fix Kconfig typo for pwrkey.
>
Since binding/mfd/regulator are all applied, only this one is left.
Any update about this pwrkey patch?
> ---
>  drivers/input/misc/Kconfig         |   9 +++
>  drivers/input/misc/Makefile        |   1 +
>  drivers/input/misc/rt5120-pwrkey.c | 109 +++++++++++++++++++++++++++++++++++++
>  3 files changed, 119 insertions(+)
>  create mode 100644 drivers/input/misc/rt5120-pwrkey.c
>
> diff --git a/drivers/input/misc/Kconfig b/drivers/input/misc/Kconfig
> index a18ab73..92daa4d 100644
> --- a/drivers/input/misc/Kconfig
> +++ b/drivers/input/misc/Kconfig
> @@ -891,6 +891,15 @@ config INPUT_SC27XX_VIBRA
>           To compile this driver as a module, choose M here. The module will
>           be called sc27xx_vibra.
>
> +config INPUT_RT5120_PWRKEY
> +       tristate "RT5120 PMIC power key support"
> +       depends on MFD_RT5120
> +       help
> +         This enables support for RT5120 PMIC power key driver.
> +
> +         To compile this driver as a module, choose M here. the module will
> +         be called rt5120-pwrkey.
> +
>  config INPUT_STPMIC1_ONKEY
>         tristate "STPMIC1 PMIC Onkey support"
>         depends on MFD_STPMIC1
> diff --git a/drivers/input/misc/Makefile b/drivers/input/misc/Makefile
> index 28dfc44..d1fb00e 100644
> --- a/drivers/input/misc/Makefile
> +++ b/drivers/input/misc/Makefile
> @@ -69,6 +69,7 @@ obj-$(CONFIG_INPUT_RAVE_SP_PWRBUTTON) += rave-sp-pwrbutton.o
>  obj-$(CONFIG_INPUT_RB532_BUTTON)       += rb532_button.o
>  obj-$(CONFIG_INPUT_REGULATOR_HAPTIC)   += regulator-haptic.o
>  obj-$(CONFIG_INPUT_RETU_PWRBUTTON)     += retu-pwrbutton.o
> +obj-$(CONFIG_INPUT_RT5120_PWRKEY)      += rt5120-pwrkey.o
>  obj-$(CONFIG_INPUT_AXP20X_PEK)         += axp20x-pek.o
>  obj-$(CONFIG_INPUT_GPIO_ROTARY_ENCODER)        += rotary_encoder.o
>  obj-$(CONFIG_INPUT_RK805_PWRKEY)       += rk805-pwrkey.o
> diff --git a/drivers/input/misc/rt5120-pwrkey.c b/drivers/input/misc/rt5120-pwrkey.c
> new file mode 100644
> index 00000000..94d25ba
> --- /dev/null
> +++ b/drivers/input/misc/rt5120-pwrkey.c
> @@ -0,0 +1,109 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +/*
> + * Copyright (C) 2022 Richtek Technology Corp.
> + * Author: ChiYuan Huang <cy_huang@richtek.com>
> + */
> +
> +#include <linux/bits.h>
> +#include <linux/input.h>
> +#include <linux/interrupt.h>
> +#include <linux/kernel.h>
> +#include <linux/module.h>
> +#include <linux/mod_devicetable.h>
> +#include <linux/platform_device.h>
> +#include <linux/regmap.h>
> +
> +#define RT5120_REG_INTSTAT     0x1E
> +#define RT5120_PWRKEYSTAT_MASK BIT(7)
> +
> +struct rt5120_priv {
> +       struct regmap *regmap;
> +       struct input_dev *input;
> +};
> +
> +static irqreturn_t rt5120_pwrkey_handler(int irq, void *devid)
> +{
> +       struct rt5120_priv *priv = devid;
> +       unsigned int stat;
> +       int ret;
> +
> +       ret = regmap_read(priv->regmap, RT5120_REG_INTSTAT, &stat);
> +       if (ret)
> +               return IRQ_NONE;
> +
> +       input_report_key(priv->input, KEY_POWER,
> +                        !(stat & RT5120_PWRKEYSTAT_MASK));
> +       input_sync(priv->input);
> +
> +       return IRQ_HANDLED;
> +}
> +
> +static int rt5120_pwrkey_probe(struct platform_device *pdev)
> +{
> +       struct rt5120_priv *priv;
> +       struct device *dev = &pdev->dev;
> +       int press_irq, release_irq;
> +       int ret;
> +
> +       priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
> +       if (!priv)
> +               return -ENOMEM;
> +
> +       priv->regmap = dev_get_regmap(dev->parent, NULL);
> +       if (!priv->regmap)
> +               return dev_err_probe(dev, -ENODEV, "Failed to init regmap\n");
> +
> +       press_irq = platform_get_irq_byname(pdev, "pwrkey-press");
> +       if (press_irq < 0)
> +               return press_irq;
> +
> +       release_irq = platform_get_irq_byname(pdev, "pwrkey-release");
> +       if (release_irq < 0)
> +               return release_irq;
> +
> +       /* Make input device be device resource managed */
> +       priv->input = devm_input_allocate_device(dev);
> +       if (!priv->input)
> +               return dev_err_probe(dev, -ENOMEM,
> +                                    "Failed to allocate input device\n");
> +
> +       priv->input->name = "rt5120_pwrkey";
> +       priv->input->phys = "rt5120_pwrkey/input0";
> +       priv->input->id.bustype = BUS_I2C;
> +       input_set_capability(priv->input, EV_KEY, KEY_POWER);
> +
> +       ret = input_register_device(priv->input);
> +       if (ret)
> +               return dev_err_probe(dev, ret,
> +                                    "Failed to register input device\n");
> +
> +       ret = devm_request_threaded_irq(dev, press_irq, NULL,
> +                                       rt5120_pwrkey_handler, 0,
> +                                       "pwrkey-press", priv);
> +       if (ret)
> +               return dev_err_probe(dev, ret,
> +                                    "Failed to register pwrkey press irq\n");
> +
> +       return devm_request_threaded_irq(dev, release_irq, NULL,
> +                                        rt5120_pwrkey_handler, 0,
> +                                        "pwrkey-release", priv);
> +}
> +
> +static const struct of_device_id r5120_pwrkey_match_table[] = {
> +       { .compatible = "richtek,rt5120-pwrkey" },
> +       {}
> +};
> +MODULE_DEVICE_TABLE(of, r5120_pwrkey_match_table);
> +
> +static struct platform_driver rt5120_pwrkey_driver = {
> +       .driver = {
> +               .name = "rt5120-pwrkey",
> +               .of_match_table = r5120_pwrkey_match_table,
> +       },
> +       .probe = rt5120_pwrkey_probe,
> +};
> +module_platform_driver(rt5120_pwrkey_driver);
> +
> +MODULE_AUTHOR("ChiYuan Huang <cy_huang@richtek.com>");
> +MODULE_DESCRIPTION("Richtek RT5120 power key driver");
> +MODULE_LICENSE("GPL v2");
> --
> 2.7.4
>

  reply	other threads:[~2022-08-22  1:12 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-10  2:55 [PATCH v4 0/3] Add Richtek RT5120 PMIC support cy_huang
2022-08-10  2:55 ` [PATCH v4 1/3] dt-binding: mfd: " cy_huang
2022-08-10 11:40   ` Lee Jones
2022-08-10  2:55 ` [PATCH v4 2/3] mfd: rt5120: Add Richtek " cy_huang
2022-08-10 11:39   ` Lee Jones
2022-08-10  2:55 ` [PATCH v4 3/3] input: misc: rt5120: Add power key support cy_huang
2022-08-22  1:12   ` ChiYuan Huang [this message]
2022-08-31 22:47   ` Dmitry Torokhov
2022-09-01  0:39     ` ChiYuan Huang
2022-09-01  2:12       ` Dmitry Torokhov

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='CADiBU39vExtLYQZO=p=Zf_k3da1SWVjogLtvs1Oi1vCXn46bqg@mail.gmail.com' \
    --to=u0084500@gmail.com \
    --cc=cy_huang@richtek.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dmitry.torokhov@gmail.com \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=lee@kernel.org \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=robh+dt@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: link
Be 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.