On 27/10/2026 15:14, Chao Xu wrote:
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@163.com
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;
Reviewed-by: James Clark james.clark@linaro.org