linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Eugen Hristev <eugen.hristev@microchip.com>
Cc: linux-media@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, jacopo@jmondi.org,
	sakari.ailus@iki.fi, nicolas.ferre@microchip.com
Subject: Re: [PATCH v2 02/25] dt-bindings: media: atmel: csi2dc: add bindings for microchip csi2dc
Date: Tue, 30 Nov 2021 01:14:02 +0200	[thread overview]
Message-ID: <YaVeunGtt4bgmITl@pendragon.ideasonboard.com> (raw)
In-Reply-To: <20211112142509.2230884-3-eugen.hristev@microchip.com>

Hi Eugen,

Thank you for the patch.

On Fri, Nov 12, 2021 at 04:24:46PM +0200, Eugen Hristev wrote:
> Add bindings documentation for Microchip CSI2 Demultiplexer controller.
> 
> CSI2DC is a demultiplexer from Synopsys IDI interface specification to
> parallel interface connection or direct memory access.
> 
> Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
> ---
> Changes in v2:
> - changed the endpoint/port references as suggested by Rob
> 
> Changes in this version :
> - fixed 'sink' name to be actually source.
> - added dma properties and example with dma
> 
> Previous change log:
> Changes in v5:
> - modified bindings as per Rob Herring review
> 
> Changes in v4:
> - Removed property for inter-line-delay and for clock continuous/non-continuous
> - Removed virtual channel by reg for second endpoint
> 
> Changes in v3:
> - Removed some text from description, as it was explained in the schema
> - fixed other things as per Rob's review
> - moved some text inside the schema, like the clock description
> 
> Changes in v2:
> - fixed warnings reported by dt_binding_check
> 
>  .../bindings/media/microchip,csi2dc.yaml      | 159 ++++++++++++++++++
>  1 file changed, 159 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/media/microchip,csi2dc.yaml
> 
> diff --git a/Documentation/devicetree/bindings/media/microchip,csi2dc.yaml b/Documentation/devicetree/bindings/media/microchip,csi2dc.yaml
> new file mode 100644
> index 000000000000..45418c964bf3
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/media/microchip,csi2dc.yaml
> @@ -0,0 +1,159 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/media/microchip,csi2dc.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Microchip CSI2 Demux Controller (CSI2DC)
> +
> +maintainers:
> +  - Eugen Hristev <eugen.hristev@microchip.com>
> +
> +description:
> +  CSI2DC - Camera Serial Interface 2 Demux Controller
> +
> +  CSI2DC is a hardware block that receives incoming data from an IDI interface
> +  and filters packets based on their data type and virtual channel identifier,
> +  then converts the byte stream into a cross clock domain to a pixel stream
> +  to a parallel interface that can be read by a sensor controller.
> +  IDI interface is Synopsys proprietary.
> +
> +  CSI2DC provides two pipes, one video pipe and one data pipe. Video pipe
> +  is connected to a sensor controller and the data pipe is accessible
> +  as a DMA slave port to a DMA controller.
> +
> +  CSI2DC supports a single 'port' node as a sink port with Synopsys 32-bit
> +  IDI interface. The connected endpoint must be a IDI interface compatible
> +  device , that can provide 32-bit IDI interface connection as source port.

s/ , //

> +  This port is mandatory.
> +
> +  CSI2DC supports one 'port' node as source port with parallel interface.
> +  This is called video pipe.
> +  This port has an 'endpoint' that can be connected to a sink port of another
> +  controller (next in pipeline).
> +
> +  CSI2DC also supports direct access to the data through AHB, via DMA channel,
> +  called data pipe.
> +  Because of this, the source 'port' child node (second) is not mandatory.
> +  If the source 'port' child node is missing, only data pipe is available.
> +  For data pipe to be available, a dma controller must be referenced.

Ports are hardware elements, so in that sense they should exist if the
hardware is synthesized with the port, even when the port isn't
connected. Connections are then described by endpoints. I think both
port@0 and port@1 should be required, and the above description updated
accordingly.

> +
> +properties:
> +  compatible:
> +    const: microchip,sama7g5-csi2dc
> +
> +  reg:
> +    maxItems: 1
> +
> +  clocks:
> +    maxItems: 2
> +
> +  clock-names:
> +    description:
> +      CSI2DC must have two clocks to function correctly. One clock is the
> +      peripheral clock for the inside functionality of the hardware block.
> +      This is named 'pclk'. The second clock must be the cross domain clock,
> +      in which CSI2DC will perform clock crossing. This clock must be fed
> +      by the next controller in pipeline, which usually is a sensor controller.
> +      Normally this clock should be given by this sensor controller who
> +      is also a clock source. This clock is named 'scck', sensor controller clock.
> +    items:
> +      - const: pclk
> +      - const: scck
> +
> +  dmas:
> +    maxItems: 1
> +
> +  dma-names:
> +    const: rx
> +
> +  ports:
> +    $ref: /schemas/graph.yaml#/properties/ports
> +
> +    properties:
> +      port@0:
> +        $ref: /schemas/graph.yaml#/properties/port
> +        description:
> +          Input port node, single endpoint describing the input port.
> +
> +        properties:
> +          endpoint:
> +            $ref: video-interfaces.yaml#
> +            unevaluatedProperties: false
> +            description: Endpoint connected to input device
> +
> +      port@1:
> +        $ref: /schemas/graph.yaml#/properties/port
> +        description:
> +          Output port node, single endpoint describing the output port.
> +
> +        properties:
> +          endpoint:
> +            unevaluatedProperties: false
> +            $ref: video-interfaces.yaml#
> +            description: Endpoint connected to output device
> +
> +    required:
> +      - port@0
> +
> +additionalProperties: false
> +
> +required:
> +  - compatible
> +  - reg
> +  - clocks
> +  - clock-names
> +  - ports
> +
> +examples:
> +  # Example for connecting to a parallel sensor controller block
> +  - |
> +    csi2dc@e1404000 {
> +        compatible = "microchip,sama7g5-csi2dc";
> +        reg = <0xe1404000 0x500>;
> +        clocks = <&pclk>, <&scck>;
> +        clock-names = "pclk", "scck";
> +
> +        ports {
> +               #address-cells = <1>;
> +               #size-cells = <0>;
> +               port@0 {
> +                       reg = <0>; /* must be 0, first child port */
> +                       csi2dc_in: endpoint { /* input from IDI interface */
> +                               remote-endpoint = <&csi2host_out>;
> +                       };
> +               };
> +
> +               port@1 {
> +                       reg = <1>; /* must be 1, second child port */
> +                       csi2dc_out: endpoint {
> +                               remote-endpoint = <&xisc_in>; /* output to sensor controller */
> +                       };
> +               };
> +        };
> +    };
> +
> +  # Example for connecting to a DMA master as an AHB slave
> +  - |
> +    #include <dt-bindings/dma/at91.h>
> +    csi2dc@e1404000 {
> +        compatible = "microchip,sama7g5-csi2dc";
> +        reg = <0xe1404000 0x500>;
> +        clocks = <&pclk>, <&scck>;
> +        clock-names = "pclk", "scck";
> +        dmas = <&dma0 AT91_XDMAC_DT_PERID(34)>;
> +        dma-names = "rx";
> +
> +        ports {
> +               #address-cells = <1>;
> +               #size-cells = <0>;
> +               port@0 {
> +                       reg = <0>; /* must be 0, first child port */
> +                       csi2dc_input: endpoint { /* input from IDI interface */
> +                               remote-endpoint = <&csi2host_out>;
> +                       };
> +               };
> +        };
> +    };
> +
> +...

-- 
Regards,

Laurent Pinchart

  parent reply	other threads:[~2021-11-29 23:14 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-12 14:24 [PATCH v2 00/25] media: atmel: atmel-isc: implement media controller Eugen Hristev
2021-11-12 14:24 ` [PATCH v2 01/25] MAINTAINERS: add microchip csi2dc Eugen Hristev
2021-11-29 23:14   ` Laurent Pinchart
2021-12-13 13:40     ` Nicolas Ferre
2021-11-12 14:24 ` [PATCH v2 02/25] dt-bindings: media: atmel: csi2dc: add bindings for " Eugen Hristev
2021-11-29 21:10   ` Rob Herring
2021-11-29 21:37     ` Sakari Ailus
2021-12-06  8:57       ` Eugen.Hristev
2021-11-29 23:14   ` Laurent Pinchart [this message]
2021-11-12 14:24 ` [PATCH v2 03/25] media: atmel: introduce microchip csi2dc driver Eugen Hristev
2021-12-06 10:51   ` Jacopo Mondi
2021-12-06 11:42     ` Eugen.Hristev
2021-12-06 12:06       ` Jacopo Mondi
2021-12-10 11:07         ` Eugen.Hristev
2021-12-10 12:59           ` Jacopo Mondi
2021-11-12 14:24 ` [PATCH v2 04/25] MAINTAINERS: atmel-isc: add new file atmel-isc-clk.c Eugen Hristev
2021-11-29 23:18   ` Laurent Pinchart
2021-11-12 14:24 ` [PATCH v2 05/25] media: atmel: atmel-isc: split the clock code into separate source file Eugen Hristev
2021-11-12 14:24 ` [PATCH v2 06/25] media: atmel: atmel-isc: replace video device name with module name Eugen Hristev
2021-11-12 14:24 ` [PATCH v2 07/25] media: atmel: atmel-sama7g5-isc: fix ispck leftover Eugen Hristev
2021-11-12 14:24 ` [PATCH v2 08/25] media: atmel: atmel-isc-base: use streaming status when queueing buffers Eugen Hristev
2021-11-12 14:24 ` [PATCH v2 09/25] media: atmel: atmel-isc-base: remove frameintervals VIDIOC Eugen Hristev
2021-11-12 14:24 ` [PATCH v2 10/25] media: atmel: atmel-isc-base: report frame sizes as full supported range Eugen Hristev
2021-11-12 14:24 ` [PATCH v2 11/25] media: atmel: atmel-isc-base: implement mbus_code support in enumfmt Eugen Hristev
2021-11-12 14:24 ` [PATCH v2 12/25] media: atmel: atmel-isc-base: fix bytesperline value for planar formats Eugen Hristev
2021-12-06 16:38   ` Jacopo Mondi
2021-12-07 11:21     ` Eugen.Hristev
2021-11-12 14:24 ` [PATCH v2 13/25] MAINTAINERS: atmel-isc: add new file atmel-isc-mc.c Eugen Hristev
2021-11-12 14:24 ` [PATCH v2 14/25] media: atmel: atmel-isc: implement media controller Eugen Hristev
2021-11-12 14:24 ` [PATCH v2 15/25] ARM: dts: at91: sama7g5: add nodes for video capture Eugen Hristev
2021-11-12 14:25 ` [PATCH v2 16/25] ARM: configs: at91: sama7: add xisc and csi2dc Eugen Hristev
2021-11-12 14:25 ` [PATCH v2 17/25] ARM: multi_v7_defconfig: add atmel video pipeline modules Eugen Hristev
2021-11-12 14:25 ` [PATCH v2 18/25] media: atmel: atmel-sama5d2-isc: fix wrong mask in YUYV format check Eugen Hristev
2021-11-12 14:25 ` [PATCH v2 19/25] media: atmel: atmel-isc-base: use mutex to lock awb workqueue from streaming Eugen Hristev
2021-11-12 14:25 ` [PATCH v2 20/25] media: atmel: atmel-isc-base: add wb debug messages Eugen Hristev
2021-11-12 14:25 ` [PATCH v2 21/25] media: atmel: atmel-isc-base: clamp wb gain coefficients Eugen Hristev
2021-11-12 14:25 ` [PATCH v2 22/25] media: atmel: atmel-sama7g5-isc: fix UYVY input format mbus_code typo Eugen Hristev
2021-11-12 14:25 ` [PATCH v2 23/25] media: atmel: atmel-isc: add raw Bayer 8bit 10bit output formats Eugen Hristev
2021-11-12 14:25 ` [PATCH v2 24/25] media: atmel: atmel-isc: compact the controller formats list Eugen Hristev
2021-11-12 14:25 ` [PATCH v2 25/25] media: atmel: atmel-isc: change format propagation to subdev into only verification Eugen Hristev

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=YaVeunGtt4bgmITl@pendragon.ideasonboard.com \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=devicetree@vger.kernel.org \
    --cc=eugen.hristev@microchip.com \
    --cc=jacopo@jmondi.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=nicolas.ferre@microchip.com \
    --cc=sakari.ailus@iki.fi \
    /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).