diff mbox series

[v4,15/19] dts: bindings: Document device tree bindings for ETE

Message ID 20210225193543.2920532-16-suzuki.poulose@arm.com (mailing list archive)
State New, archived
Headers show
Series arm64: coresight: Add support for ETE and TRBE | expand

Commit Message

Suzuki K Poulose Feb. 25, 2021, 7:35 p.m. UTC
Document the device tree bindings for Embedded Trace Extensions.
ETE can be connected to legacy coresight components and thus
could optionally contain a connection graph as described by
the CoreSight bindings.

Cc: devicetree@vger.kernel.org
Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
Cc: Mike Leach <mike.leach@linaro.org>
Cc: Rob Herring <robh@kernel.org>
Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
---
Changes:
 - Fix out-ports defintion
---
 .../devicetree/bindings/arm/ete.yaml          | 71 +++++++++++++++++++
 1 file changed, 71 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/arm/ete.yaml

Comments

Rob Herring March 6, 2021, 9:06 p.m. UTC | #1
On Thu, Feb 25, 2021 at 07:35:39PM +0000, Suzuki K Poulose wrote:
> Document the device tree bindings for Embedded Trace Extensions.
> ETE can be connected to legacy coresight components and thus
> could optionally contain a connection graph as described by
> the CoreSight bindings.
> 
> Cc: devicetree@vger.kernel.org
> Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
> Cc: Mike Leach <mike.leach@linaro.org>
> Cc: Rob Herring <robh@kernel.org>
> Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
> ---
> Changes:
>  - Fix out-ports defintion
> ---
>  .../devicetree/bindings/arm/ete.yaml          | 71 +++++++++++++++++++
>  1 file changed, 71 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/arm/ete.yaml
> 
> diff --git a/Documentation/devicetree/bindings/arm/ete.yaml b/Documentation/devicetree/bindings/arm/ete.yaml
> new file mode 100644
> index 000000000000..35a42d92bf97
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/arm/ete.yaml
> @@ -0,0 +1,71 @@
> +# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
> +# Copyright 2021, Arm Ltd
> +%YAML 1.2
> +---
> +$id: "http://devicetree.org/schemas/arm/ete.yaml#"
> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
> +
> +title: ARM Embedded Trace Extensions
> +
> +maintainers:
> +  - Suzuki K Poulose <suzuki.poulose@arm.com>
> +  - Mathieu Poirier <mathieu.poirier@linaro.org>
> +
> +description: |
> +  Arm Embedded Trace Extension(ETE) is a per CPU trace component that
> +  allows tracing the CPU execution. It overlaps with the CoreSight ETMv4
> +  architecture and has extended support for future architecture changes.
> +  The trace generated by the ETE could be stored via legacy CoreSight
> +  components (e.g, TMC-ETR) or other means (e.g, using a per CPU buffer
> +  Arm Trace Buffer Extension (TRBE)). Since the ETE can be connected to
> +  legacy CoreSight components, a node must be listed per instance, along
> +  with any optional connection graph as per the coresight bindings.
> +  See bindings/arm/coresight.txt.
> +
> +properties:
> +  $nodename:
> +    pattern: "^ete([0-9a-f]+)$"
> +  compatible:
> +    items:
> +      - const: arm,embedded-trace-extension
> +
> +  cpu:
> +    description: |
> +      Handle to the cpu this ETE is bound to.
> +    $ref: /schemas/types.yaml#/definitions/phandle
> +
> +  out-ports:
> +    description: |
> +      Output connections from the ETE to legacy CoreSight trace bus.
> +    $ref: /schemas/graph.yaml#/properties/port

s/port/ports/

And then you need:

       properties:
         port:
           description: what this port is
           $ref: /schemas/graph.yaml#/properties/port

> +
> +required:
> +  - compatible
> +  - cpu
> +
> +additionalProperties: false
> +
> +examples:
> +
> +# An ETE node without legacy CoreSight connections
> +  - |
> +    ete0 {
> +      compatible = "arm,embedded-trace-extension";
> +      cpu = <&cpu_0>;
> +    };
> +# An ETE node with legacy CoreSight connections
> +  - |
> +   ete1 {
> +      compatible = "arm,embedded-trace-extension";
> +      cpu = <&cpu_1>;
> +
> +      out-ports {        /* legacy coresight connection */
> +         port {
> +             ete1_out_port: endpoint {
> +                remote-endpoint = <&funnel_in_port0>;
> +             };
> +         };
> +      };
> +   };
> +
> +...
> -- 
> 2.24.1
>
Mike Leach March 8, 2021, 5:25 p.m. UTC | #2
Hi Suzuki

Need to add this file and the TRBE bindings file to the ARM/CORESIGHT
section of the MAINTAINERS file.

Regards

Mike



On Sat, 6 Mar 2021 at 21:06, Rob Herring <robh@kernel.org> wrote:
>
> On Thu, Feb 25, 2021 at 07:35:39PM +0000, Suzuki K Poulose wrote:
> > Document the device tree bindings for Embedded Trace Extensions.
> > ETE can be connected to legacy coresight components and thus
> > could optionally contain a connection graph as described by
> > the CoreSight bindings.
> >
> > Cc: devicetree@vger.kernel.org
> > Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
> > Cc: Mike Leach <mike.leach@linaro.org>
> > Cc: Rob Herring <robh@kernel.org>
> > Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
> > ---
> > Changes:
> >  - Fix out-ports defintion
> > ---
> >  .../devicetree/bindings/arm/ete.yaml          | 71 +++++++++++++++++++
> >  1 file changed, 71 insertions(+)
> >  create mode 100644 Documentation/devicetree/bindings/arm/ete.yaml
> >
> > diff --git a/Documentation/devicetree/bindings/arm/ete.yaml b/Documentation/devicetree/bindings/arm/ete.yaml
> > new file mode 100644
> > index 000000000000..35a42d92bf97
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/arm/ete.yaml
> > @@ -0,0 +1,71 @@
> > +# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
> > +# Copyright 2021, Arm Ltd
> > +%YAML 1.2
> > +---
> > +$id: "http://devicetree.org/schemas/arm/ete.yaml#"
> > +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
> > +
> > +title: ARM Embedded Trace Extensions
> > +
> > +maintainers:
> > +  - Suzuki K Poulose <suzuki.poulose@arm.com>
> > +  - Mathieu Poirier <mathieu.poirier@linaro.org>
> > +
> > +description: |
> > +  Arm Embedded Trace Extension(ETE) is a per CPU trace component that
> > +  allows tracing the CPU execution. It overlaps with the CoreSight ETMv4
> > +  architecture and has extended support for future architecture changes.
> > +  The trace generated by the ETE could be stored via legacy CoreSight
> > +  components (e.g, TMC-ETR) or other means (e.g, using a per CPU buffer
> > +  Arm Trace Buffer Extension (TRBE)). Since the ETE can be connected to
> > +  legacy CoreSight components, a node must be listed per instance, along
> > +  with any optional connection graph as per the coresight bindings.
> > +  See bindings/arm/coresight.txt.
> > +
> > +properties:
> > +  $nodename:
> > +    pattern: "^ete([0-9a-f]+)$"
> > +  compatible:
> > +    items:
> > +      - const: arm,embedded-trace-extension
> > +
> > +  cpu:
> > +    description: |
> > +      Handle to the cpu this ETE is bound to.
> > +    $ref: /schemas/types.yaml#/definitions/phandle
> > +
> > +  out-ports:
> > +    description: |
> > +      Output connections from the ETE to legacy CoreSight trace bus.
> > +    $ref: /schemas/graph.yaml#/properties/port
>
> s/port/ports/
>
> And then you need:
>
>        properties:
>          port:
>            description: what this port is
>            $ref: /schemas/graph.yaml#/properties/port
>
> > +
> > +required:
> > +  - compatible
> > +  - cpu
> > +
> > +additionalProperties: false
> > +
> > +examples:
> > +
> > +# An ETE node without legacy CoreSight connections
> > +  - |
> > +    ete0 {
> > +      compatible = "arm,embedded-trace-extension";
> > +      cpu = <&cpu_0>;
> > +    };
> > +# An ETE node with legacy CoreSight connections
> > +  - |
> > +   ete1 {
> > +      compatible = "arm,embedded-trace-extension";
> > +      cpu = <&cpu_1>;
> > +
> > +      out-ports {        /* legacy coresight connection */
> > +         port {
> > +             ete1_out_port: endpoint {
> > +                remote-endpoint = <&funnel_in_port0>;
> > +             };
> > +         };
> > +      };
> > +   };
> > +
> > +...
> > --
> > 2.24.1
> >



--
Mike Leach
Principal Engineer, ARM Ltd.
Manchester Design Centre. UK
Suzuki K Poulose March 22, 2021, 4:53 p.m. UTC | #3
Hi Rob

On 06/03/2021 21:06, Rob Herring wrote:
> On Thu, Feb 25, 2021 at 07:35:39PM +0000, Suzuki K Poulose wrote:
>> Document the device tree bindings for Embedded Trace Extensions.
>> ETE can be connected to legacy coresight components and thus
>> could optionally contain a connection graph as described by
>> the CoreSight bindings.
>>
>> Cc: devicetree@vger.kernel.org
>> Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
>> Cc: Mike Leach <mike.leach@linaro.org>
>> Cc: Rob Herring <robh@kernel.org>
>> Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
>> ---
>> Changes:
>>   - Fix out-ports defintion
>> ---
>>   .../devicetree/bindings/arm/ete.yaml          | 71 +++++++++++++++++++
>>   1 file changed, 71 insertions(+)
>>   create mode 100644 Documentation/devicetree/bindings/arm/ete.yaml
>>
>> diff --git a/Documentation/devicetree/bindings/arm/ete.yaml b/Documentation/devicetree/bindings/arm/ete.yaml
>> new file mode 100644
>> index 000000000000..35a42d92bf97
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/arm/ete.yaml
>> @@ -0,0 +1,71 @@
>> +# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
>> +# Copyright 2021, Arm Ltd
>> +%YAML 1.2
>> +---
>> +$id: "http://devicetree.org/schemas/arm/ete.yaml#"
>> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
>> +
>> +title: ARM Embedded Trace Extensions
>> +
>> +maintainers:
>> +  - Suzuki K Poulose <suzuki.poulose@arm.com>
>> +  - Mathieu Poirier <mathieu.poirier@linaro.org>
>> +
>> +description: |
>> +  Arm Embedded Trace Extension(ETE) is a per CPU trace component that
>> +  allows tracing the CPU execution. It overlaps with the CoreSight ETMv4
>> +  architecture and has extended support for future architecture changes.
>> +  The trace generated by the ETE could be stored via legacy CoreSight
>> +  components (e.g, TMC-ETR) or other means (e.g, using a per CPU buffer
>> +  Arm Trace Buffer Extension (TRBE)). Since the ETE can be connected to
>> +  legacy CoreSight components, a node must be listed per instance, along
>> +  with any optional connection graph as per the coresight bindings.
>> +  See bindings/arm/coresight.txt.
>> +
>> +properties:
>> +  $nodename:
>> +    pattern: "^ete([0-9a-f]+)$"
>> +  compatible:
>> +    items:
>> +      - const: arm,embedded-trace-extension
>> +
>> +  cpu:
>> +    description: |
>> +      Handle to the cpu this ETE is bound to.
>> +    $ref: /schemas/types.yaml#/definitions/phandle
>> +
>> +  out-ports:
>> +    description: |
>> +      Output connections from the ETE to legacy CoreSight trace bus.
>> +    $ref: /schemas/graph.yaml#/properties/port
> 
> s/port/ports/

Ok.

> 
> And then you need:
> 
>         properties:
>           port:
>             description: what this port is
>             $ref: /schemas/graph.yaml#/properties/port

Isn't this already covered by the definition of ports ? There are no 
fixed connections for ETE. It is optional and could be connected to
any legacy CoreSight component. i.e, a "ports" object can have port
objects inside.

Given we have defined out-ports as an object "confirming to the ports"
do we need to describe the individual port nodes ?

Cheers
Suzuki
Rob Herring March 22, 2021, 5:28 p.m. UTC | #4
On Mon, Mar 22, 2021 at 10:53 AM Suzuki K Poulose
<suzuki.poulose@arm.com> wrote:
>
> Hi Rob
>
> On 06/03/2021 21:06, Rob Herring wrote:
> > On Thu, Feb 25, 2021 at 07:35:39PM +0000, Suzuki K Poulose wrote:
> >> Document the device tree bindings for Embedded Trace Extensions.
> >> ETE can be connected to legacy coresight components and thus
> >> could optionally contain a connection graph as described by
> >> the CoreSight bindings.
> >>
> >> Cc: devicetree@vger.kernel.org
> >> Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
> >> Cc: Mike Leach <mike.leach@linaro.org>
> >> Cc: Rob Herring <robh@kernel.org>
> >> Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
> >> ---
> >> Changes:
> >>   - Fix out-ports defintion
> >> ---
> >>   .../devicetree/bindings/arm/ete.yaml          | 71 +++++++++++++++++++
> >>   1 file changed, 71 insertions(+)
> >>   create mode 100644 Documentation/devicetree/bindings/arm/ete.yaml
> >>
> >> diff --git a/Documentation/devicetree/bindings/arm/ete.yaml b/Documentation/devicetree/bindings/arm/ete.yaml
> >> new file mode 100644
> >> index 000000000000..35a42d92bf97
> >> --- /dev/null
> >> +++ b/Documentation/devicetree/bindings/arm/ete.yaml
> >> @@ -0,0 +1,71 @@
> >> +# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
> >> +# Copyright 2021, Arm Ltd
> >> +%YAML 1.2
> >> +---
> >> +$id: "http://devicetree.org/schemas/arm/ete.yaml#"
> >> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
> >> +
> >> +title: ARM Embedded Trace Extensions
> >> +
> >> +maintainers:
> >> +  - Suzuki K Poulose <suzuki.poulose@arm.com>
> >> +  - Mathieu Poirier <mathieu.poirier@linaro.org>
> >> +
> >> +description: |
> >> +  Arm Embedded Trace Extension(ETE) is a per CPU trace component that
> >> +  allows tracing the CPU execution. It overlaps with the CoreSight ETMv4
> >> +  architecture and has extended support for future architecture changes.
> >> +  The trace generated by the ETE could be stored via legacy CoreSight
> >> +  components (e.g, TMC-ETR) or other means (e.g, using a per CPU buffer
> >> +  Arm Trace Buffer Extension (TRBE)). Since the ETE can be connected to
> >> +  legacy CoreSight components, a node must be listed per instance, along
> >> +  with any optional connection graph as per the coresight bindings.
> >> +  See bindings/arm/coresight.txt.
> >> +
> >> +properties:
> >> +  $nodename:
> >> +    pattern: "^ete([0-9a-f]+)$"
> >> +  compatible:
> >> +    items:
> >> +      - const: arm,embedded-trace-extension
> >> +
> >> +  cpu:
> >> +    description: |
> >> +      Handle to the cpu this ETE is bound to.
> >> +    $ref: /schemas/types.yaml#/definitions/phandle
> >> +
> >> +  out-ports:
> >> +    description: |
> >> +      Output connections from the ETE to legacy CoreSight trace bus.
> >> +    $ref: /schemas/graph.yaml#/properties/port
> >
> > s/port/ports/
>
> Ok.
>
> >
> > And then you need:
> >
> >         properties:
> >           port:
> >             description: what this port is
> >             $ref: /schemas/graph.yaml#/properties/port
>
> Isn't this already covered by the definition of ports ? There are no
> fixed connections for ETE. It is optional and could be connected to
> any legacy CoreSight component. i.e, a "ports" object can have port
> objects inside.

'properties/ports' only defines that you have 'port' nodes within it.

> Given we have defined out-ports as an object "confirming to the ports"
> do we need to describe the individual port nodes ?

Yes, you have to define what the 'port' nodes are. A port is a data
stream and you should know what your hardware has. What the data
stream is connected to is outside the scope of the binding.

Rob
Suzuki K Poulose March 22, 2021, 10:49 p.m. UTC | #5
On 22/03/2021 17:28, Rob Herring wrote:
> On Mon, Mar 22, 2021 at 10:53 AM Suzuki K Poulose
> <suzuki.poulose@arm.com> wrote:
>>
>> Hi Rob
>>
>> On 06/03/2021 21:06, Rob Herring wrote:
>>> On Thu, Feb 25, 2021 at 07:35:39PM +0000, Suzuki K Poulose wrote:
>>>> Document the device tree bindings for Embedded Trace Extensions.
>>>> ETE can be connected to legacy coresight components and thus
>>>> could optionally contain a connection graph as described by
>>>> the CoreSight bindings.
>>>>
>>>> Cc: devicetree@vger.kernel.org
>>>> Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
>>>> Cc: Mike Leach <mike.leach@linaro.org>
>>>> Cc: Rob Herring <robh@kernel.org>
>>>> Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
>>>> ---

>>>> +  out-ports:
>>>> +    description: |
>>>> +      Output connections from the ETE to legacy CoreSight trace bus.
>>>> +    $ref: /schemas/graph.yaml#/properties/port
>>>
>>> s/port/ports/
>>
>> Ok.
>>
>>>
>>> And then you need:
>>>
>>>          properties:
>>>            port:
>>>              description: what this port is
>>>              $ref: /schemas/graph.yaml#/properties/port
>>
>> Isn't this already covered by the definition of ports ? There are no
>> fixed connections for ETE. It is optional and could be connected to
>> any legacy CoreSight component. i.e, a "ports" object can have port
>> objects inside.
> 
> 'properties/ports' only defines that you have 'port' nodes within it.
> 
>> Given we have defined out-ports as an object "confirming to the ports"
>> do we need to describe the individual port nodes ?
> 
> Yes, you have to define what the 'port' nodes are. A port is a data
> stream and you should know what your hardware has. What the data
> stream is connected to is outside the scope of the binding.

Ok, I have included the above changes for the next version.

Thanks
Suzuki
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/arm/ete.yaml b/Documentation/devicetree/bindings/arm/ete.yaml
new file mode 100644
index 000000000000..35a42d92bf97
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/ete.yaml
@@ -0,0 +1,71 @@ 
+# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+# Copyright 2021, Arm Ltd
+%YAML 1.2
+---
+$id: "http://devicetree.org/schemas/arm/ete.yaml#"
+$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+
+title: ARM Embedded Trace Extensions
+
+maintainers:
+  - Suzuki K Poulose <suzuki.poulose@arm.com>
+  - Mathieu Poirier <mathieu.poirier@linaro.org>
+
+description: |
+  Arm Embedded Trace Extension(ETE) is a per CPU trace component that
+  allows tracing the CPU execution. It overlaps with the CoreSight ETMv4
+  architecture and has extended support for future architecture changes.
+  The trace generated by the ETE could be stored via legacy CoreSight
+  components (e.g, TMC-ETR) or other means (e.g, using a per CPU buffer
+  Arm Trace Buffer Extension (TRBE)). Since the ETE can be connected to
+  legacy CoreSight components, a node must be listed per instance, along
+  with any optional connection graph as per the coresight bindings.
+  See bindings/arm/coresight.txt.
+
+properties:
+  $nodename:
+    pattern: "^ete([0-9a-f]+)$"
+  compatible:
+    items:
+      - const: arm,embedded-trace-extension
+
+  cpu:
+    description: |
+      Handle to the cpu this ETE is bound to.
+    $ref: /schemas/types.yaml#/definitions/phandle
+
+  out-ports:
+    description: |
+      Output connections from the ETE to legacy CoreSight trace bus.
+    $ref: /schemas/graph.yaml#/properties/port
+
+required:
+  - compatible
+  - cpu
+
+additionalProperties: false
+
+examples:
+
+# An ETE node without legacy CoreSight connections
+  - |
+    ete0 {
+      compatible = "arm,embedded-trace-extension";
+      cpu = <&cpu_0>;
+    };
+# An ETE node with legacy CoreSight connections
+  - |
+   ete1 {
+      compatible = "arm,embedded-trace-extension";
+      cpu = <&cpu_1>;
+
+      out-ports {        /* legacy coresight connection */
+         port {
+             ete1_out_port: endpoint {
+                remote-endpoint = <&funnel_in_port0>;
+             };
+         };
+      };
+   };
+
+...