[media] omap3isp: ccp2: Don't ignore the regulator_enable() return value
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Wed, 29 May 2013 03:47:41 +0000 (00:47 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Wed, 12 Jun 2013 21:51:53 +0000 (18:51 -0300)
Check the return value and catch errors correctly.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: Sakari Ailus <sakari.ailus@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/platform/omap3isp/ispccp2.c

index 13982b0ab560f2603810ab8547413fe99956a3c1..e71651429ddad36523943d4f61c0ca89caaa5bb9 100644 (file)
@@ -158,13 +158,17 @@ static void ccp2_pwr_cfg(struct isp_ccp2_device *ccp2)
  * @ccp2: pointer to ISP CCP2 device
  * @enable: enable/disable flag
  */
-static void ccp2_if_enable(struct isp_ccp2_device *ccp2, u8 enable)
+static int ccp2_if_enable(struct isp_ccp2_device *ccp2, u8 enable)
 {
        struct isp_device *isp = to_isp_device(ccp2);
+       int ret;
        int i;
 
-       if (enable && ccp2->vdds_csib)
-               regulator_enable(ccp2->vdds_csib);
+       if (enable && ccp2->vdds_csib) {
+               ret = regulator_enable(ccp2->vdds_csib);
+               if (ret < 0)
+                       return ret;
+       }
 
        /* Enable/Disable all the LCx channels */
        for (i = 0; i < CCP2_LCx_CHANS_NUM; i++)
@@ -179,6 +183,8 @@ static void ccp2_if_enable(struct isp_ccp2_device *ccp2, u8 enable)
 
        if (!enable && ccp2->vdds_csib)
                regulator_disable(ccp2->vdds_csib);
+
+       return 0;
 }
 
 /*
@@ -851,7 +857,12 @@ static int ccp2_s_stream(struct v4l2_subdev *sd, int enable)
                ccp2_print_status(ccp2);
 
                /* Enable CSI1/CCP2 interface */
-               ccp2_if_enable(ccp2, 1);
+               ret = ccp2_if_enable(ccp2, 1);
+               if (ret < 0) {
+                       if (ccp2->phy)
+                               omap3isp_csiphy_release(ccp2->phy);
+                       return ret;
+               }
                break;
 
        case ISP_PIPELINE_STREAM_SINGLESHOT: