Check the return value and catch errors correctly.

Signed-off-by: Laurent Pinchart <[email protected]>
---
 drivers/media/platform/omap3isp/ispccp2.c | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

Changes since v1:

- Call omap3isp_csiphy_release() only when ccp2->phy is not NULL

diff --git a/drivers/media/platform/omap3isp/ispccp2.c 
b/drivers/media/platform/omap3isp/ispccp2.c
index c5d84c9..9ec9387 100644
--- a/drivers/media/platform/omap3isp/ispccp2.c
+++ b/drivers/media/platform/omap3isp/ispccp2.c
@@ -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:
-- 
Regards,

Laurent Pinchart

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to