Linux-Tegra Archive on lore.kernel.org
 help / color / Atom feed
From: Sowjanya Komatineni <skomatineni@nvidia.com>
To: Dmitry Osipenko <digetx@gmail.com>, <thierry.reding@gmail.com>,
	<jonathanh@nvidia.com>, <frankc@nvidia.com>, <hverkuil@xs4all.nl>,
	<sakari.ailus@iki.fi>, <robh+dt@kernel.org>,
	<helen.koike@collabora.com>
Cc: <sboyd@kernel.org>, <gregkh@linuxfoundation.org>,
	<linux-media@vger.kernel.org>, <devicetree@vger.kernel.org>,
	<linux-tegra@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<linux-i2c@vger.kernel.org>
Subject: Re: [RFC PATCH v5 13/14] media: tegra-video: Add CSI MIPI pads calibration
Date: Tue, 28 Jul 2020 12:43:53 -0700
Message-ID: <edefa3b1-e0fe-0f34-80b7-8729551ee2ea@nvidia.com> (raw)
In-Reply-To: <01ee0805-3d57-d857-48e3-5c2245cd4500@nvidia.com>


On 7/28/20 8:59 AM, Sowjanya Komatineni wrote:
>
> On 7/28/20 3:30 AM, Dmitry Osipenko wrote:
>> 27.07.2020 23:57, Sowjanya Komatineni пишет:
>>> +    /*
>>> +     * TRM has incorrectly documented to wait for done status from
>>> +     * calibration logic after CSI interface power on.
>>> +     * As per the design, calibration results are latched and applied
>>> +     * to the pads only when the link is in LP11 state which will 
>>> happen
>>> +     * during the sensor stream-on.
>>> +     * CSI subdev stream-on triggers start of MIPI pads calibration.
>>> +     * Wait for calibration to finish here after sensor subdev 
>>> stream-on
>>> +     * and in case of sensor stream-on failure, cancel the 
>>> calibration.
>>> +     */
>>>       subdev = on ? src_subdev : csi_subdev;
>>>       ret = v4l2_subdev_call(subdev, video, s_stream, on);
>>> -    if (ret < 0 && ret != -ENOIOCTLCMD)
>>> +    if (ret < 0 && ret != -ENOIOCTLCMD) {
>> I assume -ENOIOCTLCMD means that camera wasn't turned ON, so why
>> -ENOIOCTLCMD is special?
> No -ENOIOCTLCMD mean subdev don't have s_stream ops
>>
>>> +        if (on && csi_chan->mipi)
>>> +            tegra_mipi_cancel_calibration(csi_chan->mipi);
>>>           return ret;
>>> +    }
>>> +
>>> +    if (on && csi_chan->mipi) {
>> Does finish_calibration() really need to be called for ret=-ENOIOCTLCMD?
>>
>> Shouldn't it be cancel_calibration( for the -ENOIOCTLCMD?
>
> start calibration happens during csi sensor streaming which happens 
> prior to this point.
>
> In case if sensor subdev does not have s_stream ops, then either 
> finish/cancel calibration should happen to disable the clock.

For -ENOIOCTLCMD, calling finish calibration as some sensors might keep 
pads in LP-11 on power up and for such sensors calibration logic will 
apply results to pads and done bit will be set.

Also avoiding additional check to specifically call cancel calibration 
on ENOIOCTLCMD and making it fall into finish calibration as both does 
disable clock except finish will wait for done bit to be set.

Also, most sensor subdev have s_stream ops implemented.

>
>>
>>> +        ret = tegra_mipi_finish_calibration(csi_chan->mipi);
>>> +        if (ret < 0)
>>> +            dev_err(csi_chan->csi->dev,
>>> +                "MIPI calibration failed: %d\n", ret);
>> Doesn't v4l2_subdev_call(OFF) need to be invoked here on error?
>
> Not required as on error streaming fails and runtime PM will turn off 
> power anyway.
>
> Also we only did csi subdev s_stream on and during sensor subdev 
> s_stream on fail, actual stream dont happen and on tegra side frame 
> capture by HW happens only when kthreads run.
>>> +        return ret;
>>> +    }
>>>         return 0;
>>>   }

  reply index

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-27 20:57 [RFC PATCH v5 00/14] Support for Tegra video capture from external sensor Sowjanya Komatineni
2020-07-27 20:57 ` [RFC PATCH v5 01/14] i2c: tegra: Don't mark VI I2C as IRQ safe runtime PM Sowjanya Komatineni
2020-07-28 16:33   ` Wolfram Sang
2020-07-27 20:57 ` [RFC PATCH v5 02/14] i2c: tegra: Remove NULL pointer check before clk_enable/disable/prepare/unprepare Sowjanya Komatineni
2020-07-28 16:33   ` Wolfram Sang
2020-07-27 20:57 ` [RFC PATCH v5 03/14] i2c: tegra: Fix the error path in tegra_i2c_runtime_resume Sowjanya Komatineni
2020-07-28 16:33   ` Wolfram Sang
2020-07-27 20:57 ` [RFC PATCH v5 04/14] i2c: tegra: Fix runtime resume to re-init VI I2C Sowjanya Komatineni
2020-07-28 16:33   ` Wolfram Sang
2020-07-27 20:57 ` [RFC PATCH v5 05/14] i2c: tegra: Avoid tegra_i2c_init_dma() for Tegra210 vi i2c Sowjanya Komatineni
2020-07-28 16:34   ` Wolfram Sang
2020-07-27 20:57 ` [RFC PATCH v5 06/14] media: tegra-video: Fix channel format alignment Sowjanya Komatineni
2020-07-27 20:57 ` [RFC PATCH v5 07/14] media: tegra-video: Enable TPG based on kernel config Sowjanya Komatineni
2020-07-27 20:57 ` [RFC PATCH v5 08/14] media: tegra-video: Update format lookup to offset based Sowjanya Komatineni
2020-07-27 20:57 ` [RFC PATCH v5 09/14] dt-bindings: tegra: Update VI and CSI bindings with port info Sowjanya Komatineni
2020-07-27 20:57 ` [RFC PATCH v5 10/14] media: tegra-video: Add support for external sensor capture Sowjanya Komatineni
2020-07-27 20:57 ` [RFC PATCH v5 11/14] media: tegra-video: Add support for selection ioctl ops Sowjanya Komatineni
2020-07-27 20:57 ` [RFC PATCH v5 12/14] gpu: host1x: mipi: Keep MIPI clock enabled till calibration is done Sowjanya Komatineni
2020-07-28 11:03   ` Dmitry Osipenko
2020-07-28 16:04     ` Sowjanya Komatineni
2020-07-29 17:08       ` Dmitry Osipenko
2020-07-29 17:55         ` Sowjanya Komatineni
2020-07-29 23:42           ` Dmitry Osipenko
2020-07-29 23:54             ` Sowjanya Komatineni
2020-07-30  0:31               ` Dmitry Osipenko
2020-07-27 20:57 ` [RFC PATCH v5 13/14] media: tegra-video: Add CSI MIPI pads calibration Sowjanya Komatineni
2020-07-28 10:30   ` Dmitry Osipenko
2020-07-28 15:59     ` Sowjanya Komatineni
2020-07-28 19:43       ` Sowjanya Komatineni [this message]
2020-07-29 23:25       ` Dmitry Osipenko
2020-07-29 23:59         ` Sowjanya Komatineni
2020-07-30  0:27           ` Sowjanya Komatineni
2020-07-30  0:43             ` Dmitry Osipenko
2020-07-30  0:52               ` Sowjanya Komatineni
2020-07-30  0:55                 ` Sowjanya Komatineni
2020-07-30  0:53                   ` Dmitry Osipenko
2020-07-30  1:06                     ` Sowjanya Komatineni
2020-07-30  1:10                       ` Dmitry Osipenko
2020-07-30  0:47             ` Sowjanya Komatineni
2020-07-27 20:57 ` [RFC PATCH v5 14/14] media: tegra-video: Compute settle times based on the clock rate Sowjanya Komatineni

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=edefa3b1-e0fe-0f34-80b7-8729551ee2ea@nvidia.com \
    --to=skomatineni@nvidia.com \
    --cc=devicetree@vger.kernel.org \
    --cc=digetx@gmail.com \
    --cc=frankc@nvidia.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=helen.koike@collabora.com \
    --cc=hverkuil@xs4all.nl \
    --cc=jonathanh@nvidia.com \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=robh+dt@kernel.org \
    --cc=sakari.ailus@iki.fi \
    --cc=sboyd@kernel.org \
    --cc=thierry.reding@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Linux-Tegra Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-tegra/0 linux-tegra/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-tegra linux-tegra/ https://lore.kernel.org/linux-tegra \
		linux-tegra@vger.kernel.org
	public-inbox-index linux-tegra

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-tegra


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git