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 Zhang <quic_taozha@xxxxxxxxxxx> > > > --- > > > .../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@xxxxxxxxxxx>, Tao Zhang (QUIC) <quic_taozha@xxxxxxxxxxx> > > > +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. > 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