linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sowjanya Komatineni <skomatineni@nvidia.com>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: <thierry.reding@gmail.com>, <jonathanh@nvidia.com>,
	<frankc@nvidia.com>, <hverkuil@xs4all.nl>, <sakari.ailus@iki.fi>,
	<helen.koike@collabora.com>, <digetx@gmail.com>,
	<sboyd@kernel.org>, <linux-media@vger.kernel.org>,
	<devicetree@vger.kernel.org>, <linux-clk@vger.kernel.org>,
	<linux-tegra@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Subject: Re: [RFC PATCH v9 5/9] dt-binding: tegra: Add VI and CSI bindings
Date: Wed, 22 Apr 2020 10:57:39 -0700	[thread overview]
Message-ID: <938ba9b4-8536-03bb-33cf-17e1e562f4a5@nvidia.com> (raw)
In-Reply-To: <20200422174750.GH28105@pendragon.ideasonboard.com>


On 4/22/20 10:47 AM, Laurent Pinchart wrote:
> External email: Use caution opening links or attachments
>
>
> Hi Sowjanya,
>
> On Wed, Apr 22, 2020 at 10:26:20AM -0700, Sowjanya Komatineni wrote:
>> On 4/22/20 10:20 AM, Laurent Pinchart wrote:
>>> On Tue, Apr 21, 2020 at 11:18:55PM -0700, Sowjanya Komatineni wrote:
>>>> Tegra contains VI controller which can support up to 6 MIPI CSI
>>>> camera sensors.
>>>>
>>>> Each Tegra CSI port from CSI unit can be one-to-one mapper to
>>>> VI channel and can capture from an external camera sensor or
>>>> from built-in test pattern generator.
>>>>
>>>> This patch adds dt-bindings for Tegra VI and CSI.
>>>>
>>>> Acked-by: Thierry Reding <treding@nvidia.com>
>>>> Reviewed-by: Rob Herring <robh@kernel.org>
>>>> Signed-off-by: Sowjanya Komatineni <skomatineni@nvidia.com>
>>>> ---
>>>>    .../display/tegra/nvidia,tegra20-host1x.txt        | 73 ++++++++++++++++++----
>>>>    1 file changed, 60 insertions(+), 13 deletions(-)
>>>>
>>>> diff --git a/Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-host1x.txt b/Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-host1x.txt
>>>> index 9999255..4731921 100644
>>>> --- a/Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-host1x.txt
>>>> +++ b/Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-host1x.txt
>>>> @@ -40,14 +40,30 @@ of the following host1x client modules:
>>>>
>>>>      Required properties:
>>>>      - compatible: "nvidia,tegra<chip>-vi"
>>>> -  - reg: Physical base address and length of the controller's registers.
>>>> +  - reg: Physical base address and length of the controller registers.
>>>>      - interrupts: The interrupt outputs from the controller.
>>>> -  - clocks: Must contain one entry, for the module clock.
>>>> +  - clocks: clocks: Must contain one entry, for the module clock.
>>>>        See ../clocks/clock-bindings.txt for details.
>>>> -  - resets: Must contain an entry for each entry in reset-names.
>>>> -    See ../reset/reset.txt for details.
>>>> -  - reset-names: Must include the following entries:
>>>> -    - vi
>>>> +  - Tegra20/Tegra30/Tegra114/Tegra124:
>>>> +    - resets: Must contain an entry for each entry in reset-names.
>>>> +      See ../reset/reset.txt for details.
>>>> +    - reset-names: Must include the following entries:
>>>> +      - vi
>>>> +  - Tegra210:
>>>> +    - power-domains: Must include venc powergate node as vi is in VE partition.
>>>> +  - Tegra210 has CSI part of VI sharing same host interface and register space.
>>>> +    So, VI device node should have CSI child node.
>>>> +
>>>> +    - csi: mipi csi interface to vi
>>>> +
>>>> +      Required properties:
>>>> +      - compatible: "nvidia,tegra210-csi"
>>>> +      - reg: Physical base address offset to parent and length of the controller
>>>> +        registers.
>>>> +      - clocks: Must contain entries csi, cilab, cilcd, cile, csi_tpg clocks.
>>>> +        See ../clocks/clock-bindings.txt for details.
>>>> +      - power-domains: Must include sor powergate node as csicil is in
>>>> +        SOR partition.
>>> A bit of a stupid question maybe, but why is this needed ? Can't the
>>> driver that handles the vi DT node ("nvidia,tegra20-vi") handle all the
>>> registers for all the sub-blocks ? Can't we move the clocks and power
>>> domains from the CSI node to the VI node ?
>> CSI is separate device driver and VI is separate device driver.
> That's fine, but that's a software design decision, it should not affect
> the DT bindings. It's possible (even if I don't necessarily recommend
> doing so) to create a platform device manually in the VI driver to get
> it bound to the CSI driver. In any case DT should describe the system
> architecture and shouldn't be influenced by hardware design.

CSI is a separate device for Tegra186 onwards and VI/CSI is common driver.

DT bindings reflects the chip design. Also clocks and power domain for 
CSI and VI are different and CSI is separate device.

>
>> For T210, CSI shares register space under VI but for later Tegras its
>> separate register space.
> This is useful information. How about interrupts though ? You don't
> specify any interrupt line here, how are the CSI interrutps handled ?

All frame events are through syncpoint HW like mentioned in earlier 
feedbacks.

This driver synchronizes capture events through host1x syncpt

>
>> So CSI and VI drivers are separate with their corresponding clocks and
>> power domains in their nodes.
>>
>>> Regardless of the answer to this question, I think this is missing port
>>> nodes for the physical CSI-2 inputs, to connect them to sensors. I
>>> haven't seen anywhere in this series how a CSI-2 sensor is linked to the
>>> VI.
>> This patch series is only for Tegra internal TPG and tegra video driver
>> creates hard media links between CSI and VI,
> Could you share the output of media-ctl --print-dot to show how this
> looks like ?


digraph board {
rankdir=TB
         n00000001 [label="{{} | tpg-0\n | {<port0> 0}}", shape=Mrecord, 
style=filled, fillcolor=green]
         n00000001:port0 -> n00000003
         n00000003 [label="54080000.vi-output-0\n/dev/video0", 
shape=box, style=filled, fillcolor=yellow]
         n00000009 [label="{{} | tpg-1\n | {<port0> 0}}", shape=Mrecord, 
style=filled, fillcolor=green]
         n00000009:port0 -> n0000000b
         n0000000b [label="54080000.vi-output-1\n/dev/video1", 
shape=box, style=filled, fillcolor=yellow]
         n00000011 [label="{{} | tpg-2\n | {<port0> 0}}", shape=Mrecord, 
style=filled, fillcolor=green]
         n00000011:port0 -> n00000013
         n00000013 [label="54080000.vi-output-2\n/dev/video2", 
shape=box, style=filled, fillcolor=yellow]
         n00000019 [label="{{} | tpg-3\n | {<port0> 0}}", shape=Mrecord, 
style=filled, fillcolor=green]
         n00000019:port0 -> n0000001b
         n0000001b [label="54080000.vi-output-3\n/dev/video3", 
shape=box, style=filled, fillcolor=yellow]
         n00000021 [label="{{} | tpg-4\n | {<port0> 0}}", shape=Mrecord, 
style=filled, fillcolor=green]
         n00000021:port0 -> n00000023
         n00000023 [label="54080000.vi-output-4\n/dev/video4", 
shape=box, style=filled, fillcolor=yellow]
         n00000029 [label="{{} | tpg-5\n | {<port0> 0}}", shape=Mrecord, 
style=filled, fillcolor=green]
         n00000029:port0 -> n0000002b
         n0000002b [label="54080000.vi-output-5\n/dev/video5", 
shape=box, style=filled, fillcolor=yellow]
}


>
>> Sensor support will be in Series-2 where port nodes will be used for
>> real sensor <-> csi <-> vi endpoints
>>
>>>>    - epp: encoder pre-processor
>>>>
>>>> @@ -309,13 +325,44 @@ Example:
>>>>                         reset-names = "mpe";
>>>>                 };
>>>>
>>>> -             vi {
>>>> -                     compatible = "nvidia,tegra20-vi";
>>>> -                     reg = <0x54080000 0x00040000>;
>>>> -                     interrupts = <0 69 0x04>;
>>>> -                     clocks = <&tegra_car TEGRA20_CLK_VI>;
>>>> -                     resets = <&tegra_car 100>;
>>>> -                     reset-names = "vi";
>>>> +             vi@54080000 {
>>>> +                     compatible = "nvidia,tegra210-vi";
>>>> +                     reg = <0x0 0x54080000 0x0 0x700>;
>>>> +                     interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
>>>> +                     assigned-clocks = <&tegra_car TEGRA210_CLK_VI>;
>>>> +                     assigned-clock-parents = <&tegra_car TEGRA210_CLK_PLL_C4_OUT0>;
>>>> +
>>>> +                     clocks = <&tegra_car TEGRA210_CLK_VI>;
>>>> +                     power-domains = <&pd_venc>;
>>>> +
>>>> +                     #address-cells = <1>;
>>>> +                     #size-cells = <1>;
>>>> +
>>>> +                     ranges = <0x0 0x0 0x54080000 0x2000>;
>>>> +
>>>> +                     csi@838 {
>>>> +                             compatible = "nvidia,tegra210-csi";
>>>> +                             reg = <0x838 0x1300>;
>>>> +                             assigned-clocks = <&tegra_car TEGRA210_CLK_CILAB>,
>>>> +                                               <&tegra_car TEGRA210_CLK_CILCD>,
>>>> +                                               <&tegra_car TEGRA210_CLK_CILE>,
>>>> +                                               <&tegra_car TEGRA210_CLK_CSI_TPG>;
>>>> +                             assigned-clock-parents = <&tegra_car TEGRA210_CLK_PLL_P>,
>>>> +                                                      <&tegra_car TEGRA210_CLK_PLL_P>,
>>>> +                                                      <&tegra_car TEGRA210_CLK_PLL_P>;
>>>> +                             assigned-clock-rates = <102000000>,
>>>> +                                                    <102000000>,
>>>> +                                                    <102000000>,
>>>> +                                                    <972000000>;
>>>> +
>>>> +                             clocks = <&tegra_car TEGRA210_CLK_CSI>,
>>>> +                                      <&tegra_car TEGRA210_CLK_CILAB>,
>>>> +                                      <&tegra_car TEGRA210_CLK_CILCD>,
>>>> +                                      <&tegra_car TEGRA210_CLK_CILE>,
>>>> +                                      <&tegra_car TEGRA210_CLK_CSI_TPG>;
>>>> +                             clock-names = "csi", "cilab", "cilcd", "cile", "csi_tpg";
>>>> +                             power-domains = <&pd_sor>;
>>>> +                     };
>>>>                 };
>>>>
>>>>                 epp {
> --
> Regards,
>
> Laurent Pinchart

  reply	other threads:[~2020-04-22 17:57 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-22  6:18 [RFC PATCH v9 0/9] Add Tegra driver for video capture Sowjanya Komatineni
2020-04-22  6:18 ` [RFC PATCH v9 1/9] arm64: tegra: Fix sor powergate clocks and reset Sowjanya Komatineni
2020-04-22  6:18 ` [RFC PATCH v9 2/9] arm64: tegra: Add reset-cells to mc Sowjanya Komatineni
2020-04-22  6:18 ` [RFC PATCH v9 3/9] dt-bindings: clock: tegra: Add clk id for CSI TPG clock Sowjanya Komatineni
2020-04-22  6:18 ` [RFC PATCH v9 4/9] clk: tegra: Add Tegra210 CSI TPG clock gate Sowjanya Komatineni
2020-04-22  6:18 ` [RFC PATCH v9 5/9] dt-binding: tegra: Add VI and CSI bindings Sowjanya Komatineni
2020-04-22 17:20   ` Laurent Pinchart
2020-04-22 17:26     ` Sowjanya Komatineni
2020-04-22 17:47       ` Laurent Pinchart
2020-04-22 17:57         ` Sowjanya Komatineni [this message]
2020-04-22  6:18 ` [RFC PATCH v9 6/9] media: tegra: Add Tegra210 Video input driver Sowjanya Komatineni
2020-04-23  7:48   ` Hans Verkuil
2020-04-23 16:50     ` Sowjanya Komatineni
2020-04-23 22:55       ` Dmitry Osipenko
2020-04-23 22:59         ` Sowjanya Komatineni
2020-04-23 23:03           ` Dmitry Osipenko
2020-04-23 23:14             ` Dmitry Osipenko
2020-04-23 23:16   ` Dmitry Osipenko
2020-04-23 23:19     ` Sowjanya Komatineni
2020-04-23 23:20       ` Sowjanya Komatineni
2020-04-23 23:25         ` Dmitry Osipenko
2020-04-23 23:50           ` Sowjanya Komatineni
2020-04-24  0:42             ` Dmitry Osipenko
2020-04-24  0:51               ` Sowjanya Komatineni
2020-04-24  1:08                 ` Sowjanya Komatineni
2020-04-24  2:09                   ` Dmitry Osipenko
2020-04-24  2:12                     ` Sowjanya Komatineni
2020-04-22  6:18 ` [RFC PATCH v9 7/9] MAINTAINERS: Add Tegra Video driver section Sowjanya Komatineni
2020-04-22  6:18 ` [RFC PATCH v9 8/9] dt-bindings: reset: Add ID for Tegra210 VI reset Sowjanya Komatineni
2020-04-22  6:18 ` [RFC PATCH v9 9/9] arm64: tegra: Add Tegra VI CSI support in device tree 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=938ba9b4-8536-03bb-33cf-17e1e562f4a5@nvidia.com \
    --to=skomatineni@nvidia.com \
    --cc=devicetree@vger.kernel.org \
    --cc=digetx@gmail.com \
    --cc=frankc@nvidia.com \
    --cc=helen.koike@collabora.com \
    --cc=hverkuil@xs4all.nl \
    --cc=jonathanh@nvidia.com \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-tegra@vger.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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).