# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
# Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
%YAML 1.2
---
$id: http://devicetree.org/schemas/arm/qcom,coresight-tpda.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Trace, Profiling and Diagnostics Aggregator - TPDA

description: |
  TPDAs are responsible for packetization and timestamping of data sets
  utilizing the MIPI STPv2 packet protocol. Pulling data sets from one or
  more attached TPDM and pushing the resultant (packetized) data out a
  master ATB interface. Performing an arbitrated ATB interleaving (funneling)
  task for free-flowing data from TPDM (i.e. CMB and DSB data set flows).

  There is no strict binding between TPDM and TPDA. TPDA can have multiple
  TPDMs connect to it. But There must be only one TPDA in the path from the
  TPDM source to TMC sink. TPDM can directly connect to TPDA's inport or
  connect to funnel which will connect to TPDA's inport.

  We can use the commands are similar to the below to validate TPDMs.
  Enable coresight sink first.

  echo 1 > /sys/bus/coresight/devices/tmc_etf0/enable_sink
  echo 1 > /sys/bus/coresight/devices/tpdm0/enable_source
  echo 1 > /sys/bus/coresight/devices/tpdm0/integration_test
  echo 2 > /sys/bus/coresight/devices/tpdm0/integration_test

  The test data will be collected in the coresight sink which is enabled.
  If rwp register of the sink is keeping updating when do integration_test
  (by cat tmc_etf0/mgmt/rwp), it means there is data generated from TPDM
  to sink.

maintainers:
  - Mao Jinlong <quic_jinlmao@quicinc.com>
  - Tao Zhang <quic_taozha@quicinc.com>

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

properties:
  $nodename:
    pattern: "^tpda(@[0-9a-f]+)$"
  compatible:
    items:
      - const: qcom,coresight-tpda
      - const: arm,primecell

  reg:
    maxItems: 1

  clocks:
    maxItems: 1

  clock-names:
    items:
      - const: apb_pclk

  in-ports:
    description: |
      Input connections from TPDM to TPDA
    $ref: /schemas/graph.yaml#/properties/ports

  out-ports:
    description: |
      Output connections from the TPDA to legacy CoreSight trace bus.
    $ref: /schemas/graph.yaml#/properties/ports

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

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

additionalProperties: false

examples:
  # minimum tpda definition.
  - |
    tpda@6004000 {
      compatible = "qcom,coresight-tpda", "arm,primecell";
      reg = <0x6004000 0x1000>;

      clocks = <&aoss_qmp>;
      clock-names = "apb_pclk";

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

        port@0 {
          reg = <0>;
          tpda_qdss_0_in_tpdm_dcc: endpoint {
            remote-endpoint = <&tpdm_dcc_out_tpda_qdss_0>;
          };
        };
      };

      out-ports {
        port {
          tpda_qdss_out_funnel_in0: endpoint {
            remote-endpoint = <&funnel_in0_in_tpda_qdss>;
          };
        };
      };
    };

...
