# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/arm/arm,coresight-dynamic-funnel.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Arm CoreSight Programmable Trace Bus Funnel

maintainers:
  - Mathieu Poirier <mathieu.poirier@linaro.org>
  - Mike Leach <mike.leach@linaro.org>
  - Leo Yan <leo.yan@linaro.org>
  - Suzuki K Poulose <suzuki.poulose@arm.com>

description: |
  CoreSight components are compliant with the ARM CoreSight architecture
  specification and can be connected in various topologies to suit a particular
  SoCs tracing needs. These trace components can generally be classified as
  sinks, links and sources. Trace data produced by one or more sources flows
  through the intermediate links connecting the source to the currently selected
  sink.

  The Coresight funnel merges 2-8 trace sources into a single trace
  stream with programmable enable and priority of input ports.

# Need a custom select here or 'arm,primecell' will match on lots of nodes
select:
  properties:
    compatible:
      contains:
        const: arm,coresight-dynamic-funnel
  required:
    - compatible

allOf:
  - $ref: /schemas/arm/primecell.yaml#

properties:
  compatible:
    items:
      - const: arm,coresight-dynamic-funnel
      - const: arm,primecell

  reg:
    maxItems: 1

  clocks:
    minItems: 1
    maxItems: 2

  clock-names:
    minItems: 1
    items:
      - const: apb_pclk
      - const: atclk

  power-domains:
    maxItems: 1

  in-ports:
    $ref: /schemas/graph.yaml#/properties/ports

    patternProperties:
      '^port(@[0-7])?$':
        description: Input connections from CoreSight Trace bus
        $ref: /schemas/graph.yaml#/properties/port

  out-ports:
    $ref: /schemas/graph.yaml#/properties/ports
    additionalProperties: false

    properties:
      port:
        description: Output connection to CoreSight Trace bus
        $ref: /schemas/graph.yaml#/properties/port

required:
  - compatible
  - reg
  - clocks
  - clock-names
  - in-ports
  - out-ports

unevaluatedProperties: false

examples:
  - |
    funnel@20040000 {
        compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
        reg = <0x20040000 0x1000>;

        clocks = <&oscclk6a>;
        clock-names = "apb_pclk";
        out-ports {
            port {
                funnel_out_port0: endpoint {
                    remote-endpoint = <&replicator_in_port0>;
                };
            };
        };

        in-ports {
            #address-cells = <1>;
            #size-cells = <0>;

            port@0 {
                reg = <0>;
                funnel_in_port0: endpoint {
                    remote-endpoint = <&ptm0_out_port>;
                };
            };

            port@1 {
                reg = <1>;
                funnel_in_port1: endpoint {
                    remote-endpoint = <&ptm1_out_port>;
                };
            };

            port@2 {
                reg = <2>;
                funnel_in_port2: endpoint {
                    remote-endpoint = <&etm0_out_port>;
                };
            };
        };
    };
...
