Messages in this thread | | | Subject | Re: [RFC PATCH v3 16/18] gpu: host1x: mipi: Split tegra_mipi_calibrate and tegra_mipi_wait | From | Sowjanya Komatineni <> | Date | Fri, 17 Jul 2020 08:41:58 -0700 |
| |
On 7/17/20 8:01 AM, Dmitry Osipenko wrote: > 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? STARTCAL does one time calibration and with AUTOCAL calibration will be triggered periodically.
For pads PULLUP/PULLDN/TERM impedance calibration, we only need one-time calibration on pads power up.
We always use one time pads calibration 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(); > >
| |