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();


Reply via email to