aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/iio/orientation
diff options
context:
space:
mode:
authorSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>2014-04-18 19:22:00 -0400
committerJonathan Cameron <jic23@kernel.org>2014-05-05 05:59:49 -0400
commit56ff6be608659ac06d4e3cc5827476efa29d610f (patch)
tree8d08e07b518db810f8f6bee492ba7dba08683b84 /drivers/iio/orientation
parenta269b9a0a27675c34c62c4e20c4ffb62054cd51a (diff)
iio: hid-sensors: Add API to power on/off
Added an API to allow client drivers to turn ON and OFF sensors for quick read. Added data_read as counting varaible instead of boolean, so that sensor is powered off only when last user released it. Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Diffstat (limited to 'drivers/iio/orientation')
-rw-r--r--drivers/iio/orientation/hid-sensor-incl-3d.c7
-rw-r--r--drivers/iio/orientation/hid-sensor-rotation.c8
2 files changed, 6 insertions, 9 deletions
diff --git a/drivers/iio/orientation/hid-sensor-incl-3d.c b/drivers/iio/orientation/hid-sensor-incl-3d.c
index f0c465cc192a..bf11678dd04e 100644
--- a/drivers/iio/orientation/hid-sensor-incl-3d.c
+++ b/drivers/iio/orientation/hid-sensor-incl-3d.c
@@ -200,9 +200,8 @@ static int incl_3d_proc_event(struct hid_sensor_hub_device *hsdev,
200 struct iio_dev *indio_dev = platform_get_drvdata(priv); 200 struct iio_dev *indio_dev = platform_get_drvdata(priv);
201 struct incl_3d_state *incl_state = iio_priv(indio_dev); 201 struct incl_3d_state *incl_state = iio_priv(indio_dev);
202 202
203 dev_dbg(&indio_dev->dev, "incl_3d_proc_event [%d]\n", 203 dev_dbg(&indio_dev->dev, "incl_3d_proc_event\n");
204 incl_state->common_attributes.data_ready); 204 if (atomic_read(&incl_state->common_attributes.data_ready))
205 if (incl_state->common_attributes.data_ready)
206 hid_sensor_push_data(indio_dev, 205 hid_sensor_push_data(indio_dev,
207 (u8 *)incl_state->incl_val, 206 (u8 *)incl_state->incl_val,
208 sizeof(incl_state->incl_val)); 207 sizeof(incl_state->incl_val));
@@ -358,7 +357,7 @@ static int hid_incl_3d_probe(struct platform_device *pdev)
358 dev_err(&pdev->dev, "failed to initialize trigger buffer\n"); 357 dev_err(&pdev->dev, "failed to initialize trigger buffer\n");
359 goto error_free_dev_mem; 358 goto error_free_dev_mem;
360 } 359 }
361 incl_state->common_attributes.data_ready = false; 360 atomic_set(&incl_state->common_attributes.data_ready, 0);
362 ret = hid_sensor_setup_trigger(indio_dev, name, 361 ret = hid_sensor_setup_trigger(indio_dev, name,
363 &incl_state->common_attributes); 362 &incl_state->common_attributes);
364 if (ret) { 363 if (ret) {
diff --git a/drivers/iio/orientation/hid-sensor-rotation.c b/drivers/iio/orientation/hid-sensor-rotation.c
index 51387bbc1ce1..dccf848e8b0f 100644
--- a/drivers/iio/orientation/hid-sensor-rotation.c
+++ b/drivers/iio/orientation/hid-sensor-rotation.c
@@ -145,10 +145,8 @@ static int dev_rot_proc_event(struct hid_sensor_hub_device *hsdev,
145 struct iio_dev *indio_dev = platform_get_drvdata(priv); 145 struct iio_dev *indio_dev = platform_get_drvdata(priv);
146 struct dev_rot_state *rot_state = iio_priv(indio_dev); 146 struct dev_rot_state *rot_state = iio_priv(indio_dev);
147 147
148 dev_dbg(&indio_dev->dev, "dev_rot_proc_event [%d]\n", 148 dev_dbg(&indio_dev->dev, "dev_rot_proc_event\n");
149 rot_state->common_attributes.data_ready); 149 if (atomic_read(&rot_state->common_attributes.data_ready))
150
151 if (rot_state->common_attributes.data_ready)
152 hid_sensor_push_data(indio_dev, 150 hid_sensor_push_data(indio_dev,
153 (u8 *)rot_state->sampled_vals, 151 (u8 *)rot_state->sampled_vals,
154 sizeof(rot_state->sampled_vals)); 152 sizeof(rot_state->sampled_vals));
@@ -272,7 +270,7 @@ static int hid_dev_rot_probe(struct platform_device *pdev)
272 dev_err(&pdev->dev, "failed to initialize trigger buffer\n"); 270 dev_err(&pdev->dev, "failed to initialize trigger buffer\n");
273 return ret; 271 return ret;
274 } 272 }
275 rot_state->common_attributes.data_ready = false; 273 atomic_set(&rot_state->common_attributes.data_ready, 0);
276 ret = hid_sensor_setup_trigger(indio_dev, name, 274 ret = hid_sensor_setup_trigger(indio_dev, name,
277 &rot_state->common_attributes); 275 &rot_state->common_attributes);
278 if (ret) { 276 if (ret) {