On 6/20/2023 4:49 PM, Greg Kroah-Hartman wrote:
On Tue, Jun 20, 2023 at 04:31:59PM +0800, Tao Zhang wrote:
On 6/20/2023 3:37 PM, Greg Kroah-Hartman wrote:
On Tue, Jun 20, 2023 at 03:32:37PM +0800, Tao Zhang wrote:
Add the nodes to set value for DSB edge control and DSB edge control mask. Each DSB subunit TPDM has maximum of n(n<16) EDCR resgisters to configure edge control. DSB edge detection control 00: Rising edge detection 01: Falling edge detection 10: Rising and falling edge detection (toggle detection) And each DSB subunit TPDM has maximum of m(m<8) ECDMR registers to configure mask. Eight 32 bit registers providing DSB interface edge detection mask control.
Signed-off-by: Tao Zhangquic_taozha@quicinc.com
.../ABI/testing/sysfs-bus-coresight-devices-tpdm | 32 +++++ drivers/hwtracing/coresight/coresight-tpdm.c | 143 ++++++++++++++++++++- drivers/hwtracing/coresight/coresight-tpdm.h | 22 ++++ 3 files changed, 196 insertions(+), 1 deletion(-)
diff --git a/Documentation/ABI/testing/sysfs-bus-coresight-devices-tpdm b/Documentation/ABI/testing/sysfs-bus-coresight-devices-tpdm index 2a82cd0..34189e4a 100644 --- a/Documentation/ABI/testing/sysfs-bus-coresight-devices-tpdm +++ b/Documentation/ABI/testing/sysfs-bus-coresight-devices-tpdm @@ -60,3 +60,35 @@ Description: Bit[3] : Set to 0 for low performance mode. Set to 1 for high performance mode. Bit[4:8] : Select byte lane for high performance mode.
+What: /sys/bus/coresight/devices/<tpdm-name>/dsb_edge_ctrl +Date: March 2023 +KernelVersion 6.5 +Contact: Jinlong Mao (QUIC)quic_jinlmao@quicinc.com, Tao Zhang (QUIC)quic_taozha@quicinc.com +Description:
Read/Write a set of the edge control registers of the DSB
in TPDM.
Expected format is the following:
<integer1> <integer2> <integer3>
sysfs is "one value", not 3. Please never have to parse a sysfs file.
Do you mean sysfs file can only accept "one value"?
Yes.
Hi Greg,
I‘d like to clarify the usage of this sysfs file again.
In the current design, three integers will be written to "dsb_edge_ctrl" to configure DSB edge detection.
Integer #1: The start number of edge detection which needs to be configured.
Integer #2: The end number of edge detection which needs to be configured.
Integer #3: The type of the edge detection needs to be configured.
Below is an example.
echo 0x3 0x25 0x1 > dsb_edge_ctrl
It will configure edge detection #3 to #37 as "falling edge detection".
Since these three integers are interrelated and written to achieve the same function, can we use these three integers as "one tuple" here?
Best,
Tao
I see that more than one value are written to the sysfs file "trigout_attach".
Then someone missed that and it needs to be fixed.
+static ssize_t dsb_edge_ctrl_show(struct device *dev,
struct device_attribute *attr,
char *buf)
+{
- struct tpdm_drvdata *drvdata = dev_get_drvdata(dev->parent);
- ssize_t size = 0;
- unsigned long bytes;
- int i;
- spin_lock(&drvdata->spinlock);
- for (i = 0; i < TPDM_DSB_MAX_EDCR; i++) {
bytes = sysfs_emit_at(buf, size,
"Index:0x%x Val:0x%x\n", i,
Again, no, one value, no "string" needed to parse anything.
I also see other sysfs files can be read more than one value in other drivers.
Again, they are broken, please send patches to fix them.
Is this "one value" limitation the usage rule of Linux sysfs system?
Yes.
thanks,
greg k-h