aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/iio
diff options
context:
space:
mode:
authorCristina Opriceana <cristina.opriceana@gmail.com>2015-04-01 07:01:11 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-04-01 11:24:09 -0400
commit66687e6aed4ab25ab5aac52ed94b277c4db2093f (patch)
tree1787324b2f19e9b3f4899f4397dd89241eade79c /drivers/iio
parentaa5587f3cb9fde2db852b5549ee561198aa95748 (diff)
iio: magnetometer: mag3110: Place driver on standby on error
Place driver on standby mode on error in order to prevent wasting power. Move standby function above to be seen by the new call. Signed-off-by: Cristina Opriceana <cristina.opriceana@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/iio')
-rw-r--r--drivers/iio/magnetometer/mag3110.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/drivers/iio/magnetometer/mag3110.c b/drivers/iio/magnetometer/mag3110.c
index e3106b43ef48..261d517428e4 100644
--- a/drivers/iio/magnetometer/mag3110.c
+++ b/drivers/iio/magnetometer/mag3110.c
@@ -321,6 +321,12 @@ static const struct iio_info mag3110_info = {
321 321
322static const unsigned long mag3110_scan_masks[] = {0x7, 0xf, 0}; 322static const unsigned long mag3110_scan_masks[] = {0x7, 0xf, 0};
323 323
324static int mag3110_standby(struct mag3110_data *data)
325{
326 return i2c_smbus_write_byte_data(data->client, MAG3110_CTRL_REG1,
327 data->ctrl_reg1 & ~MAG3110_CTRL_AC);
328}
329
324static int mag3110_probe(struct i2c_client *client, 330static int mag3110_probe(struct i2c_client *client,
325 const struct i2c_device_id *id) 331 const struct i2c_device_id *id)
326{ 332{
@@ -360,12 +366,12 @@ static int mag3110_probe(struct i2c_client *client,
360 ret = i2c_smbus_write_byte_data(client, MAG3110_CTRL_REG2, 366 ret = i2c_smbus_write_byte_data(client, MAG3110_CTRL_REG2,
361 MAG3110_CTRL_AUTO_MRST_EN); 367 MAG3110_CTRL_AUTO_MRST_EN);
362 if (ret < 0) 368 if (ret < 0)
363 return ret; 369 goto standby_on_error;
364 370
365 ret = iio_triggered_buffer_setup(indio_dev, NULL, 371 ret = iio_triggered_buffer_setup(indio_dev, NULL,
366 mag3110_trigger_handler, NULL); 372 mag3110_trigger_handler, NULL);
367 if (ret < 0) 373 if (ret < 0)
368 return ret; 374 goto standby_on_error;
369 375
370 ret = iio_device_register(indio_dev); 376 ret = iio_device_register(indio_dev);
371 if (ret < 0) 377 if (ret < 0)
@@ -374,15 +380,11 @@ static int mag3110_probe(struct i2c_client *client,
374 380
375buffer_cleanup: 381buffer_cleanup:
376 iio_triggered_buffer_cleanup(indio_dev); 382 iio_triggered_buffer_cleanup(indio_dev);
383standby_on_error:
384 mag3110_standby(iio_priv(indio_dev));
377 return ret; 385 return ret;
378} 386}
379 387
380static int mag3110_standby(struct mag3110_data *data)
381{
382 return i2c_smbus_write_byte_data(data->client, MAG3110_CTRL_REG1,
383 data->ctrl_reg1 & ~MAG3110_CTRL_AC);
384}
385
386static int mag3110_remove(struct i2c_client *client) 388static int mag3110_remove(struct i2c_client *client)
387{ 389{
388 struct iio_dev *indio_dev = i2c_get_clientdata(client); 390 struct iio_dev *indio_dev = i2c_get_clientdata(client);