200 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			200 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
# 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 either from an
 | 
						|
  IDI interface or from a parallel bus interface.
 | 
						|
  It filters IDI packets based on their data type and virtual channel
 | 
						|
  identifier, then converts the byte stream to a pixel stream into a cross
 | 
						|
  clock domain towards a parallel interface that can be read by a sensor
 | 
						|
  controller.
 | 
						|
  IDI interface is Synopsys proprietary.
 | 
						|
  CSI2DC can act a simple bypass bridge if the incoming data is coming from
 | 
						|
  a parallel interface.
 | 
						|
 | 
						|
  CSI2DC provides two pipes, one video pipe and one data pipe. Video pipe
 | 
						|
  is connected at the output 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 either Synopsys
 | 
						|
  32-bit IDI interface or a parallel interface.
 | 
						|
 | 
						|
  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.
 | 
						|
  For data pipe to be available, a dma controller and a dma channel must be
 | 
						|
  referenced.
 | 
						|
 | 
						|
properties:
 | 
						|
  compatible:
 | 
						|
    const: microchip,sama7g5-csi2dc
 | 
						|
 | 
						|
  reg:
 | 
						|
    maxItems: 1
 | 
						|
 | 
						|
  clocks:
 | 
						|
    minItems: 2
 | 
						|
    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#/$defs/port-base
 | 
						|
        unevaluatedProperties: false
 | 
						|
        description:
 | 
						|
          Input port node, single endpoint describing the input port.
 | 
						|
 | 
						|
        properties:
 | 
						|
          endpoint:
 | 
						|
            $ref: video-interfaces.yaml#
 | 
						|
            unevaluatedProperties: false
 | 
						|
            description: Endpoint connected to input device
 | 
						|
 | 
						|
            properties:
 | 
						|
              bus-type:
 | 
						|
                enum: [4, 5, 6]
 | 
						|
                default: 4
 | 
						|
 | 
						|
              bus-width:
 | 
						|
                enum: [8, 9, 10, 11, 12, 13, 14]
 | 
						|
                default: 14
 | 
						|
 | 
						|
              clock-noncontinuous:
 | 
						|
                type: boolean
 | 
						|
                description:
 | 
						|
                  Presence of this boolean property decides whether clock is
 | 
						|
                  continuous or noncontinuous.
 | 
						|
 | 
						|
              remote-endpoint: true
 | 
						|
 | 
						|
      port@1:
 | 
						|
        $ref: /schemas/graph.yaml#/$defs/port-base
 | 
						|
        unevaluatedProperties: false
 | 
						|
        description:
 | 
						|
          Output port node, single endpoint describing the output port.
 | 
						|
 | 
						|
        properties:
 | 
						|
          endpoint:
 | 
						|
            unevaluatedProperties: false
 | 
						|
            $ref: video-interfaces.yaml#
 | 
						|
            description: Endpoint connected to output device
 | 
						|
 | 
						|
            properties:
 | 
						|
              bus-type:
 | 
						|
                enum: [5, 6]
 | 
						|
                default: 5
 | 
						|
 | 
						|
              bus-width:
 | 
						|
                enum: [8, 9, 10, 11, 12, 13, 14]
 | 
						|
                default: 14
 | 
						|
 | 
						|
              remote-endpoint: true
 | 
						|
 | 
						|
    required:
 | 
						|
      - port@0
 | 
						|
      - port@1
 | 
						|
 | 
						|
additionalProperties: false
 | 
						|
 | 
						|
required:
 | 
						|
  - compatible
 | 
						|
  - reg
 | 
						|
  - clocks
 | 
						|
  - clock-names
 | 
						|
  - ports
 | 
						|
 | 
						|
examples:
 | 
						|
  # Example for connecting to a parallel sensor controller block (video pipe)
 | 
						|
  # and the input is received from Synopsys IDI interface
 | 
						|
  - |
 | 
						|
    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 */
 | 
						|
                               bus-type = <4>; /* MIPI CSI2 D-PHY */
 | 
						|
                               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
 | 
						|
  # and the input is received from Synopsys IDI interface
 | 
						|
  - |
 | 
						|
    #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>;
 | 
						|
                       };
 | 
						|
               };
 | 
						|
 | 
						|
               port@1 {
 | 
						|
                       reg = <1>;
 | 
						|
               };
 | 
						|
        };
 | 
						|
    };
 | 
						|
 | 
						|
...
 |