diff mbox

mt9t001: fix clean up in case of power-on failures

Message ID Pine.LNX.4.64.1512141049310.11891@axis700.grange (mailing list archive)
State New, archived
Headers show

Commit Message

Guennadi Liakhovetski Dec. 14, 2015, 9:58 a.m. UTC
If the driver fails to reset the camera or to set up control handlers, it
has to power the camera back off.

Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
---
 drivers/media/i2c/mt9t001.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

Comments

Laurent Pinchart Dec. 14, 2015, 8:41 p.m. UTC | #1
Hi Guennadi,

Thank you for the patch.

On Monday 14 December 2015 10:58:29 Guennadi Liakhovetski wrote:
> If the driver fails to reset the camera or to set up control handlers, it
> has to power the camera back off.
> 
> Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>

Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

and applied to my tree.

> ---
>  drivers/media/i2c/mt9t001.c | 15 +++++++++++++--
>  1 file changed, 13 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/media/i2c/mt9t001.c b/drivers/media/i2c/mt9t001.c
> index 8ae99f7..f262cf2 100644
> --- a/drivers/media/i2c/mt9t001.c
> +++ b/drivers/media/i2c/mt9t001.c
> @@ -233,10 +233,21 @@ static int __mt9t001_set_power(struct mt9t001
> *mt9t001, bool on) ret = mt9t001_reset(mt9t001);
>  	if (ret < 0) {
>  		dev_err(&client->dev, "Failed to reset the camera\n");
> -		return ret;
> +		goto e_power;
>  	}
> 
> -	return v4l2_ctrl_handler_setup(&mt9t001->ctrls);
> +	ret = v4l2_ctrl_handler_setup(&mt9t001->ctrls);
> +	if (ret < 0) {
> +		dev_err(&client->dev, "Failed to set up control handlers\n");
> +		goto e_power;
> +	}
> +
> +	return 0;
> +
> +e_power:
> +	mt9t001_power_off(mt9t001);
> +
> +	return ret;
>  }
> 
>  /*
> ---------------------------------------------------------------------------
> --
diff mbox

Patch

diff --git a/drivers/media/i2c/mt9t001.c b/drivers/media/i2c/mt9t001.c
index 8ae99f7..f262cf2 100644
--- a/drivers/media/i2c/mt9t001.c
+++ b/drivers/media/i2c/mt9t001.c
@@ -233,10 +233,21 @@  static int __mt9t001_set_power(struct mt9t001 *mt9t001, bool on)
 	ret = mt9t001_reset(mt9t001);
 	if (ret < 0) {
 		dev_err(&client->dev, "Failed to reset the camera\n");
-		return ret;
+		goto e_power;
 	}
 
-	return v4l2_ctrl_handler_setup(&mt9t001->ctrls);
+	ret = v4l2_ctrl_handler_setup(&mt9t001->ctrls);
+	if (ret < 0) {
+		dev_err(&client->dev, "Failed to set up control handlers\n");
+		goto e_power;
+	}
+
+	return 0;
+
+e_power:
+	mt9t001_power_off(mt9t001);
+
+	return ret;
 }
 
 /* -----------------------------------------------------------------------------