mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 18:13:41 +02:00
staging: media: tegra-video: vi: add flip controls only if no source controls are provided
Because the current Tegra video driver is video-centric, it exposes all controls via /dev/video. If both the camera sensor and the VI provide hflip and vflip, the driver will fail because only one control is allowed. To address this, hflip and vflip should be added from the SoC only if the camera sensor doesn't provide those controls. Tested-by: Luca Ceresoli <luca.ceresoli@bootlin.com> # tegra20, parallel camera Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com> Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
This commit is contained in:
parent
8a50111951
commit
4c9f5dc521
|
|
@ -962,6 +962,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);
|
||||
|
|
@ -987,11 +988,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 */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user