[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <080b30c7-1dce-dd2f-dd96-40f6e25da4d6@gmail.com>
Date: Fri, 17 Jul 2020 18:01:58 +0300
From: Dmitry Osipenko <digetx@...il.com>
To: Sowjanya Komatineni <skomatineni@...dia.com>,
thierry.reding@...il.com, jonathanh@...dia.com, frankc@...dia.com,
hverkuil@...all.nl, sakari.ailus@....fi, robh+dt@...nel.org,
helen.koike@...labora.com
Cc: sboyd@...nel.org, gregkh@...uxfoundation.org,
linux-media@...r.kernel.org, devicetree@...r.kernel.org,
linux-tegra@...r.kernel.org, linux-kernel@...r.kernel.org,
linux-i2c@...r.kernel.org
Subject: Re: [RFC PATCH v3 16/18] gpu: host1x: mipi: Split
tegra_mipi_calibrate and tegra_mipi_wait
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();
Powered by blists - more mailing lists