All of lore.kernel.org
 help / color / mirror / Atom feed
From: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
To: jikos@kernel.org, jic23@kernel.org
Cc: linux-input@vger.kernel.org, linux-iio@vger.kernel.org,
	srinivas.pandruvada@linux.intel.com
Subject: [PATCH v4 5/7] iio: hid-sensors: use asynchronous resume
Date: Sun,  7 Aug 2016 02:25:37 -0700	[thread overview]
Message-ID: <1470561939-14278-6-git-send-email-srinivas.pandruvada@linux.intel.com> (raw)
In-Reply-To: <1470561939-14278-1-git-send-email-srinivas.pandruvada@linux.intel.com>

Some platforms power off sensor hubs during S3 suspend, which will require
longer time to resume. This hurts system resume time, so resume
asynchronously.

Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
---
 drivers/iio/common/hid-sensors/hid-sensor-trigger.c | 21 ++++++++++++++++++++-
 include/linux/hid-sensor-hub.h                      |  1 +
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/drivers/iio/common/hid-sensors/hid-sensor-trigger.c b/drivers/iio/common/hid-sensors/hid-sensor-trigger.c
index 5b41f9d..9784ae3 100644
--- a/drivers/iio/common/hid-sensors/hid-sensor-trigger.c
+++ b/drivers/iio/common/hid-sensors/hid-sensor-trigger.c
@@ -122,6 +122,14 @@ int hid_sensor_power_state(struct hid_sensor_common *st, bool state)
 #endif
 }
 
+static void hid_sensor_set_power_work(struct work_struct *work)
+{
+	struct hid_sensor_common *attrb = container_of(work,
+						       struct hid_sensor_common,
+						       work);
+	_hid_sensor_power_state(attrb, true);
+}
+
 static int hid_sensor_data_rdy_trigger_set_state(struct iio_trigger *trig,
 						bool state)
 {
@@ -170,6 +178,9 @@ int hid_sensor_setup_trigger(struct iio_dev *indio_dev, const char *name,
 		goto error_unreg_trigger;
 
 	iio_device_set_drvdata(indio_dev, attrb);
+
+	INIT_WORK(&attrb->work, hid_sensor_set_power_work);
+
 	pm_suspend_ignore_children(&attrb->pdev->dev, true);
 	pm_runtime_enable(&attrb->pdev->dev);
 	/* Default to 3 seconds, but can be changed from sysfs */
@@ -202,7 +213,15 @@ static int hid_sensor_resume(struct device *dev)
 	struct platform_device *pdev = to_platform_device(dev);
 	struct iio_dev *indio_dev = platform_get_drvdata(pdev);
 	struct hid_sensor_common *attrb = iio_device_get_drvdata(indio_dev);
+	schedule_work(&attrb->work);
+	return 0;
+}
 
+static int hid_sensor_runtime_resume(struct device *dev)
+{
+	struct platform_device *pdev = to_platform_device(dev);
+	struct iio_dev *indio_dev = platform_get_drvdata(pdev);
+	struct hid_sensor_common *attrb = iio_device_get_drvdata(indio_dev);
 	return _hid_sensor_power_state(attrb, true);
 }
 
@@ -211,7 +230,7 @@ static int hid_sensor_resume(struct device *dev)
 const struct dev_pm_ops hid_sensor_pm_ops = {
 	SET_SYSTEM_SLEEP_PM_OPS(hid_sensor_suspend, hid_sensor_resume)
 	SET_RUNTIME_PM_OPS(hid_sensor_suspend,
-			   hid_sensor_resume, NULL)
+			   hid_sensor_runtime_resume, NULL)
 };
 EXPORT_SYMBOL(hid_sensor_pm_ops);
 
diff --git a/include/linux/hid-sensor-hub.h b/include/linux/hid-sensor-hub.h
index c02b5ce..dd85f35 100644
--- a/include/linux/hid-sensor-hub.h
+++ b/include/linux/hid-sensor-hub.h
@@ -236,6 +236,7 @@ struct hid_sensor_common {
 	struct hid_sensor_hub_attribute_info report_state;
 	struct hid_sensor_hub_attribute_info power_state;
 	struct hid_sensor_hub_attribute_info sensitivity;
+	struct work_struct work;
 };
 
 /* Convert from hid unit expo to regular exponent */
-- 
2.7.4


  parent reply	other threads:[~2016-08-07  9:25 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-07  9:25 [PATCH v4 0/7] Intel Integrated Sensor Hub Support (ISH) Srinivas Pandruvada
2016-08-07  9:25 ` [PATCH v4 1/7] Documentation: hid: Intel ISH HID document Srinivas Pandruvada
2016-08-07  9:25 ` [PATCH v4 2/7] hid: intel_ish-hid: ISH Transport layer Srinivas Pandruvada
2016-08-07  9:25 ` [PATCH v4 3/7] hid: intel-ish-hid: ipc layer Srinivas Pandruvada
     [not found] ` <1470561939-14278-1-git-send-email-srinivas.pandruvada-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2016-08-07  9:25   ` [PATCH v4 4/7] hid: intel-ish-hid: ISH HID client driver Srinivas Pandruvada
2016-08-07  9:25     ` Srinivas Pandruvada
2016-08-07  9:25   ` [PATCH v4 7/7] MAINTAINERS: Add Intel ISH Srinivas Pandruvada
2016-08-07  9:25     ` Srinivas Pandruvada
2016-08-17  9:17   ` [PATCH v4 0/7] Intel Integrated Sensor Hub Support (ISH) Jiri Kosina
2016-08-17  9:17     ` Jiri Kosina
2016-08-07  9:25 ` Srinivas Pandruvada [this message]
2016-08-07 10:15   ` [PATCH v4 5/7] iio: hid-sensors: use asynchronous resume Jiri Kosina
     [not found]     ` <alpine.LNX.2.00.1608071214500.22028-YHPUNQjx9ReKbouaWp301Q@public.gmane.org>
2016-08-15 14:07       ` Jonathan Cameron
2016-08-15 14:07         ` Jonathan Cameron
     [not found]         ` <884e74df-569e-8218-fbda-f9c7ecfe1e5a-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2016-08-15 14:52           ` Jonathan Cameron
2016-08-15 14:52             ` Jonathan Cameron
     [not found]             ` <af2d1c90-a0ec-0888-8048-76463bf98ece-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2016-08-15 15:45               ` Dmitry Torokhov
2016-08-15 15:45                 ` Dmitry Torokhov
     [not found]                 ` <CAKdAkRS-sVHqQ1tUZWVxNTfX5=ZxFzbCAxvsJPHV4=85mdEeRA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-08-15 15:49                   ` Jonathan Cameron
2016-08-15 15:49                     ` Jonathan Cameron
2016-08-15 16:42                 ` Srinivas Pandruvada
     [not found]                   ` <1471279360.20508.20.camel-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2016-08-15 17:14                     ` Dmitry Torokhov
2016-08-15 17:14                       ` Dmitry Torokhov
     [not found]                       ` <CAKdAkRRjh+21qOzq28=vSX59RcZsMOAt3pTUhjw4wXdpXXQg-w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-08-15 17:29                         ` Srinivas Pandruvada
2016-08-15 17:29                           ` Srinivas Pandruvada
2016-08-15 17:53                           ` Dmitry Torokhov
2016-08-15 18:24                             ` Srinivas Pandruvada
2016-08-15 18:24                               ` Srinivas Pandruvada
2016-08-07  9:25 ` [PATCH v4 6/7] hid: hid-sensor-hub: Add ISH quirk Srinivas Pandruvada
2016-08-07 17:03 ` [PATCH v4 0/7] Intel Integrated Sensor Hub Support (ISH) Atri Bhattacharya

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=1470561939-14278-6-git-send-email-srinivas.pandruvada@linux.intel.com \
    --to=srinivas.pandruvada@linux.intel.com \
    --cc=jic23@kernel.org \
    --cc=jikos@kernel.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-input@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: 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.