17.07.2020 07:46, Sowjanya Komatineni пишет: ... > Looks like sequence posted in TRM need to be updated clearly for proper > MIPI CAL start and wait. > > Correct steps should be like below > > 1. Set up CSI registers for use case such as number of lanes, virtual > channel, etc. > 2. Initialize and power up CSI CIL interface > 3. Program MIPI CAL bias pads, cal configs, cal control registers and > enable calibration start > 4. Power up camera through the I2C interface and start sensor streaming > through the I2C > > Note: All sensors might not leave pads in LP-11 state as sensor may be > power down when not in use. > > So start streaming prior to checking for calibration done status as > LP-11 -> HS transition happens during sensor stream and calibration > logic can apply results to pads and update done status, > > 5. Wait for done signal from calibration logic > > 6. perform frame capture thru VI > 7. Frame done, CSI goes back to stop state, LP11 > > Will work internally to correct sequence in TRM ... Will be nice to have an updated TRM, thank you! Also, what about the auto-calibration? Isn't it needed to be enabled for CSI? > In mipi driver will update as below to have mipi clk enabled till > calibration status check is done. > > Always tegra_mipi_wait() followes tegra_mipi_calibrate() in both DSI and > CSI. So below sequence should work good. > > tegra_mipi_calibrate() > > - clk_enable mipi cal > - program mipi cal registers (bias pads cfgs, mipi cal ctrl and trigger > calibration start) > > tegra_mipi_wait() > - read mipi cal status and wait for active and done bits > - clk_disable mipi cal Maybe then it should be better to rename the functions like this: tegra_mipi_calibrate() -> tegra_mipi_start_calibration() tegra_mipi_wait() -> tegra_mipi_finish_calibration(). and there also should be tegra_mipi_cancel_calibration(). Example: tegra_mipi_start_calibration(); ret = v4l2_subdev_call(subdev, video, s_stream, on); if (ret < 0) { tegra_mipi_cancel_calibration(); goto err; } tegra_mipi_finish_calibration();