| # 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: |
| minItems: 1 |
| maxItems: 2 |
| |
| clocks: |
| maxItems: 1 |
| |
| clock-names: |
| items: |
| - const: apb_pclk |
| |
| in-ports: |
| type: object |
| description: | |
| Input connections from TPDM to TPDA |
| $ref: /schemas/graph.yaml#/properties/ports |
| |
| out-ports: |
| type: object |
| 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>; |
| }; |
| }; |
| }; |
| }; |
| |
| ... |