On 23/03/2023 06:04, Tao Zhang wrote:
TPDM device need a node to reset the configurations and status of it. This change provides a node to reset the configurations and disable the TPDM if it has been enabled.
Signed-off-by: Tao Zhang quic_taozha@quicinc.com
drivers/hwtracing/coresight/coresight-tpdm.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+)
diff --git a/drivers/hwtracing/coresight/coresight-tpdm.c b/drivers/hwtracing/coresight/coresight-tpdm.c index 5e1e2ba..104638d 100644 --- a/drivers/hwtracing/coresight/coresight-tpdm.c +++ b/drivers/hwtracing/coresight/coresight-tpdm.c @@ -161,6 +161,33 @@ static void tpdm_datasets_setup(struct tpdm_drvdata *drvdata) drvdata->datasets |= pidr & GENMASK(TPDM_DATASETS - 1, 0); } +static ssize_t reset_store(struct device *dev,
struct device_attribute *attr,
const char *buf,
size_t size)
+{
- int ret = 0;
- unsigned long val;
- struct tpdm_drvdata *drvdata = dev_get_drvdata(dev->parent);
- ret = kstrtoul(buf, 10, &val);
- if (ret || val != 1)
return -EINVAL;
- spin_lock(&drvdata->spinlock);
- /* Reset all datasets to ZERO, and init the default data*/
- tpdm_init_datasets(drvdata);
With the suggested rename in the previous patch, you wouldn't need a comment here.
- spin_unlock(&drvdata->spinlock);
- /* Disable tpdm if enabled */
- if (drvdata->enable)
coresight_disable(drvdata->csdev);
Couldn't this be done via disable_source ? Please don't overload the sysfs handle.
- return size;
+} +static DEVICE_ATTR_WO(reset);
Documentation for the sysfs node please ?
Suzuki