]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
coresight: change helper_ops to accept coresight_path
authorJie Gan <jie.gan@oss.qualcomm.com>
Thu, 25 Sep 2025 10:42:32 +0000 (18:42 +0800)
committerSuzuki K Poulose <suzuki.poulose@arm.com>
Mon, 10 Nov 2025 10:07:41 +0000 (10:07 +0000)
Update the helper_enable and helper_disable functions to accept
coresight_path instead of a generic void *data, as coresight_path
encapsulates all the necessary data required by devices along the path.

Tested-by: Carl Worth <carl@os.amperecomputing.com>
Reviewed-by: Carl Worth <carl@os.amperecomputing.com>
Reviewed-by: Leo Yan <leo.yan@arm.com>
Signed-off-by: Jie Gan <jie.gan@oss.qualcomm.com>
Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Link: https://lore.kernel.org/r/20250925-fix_helper_data-v2-2-edd8a07c1646@oss.qualcomm.com
drivers/hwtracing/coresight/coresight-catu.c
drivers/hwtracing/coresight/coresight-core.c
drivers/hwtracing/coresight/coresight-ctcu-core.c
drivers/hwtracing/coresight/coresight-cti-core.c
drivers/hwtracing/coresight/coresight-cti.h
drivers/hwtracing/coresight/coresight-tmc-etr.c
drivers/hwtracing/coresight/coresight-tmc.h
include/linux/coresight.h

index a3ccb7034ae14d7339bc2549bccadf11e28c45e2..69b36bae97ab488197f23e6eafe3729ca22445d4 100644 (file)
@@ -397,7 +397,7 @@ static int catu_wait_for_ready(struct catu_drvdata *drvdata)
 }
 
 static int catu_enable_hw(struct catu_drvdata *drvdata, enum cs_mode cs_mode,
-                         void *data)
+                         struct coresight_path *path)
 {
        int rc;
        u32 control, mode;
@@ -425,7 +425,7 @@ static int catu_enable_hw(struct catu_drvdata *drvdata, enum cs_mode cs_mode,
        etrdev = coresight_find_input_type(
                csdev->pdata, CORESIGHT_DEV_TYPE_SINK, etr_subtype);
        if (etrdev) {
-               etr_buf = tmc_etr_get_buffer(etrdev, cs_mode, data);
+               etr_buf = tmc_etr_get_buffer(etrdev, cs_mode, path);
                if (IS_ERR(etr_buf))
                        return PTR_ERR(etr_buf);
        }
@@ -455,7 +455,7 @@ static int catu_enable_hw(struct catu_drvdata *drvdata, enum cs_mode cs_mode,
 }
 
 static int catu_enable(struct coresight_device *csdev, enum cs_mode mode,
-                      void *data)
+                      struct coresight_path *path)
 {
        int rc = 0;
        struct catu_drvdata *catu_drvdata = csdev_to_catu_drvdata(csdev);
@@ -463,7 +463,7 @@ static int catu_enable(struct coresight_device *csdev, enum cs_mode mode,
        guard(raw_spinlock_irqsave)(&catu_drvdata->spinlock);
        if (csdev->refcnt == 0) {
                CS_UNLOCK(catu_drvdata->base);
-               rc = catu_enable_hw(catu_drvdata, mode, data);
+               rc = catu_enable_hw(catu_drvdata, mode, path);
                CS_LOCK(catu_drvdata->base);
        }
        if (!rc)
@@ -488,7 +488,7 @@ static int catu_disable_hw(struct catu_drvdata *drvdata)
        return rc;
 }
 
-static int catu_disable(struct coresight_device *csdev, void *__unused)
+static int catu_disable(struct coresight_device *csdev, struct coresight_path *path)
 {
        int rc = 0;
        struct catu_drvdata *catu_drvdata = csdev_to_catu_drvdata(csdev);
index 3267192f0c1c667b0570b9100c3c449064e7fb5e..f44ec9e5b6926739d3701e9784747dbe29b182a8 100644 (file)
@@ -355,17 +355,20 @@ static bool coresight_is_helper(struct coresight_device *csdev)
 }
 
 static int coresight_enable_helper(struct coresight_device *csdev,
-                                  enum cs_mode mode, void *data)
+                                  enum cs_mode mode,
+                                  struct coresight_path *path)
 {
-       return helper_ops(csdev)->enable(csdev, mode, data);
+       return helper_ops(csdev)->enable(csdev, mode, path);
 }
 
-static void coresight_disable_helper(struct coresight_device *csdev, void *data)
+static void coresight_disable_helper(struct coresight_device *csdev,
+                                    struct coresight_path *path)
 {
-       helper_ops(csdev)->disable(csdev, data);
+       helper_ops(csdev)->disable(csdev, path);
 }
 
-static void coresight_disable_helpers(struct coresight_device *csdev, void *data)
+static void coresight_disable_helpers(struct coresight_device *csdev,
+                                     struct coresight_path *path)
 {
        int i;
        struct coresight_device *helper;
@@ -373,7 +376,7 @@ static void coresight_disable_helpers(struct coresight_device *csdev, void *data
        for (i = 0; i < csdev->pdata->nr_outconns; ++i) {
                helper = csdev->pdata->out_conns[i]->dest_dev;
                if (helper && coresight_is_helper(helper))
-                       coresight_disable_helper(helper, data);
+                       coresight_disable_helper(helper, path);
        }
 }
 
@@ -479,7 +482,8 @@ void coresight_disable_path(struct coresight_path *path)
 EXPORT_SYMBOL_GPL(coresight_disable_path);
 
 static int coresight_enable_helpers(struct coresight_device *csdev,
-                                   enum cs_mode mode, void *data)
+                                   enum cs_mode mode,
+                                   struct coresight_path *path)
 {
        int i, ret = 0;
        struct coresight_device *helper;
@@ -489,7 +493,7 @@ static int coresight_enable_helpers(struct coresight_device *csdev,
                if (!helper || !coresight_is_helper(helper))
                        continue;
 
-               ret = coresight_enable_helper(helper, mode, data);
+               ret = coresight_enable_helper(helper, mode, path);
                if (ret)
                        return ret;
        }
index c586495e9a088a63cec481a82fd9f4ec7c645160..abed15eb72b4acb0d6eb743616afe1b414f1f639 100644 (file)
@@ -156,17 +156,14 @@ static int ctcu_set_etr_traceid(struct coresight_device *csdev, struct coresight
        return __ctcu_set_etr_traceid(csdev, traceid, port_num, enable);
 }
 
-static int ctcu_enable(struct coresight_device *csdev, enum cs_mode mode, void *data)
+static int ctcu_enable(struct coresight_device *csdev, enum cs_mode mode,
+                      struct coresight_path *path)
 {
-       struct coresight_path *path = (struct coresight_path *)data;
-
        return ctcu_set_etr_traceid(csdev, path, true);
 }
 
-static int ctcu_disable(struct coresight_device *csdev, void *data)
+static int ctcu_disable(struct coresight_device *csdev, struct coresight_path *path)
 {
-       struct coresight_path *path = (struct coresight_path *)data;
-
        return ctcu_set_etr_traceid(csdev, path, false);
 }
 
index 8fb30dd73fd20ae613a45b1a467f457a046a9412..bfbc365bb2ef2744efab11c056b8450472957005 100644 (file)
@@ -799,14 +799,15 @@ static void cti_pm_release(struct cti_drvdata *drvdata)
 }
 
 /** cti ect operations **/
-int cti_enable(struct coresight_device *csdev, enum cs_mode mode, void *data)
+int cti_enable(struct coresight_device *csdev, enum cs_mode mode,
+              struct coresight_path *path)
 {
        struct cti_drvdata *drvdata = csdev_to_cti_drvdata(csdev);
 
        return cti_enable_hw(drvdata);
 }
 
-int cti_disable(struct coresight_device *csdev, void *data)
+int cti_disable(struct coresight_device *csdev, struct coresight_path *path)
 {
        struct cti_drvdata *drvdata = csdev_to_cti_drvdata(csdev);
 
index 8362a47c939c60399d7f2f3f599f72de4983a6e1..4f89091ee93f5fb046d93b97a4085051fca6b39d 100644 (file)
@@ -216,8 +216,9 @@ int cti_add_connection_entry(struct device *dev, struct cti_drvdata *drvdata,
                             const char *assoc_dev_name);
 struct cti_trig_con *cti_allocate_trig_con(struct device *dev, int in_sigs,
                                           int out_sigs);
-int cti_enable(struct coresight_device *csdev, enum cs_mode mode, void *data);
-int cti_disable(struct coresight_device *csdev, void *data);
+int cti_enable(struct coresight_device *csdev, enum cs_mode mode,
+              struct coresight_path *path);
+int cti_disable(struct coresight_device *csdev, struct coresight_path *path);
 void cti_write_all_hw_regs(struct cti_drvdata *drvdata);
 void cti_write_intack(struct device *dev, u32 ackval);
 void cti_write_single_reg(struct cti_drvdata *drvdata, int offset, u32 value);
index 60b0e0a6da057505e8b8daa9a852967ddb98bd73..51c6f73dd15c583f75d14383d7fd0527a2e5fd72 100644 (file)
@@ -1332,9 +1332,9 @@ out:
 }
 
 struct etr_buf *tmc_etr_get_buffer(struct coresight_device *csdev,
-                                  enum cs_mode mode, void *data)
+                                  enum cs_mode mode,
+                                  struct coresight_path *path)
 {
-       struct coresight_path *path = data;
        struct perf_output_handle *handle = path->handle;
        struct etr_perf_buffer *etr_perf;
 
index cbb4ba43915855a8acbb9205167e87185c9a8c6c..95473d1310323425b7d136cbd46f118faa7256be 100644 (file)
@@ -442,7 +442,8 @@ struct coresight_device *tmc_etr_get_catu_device(struct tmc_drvdata *drvdata);
 void tmc_etr_set_catu_ops(const struct etr_buf_operations *catu);
 void tmc_etr_remove_catu_ops(void);
 struct etr_buf *tmc_etr_get_buffer(struct coresight_device *csdev,
-                                  enum cs_mode mode, void *data);
+                                  enum cs_mode mode,
+                                  struct coresight_path *path);
 extern const struct attribute_group coresight_etr_group;
 
 #endif
index 2626105e3719196ee442a52b104d42108ec07e7f..2bee2e3bb1c6449fdafc1cb44e8ab5ba24191519 100644 (file)
@@ -424,8 +424,9 @@ struct coresight_ops_source {
  */
 struct coresight_ops_helper {
        int (*enable)(struct coresight_device *csdev, enum cs_mode mode,
-                     void *data);
-       int (*disable)(struct coresight_device *csdev, void *data);
+                     struct coresight_path *path);
+       int (*disable)(struct coresight_device *csdev,
+                      struct coresight_path *path);
 };