|
@@ -333,6 +333,13 @@ static int ltr501_init(struct ltr501_data *data)
|
|
|
data->ps_contr);
|
|
|
}
|
|
|
|
|
|
+static int ltr501_powerdown(struct ltr501_data *data)
|
|
|
+{
|
|
|
+ return ltr501_write_contr(data->client,
|
|
|
+ data->als_contr & ~LTR501_CONTR_ACTIVE,
|
|
|
+ data->ps_contr & ~LTR501_CONTR_ACTIVE);
|
|
|
+}
|
|
|
+
|
|
|
static int ltr501_probe(struct i2c_client *client,
|
|
|
const struct i2c_device_id *id)
|
|
|
{
|
|
@@ -370,7 +377,7 @@ static int ltr501_probe(struct i2c_client *client,
|
|
|
ret = iio_triggered_buffer_setup(indio_dev, NULL,
|
|
|
ltr501_trigger_handler, NULL);
|
|
|
if (ret)
|
|
|
- return ret;
|
|
|
+ goto powerdown_on_error;
|
|
|
|
|
|
ret = iio_device_register(indio_dev);
|
|
|
if (ret)
|
|
@@ -380,16 +387,11 @@ static int ltr501_probe(struct i2c_client *client,
|
|
|
|
|
|
error_unreg_buffer:
|
|
|
iio_triggered_buffer_cleanup(indio_dev);
|
|
|
+powerdown_on_error:
|
|
|
+ ltr501_powerdown(data);
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-static int ltr501_powerdown(struct ltr501_data *data)
|
|
|
-{
|
|
|
- return ltr501_write_contr(data->client,
|
|
|
- data->als_contr & ~LTR501_CONTR_ACTIVE,
|
|
|
- data->ps_contr & ~LTR501_CONTR_ACTIVE);
|
|
|
-}
|
|
|
-
|
|
|
static int ltr501_remove(struct i2c_client *client)
|
|
|
{
|
|
|
struct iio_dev *indio_dev = i2c_get_clientdata(client);
|