On Sun, Aug 18, 2024 at 08:28:34AM -0600, Rob Herring wrote: > On Mon, Aug 12, 2024 at 10:41:39AM +0800, Jie Gan wrote: > > Add binding file to specify how to define a Coresight TMC > > Control Unit device in device tree. > > > > It is responsible for controlling the data filter function > > based on the source device's Trace ID for TMC ETR device. > > The trace data with that Trace id can get into ETR's buffer > > while other trace data gets ignored. > > > > Signed-off-by: Jie Gan <quic_jiegan@xxxxxxxxxxx> > > --- > > .../bindings/arm/qcom,coresight-ctcu.yaml | 79 +++++++++++++++++++ > > 1 file changed, 79 insertions(+) > > create mode 100644 Documentation/devicetree/bindings/arm/qcom,coresight-ctcu.yaml > > > > diff --git a/Documentation/devicetree/bindings/arm/qcom,coresight-ctcu.yaml b/Documentation/devicetree/bindings/arm/qcom,coresight-ctcu.yaml > > new file mode 100644 > > index 000000000000..7a9580007942 > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/arm/qcom,coresight-ctcu.yaml > > @@ -0,0 +1,79 @@ > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > > +%YAML 1.2 > > +--- > > +$id: http://devicetree.org/schemas/arm/qcom,coresight-ctcu.yaml# > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > + > > +title: CoreSight TMC Control Unit > > + > > +maintainers: > > + - Yuanfang Zhang <quic_yuanfang@xxxxxxxxxxx> > > + - Mao Jinlong <quic_jinlmao@xxxxxxxxxxx> > > + - Jie Gan <quic_jiegan@xxxxxxxxxxx> > > + > > +description: > > + The Coresight TMC Control unit controls various Coresight behaviors. > > + It works as a helper device when connected to TMC ETR device. > > + It is responsible for controlling the data filter function based on > > + the source device's Trace ID for TMC ETR device. The trace data with > > + that Trace id can get into ETR's buffer while other trace data gets > > + ignored. > > Nowhere is TMC defined. The Coresight TMC control unit(CTCU) connected to Coresight TMC device via replicator and works as a helper device to TMC device. The in-ports listed below illustrate their connection to TMC devices. > > > + > > +properties: > > + compatible: > > + enum: > > + - qcom,sa8775p-ctcu > > + > > + reg: > > + maxItems: 1 > > + > > + clocks: > > + maxItems: 1 > > + > > + clock-names: > > + items: > > + - const: apb > > + > > + in-ports: > > Use 'ports' unless you have both in and out ports. The ‘in-ports’ and ‘out-ports’ properties will be parsed by ‘of_coresight_get_port_parent’ and their relationships to other devices will be stored in the coresight_platform_data structure. for example: struct coresight_platform_data { int nr_inconns; int nr_outconns; struct coresight_connection **out_conns; struct coresight_connection **in_conns; }; https://elixir.bootlin.com/linux/v6.11-rc4/source/drivers/hwtracing/coresight/coresight-platform.c#L147 > > > + $ref: /schemas/graph.yaml#/properties/ports > > + > > + patternProperties: > > + '^port(@[0-7])?$': > > + description: Input connections from CoreSight Trace bus > > + $ref: /schemas/graph.yaml#/properties/port > > + > > +required: > > + - compatible > > + - reg > > + - in-ports > > + > > +additionalProperties: false > > + > > +examples: > > + - | > > + ctcu@1001000 { > > + compatible = "qcom,sa8775p-ctcu"; > > + reg = <0x1001000 0x1000>; > > + > > + clocks = <&aoss_qmp>; > > + clock-names = "apb"; > > + > > + in-ports { > > + #address-cells = <1>; > > + #size-cells = <0>; > > + > > + port@0 { > > + reg = <0>; > > + ctcu_in_port0: endpoint { > > + remote-endpoint = <&etr0_out_port>; > > + }; > > + }; > > + > > + port@1 { > > + reg = <1>; > > + ctcu_in_port1: endpoint { > > + remote-endpoint = <&etr1_out_port>; > > + }; > > + }; > > + }; > > + }; > > -- > > 2.34.1 > > > Thanks, Jie