From nobody Tue Feb 10 20:09:19 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9C7F9369206 for ; Tue, 23 Dec 2025 10:10:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766484623; cv=none; b=uMci15M0EBBlQlGYENg58h6qZIVp08YGfG1BHuJCysgZaitPHWjUzJF7vIMlLhJS6Z4ZCbQJnYk5/FdFVLQrJP6joGy5ZMgKMDCUGseuiJ/fw4G1XBIrYmIP/afDQLiDrfyOEkmGdpy/9LjtpqDngWoeHsosijxjkQDNryHorZo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766484623; c=relaxed/simple; bh=0nKP+bg9KkvzGuHmW+pP+CewIo+uMtNnr2wgjwJRdjA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cXcOqr2XSgWDy8opqKE3voU6BZro8KtjasCqMvg0gPUl/mQDoNcTMrb0BGPidwDdZQReUrzxt2IqkiWpRdbu7deYHPvQ1BW/0DSFF+NNyM8f5C3kP8mIGOud2t3oSf3e0UUgcrzvxnME2CG8v6UrQ7wU/gxIUV/E51K1ZSXpDeg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=fHvWfrqL; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=HGeSDhL0; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="fHvWfrqL"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="HGeSDhL0" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BN8qK362747581 for ; Tue, 23 Dec 2025 10:10:21 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= MjXyqQtGU/g1KNzz9G7Iba9HTRyvHXRxMTPyW1m3YyA=; b=fHvWfrqLvaKL3HI2 X0XCQOLKRin7SJOs9P+9iO/OY4t1kWBkXK9zEC2MQEiJYPDq0RBnh1cTBW55+b2g TnDmWC1sDp3kN0psUrlbiv+jLnuvbT5NwnTbT7DBTf2XL+1zye+0wa6qh0czcOcg ZeZ6/GDA0zE6Swjlk9jNhSVGG3bF3Lb4q4NfdfsLFT5wfd+A3X4WnbIwDRFiV2NT FONNtAMdnME+SzEEbSzjEOmSydG60BjE21XFc3rDbnWEC0Y0Ov5IbMExIQAkd8oS vzzm+SUYsBcP7vrcmjgsi+ljzz4OkU0rAbMzMxzG5HtPvZe5zbo99yIEooMBvlhL YOCgUA== Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4b7h5csp0y-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 23 Dec 2025 10:10:20 +0000 (GMT) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2a0f0c7a06eso95239565ad.2 for ; Tue, 23 Dec 2025 02:10:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1766484620; x=1767089420; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=MjXyqQtGU/g1KNzz9G7Iba9HTRyvHXRxMTPyW1m3YyA=; b=HGeSDhL0vcCHlCUEnNndlnHu5LFRJzXtq4973mY/AKxcQeEOSe2LJEMsYYNlK4G+wJ dEaEisy1JcmfRJDccAGmylocFk/3B6+CKAah5twKWGp5a7P0y9KAgbohWq9L77Tl1guM zIlC6dXY4vLg1mg+TlgjYuI7cobLxALWP3P0rczCk8RCAJ/3IYs41R391zMPdZi+Rrha hvA7/6fhk1O9g9Oc1eQQ+z26qTlBJkerlTZbQ6hhDUQpklr6ojPRRrSvlfuUlQIx9aus jhSkYqOuwTcOJ9WYRVYsiBXdUYvMNJ+YHAE01Pwz0MU2K8y7JtB77XLMZWvxp8QGhNKI imwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766484620; x=1767089420; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=MjXyqQtGU/g1KNzz9G7Iba9HTRyvHXRxMTPyW1m3YyA=; b=b97775weqM/zo+tttw8SCOKBWaHVhP+0lwHe0HpL8gGCE78iQtLiRGi7vXKfIsQvci LmO94h3ki7UViawmO48gJL4YdIfn41uBc97Mdkd2L1ENIih0+evRyAS7OelMtfd3dLLZ JrwBzWBhXWAizeefDpSiFKYJuhUyIiw+N88RLAtTJXtgTKRHR92mIdQDvLsWnBiLTYxF IQlcbIV629EIsPELfOM5lK6k3iFyb9iQM6uXVj9xLAgx2lDXtJfkJjJUh2zcNZ8TENzn MGaveaKA+1qmZoOuwbZVHoZ6fO9W+60SC3Mk5IXYmLi51I/z+LMDLykXF2ADMY4WDDCc OATg== X-Forwarded-Encrypted: i=1; AJvYcCWJTWKyzG1D5Erom1fWFe6Lc78tTb0H23Iw+4VHivJtw30R9w+0K+iVCyoPoOP9pt1gvV+PRMKyE/pHE3g=@vger.kernel.org X-Gm-Message-State: AOJu0YxZAdyOgEAqJz5P0Ft/kKnPLJ5pn5Ypey27Fa3xWVO7GGb5dDXV sbbs9UyVJC3x3EumDN53R/VaJlpibdRP1cUN2Q77O1NTW9AUKOHZ2GlZoKPOjupKAmh/bLm1E2O zka7edQ+dXdHIyf/o5naR2Y//x3WuOkrHkX7eibVMfu1wmBiEJS/+JWvpKlVSTsgcQ1w= X-Gm-Gg: AY/fxX5sHbD9S86sUJeP7YWmQfVrJa8Y37CjipNZU2lb/NljmjcPHBjQ3jcDuXx9sBQ cZVvpVhYemB/GhufjQzlkOkeNPU+j3W1QjtFGD3xCcIMmJJuT2J5IbBn22bKoxpjafBeDX5UUGC qtaVY5MlQQXONqpCIZACm3aeyWFcoWTLsejsLi5ScZmbcEpkkeQdKOFUfA31eJ9G+ZG/9T02obk xe8kLszYIYExY63vlQnk4HDndY8qCZ0J5CLlo4rFWSaKvjJEGom48x2fYkBXQA3frnTUksH9WFd M+jf1jSUDQ7/tiTDDDZ6LraWN5VfM22DqESrPangL0GP2eQlq2o/jSzvW2HUVB2PbocuiYtkHhc /Z8a0/9TY6QV2N894buaJKFWTUczMELWYK7WBttBEG68JHhBD75FY+TTVqgdHRkU350Ml1jzw X-Received: by 2002:a17:902:f550:b0:298:485d:556e with SMTP id d9443c01a7336-2a2f2212bd6mr129111155ad.11.1766484620135; Tue, 23 Dec 2025 02:10:20 -0800 (PST) X-Google-Smtp-Source: AGHT+IF7u8gVih4cwumeUydeHa+siuP5K/kAJMpR7A5wkeje/FjKY41OOh2UZSfIiBerplCkbsud5g== X-Received: by 2002:a17:902:f550:b0:298:485d:556e with SMTP id d9443c01a7336-2a2f2212bd6mr129110895ad.11.1766484619532; Tue, 23 Dec 2025 02:10:19 -0800 (PST) Received: from jiegan-gv.ap.qualcomm.com (tpe-colo-wan-fw-bordernet.qualcomm.com. [103.229.16.4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a2f3c6661esm120824625ad.2.2025.12.23.02.10.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Dec 2025 02:10:19 -0800 (PST) From: Jie Gan Date: Tue, 23 Dec 2025 18:09:52 +0800 Subject: [PATCH v8 3/4] coresight: tpda: add logic to configure TPDA_SYNCR register Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251223-add_sysfs_nodes_to_configure_tpda-v8-3-4c95db608b62@oss.qualcomm.com> References: <20251223-add_sysfs_nodes_to_configure_tpda-v8-0-4c95db608b62@oss.qualcomm.com> In-Reply-To: <20251223-add_sysfs_nodes_to_configure_tpda-v8-0-4c95db608b62@oss.qualcomm.com> To: Suzuki K Poulose , Mike Leach , James Clark , Alexander Shishkin , Tingwei Zhang Cc: coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Jie Gan , Tao Zhang X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1766484607; l=6777; i=jie.gan@oss.qualcomm.com; s=20250909; h=from:subject:message-id; bh=bLT+eriyeWZR4MlOhEyEgDrF3tZ/0b0xt0jZ//3mUos=; b=p4871o0j1u1sOswYubg7IgMov+A24E5eCMF11O6G5kJKnYOrp4kx1IslsYG27eLCts1cMajAr QJ6dn22othrByjUU0rpofwzE3lGvmVVRylHEW39kG2NkktXQ836+c8y X-Developer-Key: i=jie.gan@oss.qualcomm.com; a=ed25519; pk=3LxxUZRPCNkvPDlWOvXfJNqNO4SfGdy3eghMb8puHuk= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjIzMDA4MCBTYWx0ZWRfX6O7MM5274nVj XshstQB51pPUwm8T0ZI3e7blcJ1ik96RvNIIKw5a88bWbdpGcQxqx2K7VJwjPw4zsMuoLM3Plaf 4JTga0SdQWjDfRtdwlJUcW5UsW4hOWkyQ6z/vRRjnAPRZ7S+/rELEXKx7lMBAGC5eXle4BHd35z 3kv+H5Idsn597zGx0GLg5npefKpgKIUBTJLNVmJbOTe0DLfKe/ZTwzReQYXwMmytYchVxKy7+ty JkjOBrBg2udAa/KCtwLgK6jvgzaHq6BElOVaxXec1Kilj8n8/uGwhyaKe/Ia7Duxk9S39xaM3dj qIivv3gHlT5WFupBDt9LxhB/3fSk+aqZcVa8HQqTAAxl0GHwxK7EVO6apU8tmOpdvfhH258R34j 3l5XaY4sStiIGzjiu1T2lptQzQWTF1Tp8SpgAcsbodV3LAaAlKAAmItH9AYR0iYfJ6PrZp2RkOn 8aU5srfkG9muIqC7HlA== X-Proofpoint-ORIG-GUID: oZYoQEX0bYf4Trct3jPV26ghjFTNXfE7 X-Authority-Analysis: v=2.4 cv=LeUxKzfi c=1 sm=1 tr=0 ts=694a6a8c cx=c_pps a=cmESyDAEBpBGqyK7t0alAg==:117 a=nuhDOHQX5FNHPW3J6Bj6AA==:17 a=IkcTkHD0fZMA:10 a=wP3pNCr1ah4A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=KKAkSRfTAAAA:8 a=gRM4NHGxar3dF8ctfloA:9 a=QEXdDO2ut3YA:10 a=1OuFwYUASf3TG4hYMiVC:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-GUID: oZYoQEX0bYf4Trct3jPV26ghjFTNXfE7 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-12-23_02,2025-12-22_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 phishscore=0 priorityscore=1501 lowpriorityscore=0 clxscore=1015 impostorscore=0 adultscore=0 bulkscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2512230080 From: Tao Zhang The TPDA_SYNC counter tracks the number of bytes transferred from the aggregator. When this count reaches the value programmed in the TPDA_SYNCR register, an ASYNC request is triggered, allowing userspace tools to accurately parse each valid packet. Signed-off-by: Tao Zhang Reviewed-by: James Clark Co-developed-by: Jie Gan Signed-off-by: Jie Gan --- .../ABI/testing/sysfs-bus-coresight-devices-tpda | 18 +++++ drivers/hwtracing/coresight/coresight-tpda.c | 90 ++++++++++++++++++= ++++ drivers/hwtracing/coresight/coresight-tpda.h | 10 +++ 3 files changed, 118 insertions(+) diff --git a/Documentation/ABI/testing/sysfs-bus-coresight-devices-tpda b/D= ocumentation/ABI/testing/sysfs-bus-coresight-devices-tpda index c8bc7b19ab25..c989eea1ef59 100644 --- a/Documentation/ABI/testing/sysfs-bus-coresight-devices-tpda +++ b/Documentation/ABI/testing/sysfs-bus-coresight-devices-tpda @@ -41,3 +41,21 @@ Contact: Jinlong Mao , Tao= Zhang /syncr_mode +Date: December 2025 +KernelVersion: 6.19 +Contact: Jinlong Mao , Tao Zhang , Jie Gan +Description: + (RW) Set mode the of the syncr counter. + mode 0 - COUNT[11:0] value represents the approximate number of bytes mo= ved between two ASYNC packet requests + mode 1 - the bits COUNT[11:7] are used as a power of 2. for example, we = could insert an async packet every 8K + data by writing a value 13 to the COUNT[11:7] field. + +What: /sys/bus/coresight/devices//syncr_count +Date: December 2025 +KernelVersion: 6.19 +Contact: Jinlong Mao , Tao Zhang , Jie Gan +Description: + (RW) Set value the of the syncr counter. + Range: 0-4095 diff --git a/drivers/hwtracing/coresight/coresight-tpda.c b/drivers/hwtraci= ng/coresight/coresight-tpda.c index d24a9098f1b1..deb5a646a04c 100644 --- a/drivers/hwtracing/coresight/coresight-tpda.c +++ b/drivers/hwtracing/coresight/coresight-tpda.c @@ -163,6 +163,20 @@ static void tpda_enable_pre_port(struct tpda_drvdata *= drvdata) */ if (drvdata->trig_flag_ts) writel_relaxed(0x0, drvdata->base + TPDA_FPID_CR); + + /* Initialize with a value of 0 */ + val =3D 0; + if (drvdata->syncr_mode) + val |=3D TPDA_SYNCR_MODE_CTRL_MASK; + + if (drvdata->syncr_count > 0 && + drvdata->syncr_count < TPDA_SYNCR_COUNT_MASK) + val |=3D drvdata->syncr_count; + else + /* Program the count to its MAX value by default */ + val |=3D TPDA_SYNCR_COUNT_MASK; + + writel_relaxed(val, drvdata->base + TPDA_SYNCR); } =20 static int tpda_enable_port(struct tpda_drvdata *drvdata, int port) @@ -385,8 +399,84 @@ static ssize_t global_flush_req_store(struct device *d= ev, } static DEVICE_ATTR_RW(global_flush_req); =20 +static ssize_t syncr_mode_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct tpda_drvdata *drvdata =3D dev_get_drvdata(dev->parent); + unsigned long val, syncr_val; + + if (!drvdata->csdev->refcnt) + return -EINVAL; + + guard(spinlock)(&drvdata->spinlock); + syncr_val =3D readl_relaxed(drvdata->base + TPDA_SYNCR); + val =3D FIELD_GET(TPDA_SYNCR_MODE_CTRL_MASK, syncr_val); + + return sysfs_emit(buf, "%lu\n", val); +} + +static ssize_t syncr_mode_store(struct device *dev, + struct device_attribute *attr, + const char *buf, + size_t size) +{ + struct tpda_drvdata *drvdata =3D dev_get_drvdata(dev->parent); + unsigned long val; + + if (kstrtoul(buf, 0, &val)) + return -EINVAL; + + guard(spinlock)(&drvdata->spinlock); + /* set the mode when first enabling the device */ + drvdata->syncr_mode =3D !!val; + + return size; +} +static DEVICE_ATTR_RW(syncr_mode); + +static ssize_t syncr_count_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct tpda_drvdata *drvdata =3D dev_get_drvdata(dev->parent); + unsigned long val; + + if (!drvdata->csdev->refcnt) + return -EINVAL; + + guard(spinlock)(&drvdata->spinlock); + val =3D readl_relaxed(drvdata->base + TPDA_SYNCR); + val &=3D TPDA_SYNCR_COUNT_MASK; + + return sysfs_emit(buf, "%lu\n", val); +} + +static ssize_t syncr_count_store(struct device *dev, + struct device_attribute *attr, + const char *buf, + size_t size) +{ + struct tpda_drvdata *drvdata =3D dev_get_drvdata(dev->parent); + unsigned long val; + + if (kstrtoul(buf, 0, &val)) + return -EINVAL; + + if (val > TPDA_SYNCR_COUNT_MASK) + return -EINVAL; + + guard(spinlock)(&drvdata->spinlock); + drvdata->syncr_count =3D val; + + return size; +} +static DEVICE_ATTR_RW(syncr_count); + static struct attribute *tpda_attrs[] =3D { &dev_attr_global_flush_req.attr, + &dev_attr_syncr_mode.attr, + &dev_attr_syncr_count.attr, tpda_trig_sysfs_rw(freq_ts_enable, FREQTS), tpda_trig_sysfs_rw(trig_freq_enable, FRIE), tpda_trig_sysfs_rw(trig_flag_ts_enable, FLRIE), diff --git a/drivers/hwtracing/coresight/coresight-tpda.h b/drivers/hwtraci= ng/coresight/coresight-tpda.h index 1cc9253293ec..56d35697303a 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) =20 /* Cross trigger global (all ports) flush request bit */ #define TPDA_CR_FLREQ BIT(0) @@ -36,6 +37,11 @@ /* Aggregator port DSB data set element size bit */ #define TPDA_Pn_CR_DSBSIZE BIT(8) =20 +/* TPDA_SYNCR count mask */ +#define TPDA_SYNCR_COUNT_MASK GENMASK(11, 0) +/* TPDA_SYNCR mode control bit */ +#define TPDA_SYNCR_MODE_CTRL_MASK GENMASK(12, 12) + #define TPDA_MAX_INPORTS 32 =20 /** @@ -52,6 +58,8 @@ * @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. + * @syncr_mode: Setting the mode for counting packets. + * @syncr_count: Setting the value of the count. */ struct tpda_drvdata { void __iomem *base; @@ -66,6 +74,8 @@ struct tpda_drvdata { bool trig_freq; bool freq_ts; bool cmbchan_mode; + bool syncr_mode; + u32 syncr_count; }; =20 /* Enumerate members of global control register(cr) */ --=20 2.34.1