mbox series

[v1,0/9] coresight: Fix and improve clock usage

Message ID 20250327113803.1452108-1-leo.yan@arm.com (mailing list archive)
Headers show
Series coresight: Fix and improve clock usage | expand

Message

Leo Yan March 27, 2025, 11:37 a.m. UTC
This series fixes and improves clock usage in the Arm CoreSight drivers.

Based on the DT binding documents, the trace clock (atclk) is defined in
some CoreSight modules, but the corresponding drivers to support it are
absent.  In most cases, the issue is hidden because atclk is shared by
multiple CoreSight modules and is enabled anyway by other drivers.
The first three patches address this issue.

The programming clock (pclk) management in CoreSight drivers does not
use the devm_XXX() variant APIs, so the drivers needs to manually
disable and release clocks for errors and for normal module exit.
However, the drivers miss to disable clocks during module exit.

Another issue is pclk might be enabled twice in init phase - once by
AMBA bus driver, and again by CoreSight drivers.

Patches 04 and 05 fix pclk issues.

The atclk may also not be disabled in CoreSight drivers during module
exit.  This is fixed in patch 06.

Patches 07 to 09 refactor the clock related code.  Patch 07 makes the
clock enabling sequence consistent.  Patch 08 removes redundant
condition checks and adds error handling in runtime PM.  Patch 09
consolidats the clock initialization into a central place.

This series is verified on Arm64 Hikey960 platform.


Leo Yan (9):
  coresight: tmc: Support atclk
  coresight: catu: Support atclk
  coresight: etm4x: Support atclk
  coresight: Disable programming clock properly
  coresight: Avoid enable programming clock duplicately
  coresight: Disable trace bus clock properly
  coresight: Make clock sequence consistent
  coresight: Refactor runtime PM
  coresight: Consolidate clock enabling

 drivers/hwtracing/coresight/coresight-catu.c       | 53 ++++++++++++++++-----------------
 drivers/hwtracing/coresight/coresight-catu.h       |  1 +
 drivers/hwtracing/coresight/coresight-cpu-debug.c  | 41 +++++++++-----------------
 drivers/hwtracing/coresight/coresight-ctcu-core.c  | 24 +++++----------
 drivers/hwtracing/coresight/coresight-etb10.c      | 18 ++++--------
 drivers/hwtracing/coresight/coresight-etm3x-core.c | 17 ++++-------
 drivers/hwtracing/coresight/coresight-etm4x-core.c | 32 ++++++++++----------
 drivers/hwtracing/coresight/coresight-etm4x.h      |  4 ++-
 drivers/hwtracing/coresight/coresight-funnel.c     | 66 +++++++++++++++---------------------------
 drivers/hwtracing/coresight/coresight-replicator.c | 63 ++++++++++++++--------------------------
 drivers/hwtracing/coresight/coresight-stm.c        | 34 +++++++++-------------
 drivers/hwtracing/coresight/coresight-tmc-core.c   | 48 +++++++++++++++---------------
 drivers/hwtracing/coresight/coresight-tmc.h        |  2 ++
 drivers/hwtracing/coresight/coresight-tpiu.c       | 36 ++++++++++-------------
 include/linux/coresight.h                          | 47 ++++++++++++++++++------------
 15 files changed, 206 insertions(+), 280 deletions(-)