diff mbox series

[v3,2/3] dt-bindings: arm: Add Coresight Dummy Trace

Message ID 20230422073714.38844-3-quic_hazha@quicinc.com
State Superseded
Headers show
Series Add support to configure Coresight Dummy subunit | expand

Commit Message

Hao Zhang April 22, 2023, 7:37 a.m. UTC
Add new coresight-dummy.yaml file describing the bindings required
to define coresight dummy trace in the device trees.

Signed-off-by: Hao Zhang <quic_hazha@quicinc.com>
---
 .../bindings/arm/arm,coresight-dummy.yaml     | 101 ++++++++++++++++++
 1 file changed, 101 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/arm/arm,coresight-dummy.yaml

Comments

Rob Herring (Arm) April 25, 2023, 6:46 p.m. UTC | #1
On Sat, Apr 22, 2023 at 03:37:13PM +0800, Hao Zhang wrote:
> Add new coresight-dummy.yaml file describing the bindings required
> to define coresight dummy trace in the device trees.
> 
> Signed-off-by: Hao Zhang <quic_hazha@quicinc.com>
> ---
>  .../bindings/arm/arm,coresight-dummy.yaml     | 101 ++++++++++++++++++
>  1 file changed, 101 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/arm/arm,coresight-dummy.yaml
> 
> diff --git a/Documentation/devicetree/bindings/arm/arm,coresight-dummy.yaml b/Documentation/devicetree/bindings/arm/arm,coresight-dummy.yaml
> new file mode 100644
> index 000000000000..48d864aefaaa
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/arm/arm,coresight-dummy.yaml
> @@ -0,0 +1,101 @@
> +# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/arm/arm,coresight-dummy.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: ARM Coresight Dummy component
> +
> +description: |
> +  Coresight Dummy Trace Module is for the specific devices that kernel
> +  don't have permission to access or configure, e.g., CoreSight TPDMs
> +  on Qualcomm platforms. So there need driver to register dummy devices
> +  as Coresight devices. It may also be used to define components that
> +  may not have any programming interfaces (e.g, static links), so that
> +  paths can be established in the driver. Provide Coresight API for
> +  dummy device operations, such as enabling and disabling dummy devices.
> +  Build the Coresight path for dummy sink or dummy source for debugging.
> +
> +  The primary use case of the coresight dummy is to build path in kernel
> +  side for dummy sink and dummy source.

I could imagine the OS wanting to know more information than just 
'dummy'. Is data from an unknown source useful? Likewise, don't you want 
to know where you are sending data too?

> +
> +maintainers:
> +  - Mao Jinlong <quic_jinlmao@quicinc.com>
> +  - Tao Zhang <quic_taozha@quicinc.com>
> +  - Hao Zhang <quic_hazha@quicinc.com>
> +
> +properties:
> +  compatible:
> +    oneOf:
> +      - enum:

Don't need oneOf as there is only one entry.

> +          - arm,coresight-dummy-sink
> +          - arm,coresight-dummy-source
> +
> +  out-ports:
> +    $ref: /schemas/graph.yaml#/properties/ports
> +
> +    properties:
> +      port:
> +        description: Output connection from the source to Coresight
> +          Trace bus.
> +        $ref: /schemas/graph.yaml#/properties/port
> +
> +  in-ports:
> +    $ref: /schemas/graph.yaml#/properties/ports
> +
> +    properties:
> +      port:
> +        description: Input connection from the Coresight Trace bus to
> +          dummy sink, such as Embedded USB debugger(EUD).
> +        $ref: /schemas/graph.yaml#/properties/port
> +
> +required:
> +  - compatible
> +
> +if:
> +  # If the compatible contains the below value
> +  properties:
> +    compatible:
> +      contains:
> +        const: arm,coresight-dummy-sink
> +
> +then:
> +  required:
> +    - in-ports
> +
> +else:
> +  required:
> +    - out-ports

This still allows the nodes when they don't make sense. I think this 
needs to be 2 schema files. The only common part is 'compatible' and 
that's not even shared.

Rob
Hao Zhang April 28, 2023, 7:09 a.m. UTC | #2
Hi Rob,

On 4/26/2023 2:46 AM, Rob Herring wrote:
> On Sat, Apr 22, 2023 at 03:37:13PM +0800, Hao Zhang wrote:
>> Add new coresight-dummy.yaml file describing the bindings required
>> to define coresight dummy trace in the device trees.
>>
>> Signed-off-by: Hao Zhang <quic_hazha@quicinc.com>
>> ---
>>   .../bindings/arm/arm,coresight-dummy.yaml     | 101 ++++++++++++++++++
>>   1 file changed, 101 insertions(+)
>>   create mode 100644 Documentation/devicetree/bindings/arm/arm,coresight-dummy.yaml
>>
>> diff --git a/Documentation/devicetree/bindings/arm/arm,coresight-dummy.yaml b/Documentation/devicetree/bindings/arm/arm,coresight-dummy.yaml
>> new file mode 100644
>> index 000000000000..48d864aefaaa
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/arm/arm,coresight-dummy.yaml
>> @@ -0,0 +1,101 @@
>> +# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/arm/arm,coresight-dummy.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: ARM Coresight Dummy component
>> +
>> +description: |
>> +  Coresight Dummy Trace Module is for the specific devices that kernel
>> +  don't have permission to access or configure, e.g., CoreSight TPDMs
>> +  on Qualcomm platforms. So there need driver to register dummy devices
>> +  as Coresight devices. It may also be used to define components that
>> +  may not have any programming interfaces (e.g, static links), so that
>> +  paths can be established in the driver. Provide Coresight API for
>> +  dummy device operations, such as enabling and disabling dummy devices.
>> +  Build the Coresight path for dummy sink or dummy source for debugging.
>> +
>> +  The primary use case of the coresight dummy is to build path in kernel
>> +  side for dummy sink and dummy source.
> 
> I could imagine the OS wanting to know more information than just
> 'dummy'. Is data from an unknown source useful? Likewise, don't you want
> to know where you are sending data too?
> 
The necessary information for Coresight is connection between different 
components, so there is in-port for dummy sink and out-port for dummy 
source. We can get the whole path from the source to sink in device tree.

>> +
>> +maintainers:
>> +  - Mao Jinlong <quic_jinlmao@quicinc.com>
>> +  - Tao Zhang <quic_taozha@quicinc.com>
>> +  - Hao Zhang <quic_hazha@quicinc.com>
>> +
>> +properties:
>> +  compatible:
>> +    oneOf:
>> +      - enum:
> 
> Don't need oneOf as there is only one entry.
> 
OK, I will remove it in the next version of patch.
>> +          - arm,coresight-dummy-sink
>> +          - arm,coresight-dummy-source
>> +
>> +  out-ports:
>> +    $ref: /schemas/graph.yaml#/properties/ports
>> +
>> +    properties:
>> +      port:
>> +        description: Output connection from the source to Coresight
>> +          Trace bus.
>> +        $ref: /schemas/graph.yaml#/properties/port
>> +
>> +  in-ports:
>> +    $ref: /schemas/graph.yaml#/properties/ports
>> +
>> +    properties:
>> +      port:
>> +        description: Input connection from the Coresight Trace bus to
>> +          dummy sink, such as Embedded USB debugger(EUD).
>> +        $ref: /schemas/graph.yaml#/properties/port
>> +
>> +required:
>> +  - compatible
>> +
>> +if:
>> +  # If the compatible contains the below value
>> +  properties:
>> +    compatible:
>> +      contains:
>> +        const: arm,coresight-dummy-sink
>> +
>> +then:
>> +  required:
>> +    - in-ports
>> +
>> +else:
>> +  required:
>> +    - out-ports
> 
> This still allows the nodes when they don't make sense. I think this
> needs to be 2 schema files. The only common part is 'compatible' and
> that's not even shared.
>  > Rob
Dummy driver is very simple, the only goal of it is to build a path in 
kernel for subsystem, so we want to handle dummy source and sink in a 
generic framework.

Thanks,
Hao
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/arm/arm,coresight-dummy.yaml b/Documentation/devicetree/bindings/arm/arm,coresight-dummy.yaml
new file mode 100644
index 000000000000..48d864aefaaa
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/arm,coresight-dummy.yaml
@@ -0,0 +1,101 @@ 
+# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/arm/arm,coresight-dummy.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ARM Coresight Dummy component
+
+description: |
+  Coresight Dummy Trace Module is for the specific devices that kernel
+  don't have permission to access or configure, e.g., CoreSight TPDMs
+  on Qualcomm platforms. So there need driver to register dummy devices
+  as Coresight devices. It may also be used to define components that
+  may not have any programming interfaces (e.g, static links), so that
+  paths can be established in the driver. Provide Coresight API for
+  dummy device operations, such as enabling and disabling dummy devices.
+  Build the Coresight path for dummy sink or dummy source for debugging.
+
+  The primary use case of the coresight dummy is to build path in kernel
+  side for dummy sink and dummy source.
+
+maintainers:
+  - Mao Jinlong <quic_jinlmao@quicinc.com>
+  - Tao Zhang <quic_taozha@quicinc.com>
+  - Hao Zhang <quic_hazha@quicinc.com>
+
+properties:
+  compatible:
+    oneOf:
+      - enum:
+          - arm,coresight-dummy-sink
+          - arm,coresight-dummy-source
+
+  out-ports:
+    $ref: /schemas/graph.yaml#/properties/ports
+
+    properties:
+      port:
+        description: Output connection from the source to Coresight
+          Trace bus.
+        $ref: /schemas/graph.yaml#/properties/port
+
+  in-ports:
+    $ref: /schemas/graph.yaml#/properties/ports
+
+    properties:
+      port:
+        description: Input connection from the Coresight Trace bus to
+          dummy sink, such as Embedded USB debugger(EUD).
+        $ref: /schemas/graph.yaml#/properties/port
+
+required:
+  - compatible
+
+if:
+  # If the compatible contains the below value
+  properties:
+    compatible:
+      contains:
+        const: arm,coresight-dummy-sink
+
+then:
+  required:
+    - in-ports
+
+else:
+  required:
+    - out-ports
+
+additionalProperties: false
+
+examples:
+  # Minimum dummy sink definition. Dummy sink connect to coresight replicator.
+  - |
+    sink {
+      compatible = "arm,coresight-dummy-sink";
+
+      in-ports {
+        port {
+          eud_in_replicator_swao: endpoint {
+            remote-endpoint = <&replicator_swao_out_eud>;
+          };
+        };
+      };
+    };
+
+  # Minimum dummy source definition. Dummy source connect to coresight funnel.
+  - |
+    source {
+      compatible = "arm,coresight-dummy-source";
+
+      out-ports {
+        port {
+          dummy_riscv_out_funnel_swao: endpoint {
+            remote-endpoint = <&funnel_swao_in_dummy_riscv>;
+          };
+        };
+      };
+    };
+
+...