From: Hans Verkuil <hans.verk...@cisco.com>

No controls were reported, even though the ov7670 does have controls.

Two reasons for this: the v4l2_ctrl_handler_init() call must come
before the ov7670 is loaded (otherwise the ov7670 won't know that
its controls should be added to the bridge driver), and the
v4l2_ctrl_handler_free() call at the end should only be called if
the ret value is non-zero (otherwise you would just free all the
controls that were just added).

Signed-off-by: Hans Verkuil <hans.verk...@cisco.com>
---
 drivers/media/platform/marvell-ccic/mcam-core.c | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/drivers/media/platform/marvell-ccic/mcam-core.c 
b/drivers/media/platform/marvell-ccic/mcam-core.c
index 7e54cef..51c9c8c 100644
--- a/drivers/media/platform/marvell-ccic/mcam-core.c
+++ b/drivers/media/platform/marvell-ccic/mcam-core.c
@@ -1919,6 +1919,14 @@ int mccic_register(struct mcam_camera *cam)
        mcam_ctlr_init(cam);
 
        /*
+        * Get the v4l2 setup done.
+        */
+       ret = v4l2_ctrl_handler_init(&cam->ctrl_handler, 10);
+       if (ret)
+               goto out_unregister;
+       cam->v4l2_dev.ctrl_handler = &cam->ctrl_handler;
+
+       /*
         * Try to find the sensor.
         */
        sensor_cfg.clock_speed = cam->clock_speed;
@@ -1934,13 +1942,6 @@ int mccic_register(struct mcam_camera *cam)
        ret = mcam_cam_init(cam);
        if (ret)
                goto out_unregister;
-       /*
-        * Get the v4l2 setup done.
-        */
-       ret = v4l2_ctrl_handler_init(&cam->ctrl_handler, 10);
-       if (ret)
-               goto out_unregister;
-       cam->v4l2_dev.ctrl_handler = &cam->ctrl_handler;
 
        mutex_lock(&cam->s_mutex);
        cam->vdev = mcam_v4l_template;
@@ -1960,10 +1961,12 @@ int mccic_register(struct mcam_camera *cam)
        }
 
 out:
-       v4l2_ctrl_handler_free(&cam->ctrl_handler);
+       if (ret)
+               v4l2_ctrl_handler_free(&cam->ctrl_handler);
        mutex_unlock(&cam->s_mutex);
        return ret;
 out_unregister:
+       v4l2_ctrl_handler_free(&cam->ctrl_handler);
        v4l2_device_unregister(&cam->v4l2_dev);
        return ret;
 }
-- 
2.1.4

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

Reply via email to