media: mt9m111: Fix error handling in mt9m111_power_on

The mt9m111_power_on function did not properly clean up whenever it
encountered an error. Do that now.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Reviewed-by: Marco Felsch <m.felsch@pengutronix.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
This commit is contained in:
Sakari Ailus 2019-05-31 16:12:49 -04:00 committed by Mauro Carvalho Chehab
parent 9a57d72b94
commit 04bc4f6631
1 changed files with 13 additions and 5 deletions

View File

@ -986,13 +986,21 @@ static int mt9m111_power_on(struct mt9m111 *mt9m111)
ret = regulator_enable(mt9m111->regulator);
if (ret < 0)
return ret;
goto out_clk_disable;
ret = mt9m111_resume(mt9m111);
if (ret < 0) {
dev_err(&client->dev, "Failed to resume the sensor: %d\n", ret);
v4l2_clk_disable(mt9m111->clk);
}
if (ret < 0)
goto out_regulator_disable;
return 0;
out_regulator_disable:
regulator_disable(mt9m111->regulator);
out_clk_disable:
v4l2_clk_disable(mt9m111->clk);
dev_err(&client->dev, "Failed to resume the sensor: %d\n", ret);
return ret;
}