staging: media: tegra-video: move MIPI calibration calls from VI to CSI
authorLuca Ceresoli <luca.ceresoli@bootlin.com>
Tue, 18 Apr 2023 08:00:48 +0000 (10:00 +0200)
committerHans Verkuil <hverkuil-cisco@xs4all.nl>
Thu, 25 May 2023 11:04:48 +0000 (13:04 +0200)
commit3bc46d752eab89ff2ddbd49cba931cf49d9c5dfb
tree048bb99cf8277bcdd4f83acab4e3db98601a775d
parentaabec712ce0e5ca2e47904dbc4326de614dc0bbf
staging: media: tegra-video: move MIPI calibration calls from VI to CSI

The CSI module does not handle all the MIPI lane calibration procedure,
leaving a small part of it to the VI module. In doing this,
tegra_channel_enable_stream() (vi.c) manipulates the private data of the
upstream subdev casting it to struct 'tegra_csi_channel', which will be
wrong after introducing a VIP (parallel video input) channel.

This prevents adding support for the VIP module.  It also breaks the
logical isolation between modules.

Since the lane calibration requirement does not exist in the parallel input
module, moving the calibration function to a per-module op is not
optimal. Instead move the calibration procedure in the CSI module, together
with the rest of the calibration procedures. After this change,
tegra_channel_enable_stream() just calls v4l2_subdev_call() to ask for a
stream start/stop to the CSI module, which in turn knows all the
CSI-specific details to implement it.

Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
Reviewed-by: Dmitry Osipenko <digetx@gmail.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
drivers/staging/media/tegra-video/csi.c
drivers/staging/media/tegra-video/vi.c