Commit 9d02daf7 authored by Irina Tirdea's avatar Irina Tirdea Committed by Jonathan Cameron

iio: accel: kxcjk-1013: power off device if probe fails

When the device is initialized in probe, it is also powered on.
If there is an error after the initialization, the device will
remain powered on.

Power off the device in case probe fails after device initialization.
Signed-off-by: default avatarIrina Tirdea <irina.tirdea@intel.com>
Suggested-by: default avatarDaniel Baluta <daniel.baluta@intel.com>
Reviewed-by: default avatarSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Signed-off-by: default avatarJonathan Cameron <jic23@kernel.org>
parent fbd123e9
...@@ -1240,21 +1240,25 @@ static int kxcjk1013_probe(struct i2c_client *client, ...@@ -1240,21 +1240,25 @@ static int kxcjk1013_probe(struct i2c_client *client,
KXCJK1013_IRQ_NAME, KXCJK1013_IRQ_NAME,
indio_dev); indio_dev);
if (ret) if (ret)
return ret; goto err_poweroff;
data->dready_trig = devm_iio_trigger_alloc(&client->dev, data->dready_trig = devm_iio_trigger_alloc(&client->dev,
"%s-dev%d", "%s-dev%d",
indio_dev->name, indio_dev->name,
indio_dev->id); indio_dev->id);
if (!data->dready_trig) if (!data->dready_trig) {
return -ENOMEM; ret = -ENOMEM;
goto err_poweroff;
}
data->motion_trig = devm_iio_trigger_alloc(&client->dev, data->motion_trig = devm_iio_trigger_alloc(&client->dev,
"%s-any-motion-dev%d", "%s-any-motion-dev%d",
indio_dev->name, indio_dev->name,
indio_dev->id); indio_dev->id);
if (!data->motion_trig) if (!data->motion_trig) {
return -ENOMEM; ret = -ENOMEM;
goto err_poweroff;
}
data->dready_trig->dev.parent = &client->dev; data->dready_trig->dev.parent = &client->dev;
data->dready_trig->ops = &kxcjk1013_trigger_ops; data->dready_trig->ops = &kxcjk1013_trigger_ops;
...@@ -1263,7 +1267,7 @@ static int kxcjk1013_probe(struct i2c_client *client, ...@@ -1263,7 +1267,7 @@ static int kxcjk1013_probe(struct i2c_client *client,
iio_trigger_get(indio_dev->trig); iio_trigger_get(indio_dev->trig);
ret = iio_trigger_register(data->dready_trig); ret = iio_trigger_register(data->dready_trig);
if (ret) if (ret)
return ret; goto err_poweroff;
data->motion_trig->dev.parent = &client->dev; data->motion_trig->dev.parent = &client->dev;
data->motion_trig->ops = &kxcjk1013_trigger_ops; data->motion_trig->ops = &kxcjk1013_trigger_ops;
...@@ -1312,6 +1316,8 @@ static int kxcjk1013_probe(struct i2c_client *client, ...@@ -1312,6 +1316,8 @@ static int kxcjk1013_probe(struct i2c_client *client,
iio_trigger_unregister(data->dready_trig); iio_trigger_unregister(data->dready_trig);
if (data->motion_trig) if (data->motion_trig)
iio_trigger_unregister(data->motion_trig); iio_trigger_unregister(data->motion_trig);
err_poweroff:
kxcjk1013_set_mode(data, STANDBY);
return ret; return ret;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment