Video4Linux: Call an I2C subdev function to start a stream after a CSI2 driver has been started

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

We are working on a system that uses a NXP IMX8MP SOC with a TP2855 analogue video front end chip that can capture 1920x1080p25 or PAL 720x576i25 analogue video streams which is generally working using gstreamer as the higher level software driving this.

We have an intermittent video stream start up problem which we believe is down to:

1. The TP2855 is initialised first and its subdev *_s_stream() call is called to start the video input.

2. The NXP CSI2 video input hardware is then started: imx8-mipi-csi2-sam.c: mipi_csis_s_stream().

3. The TP2855 enables the CSI2 clock after its *_s_stream() call, probably in hardware after its PLL's have locked, by sending a CSI2 start sequence on the CSI2 clock pair. This clock is then a continuous clock ie. it does not go into low power mode during horizontal/vertical blanking.

4. The NXP CSI2 video input hardware, based on some Samsung IP, does not see the CSI2 clock unless it sees the CSI2 start sequence and depending on timings it may not see this at video pipeline startup and we get not video stream from the CSI2 hardware.

I was hoping the subdev *_s_stream() call would be after all of the hardware's pipeline was setup so I could instigate a CSI2 clock restart in the TP2855 driver, but unfortunately this is called before the CSI2 hardware is setup.

I can add a one shot timer to do this in the TP2855 subdev *_s_stream() call, but obviously this is not ideal. Is there anyway to get a subdev function called in the video4linux API automatically once all of the video streams hardware is setup ?

Any ideas/recommendations ?

Terry





[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux