* [PATCH v3 0/3] add sysfs nodes to configure TPDA's registers
@ 2025-08-27 10:55 Jie Gan
2025-08-27 10:55 ` [PATCH v3 1/3] coresight: tpda: add sysfs nodes for tpda cross-trigger configuration Jie Gan
` (4 more replies)
0 siblings, 5 replies; 10+ messages in thread
From: Jie Gan @ 2025-08-27 10:55 UTC (permalink / raw)
To: Suzuki K Poulose, Mike Leach, James Clark, Alexander Shishkin,
Tingwei Zhang
Cc: coresight, linux-arm-kernel, linux-kernel, linux-arm-msm
Patchset 1 introduces configuration of the cross-trigger registers with
appropriate values to enable proper generation of cross-trigger packets.
Patchset 2 introduces a logic to configure the TPDA_SYNCR register,
which determines the frequency of ASYNC packet generation. These packets
assist userspace tools in accurately identifying each valid packet.
Patchset 3 introduces a sysfs node to initiate a flush request for the
specific port, forcing the data to synchronize and be transmitted to the
sink device.
Changes in V3:
1. Optimizing codes according to James's comment.
Link to V2 - https://lore.kernel.org/all/20250827042042.6786-1-jie.gan@oss.qualcomm.com/
Changes in V2:
1. Refactoring the code based on James's comment for optimization.
Link to V1 - https://lore.kernel.org/all/20250826070150.5603-1-jie.gan@oss.qualcomm.com/
Tao Zhang (3):
coresight: tpda: add sysfs nodes for tpda cross-trigger configuration
coresight: tpda: add logic to configure TPDA_SYNCR register
coresight: tpda: add sysfs node to flush specific port
.../testing/sysfs-bus-coresight-devices-tpda | 50 ++++
drivers/hwtracing/coresight/coresight-tpda.c | 278 ++++++++++++++++++
drivers/hwtracing/coresight/coresight-tpda.h | 33 ++-
3 files changed, 360 insertions(+), 1 deletion(-)
create mode 100644 Documentation/ABI/testing/sysfs-bus-coresight-devices-tpda
--
2.34.1
^ permalink raw reply [flat|nested] 10+ messages in thread* [PATCH v3 1/3] coresight: tpda: add sysfs nodes for tpda cross-trigger configuration 2025-08-27 10:55 [PATCH v3 0/3] add sysfs nodes to configure TPDA's registers Jie Gan @ 2025-08-27 10:55 ` Jie Gan 2025-08-27 10:55 ` [PATCH v3 2/3] coresight: tpda: add logic to configure TPDA_SYNCR register Jie Gan ` (3 subsequent siblings) 4 siblings, 0 replies; 10+ messages in thread From: Jie Gan @ 2025-08-27 10:55 UTC (permalink / raw) To: Suzuki K Poulose, Mike Leach, James Clark, Alexander Shishkin, Tingwei Zhang Cc: coresight, linux-arm-kernel, linux-kernel, linux-arm-msm From: Tao Zhang <tao.zhang@oss.qualcomm.com> Introduce sysfs nodes to configure cross-trigger parameters for TPDA. These registers define the characteristics of cross-trigger packets, including generation frequency and flag values. Signed-off-by: Tao Zhang <tao.zhang@oss.qualcomm.com> Co-developed-by: Jie Gan <jie.gan@oss.qualcomm.com> Signed-off-by: Jie Gan <jie.gan@oss.qualcomm.com> --- .../testing/sysfs-bus-coresight-devices-tpda | 43 ++++ drivers/hwtracing/coresight/coresight-tpda.c | 230 ++++++++++++++++++ drivers/hwtracing/coresight/coresight-tpda.h | 27 +- 3 files changed, 299 insertions(+), 1 deletion(-) create mode 100644 Documentation/ABI/testing/sysfs-bus-coresight-devices-tpda diff --git a/Documentation/ABI/testing/sysfs-bus-coresight-devices-tpda b/Documentation/ABI/testing/sysfs-bus-coresight-devices-tpda new file mode 100644 index 000000000000..fb651aebeb31 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-bus-coresight-devices-tpda @@ -0,0 +1,43 @@ +What: /sys/bus/coresight/devices/<tpda-name>/trig_async_enable +Date: August 2025 +KernelVersion: 6.17 +Contact: Jinlong Mao <jinlong.mao@oss.qualcomm.com>, Tao Zhang <tao.zhang@oss.qualcomm.com>, Jie Gan <jie.gan@oss.qualcomm.com> +Description: + (RW) Enable/disable cross trigger synchronization sequence interface. + +What: /sys/bus/coresight/devices/<tpda-name>/trig_flag_ts_enable +Date: August 2025 +KernelVersion: 6.17 +Contact: Jinlong Mao <jinlong.mao@oss.qualcomm.com>, Tao Zhang <tao.zhang@oss.qualcomm.com>, Jie Gan <jie.gan@oss.qualcomm.com> +Description: + (RW) Enable/disable cross trigger FLAG packet request interface. + +What: /sys/bus/coresight/devices/<tpda-name>/trig_freq_enable +Date: August 2025 +KernelVersion: 6.17 +Contact: Jinlong Mao <jinlong.mao@oss.qualcomm.com>, Tao Zhang <tao.zhang@oss.qualcomm.com>, Jie Gan <jie.gan@oss.qualcomm.com> +Description: + (RW) Enable/disable cross trigger FREQ packet request interface. + +What: /sys/bus/coresight/devices/<tpda-name>/freq_ts_enable +Date: August 2025 +KernelVersion: 6.17 +Contact: Jinlong Mao <jinlong.mao@oss.qualcomm.com>, Tao Zhang <tao.zhang@oss.qualcomm.com>, Jie Gan <jie.gan@oss.qualcomm.com> +Description: + (RW) Enable/disable the timestamp for all FREQ packets. + +What: /sys/bus/coresight/devices/<tpda-name>/global_flush_req +Date: August 2025 +KernelVersion: 6.17 +Contact: Jinlong Mao <jinlong.mao@oss.qualcomm.com>, Tao Zhang <tao.zhang@oss.qualcomm.com>, Jie Gan <jie.gan@oss.qualcomm.com> +Description: + (RW) Set global (all ports) flush request bit. The bit remains set until a + global flush request sequence completes. + +What: /sys/bus/coresight/devices/<tpda-name>/cmbchan_mode +Date: August 2025 +KernelVersion: 6.17 +Contact: Jinlong Mao <jinlong.mao@oss.qualcomm.com>, Tao Zhang <tao.zhang@oss.qualcomm.com>, Jie Gan <jie.gan@oss.qualcomm.com> +Description: + (RW) Configure the CMB/MCMB channel mode for all enabled ports. + Value 0 means raw channel mapping mode. Value 1 means channel pair marking mode. diff --git a/drivers/hwtracing/coresight/coresight-tpda.c b/drivers/hwtracing/coresight/coresight-tpda.c index 4e93fa5bace4..d4d1def5ec15 100644 --- a/drivers/hwtracing/coresight/coresight-tpda.c +++ b/drivers/hwtracing/coresight/coresight-tpda.c @@ -156,9 +156,37 @@ static void tpda_enable_pre_port(struct tpda_drvdata *drvdata) u32 val; val = readl_relaxed(drvdata->base + TPDA_CR); + val &= ~TPDA_CR_MID; val &= ~TPDA_CR_ATID; val |= FIELD_PREP(TPDA_CR_ATID, drvdata->atid); + if (drvdata->trig_async) + val |= TPDA_CR_SRIE; + else + val &= ~TPDA_CR_SRIE; + if (drvdata->trig_flag_ts) + val |= TPDA_CR_FLRIE; + else + val &= ~TPDA_CR_FLRIE; + if (drvdata->trig_freq) + val |= TPDA_CR_FRIE; + else + val &= ~TPDA_CR_FRIE; + if (drvdata->freq_ts) + val |= TPDA_CR_FREQTS; + else + val &= ~TPDA_CR_FREQTS; + if (drvdata->cmbchan_mode) + val |= TPDA_CR_CMBCHANMODE; + else + val &= ~TPDA_CR_CMBCHANMODE; writel_relaxed(val, drvdata->base + TPDA_CR); + + /* + * If FLRIE bit is set, set the master and channel + * id as zero + */ + if (drvdata->trig_flag_ts) + writel_relaxed(0x0, drvdata->base + TPDA_FPID_CR); } static int tpda_enable_port(struct tpda_drvdata *drvdata, int port) @@ -274,6 +302,206 @@ static const struct coresight_ops tpda_cs_ops = { .link_ops = &tpda_link_ops, }; +static ssize_t trig_async_enable_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct tpda_drvdata *drvdata = dev_get_drvdata(dev->parent); + + return sysfs_emit(buf, "%u\n", (unsigned int)drvdata->trig_async); +} + +static ssize_t trig_async_enable_store(struct device *dev, + struct device_attribute *attr, + const char *buf, + size_t size) +{ + struct tpda_drvdata *drvdata = dev_get_drvdata(dev->parent); + unsigned long val; + + if (kstrtoul(buf, 0, &val)) + return -EINVAL; + + guard(spinlock)(&drvdata->spinlock); + drvdata->trig_async = !!val; + + return size; +} +static DEVICE_ATTR_RW(trig_async_enable); + +static ssize_t trig_flag_ts_enable_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct tpda_drvdata *drvdata = dev_get_drvdata(dev->parent); + + return sysfs_emit(buf, "%u\n", (unsigned int)drvdata->trig_flag_ts); +} + +static ssize_t trig_flag_ts_enable_store(struct device *dev, + struct device_attribute *attr, + const char *buf, + size_t size) +{ + struct tpda_drvdata *drvdata = dev_get_drvdata(dev->parent); + unsigned long val; + + if (kstrtoul(buf, 0, &val)) + return -EINVAL; + + guard(spinlock)(&drvdata->spinlock); + drvdata->trig_flag_ts = !!val; + + return size; +} +static DEVICE_ATTR_RW(trig_flag_ts_enable); + +static ssize_t trig_freq_enable_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct tpda_drvdata *drvdata = dev_get_drvdata(dev->parent); + + return sysfs_emit(buf, "%u\n", (unsigned int)drvdata->trig_freq); +} + +static ssize_t trig_freq_enable_store(struct device *dev, + struct device_attribute *attr, + const char *buf, + size_t size) +{ + struct tpda_drvdata *drvdata = dev_get_drvdata(dev->parent); + unsigned long val; + + if (kstrtoul(buf, 0, &val)) + return -EINVAL; + + guard(spinlock)(&drvdata->spinlock); + drvdata->trig_freq = !!val; + + return size; +} +static DEVICE_ATTR_RW(trig_freq_enable); + +static ssize_t freq_ts_enable_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct tpda_drvdata *drvdata = dev_get_drvdata(dev->parent); + + return sysfs_emit(buf, "%u\n", (unsigned int)drvdata->freq_ts); +} + +static ssize_t freq_ts_enable_store(struct device *dev, + struct device_attribute *attr, + const char *buf, + size_t size) +{ + struct tpda_drvdata *drvdata = dev_get_drvdata(dev->parent); + unsigned long val; + + if (kstrtoul(buf, 0, &val)) + return -EINVAL; + + guard(spinlock)(&drvdata->spinlock); + drvdata->freq_ts = !!val; + + return size; +} +static DEVICE_ATTR_RW(freq_ts_enable); + +static ssize_t global_flush_req_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct tpda_drvdata *drvdata = dev_get_drvdata(dev->parent); + unsigned long val; + + if (!drvdata->csdev->refcnt) + return -EINVAL; + + guard(spinlock)(&drvdata->spinlock); + CS_UNLOCK(drvdata->base); + val = readl_relaxed(drvdata->base + TPDA_CR); + CS_LOCK(drvdata->base); + /* Only read value for bit 0 */ + val &= BIT(0); + + return sysfs_emit(buf, "%lu\n", val); +} + +static ssize_t global_flush_req_store(struct device *dev, + struct device_attribute *attr, + const char *buf, + size_t size) +{ + struct tpda_drvdata *drvdata = dev_get_drvdata(dev->parent); + unsigned long val; + + if (kstrtoul(buf, 0, &val)) + return -EINVAL; + + if (!drvdata->csdev->refcnt || !val) + return -EINVAL; + + guard(spinlock)(&drvdata->spinlock); + CS_UNLOCK(drvdata->base); + val = readl_relaxed(drvdata->base + TPDA_CR); + /* Only set bit 0 */ + val |= BIT(0); + writel_relaxed(val, drvdata->base + TPDA_CR); + CS_LOCK(drvdata->base); + + return size; +} +static DEVICE_ATTR_RW(global_flush_req); + +static ssize_t cmbchan_mode_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct tpda_drvdata *drvdata = dev_get_drvdata(dev->parent); + + return sysfs_emit(buf, "%u\n", (unsigned int)drvdata->cmbchan_mode); +} + +static ssize_t cmbchan_mode_store(struct device *dev, + struct device_attribute *attr, + const char *buf, + size_t size) +{ + struct tpda_drvdata *drvdata = dev_get_drvdata(dev->parent); + unsigned long val; + + if (kstrtoul(buf, 0, &val)) + return -EINVAL; + + guard(spinlock)(&drvdata->spinlock); + drvdata->cmbchan_mode = !!val; + + return size; +} +static DEVICE_ATTR_RW(cmbchan_mode); + +static struct attribute *tpda_attrs[] = { + &dev_attr_trig_async_enable.attr, + &dev_attr_trig_flag_ts_enable.attr, + &dev_attr_trig_freq_enable.attr, + &dev_attr_freq_ts_enable.attr, + &dev_attr_global_flush_req.attr, + &dev_attr_cmbchan_mode.attr, + NULL, +}; + +static struct attribute_group tpda_attr_grp = { + .attrs = tpda_attrs, +}; + +static const struct attribute_group *tpda_attr_grps[] = { + &tpda_attr_grp, + NULL, +}; + static int tpda_init_default_data(struct tpda_drvdata *drvdata) { int atid; @@ -289,6 +517,7 @@ static int tpda_init_default_data(struct tpda_drvdata *drvdata) return atid; drvdata->atid = atid; + drvdata->freq_ts = true; return 0; } @@ -332,6 +561,7 @@ static int tpda_probe(struct amba_device *adev, const struct amba_id *id) desc.ops = &tpda_cs_ops; desc.pdata = adev->dev.platform_data; desc.dev = &adev->dev; + desc.groups = tpda_attr_grps; desc.access = CSDEV_ACCESS_IOMEM(base); drvdata->csdev = coresight_register(&desc); if (IS_ERR(drvdata->csdev)) diff --git a/drivers/hwtracing/coresight/coresight-tpda.h b/drivers/hwtracing/coresight/coresight-tpda.h index c6af3d2da3ef..0be625fb52fd 100644 --- a/drivers/hwtracing/coresight/coresight-tpda.h +++ b/drivers/hwtracing/coresight/coresight-tpda.h @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: GPL-2.0 */ /* - * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2023,2025 Qualcomm Innovation Center, Inc. All rights reserved. */ #ifndef _CORESIGHT_CORESIGHT_TPDA_H @@ -8,6 +8,19 @@ #define TPDA_CR (0x000) #define TPDA_Pn_CR(n) (0x004 + (n * 4)) +#define TPDA_FPID_CR (0x084) + +/* Cross trigger FREQ packets timestamp bit */ +#define TPDA_CR_FREQTS BIT(2) +/* Cross trigger FREQ packet request bit */ +#define TPDA_CR_FRIE BIT(3) +/* Cross trigger FLAG packet request interface bit */ +#define TPDA_CR_FLRIE BIT(4) +/* Cross trigger synchronization bit */ +#define TPDA_CR_SRIE BIT(5) +/* Packetize CMB/MCMB traffic bit */ +#define TPDA_CR_CMBCHANMODE BIT(20) + /* Aggregator port enable bit */ #define TPDA_Pn_CR_ENA BIT(0) /* Aggregator port CMB data set element size bit */ @@ -19,6 +32,8 @@ /* Bits 6 ~ 12 is for atid value */ #define TPDA_CR_ATID GENMASK(12, 6) +/* Bits 13 ~ 19 is for mid value */ +#define TPDA_CR_MID GENMASK(19, 13) /** * struct tpda_drvdata - specifics associated to an TPDA component @@ -29,6 +44,11 @@ * @enable: enable status of the component. * @dsb_esize Record the DSB element size. * @cmb_esize Record the CMB element size. + * @trig_async: Enable/disable cross trigger synchronization sequence interface. + * @trig_flag_ts: Enable/disable cross trigger FLAG packet request interface. + * @trig_freq: Enable/disable cross trigger FREQ packet request interface. + * @freq_ts: Enable/disable the timestamp for all FREQ packets. + * @cmbchan_mode: Configure the CMB/MCMB channel mode. */ struct tpda_drvdata { void __iomem *base; @@ -38,6 +58,11 @@ struct tpda_drvdata { u8 atid; u32 dsb_esize; u32 cmb_esize; + bool trig_async; + bool trig_flag_ts; + bool trig_freq; + bool freq_ts; + bool cmbchan_mode; }; #endif /* _CORESIGHT_CORESIGHT_TPDA_H */ -- 2.34.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v3 2/3] coresight: tpda: add logic to configure TPDA_SYNCR register 2025-08-27 10:55 [PATCH v3 0/3] add sysfs nodes to configure TPDA's registers Jie Gan 2025-08-27 10:55 ` [PATCH v3 1/3] coresight: tpda: add sysfs nodes for tpda cross-trigger configuration Jie Gan @ 2025-08-27 10:55 ` Jie Gan 2025-08-27 10:55 ` [PATCH v3 3/3] coresight: tpda: add sysfs node to flush specific port Jie Gan ` (2 subsequent siblings) 4 siblings, 0 replies; 10+ messages in thread From: Jie Gan @ 2025-08-27 10:55 UTC (permalink / raw) To: Suzuki K Poulose, Mike Leach, James Clark, Alexander Shishkin, Tingwei Zhang Cc: coresight, linux-arm-kernel, linux-kernel, linux-arm-msm From: Tao Zhang <tao.zhang@oss.qualcomm.com> The TPDA_SYNCR register defines the frequency at which TPDA generates ASYNC packets, enabling userspace tools to accurately parse each valid packet. Signed-off-by: Tao Zhang <tao.zhang@oss.qualcomm.com> Co-developed-by: Jie Gan <jie.gan@oss.qualcomm.com> Signed-off-by: Jie Gan <jie.gan@oss.qualcomm.com> --- drivers/hwtracing/coresight/coresight-tpda.c | 7 +++++++ drivers/hwtracing/coresight/coresight-tpda.h | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/drivers/hwtracing/coresight/coresight-tpda.c b/drivers/hwtracing/coresight/coresight-tpda.c index d4d1def5ec15..a1393962b04d 100644 --- a/drivers/hwtracing/coresight/coresight-tpda.c +++ b/drivers/hwtracing/coresight/coresight-tpda.c @@ -187,6 +187,13 @@ static void tpda_enable_pre_port(struct tpda_drvdata *drvdata) */ if (drvdata->trig_flag_ts) writel_relaxed(0x0, drvdata->base + TPDA_FPID_CR); + + /* Program the counter value for TPDA_SYNCR */ + val = readl_relaxed(drvdata->base + TPDA_SYNCR); + /* Clear the mode */ + val &= ~TPDA_SYNCR_MODE_CTRL; + val |= TPDA_SYNCR_COUNTER_MASK; + writel_relaxed(val, drvdata->base + TPDA_SYNCR); } static int tpda_enable_port(struct tpda_drvdata *drvdata, int port) diff --git a/drivers/hwtracing/coresight/coresight-tpda.h b/drivers/hwtracing/coresight/coresight-tpda.h index 0be625fb52fd..0c9bf2fade56 100644 --- a/drivers/hwtracing/coresight/coresight-tpda.h +++ b/drivers/hwtracing/coresight/coresight-tpda.h @@ -9,6 +9,7 @@ #define TPDA_CR (0x000) #define TPDA_Pn_CR(n) (0x004 + (n * 4)) #define TPDA_FPID_CR (0x084) +#define TPDA_SYNCR (0x08C) /* Cross trigger FREQ packets timestamp bit */ #define TPDA_CR_FREQTS BIT(2) @@ -27,6 +28,10 @@ #define TPDA_Pn_CR_CMBSIZE GENMASK(7, 6) /* Aggregator port DSB data set element size bit */ #define TPDA_Pn_CR_DSBSIZE BIT(8) +/* TPDA_SYNCR mode control bit */ +#define TPDA_SYNCR_MODE_CTRL BIT(12) +/* TPDA_SYNCR counter mask */ +#define TPDA_SYNCR_COUNTER_MASK GENMASK(11, 0) #define TPDA_MAX_INPORTS 32 -- 2.34.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v3 3/3] coresight: tpda: add sysfs node to flush specific port 2025-08-27 10:55 [PATCH v3 0/3] add sysfs nodes to configure TPDA's registers Jie Gan 2025-08-27 10:55 ` [PATCH v3 1/3] coresight: tpda: add sysfs nodes for tpda cross-trigger configuration Jie Gan 2025-08-27 10:55 ` [PATCH v3 2/3] coresight: tpda: add logic to configure TPDA_SYNCR register Jie Gan @ 2025-08-27 10:55 ` Jie Gan 2025-08-27 11:59 ` [PATCH v3 0/3] add sysfs nodes to configure TPDA's registers James Clark 2025-10-27 1:14 ` Jie Gan 4 siblings, 0 replies; 10+ messages in thread From: Jie Gan @ 2025-08-27 10:55 UTC (permalink / raw) To: Suzuki K Poulose, Mike Leach, James Clark, Alexander Shishkin, Tingwei Zhang Cc: coresight, linux-arm-kernel, linux-kernel, linux-arm-msm From: Tao Zhang <tao.zhang@oss.qualcomm.com> Setting bit i in the TPDA_FLUSH_CR register initiates a flush request for port i, forcing the data to synchronize and be transmitted to the sink device. Signed-off-by: Tao Zhang <tao.zhang@oss.qualcomm.com> Co-developed-by: Jie Gan <jie.gan@oss.qualcomm.com> Signed-off-by: Jie Gan <jie.gan@oss.qualcomm.com> --- .../testing/sysfs-bus-coresight-devices-tpda | 7 ++++ drivers/hwtracing/coresight/coresight-tpda.c | 41 +++++++++++++++++++ drivers/hwtracing/coresight/coresight-tpda.h | 1 + 3 files changed, 49 insertions(+) diff --git a/Documentation/ABI/testing/sysfs-bus-coresight-devices-tpda b/Documentation/ABI/testing/sysfs-bus-coresight-devices-tpda index fb651aebeb31..2cf2dcfc13c8 100644 --- a/Documentation/ABI/testing/sysfs-bus-coresight-devices-tpda +++ b/Documentation/ABI/testing/sysfs-bus-coresight-devices-tpda @@ -41,3 +41,10 @@ Contact: Jinlong Mao <jinlong.mao@oss.qualcomm.com>, Tao Zhang <tao.zhang@oss.qu Description: (RW) Configure the CMB/MCMB channel mode for all enabled ports. Value 0 means raw channel mapping mode. Value 1 means channel pair marking mode. + +What: /sys/bus/coresight/devices/<tpda-name>/port_flush_req +Date: August 2025 +KernelVersion: 6.17 +Contact: Jinlong Mao <jinlong.mao@oss.qualcomm.com>, Tao Zhang <tao.zhang@oss.qualcomm.com>, Jie Gan <jie.gan@oss.qualcomm.com> +Description: + (RW) Configure the bit i to requests a flush operation of port i on the TPDA. diff --git a/drivers/hwtracing/coresight/coresight-tpda.c b/drivers/hwtracing/coresight/coresight-tpda.c index a1393962b04d..e9e2736071fb 100644 --- a/drivers/hwtracing/coresight/coresight-tpda.c +++ b/drivers/hwtracing/coresight/coresight-tpda.c @@ -490,6 +490,46 @@ static ssize_t cmbchan_mode_store(struct device *dev, } static DEVICE_ATTR_RW(cmbchan_mode); +static ssize_t port_flush_req_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct tpda_drvdata *drvdata = dev_get_drvdata(dev->parent); + unsigned long val; + + if (!drvdata->csdev->refcnt) + return -EINVAL; + + guard(spinlock)(&drvdata->spinlock); + CS_UNLOCK(drvdata->base); + val = readl_relaxed(drvdata->base + TPDA_FLUSH_CR); + CS_LOCK(drvdata->base); + return sysfs_emit(buf, "0x%lx\n", val); +} + +static ssize_t port_flush_req_store(struct device *dev, + struct device_attribute *attr, + const char *buf, + size_t size) +{ + struct tpda_drvdata *drvdata = dev_get_drvdata(dev->parent); + u32 val; + + if (kstrtou32(buf, 0, &val)) + return -EINVAL; + + if (!drvdata->csdev->refcnt || !val) + return -EINVAL; + + guard(spinlock)(&drvdata->spinlock); + CS_UNLOCK(drvdata->base); + writel_relaxed(val, drvdata->base + TPDA_FLUSH_CR); + CS_LOCK(drvdata->base); + + return size; +} +static DEVICE_ATTR_RW(port_flush_req); + static struct attribute *tpda_attrs[] = { &dev_attr_trig_async_enable.attr, &dev_attr_trig_flag_ts_enable.attr, @@ -497,6 +537,7 @@ static struct attribute *tpda_attrs[] = { &dev_attr_freq_ts_enable.attr, &dev_attr_global_flush_req.attr, &dev_attr_cmbchan_mode.attr, + &dev_attr_port_flush_req.attr, NULL, }; diff --git a/drivers/hwtracing/coresight/coresight-tpda.h b/drivers/hwtracing/coresight/coresight-tpda.h index 0c9bf2fade56..284ac63699ad 100644 --- a/drivers/hwtracing/coresight/coresight-tpda.h +++ b/drivers/hwtracing/coresight/coresight-tpda.h @@ -10,6 +10,7 @@ #define TPDA_Pn_CR(n) (0x004 + (n * 4)) #define TPDA_FPID_CR (0x084) #define TPDA_SYNCR (0x08C) +#define TPDA_FLUSH_CR (0x090) /* Cross trigger FREQ packets timestamp bit */ #define TPDA_CR_FREQTS BIT(2) -- 2.34.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v3 0/3] add sysfs nodes to configure TPDA's registers 2025-08-27 10:55 [PATCH v3 0/3] add sysfs nodes to configure TPDA's registers Jie Gan ` (2 preceding siblings ...) 2025-08-27 10:55 ` [PATCH v3 3/3] coresight: tpda: add sysfs node to flush specific port Jie Gan @ 2025-08-27 11:59 ` James Clark 2025-09-15 2:12 ` Jie Gan 2025-10-27 1:14 ` Jie Gan 4 siblings, 1 reply; 10+ messages in thread From: James Clark @ 2025-08-27 11:59 UTC (permalink / raw) To: Jie Gan, Suzuki K Poulose Cc: coresight, linux-arm-kernel, linux-kernel, linux-arm-msm, Mike Leach, Alexander Shishkin, Tingwei Zhang On 27/08/2025 11:55 am, Jie Gan wrote: > Patchset 1 introduces configuration of the cross-trigger registers with > appropriate values to enable proper generation of cross-trigger packets. > > Patchset 2 introduces a logic to configure the TPDA_SYNCR register, > which determines the frequency of ASYNC packet generation. These packets > assist userspace tools in accurately identifying each valid packet. > > Patchset 3 introduces a sysfs node to initiate a flush request for the > specific port, forcing the data to synchronize and be transmitted to the > sink device. > > Changes in V3: > 1. Optimizing codes according to James's comment. > Link to V2 - https://lore.kernel.org/all/20250827042042.6786-1-jie.gan@oss.qualcomm.com/ > > Changes in V2: > 1. Refactoring the code based on James's comment for optimization. > Link to V1 - https://lore.kernel.org/all/20250826070150.5603-1-jie.gan@oss.qualcomm.com/ > > Tao Zhang (3): > coresight: tpda: add sysfs nodes for tpda cross-trigger configuration > coresight: tpda: add logic to configure TPDA_SYNCR register > coresight: tpda: add sysfs node to flush specific port > > .../testing/sysfs-bus-coresight-devices-tpda | 50 ++++ > drivers/hwtracing/coresight/coresight-tpda.c | 278 ++++++++++++++++++ > drivers/hwtracing/coresight/coresight-tpda.h | 33 ++- > 3 files changed, 360 insertions(+), 1 deletion(-) > create mode 100644 Documentation/ABI/testing/sysfs-bus-coresight-devices-tpda > Reviewed-by: James Clark <james.clark@linaro.org> ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v3 0/3] add sysfs nodes to configure TPDA's registers 2025-08-27 11:59 ` [PATCH v3 0/3] add sysfs nodes to configure TPDA's registers James Clark @ 2025-09-15 2:12 ` Jie Gan 2025-10-13 8:25 ` Jie Gan 0 siblings, 1 reply; 10+ messages in thread From: Jie Gan @ 2025-09-15 2:12 UTC (permalink / raw) To: James Clark, Suzuki K Poulose Cc: coresight, linux-arm-kernel, linux-kernel, linux-arm-msm, Mike Leach, Alexander Shishkin, Tingwei Zhang On 8/27/2025 7:59 PM, James Clark wrote: > > > On 27/08/2025 11:55 am, Jie Gan wrote: >> Patchset 1 introduces configuration of the cross-trigger registers with >> appropriate values to enable proper generation of cross-trigger packets. >> >> Patchset 2 introduces a logic to configure the TPDA_SYNCR register, >> which determines the frequency of ASYNC packet generation. These packets >> assist userspace tools in accurately identifying each valid packet. >> >> Patchset 3 introduces a sysfs node to initiate a flush request for the >> specific port, forcing the data to synchronize and be transmitted to the >> sink device. >> >> Changes in V3: >> 1. Optimizing codes according to James's comment. >> Link to V2 - https://lore.kernel.org/all/20250827042042.6786-1- >> jie.gan@oss.qualcomm.com/ >> >> Changes in V2: >> 1. Refactoring the code based on James's comment for optimization. >> Link to V1 - https://lore.kernel.org/all/20250826070150.5603-1- >> jie.gan@oss.qualcomm.com/ >> >> Tao Zhang (3): >> coresight: tpda: add sysfs nodes for tpda cross-trigger configuration >> coresight: tpda: add logic to configure TPDA_SYNCR register >> coresight: tpda: add sysfs node to flush specific port >> >> .../testing/sysfs-bus-coresight-devices-tpda | 50 ++++ >> drivers/hwtracing/coresight/coresight-tpda.c | 278 ++++++++++++++++++ >> drivers/hwtracing/coresight/coresight-tpda.h | 33 ++- >> 3 files changed, 360 insertions(+), 1 deletion(-) >> create mode 100644 Documentation/ABI/testing/sysfs-bus-coresight- >> devices-tpda >> > > Reviewed-by: James Clark <james.clark@linaro.org> > Gentle ping. Thanks, Jie ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v3 0/3] add sysfs nodes to configure TPDA's registers 2025-09-15 2:12 ` Jie Gan @ 2025-10-13 8:25 ` Jie Gan 0 siblings, 0 replies; 10+ messages in thread From: Jie Gan @ 2025-10-13 8:25 UTC (permalink / raw) To: James Clark, Suzuki K Poulose Cc: coresight, linux-arm-kernel, linux-kernel, linux-arm-msm, Mike Leach, Alexander Shishkin, Tingwei Zhang On 9/15/2025 10:12 AM, Jie Gan wrote: > > > On 8/27/2025 7:59 PM, James Clark wrote: >> >> >> On 27/08/2025 11:55 am, Jie Gan wrote: >>> Patchset 1 introduces configuration of the cross-trigger registers with >>> appropriate values to enable proper generation of cross-trigger packets. >>> >>> Patchset 2 introduces a logic to configure the TPDA_SYNCR register, >>> which determines the frequency of ASYNC packet generation. These packets >>> assist userspace tools in accurately identifying each valid packet. >>> >>> Patchset 3 introduces a sysfs node to initiate a flush request for the >>> specific port, forcing the data to synchronize and be transmitted to the >>> sink device. >>> >>> Changes in V3: >>> 1. Optimizing codes according to James's comment. >>> Link to V2 - https://lore.kernel.org/all/20250827042042.6786-1- >>> jie.gan@oss.qualcomm.com/ >>> >>> Changes in V2: >>> 1. Refactoring the code based on James's comment for optimization. >>> Link to V1 - https://lore.kernel.org/all/20250826070150.5603-1- >>> jie.gan@oss.qualcomm.com/ >>> >>> Tao Zhang (3): >>> coresight: tpda: add sysfs nodes for tpda cross-trigger configuration >>> coresight: tpda: add logic to configure TPDA_SYNCR register >>> coresight: tpda: add sysfs node to flush specific port >>> >>> .../testing/sysfs-bus-coresight-devices-tpda | 50 ++++ >>> drivers/hwtracing/coresight/coresight-tpda.c | 278 ++++++++++++++++++ >>> drivers/hwtracing/coresight/coresight-tpda.h | 33 ++- >>> 3 files changed, 360 insertions(+), 1 deletion(-) >>> create mode 100644 Documentation/ABI/testing/sysfs-bus-coresight- >>> devices-tpda >>> >> >> Reviewed-by: James Clark <james.clark@linaro.org> >> > > Gentle ping. Hi Suzuki, James has reviewed the patch series. May I know whether you have any comments about the patch series before get applied? Thanks, Jie > > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v3 0/3] add sysfs nodes to configure TPDA's registers 2025-08-27 10:55 [PATCH v3 0/3] add sysfs nodes to configure TPDA's registers Jie Gan ` (3 preceding siblings ...) 2025-08-27 11:59 ` [PATCH v3 0/3] add sysfs nodes to configure TPDA's registers James Clark @ 2025-10-27 1:14 ` Jie Gan 2025-10-27 9:29 ` Suzuki K Poulose 4 siblings, 1 reply; 10+ messages in thread From: Jie Gan @ 2025-10-27 1:14 UTC (permalink / raw) To: Suzuki K Poulose, Mike Leach, James Clark, Alexander Shishkin, Tingwei Zhang Cc: coresight, linux-arm-kernel, linux-kernel, linux-arm-msm On 8/27/2025 6:55 PM, Jie Gan wrote: > Patchset 1 introduces configuration of the cross-trigger registers with > appropriate values to enable proper generation of cross-trigger packets. > > Patchset 2 introduces a logic to configure the TPDA_SYNCR register, > which determines the frequency of ASYNC packet generation. These packets > assist userspace tools in accurately identifying each valid packet. > > Patchset 3 introduces a sysfs node to initiate a flush request for the > specific port, forcing the data to synchronize and be transmitted to the > sink device. > Gentle reminder. Thanks, Jie > Changes in V3: > 1. Optimizing codes according to James's comment. > Link to V2 - https://lore.kernel.org/all/20250827042042.6786-1-jie.gan@oss.qualcomm.com/ > > Changes in V2: > 1. Refactoring the code based on James's comment for optimization. > Link to V1 - https://lore.kernel.org/all/20250826070150.5603-1-jie.gan@oss.qualcomm.com/ > > Tao Zhang (3): > coresight: tpda: add sysfs nodes for tpda cross-trigger configuration > coresight: tpda: add logic to configure TPDA_SYNCR register > coresight: tpda: add sysfs node to flush specific port > > .../testing/sysfs-bus-coresight-devices-tpda | 50 ++++ > drivers/hwtracing/coresight/coresight-tpda.c | 278 ++++++++++++++++++ > drivers/hwtracing/coresight/coresight-tpda.h | 33 ++- > 3 files changed, 360 insertions(+), 1 deletion(-) > create mode 100644 Documentation/ABI/testing/sysfs-bus-coresight-devices-tpda > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v3 0/3] add sysfs nodes to configure TPDA's registers 2025-10-27 1:14 ` Jie Gan @ 2025-10-27 9:29 ` Suzuki K Poulose 2025-10-28 1:37 ` Jie Gan 0 siblings, 1 reply; 10+ messages in thread From: Suzuki K Poulose @ 2025-10-27 9:29 UTC (permalink / raw) To: Jie Gan, Mike Leach, James Clark, Alexander Shishkin, Tingwei Zhang Cc: coresight, linux-arm-kernel, linux-kernel, linux-arm-msm On 27/10/2025 01:14, Jie Gan wrote: > > > On 8/27/2025 6:55 PM, Jie Gan wrote: >> Patchset 1 introduces configuration of the cross-trigger registers with >> appropriate values to enable proper generation of cross-trigger packets. >> >> Patchset 2 introduces a logic to configure the TPDA_SYNCR register, >> which determines the frequency of ASYNC packet generation. These packets >> assist userspace tools in accurately identifying each valid packet. >> >> Patchset 3 introduces a sysfs node to initiate a flush request for the >> specific port, forcing the data to synchronize and be transmitted to the >> sink device. >> > > Gentle reminder. Please could you fix the dates and version to v6.19 ? Suzuki > > Thanks, > Jie > >> Changes in V3: >> 1. Optimizing codes according to James's comment. >> Link to V2 - https://lore.kernel.org/all/20250827042042.6786-1- >> jie.gan@oss.qualcomm.com/ >> >> Changes in V2: >> 1. Refactoring the code based on James's comment for optimization. >> Link to V1 - https://lore.kernel.org/all/20250826070150.5603-1- >> jie.gan@oss.qualcomm.com/ >> >> Tao Zhang (3): >> coresight: tpda: add sysfs nodes for tpda cross-trigger configuration >> coresight: tpda: add logic to configure TPDA_SYNCR register >> coresight: tpda: add sysfs node to flush specific port >> >> .../testing/sysfs-bus-coresight-devices-tpda | 50 ++++ >> drivers/hwtracing/coresight/coresight-tpda.c | 278 ++++++++++++++++++ >> drivers/hwtracing/coresight/coresight-tpda.h | 33 ++- >> 3 files changed, 360 insertions(+), 1 deletion(-) >> create mode 100644 Documentation/ABI/testing/sysfs-bus-coresight- >> devices-tpda >> > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v3 0/3] add sysfs nodes to configure TPDA's registers 2025-10-27 9:29 ` Suzuki K Poulose @ 2025-10-28 1:37 ` Jie Gan 0 siblings, 0 replies; 10+ messages in thread From: Jie Gan @ 2025-10-28 1:37 UTC (permalink / raw) To: Suzuki K Poulose, Mike Leach, James Clark, Alexander Shishkin, Tingwei Zhang Cc: coresight, linux-arm-kernel, linux-kernel, linux-arm-msm On 10/27/2025 5:29 PM, Suzuki K Poulose wrote: > On 27/10/2025 01:14, Jie Gan wrote: >> >> >> On 8/27/2025 6:55 PM, Jie Gan wrote: >>> Patchset 1 introduces configuration of the cross-trigger registers with >>> appropriate values to enable proper generation of cross-trigger packets. >>> >>> Patchset 2 introduces a logic to configure the TPDA_SYNCR register, >>> which determines the frequency of ASYNC packet generation. These packets >>> assist userspace tools in accurately identifying each valid packet. >>> >>> Patchset 3 introduces a sysfs node to initiate a flush request for the >>> specific port, forcing the data to synchronize and be transmitted to the >>> sink device. >>> >> >> Gentle reminder. > > Please could you fix the dates and version to v6.19 ? Sure, will send a new version with fix. Thanks, Jie > > Suzuki > >> >> Thanks, >> Jie >> >>> Changes in V3: >>> 1. Optimizing codes according to James's comment. >>> Link to V2 - https://lore.kernel.org/all/20250827042042.6786-1- >>> jie.gan@oss.qualcomm.com/ >>> >>> Changes in V2: >>> 1. Refactoring the code based on James's comment for optimization. >>> Link to V1 - https://lore.kernel.org/all/20250826070150.5603-1- >>> jie.gan@oss.qualcomm.com/ >>> >>> Tao Zhang (3): >>> coresight: tpda: add sysfs nodes for tpda cross-trigger configuration >>> coresight: tpda: add logic to configure TPDA_SYNCR register >>> coresight: tpda: add sysfs node to flush specific port >>> >>> .../testing/sysfs-bus-coresight-devices-tpda | 50 ++++ >>> drivers/hwtracing/coresight/coresight-tpda.c | 278 ++++++++++++++++++ >>> drivers/hwtracing/coresight/coresight-tpda.h | 33 ++- >>> 3 files changed, 360 insertions(+), 1 deletion(-) >>> create mode 100644 Documentation/ABI/testing/sysfs-bus-coresight- >>> devices-tpda >>> >> > ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2025-10-28 1:38 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-08-27 10:55 [PATCH v3 0/3] add sysfs nodes to configure TPDA's registers Jie Gan 2025-08-27 10:55 ` [PATCH v3 1/3] coresight: tpda: add sysfs nodes for tpda cross-trigger configuration Jie Gan 2025-08-27 10:55 ` [PATCH v3 2/3] coresight: tpda: add logic to configure TPDA_SYNCR register Jie Gan 2025-08-27 10:55 ` [PATCH v3 3/3] coresight: tpda: add sysfs node to flush specific port Jie Gan 2025-08-27 11:59 ` [PATCH v3 0/3] add sysfs nodes to configure TPDA's registers James Clark 2025-09-15 2:12 ` Jie Gan 2025-10-13 8:25 ` Jie Gan 2025-10-27 1:14 ` Jie Gan 2025-10-27 9:29 ` Suzuki K Poulose 2025-10-28 1:37 ` Jie Gan
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox