On Wed, 2017-02-22 at 17:17 +0800, Song Hongyan wrote: > In function _hid_sensor_power_state(), when > hid_sensor_read_poll_value() > is called, sensor's all properties will be updated by the value from > sensor hardware/firmware. > In some implementation, sensor hardware/firmware will do a power > cycle > during S3. In this case, after resume, once > hid_sensor_read_poll_value() > is called, sensor's all properties which are kept by driver during S3 > will be changed to default value. > But instead, if a set feature function is called first, sensor > hardware/firmware will be recovered to the last status. So change the > sensor_hub_set_feature() calling order to behind of set feature > function > to avoid sensor properties lose. > > Signed-off-by: Song Hongyan <hongyan.song@xxxxxxxxx> Acked-by: Srinivas Pandruvada <srinivas.pandruvada@xxxxxxxxxxxxxxx> > --- > drivers/iio/common/hid-sensors/hid-sensor-trigger.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/iio/common/hid-sensors/hid-sensor-trigger.c > b/drivers/iio/common/hid-sensors/hid-sensor-trigger.c > index a3cce3a..ecf592d 100644 > --- a/drivers/iio/common/hid-sensors/hid-sensor-trigger.c > +++ b/drivers/iio/common/hid-sensors/hid-sensor-trigger.c > @@ -51,8 +51,6 @@ static int _hid_sensor_power_state(struct > hid_sensor_common *st, bool state) > st->report_state.report_id, > st->report_state.index, > HID_USAGE_SENSOR_PROP_REPORTING_STATE_ALL_EV > ENTS_ENUM); > - > - poll_value = hid_sensor_read_poll_value(st); > } else { > int val; > > @@ -89,7 +87,9 @@ static int _hid_sensor_power_state(struct > hid_sensor_common *st, bool state) > sensor_hub_get_feature(st->hsdev, st->power_state.report_id, > st->power_state.index, > sizeof(state_val), &state_val); > - if (state && poll_value) > + if (state) > + poll_value = hid_sensor_read_poll_value(st); > + if (poll_value > 0) > msleep_interruptible(poll_value * 2); > > return 0;��.n��������+%������w��{.n�����{��)��^n�r������&��z�ޗ�zf���h���~����������_��+v���)ߣ�