All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] HID: hid-sensor-hub: Optimize suspend/resume time
@ 2015-05-15 17:40 Srinivas Pandruvada
  2015-05-17  8:22 ` Jonathan Cameron
  0 siblings, 1 reply; 4+ messages in thread
From: Srinivas Pandruvada @ 2015-05-15 17:40 UTC (permalink / raw)
  To: jic23; +Cc: linux-iio, Srinivas Pandruvada

When system suspend is issued, the pm core issues resume call for all
run time suspended devices. This is required for some devices to
continue suspend.
For sensor hub we don't need to runtime resume devices and then suspend.
So when the system suspend is in progress, ignore call to power up
the sensors. This has a significant impact on suspend/resume performance.

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

diff --git a/drivers/iio/common/hid-sensors/hid-sensor-trigger.c b/drivers/iio/common/hid-sensors/hid-sensor-trigger.c
index 610fc98..d9170d2 100644
--- a/drivers/iio/common/hid-sensors/hid-sensor-trigger.c
+++ b/drivers/iio/common/hid-sensors/hid-sensor-trigger.c
@@ -23,6 +23,7 @@
 #include <linux/irq.h>
 #include <linux/slab.h>
 #include <linux/delay.h>
+#include <linux/suspend.h>
 #include <linux/hid-sensor-hub.h>
 #include <linux/iio/iio.h>
 #include <linux/iio/trigger.h>
@@ -36,6 +37,9 @@ static int _hid_sensor_power_state(struct hid_sensor_common *st, bool state)
 	s32 poll_value = 0;
 
 	if (state) {
+		if (atomic_read(&st->suspend_in_progress))
+			return 0;
+
 		if (sensor_hub_device_open(st->hsdev))
 			return -EIO;
 
@@ -113,6 +117,28 @@ int hid_sensor_power_state(struct hid_sensor_common *st, bool state)
 #endif
 }
 
+static int hid_sensor_pm_notifier(struct notifier_block *nb, unsigned long val,
+				  void *ptr)
+{
+	struct hid_sensor_common *common =
+			container_of(nb, struct hid_sensor_common, pm_nb);
+
+	switch (val) {
+	case PM_HIBERNATION_PREPARE:
+	case PM_SUSPEND_PREPARE:
+		atomic_set(&common->suspend_in_progress, 1);
+		break;
+	case PM_POST_HIBERNATION:
+	case PM_POST_SUSPEND:
+	case PM_POST_RESTORE:
+		atomic_set(&common->suspend_in_progress, 0);
+		break;
+	default:
+		break;
+	}
+	return 0;
+}
+
 static int hid_sensor_data_rdy_trigger_set_state(struct iio_trigger *trig,
 						bool state)
 {
@@ -121,6 +147,7 @@ static int hid_sensor_data_rdy_trigger_set_state(struct iio_trigger *trig,
 
 void hid_sensor_remove_trigger(struct hid_sensor_common *attrb)
 {
+	unregister_pm_notifier(&attrb->pm_nb);
 	iio_trigger_unregister(attrb->trigger);
 	iio_trigger_free(attrb->trigger);
 }
@@ -168,6 +195,10 @@ int hid_sensor_setup_trigger(struct iio_dev *indio_dev, const char *name,
 					 3000);
 	pm_runtime_use_autosuspend(&attrb->pdev->dev);
 
+	atomic_set(&attrb->suspend_in_progress, 0);
+	attrb->pm_nb.notifier_call = hid_sensor_pm_notifier;
+	register_pm_notifier(&attrb->pm_nb);
+
 	return ret;
 error_unreg_trigger:
 	iio_trigger_unregister(trig);
diff --git a/include/linux/hid-sensor-hub.h b/include/linux/hid-sensor-hub.h
index 0042bf3..e38c72a 100644
--- a/include/linux/hid-sensor-hub.h
+++ b/include/linux/hid-sensor-hub.h
@@ -230,6 +230,8 @@ struct hid_sensor_common {
 	struct platform_device *pdev;
 	unsigned usage_id;
 	atomic_t data_ready;
+	atomic_t suspend_in_progress;
+	struct notifier_block pm_nb;
 	struct iio_trigger *trigger;
 	struct hid_sensor_hub_attribute_info poll;
 	struct hid_sensor_hub_attribute_info report_state;
-- 
1.9.3


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] HID: hid-sensor-hub: Optimize suspend/resume time
  2015-05-15 17:40 [PATCH] HID: hid-sensor-hub: Optimize suspend/resume time Srinivas Pandruvada
@ 2015-05-17  8:22 ` Jonathan Cameron
  2015-05-18 15:25   ` Srinivas Pandruvada
  0 siblings, 1 reply; 4+ messages in thread
From: Jonathan Cameron @ 2015-05-17  8:22 UTC (permalink / raw)
  To: Srinivas Pandruvada; +Cc: linux-iio

On 15/05/15 18:40, Srinivas Pandruvada wrote:
> When system suspend is issued, the pm core issues resume call for all
> run time suspended devices. This is required for some devices to
> continue suspend.
> For sensor hub we don't need to runtime resume devices and then suspend.
> So when the system suspend is in progress, ignore call to power up
> the sensors. This has a significant impact on suspend/resume performance.
> 
> Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Hi Srinivas,

This isn't an area I know much about and am a little unlikely to get time to
dig into in the next few days. A quick grep didn't throw up lots of other
drivers doing this, so is there precedence somewhere?

Jonathan
> ---
>  .../iio/common/hid-sensors/hid-sensor-trigger.c    | 31 ++++++++++++++++++++++
>  include/linux/hid-sensor-hub.h                     |  2 ++
>  2 files changed, 33 insertions(+)
> 
> diff --git a/drivers/iio/common/hid-sensors/hid-sensor-trigger.c b/drivers/iio/common/hid-sensors/hid-sensor-trigger.c
> index 610fc98..d9170d2 100644
> --- a/drivers/iio/common/hid-sensors/hid-sensor-trigger.c
> +++ b/drivers/iio/common/hid-sensors/hid-sensor-trigger.c
> @@ -23,6 +23,7 @@
>  #include <linux/irq.h>
>  #include <linux/slab.h>
>  #include <linux/delay.h>
> +#include <linux/suspend.h>
>  #include <linux/hid-sensor-hub.h>
>  #include <linux/iio/iio.h>
>  #include <linux/iio/trigger.h>
> @@ -36,6 +37,9 @@ static int _hid_sensor_power_state(struct hid_sensor_common *st, bool state)
>  	s32 poll_value = 0;
>  
>  	if (state) {
> +		if (atomic_read(&st->suspend_in_progress))
> +			return 0;
> +
>  		if (sensor_hub_device_open(st->hsdev))
>  			return -EIO;
>  
> @@ -113,6 +117,28 @@ int hid_sensor_power_state(struct hid_sensor_common *st, bool state)
>  #endif
>  }
>  
> +static int hid_sensor_pm_notifier(struct notifier_block *nb, unsigned long val,
> +				  void *ptr)
> +{
> +	struct hid_sensor_common *common =
> +			container_of(nb, struct hid_sensor_common, pm_nb);
> +
> +	switch (val) {
> +	case PM_HIBERNATION_PREPARE:
> +	case PM_SUSPEND_PREPARE:
> +		atomic_set(&common->suspend_in_progress, 1);
> +		break;
> +	case PM_POST_HIBERNATION:
> +	case PM_POST_SUSPEND:
> +	case PM_POST_RESTORE:
> +		atomic_set(&common->suspend_in_progress, 0);
> +		break;
> +	default:
> +		break;
> +	}
> +	return 0;
> +}
> +
>  static int hid_sensor_data_rdy_trigger_set_state(struct iio_trigger *trig,
>  						bool state)
>  {
> @@ -121,6 +147,7 @@ static int hid_sensor_data_rdy_trigger_set_state(struct iio_trigger *trig,
>  
>  void hid_sensor_remove_trigger(struct hid_sensor_common *attrb)
>  {
> +	unregister_pm_notifier(&attrb->pm_nb);
>  	iio_trigger_unregister(attrb->trigger);
>  	iio_trigger_free(attrb->trigger);
>  }
> @@ -168,6 +195,10 @@ int hid_sensor_setup_trigger(struct iio_dev *indio_dev, const char *name,
>  					 3000);
>  	pm_runtime_use_autosuspend(&attrb->pdev->dev);
>  
> +	atomic_set(&attrb->suspend_in_progress, 0);
> +	attrb->pm_nb.notifier_call = hid_sensor_pm_notifier;
> +	register_pm_notifier(&attrb->pm_nb);
> +
>  	return ret;
>  error_unreg_trigger:
>  	iio_trigger_unregister(trig);
> diff --git a/include/linux/hid-sensor-hub.h b/include/linux/hid-sensor-hub.h
> index 0042bf3..e38c72a 100644
> --- a/include/linux/hid-sensor-hub.h
> +++ b/include/linux/hid-sensor-hub.h
> @@ -230,6 +230,8 @@ struct hid_sensor_common {
>  	struct platform_device *pdev;
>  	unsigned usage_id;
>  	atomic_t data_ready;
> +	atomic_t suspend_in_progress;
> +	struct notifier_block pm_nb;
>  	struct iio_trigger *trigger;
>  	struct hid_sensor_hub_attribute_info poll;
>  	struct hid_sensor_hub_attribute_info report_state;
> 


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] HID: hid-sensor-hub: Optimize suspend/resume time
  2015-05-17  8:22 ` Jonathan Cameron
@ 2015-05-18 15:25   ` Srinivas Pandruvada
  2015-05-28 15:19     ` Pandruvada, Srinivas
  0 siblings, 1 reply; 4+ messages in thread
From: Srinivas Pandruvada @ 2015-05-18 15:25 UTC (permalink / raw)
  To: Jonathan Cameron; +Cc: linux-iio

On Sun, 2015-05-17 at 09:22 +0100, Jonathan Cameron wrote:
> On 15/05/15 18:40, Srinivas Pandruvada wrote:
> > When system suspend is issued, the pm core issues resume call for all
> > run time suspended devices. This is required for some devices to
> > continue suspend.
> > For sensor hub we don't need to runtime resume devices and then suspend.
> > So when the system suspend is in progress, ignore call to power up
> > the sensors. This has a significant impact on suspend/resume performance.
> > 
> > Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
> Hi Srinivas,
Hi Jonathan,
> 
> This isn't an area I know much about and am a little unlikely to get time to
> dig into in the next few days. A quick grep didn't throw up lots of other
> drivers doing this, so is there precedence somewhere?
> 
We are trying trying to submit patch for similar for usb xhci, which has
the same issue with the delay. 
Let me check with Rafael to see if I have some better option. May be we
need some support in PM core.

Thanks,
Srinivas

> Jonathan
> > ---
> >  .../iio/common/hid-sensors/hid-sensor-trigger.c    | 31 ++++++++++++++++++++++
> >  include/linux/hid-sensor-hub.h                     |  2 ++
> >  2 files changed, 33 insertions(+)
> > 
> > diff --git a/drivers/iio/common/hid-sensors/hid-sensor-trigger.c b/drivers/iio/common/hid-sensors/hid-sensor-trigger.c
> > index 610fc98..d9170d2 100644
> > --- a/drivers/iio/common/hid-sensors/hid-sensor-trigger.c
> > +++ b/drivers/iio/common/hid-sensors/hid-sensor-trigger.c
> > @@ -23,6 +23,7 @@
> >  #include <linux/irq.h>
> >  #include <linux/slab.h>
> >  #include <linux/delay.h>
> > +#include <linux/suspend.h>
> >  #include <linux/hid-sensor-hub.h>
> >  #include <linux/iio/iio.h>
> >  #include <linux/iio/trigger.h>
> > @@ -36,6 +37,9 @@ static int _hid_sensor_power_state(struct hid_sensor_common *st, bool state)
> >  	s32 poll_value = 0;
> >  
> >  	if (state) {
> > +		if (atomic_read(&st->suspend_in_progress))
> > +			return 0;
> > +
> >  		if (sensor_hub_device_open(st->hsdev))
> >  			return -EIO;
> >  
> > @@ -113,6 +117,28 @@ int hid_sensor_power_state(struct hid_sensor_common *st, bool state)
> >  #endif
> >  }
> >  
> > +static int hid_sensor_pm_notifier(struct notifier_block *nb, unsigned long val,
> > +				  void *ptr)
> > +{
> > +	struct hid_sensor_common *common =
> > +			container_of(nb, struct hid_sensor_common, pm_nb);
> > +
> > +	switch (val) {
> > +	case PM_HIBERNATION_PREPARE:
> > +	case PM_SUSPEND_PREPARE:
> > +		atomic_set(&common->suspend_in_progress, 1);
> > +		break;
> > +	case PM_POST_HIBERNATION:
> > +	case PM_POST_SUSPEND:
> > +	case PM_POST_RESTORE:
> > +		atomic_set(&common->suspend_in_progress, 0);
> > +		break;
> > +	default:
> > +		break;
> > +	}
> > +	return 0;
> > +}
> > +
> >  static int hid_sensor_data_rdy_trigger_set_state(struct iio_trigger *trig,
> >  						bool state)
> >  {
> > @@ -121,6 +147,7 @@ static int hid_sensor_data_rdy_trigger_set_state(struct iio_trigger *trig,
> >  
> >  void hid_sensor_remove_trigger(struct hid_sensor_common *attrb)
> >  {
> > +	unregister_pm_notifier(&attrb->pm_nb);
> >  	iio_trigger_unregister(attrb->trigger);
> >  	iio_trigger_free(attrb->trigger);
> >  }
> > @@ -168,6 +195,10 @@ int hid_sensor_setup_trigger(struct iio_dev *indio_dev, const char *name,
> >  					 3000);
> >  	pm_runtime_use_autosuspend(&attrb->pdev->dev);
> >  
> > +	atomic_set(&attrb->suspend_in_progress, 0);
> > +	attrb->pm_nb.notifier_call = hid_sensor_pm_notifier;
> > +	register_pm_notifier(&attrb->pm_nb);
> > +
> >  	return ret;
> >  error_unreg_trigger:
> >  	iio_trigger_unregister(trig);
> > diff --git a/include/linux/hid-sensor-hub.h b/include/linux/hid-sensor-hub.h
> > index 0042bf3..e38c72a 100644
> > --- a/include/linux/hid-sensor-hub.h
> > +++ b/include/linux/hid-sensor-hub.h
> > @@ -230,6 +230,8 @@ struct hid_sensor_common {
> >  	struct platform_device *pdev;
> >  	unsigned usage_id;
> >  	atomic_t data_ready;
> > +	atomic_t suspend_in_progress;
> > +	struct notifier_block pm_nb;
> >  	struct iio_trigger *trigger;
> >  	struct hid_sensor_hub_attribute_info poll;
> >  	struct hid_sensor_hub_attribute_info report_state;
> > 
> 



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] HID: hid-sensor-hub: Optimize suspend/resume time
  2015-05-18 15:25   ` Srinivas Pandruvada
@ 2015-05-28 15:19     ` Pandruvada, Srinivas
  0 siblings, 0 replies; 4+ messages in thread
From: Pandruvada, Srinivas @ 2015-05-28 15:19 UTC (permalink / raw)
  To: jic23; +Cc: linux-iio

T24gTW9uLCAyMDE1LTA1LTE4IGF0IDA4OjI1IC0wNzAwLCBTcmluaXZhcyBQYW5kcnV2YWRhIHdy
b3RlOg0KPiBPbiBTdW4sIDIwMTUtMDUtMTcgYXQgMDk6MjIgKzAxMDAsIEpvbmF0aGFuIENhbWVy
b24gd3JvdGU6DQo+ID4gT24gMTUvMDUvMTUgMTg6NDAsIFNyaW5pdmFzIFBhbmRydXZhZGEgd3Jv
dGU6DQo+ID4gPiBXaGVuIHN5c3RlbSBzdXNwZW5kIGlzIGlzc3VlZCwgdGhlIHBtIGNvcmUgaXNz
dWVzIHJlc3VtZSBjYWxsIGZvciBhbGwNCj4gPiA+IHJ1biB0aW1lIHN1c3BlbmRlZCBkZXZpY2Vz
LiBUaGlzIGlzIHJlcXVpcmVkIGZvciBzb21lIGRldmljZXMgdG8NCj4gPiA+IGNvbnRpbnVlIHN1
c3BlbmQuDQo+ID4gPiBGb3Igc2Vuc29yIGh1YiB3ZSBkb24ndCBuZWVkIHRvIHJ1bnRpbWUgcmVz
dW1lIGRldmljZXMgYW5kIHRoZW4gc3VzcGVuZC4NCj4gPiA+IFNvIHdoZW4gdGhlIHN5c3RlbSBz
dXNwZW5kIGlzIGluIHByb2dyZXNzLCBpZ25vcmUgY2FsbCB0byBwb3dlciB1cA0KPiA+ID4gdGhl
IHNlbnNvcnMuIFRoaXMgaGFzIGEgc2lnbmlmaWNhbnQgaW1wYWN0IG9uIHN1c3BlbmQvcmVzdW1l
IHBlcmZvcm1hbmNlLg0KPiA+ID4gDQo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBTcmluaXZhcyBQYW5k
cnV2YWRhIDxzcmluaXZhcy5wYW5kcnV2YWRhQGxpbnV4LmludGVsLmNvbT4NCj4gPiBIaSBTcmlu
aXZhcywNCj4gSGkgSm9uYXRoYW4sDQo+ID4gDQo+ID4gVGhpcyBpc24ndCBhbiBhcmVhIEkga25v
dyBtdWNoIGFib3V0IGFuZCBhbSBhIGxpdHRsZSB1bmxpa2VseSB0byBnZXQgdGltZSB0bw0KPiA+
IGRpZyBpbnRvIGluIHRoZSBuZXh0IGZldyBkYXlzLiBBIHF1aWNrIGdyZXAgZGlkbid0IHRocm93
IHVwIGxvdHMgb2Ygb3RoZXINCj4gPiBkcml2ZXJzIGRvaW5nIHRoaXMsIHNvIGlzIHRoZXJlIHBy
ZWNlZGVuY2Ugc29tZXdoZXJlPw0KPiA+IA0KVGhlcmUgYXJlIHNvbWUgaXNzdWUgaW4gTGludXgg
UE0gZG9tYWluLCB3aGljaCBwcmV2ZW50cyB1c2luZyBzb21lDQptZWNoYW5pc20gdG8gcHJldmVu
dCBydW50aW1lIHJlc3VtZSBhbmQgcmVndWxhciByZXN1bWUgZm9yIHRoaXMgZGV2aWNlLg0KQWxz
byBzaW5jZSBpaW8gZGV2aWNlcyBoYXMgdHJpZ2dlciBkZXZpY2VzIGFzIGNoaWxkcmVuIHdoaWNo
IGRvbid0IGhhdmUNClBNIGNhbGxiYWNrcywgdGhlIFBNIGNvcmUgcmVzZXRzIHNvbWUgZmxhZ3Mu
DQpJIGFtIHdvcmtpbmcgd2l0aCBSYWZhZWwgdG8gYWRkcmVzcyBpc3N1ZXMgaW4gY29yZSBmaXJz
dCwgdGhlbiBJIGNhbg0KY29tZSB1cCB3aXRoIHNvbWUgYWx0ZXJuYXRpdmUgc29sdXRpb24uDQoN
ClRoYW5rcywNClNyaW5pdmFzDQoNCg0KPiBXZSBhcmUgdHJ5aW5nIHRyeWluZyB0byBzdWJtaXQg
cGF0Y2ggZm9yIHNpbWlsYXIgZm9yIHVzYiB4aGNpLCB3aGljaCBoYXMNCj4gdGhlIHNhbWUgaXNz
dWUgd2l0aCB0aGUgZGVsYXkuIA0KPiBMZXQgbWUgY2hlY2sgd2l0aCBSYWZhZWwgdG8gc2VlIGlm
IEkgaGF2ZSBzb21lIGJldHRlciBvcHRpb24uIE1heSBiZSB3ZQ0KPiBuZWVkIHNvbWUgc3VwcG9y
dCBpbiBQTSBjb3JlLg0KPiANCj4gVGhhbmtzLA0KPiBTcmluaXZhcw0KPiANCj4gPiBKb25hdGhh
bg0KPiA+ID4gLS0tDQo+ID4gPiAgLi4uL2lpby9jb21tb24vaGlkLXNlbnNvcnMvaGlkLXNlbnNv
ci10cmlnZ2VyLmMgICAgfCAzMSArKysrKysrKysrKysrKysrKysrKysrDQo+ID4gPiAgaW5jbHVk
ZS9saW51eC9oaWQtc2Vuc29yLWh1Yi5oICAgICAgICAgICAgICAgICAgICAgfCAgMiArKw0KPiA+
ID4gIDIgZmlsZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKQ0KPiA+ID4gDQo+ID4gPiBkaWZm
IC0tZ2l0IGEvZHJpdmVycy9paW8vY29tbW9uL2hpZC1zZW5zb3JzL2hpZC1zZW5zb3ItdHJpZ2dl
ci5jIGIvZHJpdmVycy9paW8vY29tbW9uL2hpZC1zZW5zb3JzL2hpZC1zZW5zb3ItdHJpZ2dlci5j
DQo+ID4gPiBpbmRleCA2MTBmYzk4Li5kOTE3MGQyIDEwMDY0NA0KPiA+ID4gLS0tIGEvZHJpdmVy
cy9paW8vY29tbW9uL2hpZC1zZW5zb3JzL2hpZC1zZW5zb3ItdHJpZ2dlci5jDQo+ID4gPiArKysg
Yi9kcml2ZXJzL2lpby9jb21tb24vaGlkLXNlbnNvcnMvaGlkLXNlbnNvci10cmlnZ2VyLmMNCj4g
PiA+IEBAIC0yMyw2ICsyMyw3IEBADQo+ID4gPiAgI2luY2x1ZGUgPGxpbnV4L2lycS5oPg0KPiA+
ID4gICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+DQo+ID4gPiAgI2luY2x1ZGUgPGxpbnV4L2RlbGF5
Lmg+DQo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L3N1c3BlbmQuaD4NCj4gPiA+ICAjaW5jbHVkZSA8
bGludXgvaGlkLXNlbnNvci1odWIuaD4NCj4gPiA+ICAjaW5jbHVkZSA8bGludXgvaWlvL2lpby5o
Pg0KPiA+ID4gICNpbmNsdWRlIDxsaW51eC9paW8vdHJpZ2dlci5oPg0KPiA+ID4gQEAgLTM2LDYg
KzM3LDkgQEAgc3RhdGljIGludCBfaGlkX3NlbnNvcl9wb3dlcl9zdGF0ZShzdHJ1Y3QgaGlkX3Nl
bnNvcl9jb21tb24gKnN0LCBib29sIHN0YXRlKQ0KPiA+ID4gIAlzMzIgcG9sbF92YWx1ZSA9IDA7
DQo+ID4gPiAgDQo+ID4gPiAgCWlmIChzdGF0ZSkgew0KPiA+ID4gKwkJaWYgKGF0b21pY19yZWFk
KCZzdC0+c3VzcGVuZF9pbl9wcm9ncmVzcykpDQo+ID4gPiArCQkJcmV0dXJuIDA7DQo+ID4gPiAr
DQo+ID4gPiAgCQlpZiAoc2Vuc29yX2h1Yl9kZXZpY2Vfb3BlbihzdC0+aHNkZXYpKQ0KPiA+ID4g
IAkJCXJldHVybiAtRUlPOw0KPiA+ID4gIA0KPiA+ID4gQEAgLTExMyw2ICsxMTcsMjggQEAgaW50
IGhpZF9zZW5zb3JfcG93ZXJfc3RhdGUoc3RydWN0IGhpZF9zZW5zb3JfY29tbW9uICpzdCwgYm9v
bCBzdGF0ZSkNCj4gPiA+ICAjZW5kaWYNCj4gPiA+ICB9DQo+ID4gPiAgDQo+ID4gPiArc3RhdGlj
IGludCBoaWRfc2Vuc29yX3BtX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVu
c2lnbmVkIGxvbmcgdmFsLA0KPiA+ID4gKwkJCQkgIHZvaWQgKnB0cikNCj4gPiA+ICt7DQo+ID4g
PiArCXN0cnVjdCBoaWRfc2Vuc29yX2NvbW1vbiAqY29tbW9uID0NCj4gPiA+ICsJCQljb250YWlu
ZXJfb2YobmIsIHN0cnVjdCBoaWRfc2Vuc29yX2NvbW1vbiwgcG1fbmIpOw0KPiA+ID4gKw0KPiA+
ID4gKwlzd2l0Y2ggKHZhbCkgew0KPiA+ID4gKwljYXNlIFBNX0hJQkVSTkFUSU9OX1BSRVBBUkU6
DQo+ID4gPiArCWNhc2UgUE1fU1VTUEVORF9QUkVQQVJFOg0KPiA+ID4gKwkJYXRvbWljX3NldCgm
Y29tbW9uLT5zdXNwZW5kX2luX3Byb2dyZXNzLCAxKTsNCj4gPiA+ICsJCWJyZWFrOw0KPiA+ID4g
KwljYXNlIFBNX1BPU1RfSElCRVJOQVRJT046DQo+ID4gPiArCWNhc2UgUE1fUE9TVF9TVVNQRU5E
Og0KPiA+ID4gKwljYXNlIFBNX1BPU1RfUkVTVE9SRToNCj4gPiA+ICsJCWF0b21pY19zZXQoJmNv
bW1vbi0+c3VzcGVuZF9pbl9wcm9ncmVzcywgMCk7DQo+ID4gPiArCQlicmVhazsNCj4gPiA+ICsJ
ZGVmYXVsdDoNCj4gPiA+ICsJCWJyZWFrOw0KPiA+ID4gKwl9DQo+ID4gPiArCXJldHVybiAwOw0K
PiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICBzdGF0aWMgaW50IGhpZF9zZW5zb3JfZGF0YV9yZHlf
dHJpZ2dlcl9zZXRfc3RhdGUoc3RydWN0IGlpb190cmlnZ2VyICp0cmlnLA0KPiA+ID4gIAkJCQkJ
CWJvb2wgc3RhdGUpDQo+ID4gPiAgew0KPiA+ID4gQEAgLTEyMSw2ICsxNDcsNyBAQCBzdGF0aWMg
aW50IGhpZF9zZW5zb3JfZGF0YV9yZHlfdHJpZ2dlcl9zZXRfc3RhdGUoc3RydWN0IGlpb190cmln
Z2VyICp0cmlnLA0KPiA+ID4gIA0KPiA+ID4gIHZvaWQgaGlkX3NlbnNvcl9yZW1vdmVfdHJpZ2dl
cihzdHJ1Y3QgaGlkX3NlbnNvcl9jb21tb24gKmF0dHJiKQ0KPiA+ID4gIHsNCj4gPiA+ICsJdW5y
ZWdpc3Rlcl9wbV9ub3RpZmllcigmYXR0cmItPnBtX25iKTsNCj4gPiA+ICAJaWlvX3RyaWdnZXJf
dW5yZWdpc3RlcihhdHRyYi0+dHJpZ2dlcik7DQo+ID4gPiAgCWlpb190cmlnZ2VyX2ZyZWUoYXR0
cmItPnRyaWdnZXIpOw0KPiA+ID4gIH0NCj4gPiA+IEBAIC0xNjgsNiArMTk1LDEwIEBAIGludCBo
aWRfc2Vuc29yX3NldHVwX3RyaWdnZXIoc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiwgY29uc3Qg
Y2hhciAqbmFtZSwNCj4gPiA+ICAJCQkJCSAzMDAwKTsNCj4gPiA+ICAJcG1fcnVudGltZV91c2Vf
YXV0b3N1c3BlbmQoJmF0dHJiLT5wZGV2LT5kZXYpOw0KPiA+ID4gIA0KPiA+ID4gKwlhdG9taWNf
c2V0KCZhdHRyYi0+c3VzcGVuZF9pbl9wcm9ncmVzcywgMCk7DQo+ID4gPiArCWF0dHJiLT5wbV9u
Yi5ub3RpZmllcl9jYWxsID0gaGlkX3NlbnNvcl9wbV9ub3RpZmllcjsNCj4gPiA+ICsJcmVnaXN0
ZXJfcG1fbm90aWZpZXIoJmF0dHJiLT5wbV9uYik7DQo+ID4gPiArDQo+ID4gPiAgCXJldHVybiBy
ZXQ7DQo+ID4gPiAgZXJyb3JfdW5yZWdfdHJpZ2dlcjoNCj4gPiA+ICAJaWlvX3RyaWdnZXJfdW5y
ZWdpc3Rlcih0cmlnKTsNCj4gPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2hpZC1zZW5z
b3ItaHViLmggYi9pbmNsdWRlL2xpbnV4L2hpZC1zZW5zb3ItaHViLmgNCj4gPiA+IGluZGV4IDAw
NDJiZjMuLmUzOGM3MmEgMTAwNjQ0DQo+ID4gPiAtLS0gYS9pbmNsdWRlL2xpbnV4L2hpZC1zZW5z
b3ItaHViLmgNCj4gPiA+ICsrKyBiL2luY2x1ZGUvbGludXgvaGlkLXNlbnNvci1odWIuaA0KPiA+
ID4gQEAgLTIzMCw2ICsyMzAsOCBAQCBzdHJ1Y3QgaGlkX3NlbnNvcl9jb21tb24gew0KPiA+ID4g
IAlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2Ow0KPiA+ID4gIAl1bnNpZ25lZCB1c2FnZV9p
ZDsNCj4gPiA+ICAJYXRvbWljX3QgZGF0YV9yZWFkeTsNCj4gPiA+ICsJYXRvbWljX3Qgc3VzcGVu
ZF9pbl9wcm9ncmVzczsNCj4gPiA+ICsJc3RydWN0IG5vdGlmaWVyX2Jsb2NrIHBtX25iOw0KPiA+
ID4gIAlzdHJ1Y3QgaWlvX3RyaWdnZXIgKnRyaWdnZXI7DQo+ID4gPiAgCXN0cnVjdCBoaWRfc2Vu
c29yX2h1Yl9hdHRyaWJ1dGVfaW5mbyBwb2xsOw0KPiA+ID4gIAlzdHJ1Y3QgaGlkX3NlbnNvcl9o
dWJfYXR0cmlidXRlX2luZm8gcmVwb3J0X3N0YXRlOw0KPiA+ID4gDQo+ID4gDQo+IA0KDQo=

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-05-28 15:19 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-05-15 17:40 [PATCH] HID: hid-sensor-hub: Optimize suspend/resume time Srinivas Pandruvada
2015-05-17  8:22 ` Jonathan Cameron
2015-05-18 15:25   ` Srinivas Pandruvada
2015-05-28 15:19     ` Pandruvada, Srinivas

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.