From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
To: Marco Felsch <m.felsch@pengutronix.de>
Cc: robh+dt@kernel.org, andriy.shevchenko@linux.intel.com,
bparrot@ti.com, andy.shevchenko@gmail.com,
simon.budig@kernelconcepts.de, hdegoede@redhat.com,
fcooper@ti.com, mripard@kernel.org,
alexandre.belloni@bootlin.com, shawnguo@kernel.org,
devicetree@vger.kernel.org, kernel@pengutronix.de,
linux-input@vger.kernel.org
Subject: Re: [PATCH v2 5/5] Input: edt-ft5x06 - improve power management operations
Date: Mon, 2 Dec 2019 10:04:23 -0800 [thread overview]
Message-ID: <20191202180423.GD50317@dtor-ws> (raw)
In-Reply-To: <20191127120948.22251-6-m.felsch@pengutronix.de>
On Wed, Nov 27, 2019 at 01:09:48PM +0100, Marco Felsch wrote:
> It is possible to bring the device into a deep sleep state. To exit this
> state the reset or wakeup pin must be toggeled as documented in [1].
> Because of the poor documentation I used the several downstream kernels
> [2] and other applications notes [3] to indentify the related registers.
>
> Furthermore I added the support to disable the device completely. This is
> the most effective power-saving mechanism. Disabling the device don't
> change the suspend logic because the hibernate mode needs a hardware
> reset anyway.
>
> [1] https://www.newhavendisplay.com/appnotes/datasheets/touchpanel/FT5x26.pdf
> [2] https://github.com/linux-sunxi/linux-sunxi/blob/sunxi-3.4/drivers/input/touchscreen/ft5x_ts.c
> https://github.com/Pablito2020/focaltech-touch-driver/blob/master/ft5336_driver.c
> [3] https://www.newhavendisplay.com/appnotes/datasheets/touchpanel/FT5x16_registers.pdf
>
> Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
> ---
> v2:
> - adapt commit message
> - don't return errors during suspend/resume
> - replace dev_err() by dev_warn()
> - add support to disable the regulator too
>
> drivers/input/touchscreen/edt-ft5x06.c | 49 ++++++++++++++++++++++++--
> 1 file changed, 47 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchscreen/edt-ft5x06.c
> index 8d2ec7947f0e..0bdd3440f684 100644
> --- a/drivers/input/touchscreen/edt-ft5x06.c
> +++ b/drivers/input/touchscreen/edt-ft5x06.c
> @@ -39,6 +39,9 @@
> #define WORK_REGISTER_NUM_X 0x33
> #define WORK_REGISTER_NUM_Y 0x34
>
> +#define PMOD_REGISTER_ACTIVE 0x00
> +#define PMOD_REGISTER_HIBERNATE 0x03
> +
> #define M09_REGISTER_THRESHOLD 0x80
> #define M09_REGISTER_GAIN 0x92
> #define M09_REGISTER_OFFSET 0x93
> @@ -54,6 +57,7 @@
>
> #define WORK_REGISTER_OPMODE 0x3c
> #define FACTORY_REGISTER_OPMODE 0x01
> +#define PMOD_REGISTER_OPMODE 0xa5
>
> #define TOUCH_EVENT_DOWN 0x00
> #define TOUCH_EVENT_UP 0x01
> @@ -1235,9 +1239,29 @@ static int edt_ft5x06_ts_remove(struct i2c_client *client)
> static int __maybe_unused edt_ft5x06_ts_suspend(struct device *dev)
> {
> struct i2c_client *client = to_i2c_client(dev);
> + struct edt_ft5x06_ts_data *tsdata = i2c_get_clientdata(client);
> + int ret;
>
> - if (device_may_wakeup(dev))
> + if (device_may_wakeup(dev)) {
> enable_irq_wake(client->irq);
Can we start with preliminary patch dropping calls to enable_irq_wake()
and disable_irq_wake() as device/PM core will tale care of configuring
wake irqs properly for us, since we are now allowing I2C core to mark
the interrupt as wake IRQ.
So we need to do:
if (device_may_wakeup(dev))
return 0;
<execute power down sequence>
Thanks.
--
Dmitry
next prev parent reply other threads:[~2019-12-02 18:04 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-27 12:09 [PATCH v2 0/5] EDT-FT5x06 improvements Marco Felsch
2019-11-27 12:09 ` [PATCH v2 1/5] Input: edt-ft5x06: work around first register access error Marco Felsch
2019-12-02 17:58 ` Dmitry Torokhov
2019-12-03 8:15 ` Marco Felsch
2019-11-27 12:09 ` [PATCH v2 2/5] Input: edt-ft5x06 - alphabetical include reorder Marco Felsch
2019-11-27 12:09 ` [PATCH v2 3/5] dt-bindings: Input: edt-ft5x06 - document wakeup-source capability Marco Felsch
2019-12-05 21:15 ` Rob Herring
2019-11-27 12:09 ` [PATCH v2 4/5] Input: edt-ft5x06 - make wakeup-source switchable Marco Felsch
2019-12-02 18:00 ` Dmitry Torokhov
2019-12-10 8:36 ` Marco Felsch
2019-11-27 12:09 ` [PATCH v2 5/5] Input: edt-ft5x06 - improve power management operations Marco Felsch
2019-11-27 12:59 ` Andy Shevchenko
2019-11-27 13:06 ` Marco Felsch
2019-11-27 14:32 ` Andy Shevchenko
2019-11-27 17:25 ` Marco Felsch
2019-11-27 18:06 ` Andy Shevchenko
2019-12-02 18:04 ` Dmitry Torokhov [this message]
2019-12-10 8:43 ` Marco Felsch
2019-11-27 17:10 ` [PATCH v2 0/5] EDT-FT5x06 improvements Andy Shevchenko
2019-11-27 17:14 ` Andy Shevchenko
2019-11-27 17:25 ` Marco Felsch
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=20191202180423.GD50317@dtor-ws \
--to=dmitry.torokhov@gmail.com \
--cc=alexandre.belloni@bootlin.com \
--cc=andriy.shevchenko@linux.intel.com \
--cc=andy.shevchenko@gmail.com \
--cc=bparrot@ti.com \
--cc=devicetree@vger.kernel.org \
--cc=fcooper@ti.com \
--cc=hdegoede@redhat.com \
--cc=kernel@pengutronix.de \
--cc=linux-input@vger.kernel.org \
--cc=m.felsch@pengutronix.de \
--cc=mripard@kernel.org \
--cc=robh+dt@kernel.org \
--cc=shawnguo@kernel.org \
--cc=simon.budig@kernelconcepts.de \
/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.