Add HFLIP and VFLIP from SoC only if camera sensor does not provide those
controls.

Signed-off-by: Svyatoslav Ryhel <clamo...@gmail.com>
---
 drivers/staging/media/tegra-video/vi.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/staging/media/tegra-video/vi.c 
b/drivers/staging/media/tegra-video/vi.c
index 4f67adc395ac..61b65a2c1436 100644
--- a/drivers/staging/media/tegra-video/vi.c
+++ b/drivers/staging/media/tegra-video/vi.c
@@ -961,6 +961,7 @@ static int tegra_channel_setup_ctrl_handler(struct 
tegra_vi_channel *chan)
        }
 #else
        struct v4l2_subdev *subdev;
+       struct v4l2_ctrl *hflip, *vflip;
 
        /* custom control */
        v4l2_ctrl_new_custom(&chan->ctrl_handler, &syncpt_timeout_ctrl, NULL);
@@ -986,11 +987,13 @@ static int tegra_channel_setup_ctrl_handler(struct 
tegra_vi_channel *chan)
                return ret;
        }
 
-       if (chan->vi->soc->has_h_v_flip) {
+       hflip = v4l2_ctrl_find(subdev->ctrl_handler, V4L2_CID_HFLIP);
+       if (chan->vi->soc->has_h_v_flip && !hflip)
                v4l2_ctrl_new_std(&chan->ctrl_handler, &vi_ctrl_ops, 
V4L2_CID_HFLIP, 0, 1, 1, 0);
-               v4l2_ctrl_new_std(&chan->ctrl_handler, &vi_ctrl_ops, 
V4L2_CID_VFLIP, 0, 1, 1, 0);
-       }
 
+       vflip = v4l2_ctrl_find(subdev->ctrl_handler, V4L2_CID_VFLIP);
+       if (chan->vi->soc->has_h_v_flip && !vflip)
+               v4l2_ctrl_new_std(&chan->ctrl_handler, &vi_ctrl_ops, 
V4L2_CID_VFLIP, 0, 1, 1, 0);
 #endif
 
        /* setup the controls */
-- 
2.48.1

Reply via email to