[PATCH] [v2] coresight: funnel: inport schedule by priority can not take work

From: Chao Xu

Date: Tue Oct 27 2026 - 11:22:00 EST


The CoreSight SoC-600 TRM, section 10.11.2, PRIORITYCONTROL, a funnel
rejects priority register writes whenever any port is enabled. The
current sequence therefore prevent the configured priorities from
taking effect. Write the priority register before enabling the
first port.

Signed-off-by: Chao Xu <xuchao066@xxxxxxx>
---
drivers/hwtracing/coresight/coresight-funnel.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/hwtracing/coresight/coresight-funnel.c b/drivers/hwtracing/coresight/coresight-funnel.c
index 0abc11f0690c..500ff72a83c8 100644
--- a/drivers/hwtracing/coresight/coresight-funnel.c
+++ b/drivers/hwtracing/coresight/coresight-funnel.c
@@ -62,13 +62,15 @@ static int dynamic_funnel_enable_hw(struct funnel_drvdata *drvdata, int port)
rc = coresight_claim_device_unlocked(csdev);
if (rc)
goto done;
+
+ /* Update priorities while all ports are disabled */
+ writel_relaxed(drvdata->priority, drvdata->base + FUNNEL_PRICTL);
}

functl &= ~FUNNEL_HOLDTIME_MASK;
functl |= FUNNEL_HOLDTIME;
functl |= (1 << port);
writel_relaxed(functl, drvdata->base + FUNNEL_FUNCTL);
- writel_relaxed(drvdata->priority, drvdata->base + FUNNEL_PRICTL);
done:
CS_LOCK(drvdata->base);
return rc;
--
2.43.0