Re: [RFC PATCH v3 16/18] gpu: host1x: mipi: Split tegra_mipi_calibrate and tegra_mipi_wait

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

 



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





[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