lkml.org 
[lkml]   [2022]   [Nov]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH v1 4/9] coresight-tpdm: Add reset node to TPDM node
Date
TPDM device need a node to reset the configurations and status of
it. So as to avoid the previous configurations affecting the
current use, the configurations need to be reset first. And in
some scenarios, it may be necessary to reset the TPDM
configurations to complete the verification of certain function.
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 | 32 ++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)

diff --git a/drivers/hwtracing/coresight/coresight-tpdm.c b/drivers/hwtracing/coresight/coresight-tpdm.c
index 60de21d..5d5f442 100644
--- a/drivers/hwtracing/coresight/coresight-tpdm.c
+++ b/drivers/hwtracing/coresight/coresight-tpdm.c
@@ -161,6 +161,37 @@ static void tpdm_init_default_data(struct tpdm_drvdata *drvdata)
}
}

+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, 0, &val);
+ if (ret || (val != 1))
+ return -EINVAL;
+
+ spin_lock(&drvdata->spinlock);
+ /* Reset all datasets to ZERO */
+ if (drvdata->dsb != NULL)
+ memset(drvdata->dsb, 0, sizeof(struct dsb_dataset));
+
+ /* Init the default data */
+ tpdm_init_default_data(drvdata);
+
+ spin_unlock(&drvdata->spinlock);
+
+ /* Disable tpdm if enabled */
+ if (drvdata->enable)
+ coresight_disable(drvdata->csdev);
+
+ return size;
+}
+static DEVICE_ATTR_WO(reset);
+
/*
* value 1: 64 bits test data
* value 2: 32 bits test data
@@ -201,6 +232,7 @@ static ssize_t integration_test_store(struct device *dev,
static DEVICE_ATTR_WO(integration_test);

static struct attribute *tpdm_attrs[] = {
+ &dev_attr_reset.attr,
&dev_attr_integration_test.attr,
NULL,
};
--
2.7.4
\
 
 \ /
  Last update: 2022-11-21 09:23    [W:0.076 / U:0.364 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site