All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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.