Skip to contentSkip to conversation

dt-bindings: arm: coresight: Allow funnel clocks

PATCH Applied Rob Herring (Arm) 3 participants 8 messages Sep 21 – Oct 1

Subsystems (2)
lore
Share & tools
lore

Rob Herring (Arm)

author maintainer
#0 lore raw

PATCH 1/1 dt-bindings: arm: coresight: Allow funnel clocks

Some static funnel nodes have APB and AT clocks. Allow one or two clocks and the apb_pclk and atclk clock-names entries.

Assisted-by LLM
---
 .../bindings/arm/arm,coresight-static-funnel.yaml      | 10 ++++++++++
 1 file changed, 10 insertions(+)
Documentation/devicetree/bindings/arm/arm,coresight-static-funnel.yaml +10 -0
index 9598a3d0a95b..4a3d08f9568c 100644
@@ -30,6 +30,16 @@ properties:
   power-domains:
     maxItems: 1
 
+  clocks:
+    minItems: 1
+    maxItems: 2
+
+  clock-names:
+    minItems: 1
+    items:
+      - const: apb_pclk
+      - const: atclk
+
   label:
     description:
       Description of a coresight device.
Signature · 1 line
2.53.0
#1 lore raw
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Low] dt-bindings: clock-names schema forbids valid single 'atclk' config --

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] dt-bindings: clock-names schema forbids valid single 'atclk' config --

commit 50eea7a4ef1f09b2ff4cd2b8b69396c108a1c74e
Author: Rob Herring (Arm) <[email protected]>

dt-bindings: arm: coresight: Allow funnel clocks

This commit modifies the arm,coresight-static-funnel schema to allow one or two clocks, adding support for the apb_pclk and atclk properties.

Quoted 6 lines
Documentation/devicetree/bindings/arm/arm,coresight-static-funnel.yaml +0 -0
@@ -30,6 +30,16 @@ properties:
   power-domains:
     maxItems: 1

Documentation/devicetree/bindings/arm/arm,coresight-static-funnel.yaml properties: · line 41

Quoted 10 lines
Documentation/devicetree/bindings/arm/arm,coresight-static-funnel.yaml +9 -0
 
+  clocks:
+    minItems: 1
+    maxItems: 2
+
+  clock-names:
+    minItems: 1
+    items:
+      - const: apb_pclk
+      - const: atclk

[Severity: Low]
Does this positional item list unintentionally forbid valid single-clock configurations where only atclk is present?

By specifying items as a rigid positional list, the dt-schema validation strictly enforces that if only one clock is provided, its name must exactly match apb_pclk.

If a device tree node for arm,coresight-static-funnel provides a single clock named atclk, it will fail make dtbs_check. This seems to conflict with hardware configurations where static funnels lack APB registers and may only require an ATB trace clock. The coresight driver itself appears to fully support this configuration, as coresight_get_enable_clocks() gracefully handles an absent apb_pclk.

Signature · 1 line
Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=1
author maintainer
#2 lore raw
Quoted 33 lines · On Mon, Sep 21, 2026 at 11:37:43PM +0000, [email protected] wrote:

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] dt-bindings: clock-names schema forbids valid single 'atclk' config --

commit 50eea7a4ef1f09b2ff4cd2b8b69396c108a1c74e
Author: Rob Herring (Arm) <[email protected]>

dt-bindings: arm: coresight: Allow funnel clocks

This commit modifies the arm,coresight-static-funnel schema to allow one or two clocks, adding support for the apb_pclk and atclk properties.

Quoted 6 lines
Documentation/devicetree/bindings/arm/arm,coresight-static-funnel.yaml +0 -0
@@ -30,6 +30,16 @@ properties:
   power-domains:
     maxItems: 1

Documentation/devicetree/bindings/arm/arm,coresight-static-funnel.yaml properties: · line 41

Quoted 10 lines
Documentation/devicetree/bindings/arm/arm,coresight-static-funnel.yaml +9 -0
 
+  clocks:
+    minItems: 1
+    maxItems: 2
+
+  clock-names:
+    minItems: 1
+    items:
+      - const: apb_pclk
+      - const: atclk

[Severity: Low]
Does this positional item list unintentionally forbid valid single-clock configurations where only atclk is present?

Quoted 3 lines

By specifying items as a rigid positional list, the dt-schema validation strictly enforces that if only one clock is provided, its name must exactly match apb_pclk.

Or name should be omitted... 'minItems: 1' on clock-names can be dropped when applying.

Quoted 6 lines

If a device tree node for arm,coresight-static-funnel provides a single clock named atclk, it will fail make dtbs_check. This seems to conflict with hardware configurations where static funnels lack APB registers and may only require an ATB trace clock. The coresight driver itself appears to fully support this configuration, as coresight_get_enable_clocks() gracefully handles an absent apb_pclk.

There's no such case in tree. This patch is fixing a case we do have in tree.

author maintainer
#3 lore raw
Quoted 34 lines · Rob Herring
Quoted 33 lines · On Mon, Sep 21, 2026 at 11:37:43PM +0000, [email protected] wrote:

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] dt-bindings: clock-names schema forbids valid single 'atclk' config --

commit 50eea7a4ef1f09b2ff4cd2b8b69396c108a1c74e
Author: Rob Herring (Arm) <[email protected]>

dt-bindings: arm: coresight: Allow funnel clocks

This commit modifies the arm,coresight-static-funnel schema to allow one or two clocks, adding support for the apb_pclk and atclk properties.

Quoted 6 lines
Documentation/devicetree/bindings/arm/arm,coresight-static-funnel.yaml +0 -0
@@ -30,6 +30,16 @@ properties:
   power-domains:
     maxItems: 1

Documentation/devicetree/bindings/arm/arm,coresight-static-funnel.yaml properties: · line 41

Quoted 10 lines
Documentation/devicetree/bindings/arm/arm,coresight-static-funnel.yaml +9 -0
 
+  clocks:
+    minItems: 1
+    maxItems: 2
+
+  clock-names:
+    minItems: 1
+    items:
+      - const: apb_pclk
+      - const: atclk

[Severity: Low]
Does this positional item list unintentionally forbid valid single-clock configurations where only atclk is present?

Quoted 6 lines
Quoted 3 lines

By specifying items as a rigid positional list, the dt-schema validation strictly enforces that if only one clock is provided, its name must exactly match apb_pclk.

Or name should be omitted... 'minItems: 1' on clock-names can be dropped when applying.

Actually, this matches all the other coresight bindings. So it should be kept as-is.

Rob

reviewer
#5 lore raw
In reply to Rob Herring (Arm)

Hi Rob,

Quoted 17 lines · Rob Herring (Arm)

Some static funnel nodes have APB and AT clocks. Allow one or two clocks and the apb_pclk and atclk clock-names entries.

Assisted-by LLM
---
 .../bindings/arm/arm,coresight-static-funnel.yaml      | 10 ++++++++++
 1 file changed, 10 insertions(+)
Documentation/devicetree/bindings/arm/arm,coresight-static-funnel.yaml +0 -0
index 9598a3d0a95b..4a3d08f9568c 100644
@@ -30,6 +30,16 @@ properties:
   power-domains:
     maxItems: 1

Documentation/devicetree/bindings/arm/arm,coresight-static-funnel.yaml properties: · line 41

Quoted 10 lines
Documentation/devicetree/bindings/arm/arm,coresight-static-funnel.yaml +9 -0
 
+  clocks:
+    minItems: 1
+    maxItems: 2
+
+  clock-names:
+    minItems: 1
+    items:
+      - const: apb_pclk
+      - const: atclk

The question is that a static funnel does not need to program any registers, so in theory it should only need atclk as the module's core clock, but not the APB programming clock (apb_pclk).

Maybe I did not get this right when I initially enabled the static funnel in hi3660-coresight.dtsi. We should probably remove pclk from the static funnel node.

clocks:
minItems: 0
maxItems: 1

clock-names:
minItems: 0
items:
- const: atclk

Thanks,
Leo

author maintainer
#6 lore raw
Quoted 35 lines · Leo Yan

Hi Rob,

Quoted 17 lines · Rob Herring (Arm)

Some static funnel nodes have APB and AT clocks. Allow one or two clocks and the apb_pclk and atclk clock-names entries.

Assisted-by LLM
---
 .../bindings/arm/arm,coresight-static-funnel.yaml      | 10 ++++++++++
 1 file changed, 10 insertions(+)
Documentation/devicetree/bindings/arm/arm,coresight-static-funnel.yaml +0 -0
index 9598a3d0a95b..4a3d08f9568c 100644
@@ -30,6 +30,16 @@ properties:
   power-domains:
     maxItems: 1

Documentation/devicetree/bindings/arm/arm,coresight-static-funnel.yaml properties: · line 41

Quoted 10 lines
Documentation/devicetree/bindings/arm/arm,coresight-static-funnel.yaml +9 -0
 
+  clocks:
+    minItems: 1
+    maxItems: 2
+
+  clock-names:
+    minItems: 1
+    items:
+      - const: apb_pclk
+      - const: atclk

The question is that a static funnel does not need to program any registers, so in theory it should only need atclk as the module's core clock, but not the APB programming clock (apb_pclk).

Quoted 3 lines

Maybe I did not get this right when I initially enabled the static funnel in hi3660-coresight.dtsi. We should probably remove pclk from the static funnel node.

Yes. I suppose in theory it has some clock, but if pclk needed to be enabled, it is shared with all the other coresight components and enabled anyways. And there's no atclk defined, so 'clocks' can just be removed. Can you send a patch to do that, and I'll drop this one.

zynq7000 is even more of a mess I just noticed...

Rob

reviewer
#7 lore raw

On Thu, Oct 01, 2026 at 07:04:44AM -0500, Rob Herring wrote:

[...]

Quoted 4 lines
Quoted 4 lines

The question is that a static funnel does not need to program any registers, so in theory it should only need atclk as the module's core clock, but not the APB programming clock (apb_pclk).

Quoted 8 lines
Quoted 3 lines

Maybe I did not get this right when I initially enabled the static funnel in hi3660-coresight.dtsi. We should probably remove pclk from the static funnel node.

Yes. I suppose in theory it has some clock, but if pclk needed to be enabled, it is shared with all the other coresight components and enabled anyways. And there's no atclk defined, so 'clocks' can just be removed. Can you send a patch to do that, and I'll drop this one.

Sure, I will prepare a patch for hi3660-coresight.dtsi.

Quoted 1 line

zynq7000 is even more of a mess I just noticed...

Agreed. It should bind to "arm,coresight-dynamic-funnel" instead.

However, I'm afraid the "dbg_trc" and "dbg_apb" clocks are never touched by either the CoreSight driver or the AMBA driver after switching to the dynamic funnel. These clocks should therefore be removed from all CoreSight nodes.

Thanks,
Leo