From nobody Thu Dec 18 06:06:00 2025 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 41B5F1E9B19 for ; Thu, 20 Feb 2025 09:42:10 +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=1740044534; cv=none; b=ezqqROA8Zrq6osT+2rYp7Q/EA9/iGIzvmaZfdDefs20NFxAdGMVzdh2qOk4rh+LQh0O4rydAsV3/G9A9lxrDkdF/CbRUCqmaFPioGN7UA5ibAmUG4Ipz34Xu69EvNi8a1nBuSNlT1NMI00QvS2WBF+DR40uYYzwdCW32qavRonQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740044534; c=relaxed/simple; bh=ySYv5oAl7rxrIABHsrIW5uaZdj2vv/AflGOAoDAa3zg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=PrNeTKXDv9LdXwbGUCt/kgZH2s0CyO7zSZttCnKubz6bHa18AT7vB9JOs62EZUoT8fKg97AwOcSkc0JUmQfHuRctBbZKQ8wHgio2tXLHioqrodHVhc4IeL7mcT6uoKutSvvgyHF/RL/+TZGqJEVy2AbumYW5xKGruzT8IFEvXQg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=quicinc.com; spf=pass smtp.mailfrom=quicinc.com; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b=eEtFgbJQ; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=quicinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=quicinc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="eEtFgbJQ" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 51K6X42K016354; Thu, 20 Feb 2025 09:42:03 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= /cL+CCL0X6aLAARkr+HxhuD5UGrruT/1yZpL7/mWVpg=; b=eEtFgbJQon3LcR7i p1N/eQY5fLN5h8Q7WQphphqa0ds1ni8UnS9z+oN7vgb8/ewjmG6stjcfzjAMAbO0 9ozQydMTWNIo70UPsF3Bg4nACZIktrHtKKmzbFrvt0ekjogRl5cQi9uqwIhDWvWP uCZrXU7mUmSDlINwR8dSmByk0Mni9JQgFNyUZzIRmsROXwpKtm2mOoKuZQo37LxC 6k/VMfPt9tggZqAcIprw0t0mMYeM+8GluYWzSDjFTR7gWVUztiIfQ3DPkbDx1NwG hP7LNixapAkTyl/sbDElecl0yijkglIvP4lqW2LWjvBPHf+22RNPMbNTu5afDA+E gWKm9w== Received: from nalasppmta01.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 44vyy15kt5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 20 Feb 2025 09:42:02 +0000 (GMT) Received: from nalasex01b.na.qualcomm.com (nalasex01b.na.qualcomm.com [10.47.209.197]) by NALASPPMTA01.qualcomm.com (8.18.1.2/8.18.1.2) with ESMTPS id 51K9g1lI030703 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 20 Feb 2025 09:42:01 GMT Received: from yuanfang4-gv.ap.qualcomm.com (10.80.80.8) by nalasex01b.na.qualcomm.com (10.47.209.197) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.9; Thu, 20 Feb 2025 01:41:57 -0800 From: Yuanfang Zhang Date: Thu, 20 Feb 2025 17:41:21 +0800 Subject: [PATCH 1/5] dt-bindings: arm: Add Coresight device Trace NOC definition 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: <20250220-trace-noc-driver-v1-1-15d78bd48e12@quicinc.com> References: <20250220-trace-noc-driver-v1-0-15d78bd48e12@quicinc.com> In-Reply-To: <20250220-trace-noc-driver-v1-0-15d78bd48e12@quicinc.com> To: Suzuki K Poulose , Mike Leach , James Clark , "Alexander Shishkin" CC: , , , , Yuanfang Zhang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1740044514; l=3425; i=quic_yuanfang@quicinc.com; s=20241209; h=from:subject:message-id; bh=ySYv5oAl7rxrIABHsrIW5uaZdj2vv/AflGOAoDAa3zg=; b=kNpXKjVZm3sWvTm6+whK99Vpp1bChLTJJTBc2mWwEZQAqp/NxvC8OGiOeOdbPyP7C/m1v/knE FFifJhSb12/Dchh+hWyQU3+geEPRL4XYJ1ZRItwBpjrpvmX61kHfvff X-Developer-Key: i=quic_yuanfang@quicinc.com; a=ed25519; pk=ZrIjRVq9LN8/zCQGbDEwrZK/sfnVjwQ2elyEZAOaV1Q= X-ClientProxiedBy: nasanex01b.na.qualcomm.com (10.46.141.250) To nalasex01b.na.qualcomm.com (10.47.209.197) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-GUID: o-2xbyZZdlH3QH4FqLvNvhGgRSauWbfR X-Proofpoint-ORIG-GUID: o-2xbyZZdlH3QH4FqLvNvhGgRSauWbfR X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-02-20_04,2025-02-20_02,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 priorityscore=1501 lowpriorityscore=0 phishscore=0 clxscore=1015 suspectscore=0 spamscore=0 mlxlogscore=999 mlxscore=0 bulkscore=0 malwarescore=0 adultscore=3 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2502200070 Adds new coresight-tnoc.yaml file describing the bindings required to define Trace NOC in the device trees. Signed-off-by: Yuanfang Zhang --- .../bindings/arm/qcom,coresight-tnoc.yaml | 107 +++++++++++++++++= ++++ 1 file changed, 107 insertions(+) diff --git a/Documentation/devicetree/bindings/arm/qcom,coresight-tnoc.yaml= b/Documentation/devicetree/bindings/arm/qcom,coresight-tnoc.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b8c1aaf014fb483fd960ec55d11= 93fb3f66136d2 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/qcom,coresight-tnoc.yaml @@ -0,0 +1,107 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/arm/qcom,coresight-tnoc.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Qualcomm Ttrace NOC(Network On Chip) + +maintainers: + - yuanfang Zhang + +description: + The Trace NoC is an integration hierarchy which is a replacement of Drag= onlink tile configuration. + It brings together debug component like TPDA, funnel and interconnect Tr= ace Noc which collects trace + from subsystems and transfers to QDSS sink. + + It sits in the different subsystem of SOC and aggregates the trace and t= ransports it to Aggregation TNoC + or to QDSS trace sink eventually. Trace NoC embeds bridges for all the i= nterfaces(APB, ATB, QPMDA & NTS). + + Trace NoC can take inputs from different trace sources i.e. ATB, QPMDA. + +# Need a custom select here or 'arm,primecell' will match on lots of nodes +select: + properties: + compatible: + contains: + enum: + - qcom,coresight-tnoc + required: + - compatible + +properties: + $nodename: + pattern: "^tn(@[0-9a-f]+)$" + compatible: + items: + - const: qcom,coresight-tnoc + - const: arm,primecell + + reg: + minItems: 1 + maxItems: 2 + + clocks: + maxItems: 1 + + clock-names: + items: + - const: apb_pclk + + in-ports: + description: | + Input connections from subsystem to TNoC + $ref: /schemas/graph.yaml#/properties/ports + + out-ports: + description: | + Output connections from the TNoC to Aggreg TNoC or to legacy CoreSig= ht trace bus. + $ref: /schemas/graph.yaml#/properties/ports + + properties: + port: + description: | + Output connections from the TNoC to Aggreg TNoC or to legacy Cor= eSight trace bus. + $ref: /schemas/graph.yaml#/properties/port + +required: + - compatible + - reg + - clocks + - clock-names + - in-ports + - out-ports + +additionalProperties: false + +examples: + - | + tn@109ab000 { + compatible =3D "qcom,coresight-tnoc", "arm,primecell"; + reg =3D <0x0 0x109ab000 0x0 0x4200>; + + clocks =3D <&aoss_qmp>; + clock-names =3D "apb_pclk"; + + in-ports { + #address-cells =3D <1>; + #size-cells =3D <0>; + + port@0 { + reg =3D <0>; + + tn_ag_in_tpdm_gcc: endpoint { + remote-endpoint =3D <&tpdm_gcc_out_tn_ag>; + }; + }; + }; + + out-ports { + port { + tn_ag_out_funnel_in1: endpoint { + remote-endpoint =3D <&funnel_in1_in_tn_ag>; + }; + }; + }; + }; +... --=20 2.34.1 From nobody Thu Dec 18 06:06:00 2025 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 C51521EF0B4 for ; Thu, 20 Feb 2025 09:42:12 +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=1740044534; cv=none; b=u8kQhpAYuTeLGOiYem6vTWcV8/mX54sbnH5buSh+s9Kvu4T5UVNv9OOE+yuPHqdnwRxNHZDw+mPOh32YuQ/Kjrs91MJp4zm7ijleCS+kWSLqDGmVk9D2Y7LJmCtYJ+zO7zT1pfUqyTxhL/eYpmP1YT9M1oUROAXmKgmsRNzgkrk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740044534; c=relaxed/simple; bh=g52m5IvG8gp3U3z1mHKbBv/3s1N15QOP2Ld1DtqPUDQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=mVRM1xaWQ6+Cyb9coFxa8OwLdhSIBO4CL27HgchtVmCqz2a/+n06CwkDEYQtb4D2BhPceYPEXYHLTBrwctHN500p0McMyF36dNAOujvkWFe/C5oS5OZOrVF3UkfeWYbL6w91lNmv4d5sMMeS2oNpFceUdBvS52JtAG7Sd/qitaI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=quicinc.com; spf=pass smtp.mailfrom=quicinc.com; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b=kiYO+zY6; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=quicinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=quicinc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="kiYO+zY6" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 51K76lGR025847; Thu, 20 Feb 2025 09:42:05 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= jclyazN7JySejOOMEchTNnl54bsEgPWLtB8PyLcYJsk=; b=kiYO+zY6EufKVAaR ooEI5Fy+GKZOvAhqPKnVKglszki327sSNro+TZkfHds1iGrbvO3XG8IYFVn1rzxE DBwVnkFb8aBLHWSqFRG8ch1ON4M4Vap3TwqJDYf5SWjgQSRKOILOwR819oGB7keS KvhXx4fmEcx6CN/1En5orlbfwopkoGaPW9MiuXgc2P2MekaFf6GI6JSAQgy4beKH xGsn9w0ln98WLGbVV+UCtOtijAAVsVmElQZKDxvxhkPgmR6OG4W1rCp4gjFLQVVp Bc1sRbwW9GfjvuQfVvn2mthKQFthhWl1Iq0CcNofJ4Qzl4y8S9aPVdfbcZs+Nrr0 auPrSg== Received: from nalasppmta04.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 44vyy0np24-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 20 Feb 2025 09:42:05 +0000 (GMT) Received: from nalasex01b.na.qualcomm.com (nalasex01b.na.qualcomm.com [10.47.209.197]) by NALASPPMTA04.qualcomm.com (8.18.1.2/8.18.1.2) with ESMTPS id 51K9g4FP006024 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 20 Feb 2025 09:42:04 GMT Received: from yuanfang4-gv.ap.qualcomm.com (10.80.80.8) by nalasex01b.na.qualcomm.com (10.47.209.197) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.9; Thu, 20 Feb 2025 01:41:59 -0800 From: Yuanfang Zhang Date: Thu, 20 Feb 2025 17:41:22 +0800 Subject: [PATCH 2/5] coresight: add coresight Trace NOC driver 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: <20250220-trace-noc-driver-v1-2-15d78bd48e12@quicinc.com> References: <20250220-trace-noc-driver-v1-0-15d78bd48e12@quicinc.com> In-Reply-To: <20250220-trace-noc-driver-v1-0-15d78bd48e12@quicinc.com> To: Suzuki K Poulose , Mike Leach , James Clark , "Alexander Shishkin" CC: , , , , Yuanfang Zhang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1740044514; l=9473; i=quic_yuanfang@quicinc.com; s=20241209; h=from:subject:message-id; bh=g52m5IvG8gp3U3z1mHKbBv/3s1N15QOP2Ld1DtqPUDQ=; b=dw2eDDD17yN3B2WMAWgLMlc5GPS3LsEcPvDMe17Nn4CB73aunKF+pVfv6gazQyDd4zL1Eq8dh /EGs4QtK+leBu0c9D2OLY5upIA4kDQBNObq8mCb4A4omnL9UyEPvjOO X-Developer-Key: i=quic_yuanfang@quicinc.com; a=ed25519; pk=ZrIjRVq9LN8/zCQGbDEwrZK/sfnVjwQ2elyEZAOaV1Q= X-ClientProxiedBy: nasanex01b.na.qualcomm.com (10.46.141.250) To nalasex01b.na.qualcomm.com (10.47.209.197) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-GUID: m0BHtRW36wqp4BvO3nGuNJ7bCzDQdL3H X-Proofpoint-ORIG-GUID: m0BHtRW36wqp4BvO3nGuNJ7bCzDQdL3H X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-02-20_04,2025-02-20_02,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 suspectscore=0 impostorscore=0 lowpriorityscore=0 mlxlogscore=999 spamscore=0 clxscore=1015 priorityscore=1501 phishscore=0 mlxscore=0 bulkscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2502200070 Add driver to support Coresight device Trace NOC(Network On Chip). Trace NOC is an integration hierarchy which is a replacement of Dragonlink configuration. It brings together debug components like TPDA, funnel and interconnect Trace Noc. It sits in the different subsystem of SOC and aggregates the trace and transports to QDSS trace bus. Signed-off-by: Yuanfang Zhang --- drivers/hwtracing/coresight/Kconfig | 10 ++ drivers/hwtracing/coresight/Makefile | 1 + drivers/hwtracing/coresight/coresight-tnoc.c | 191 +++++++++++++++++++++++= ++++ drivers/hwtracing/coresight/coresight-tnoc.h | 53 ++++++++ 4 files changed, 255 insertions(+) diff --git a/drivers/hwtracing/coresight/Kconfig b/drivers/hwtracing/coresi= ght/Kconfig index 06f0a7594169c5f03ca5f893b7debd294587de78..712b2469e37610e6fc5f15cedb2= 535bf570f99aa 100644 --- a/drivers/hwtracing/coresight/Kconfig +++ b/drivers/hwtracing/coresight/Kconfig @@ -247,4 +247,14 @@ config CORESIGHT_DUMMY =20 To compile this driver as a module, choose M here: the module will be called coresight-dummy. + +config CORESIGHT_TNOC + tristate "Coresight Trace Noc driver" + help + This driver provides support for Trace NoC component. + Trace NoC is a interconnect that is used to collect trace from + various subsystems and transport it QDSS trace sink.It sits in + the different tiles of SOC and aggregates the trace local to the + tile and transports it another tile or to QDSS trace sink eventually. + endif diff --git a/drivers/hwtracing/coresight/Makefile b/drivers/hwtracing/cores= ight/Makefile index 4ba478211b318ea5305f9f98dda40a041759f09f..ab1cff8f027495fabe3872d52f8= c0877e39f0ea8 100644 --- a/drivers/hwtracing/coresight/Makefile +++ b/drivers/hwtracing/coresight/Makefile @@ -51,3 +51,4 @@ coresight-cti-y :=3D coresight-cti-core.o coresight-cti-p= latform.o \ coresight-cti-sysfs.o obj-$(CONFIG_ULTRASOC_SMB) +=3D ultrasoc-smb.o obj-$(CONFIG_CORESIGHT_DUMMY) +=3D coresight-dummy.o +obj-$(CONFIG_CORESIGHT_TNOC) +=3D coresight-tnoc.o diff --git a/drivers/hwtracing/coresight/coresight-tnoc.c b/drivers/hwtraci= ng/coresight/coresight-tnoc.c new file mode 100644 index 0000000000000000000000000000000000000000..11b9a7fd1efdc9fff7c1e9666bd= a14acb41786cb --- /dev/null +++ b/drivers/hwtracing/coresight/coresight-tnoc.c @@ -0,0 +1,191 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (c) 2025 Qualcomm Innovation Center, Inc. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "coresight-priv.h" +#include "coresight-tnoc.h" +#include "coresight-trace-id.h" + +static void trace_noc_enable_hw(struct trace_noc_drvdata *drvdata) +{ + u32 val; + + /* Set ATID */ + writel_relaxed(drvdata->atid, drvdata->base + TRACE_NOC_XLD); + + /* Config sync CR */ + writel_relaxed(0xffff, drvdata->base + TRACE_NOC_SYNCR); + + /* Set frequency value */ + writel_relaxed(drvdata->freq_req_val, drvdata->base + TRACE_NOC_FREQVAL); + + /* Set Ctrl register */ + val =3D readl_relaxed(drvdata->base + TRACE_NOC_CTRL); + + if (drvdata->flag_type =3D=3D FLAG_TS) + val =3D val | TRACE_NOC_CTRL_FLAGTYPE; + else + val =3D val & ~TRACE_NOC_CTRL_FLAGTYPE; + + if (drvdata->freq_type =3D=3D FREQ_TS) + val =3D val | TRACE_NOC_CTRL_FREQTYPE; + else + val =3D val & ~TRACE_NOC_CTRL_FREQTYPE; + + val =3D val | TRACE_NOC_CTRL_PORTEN; + writel_relaxed(val, drvdata->base + TRACE_NOC_CTRL); + + dev_dbg(drvdata->dev, "Trace NOC is enabled\n"); +} + +static int trace_noc_enable(struct coresight_device *csdev, struct coresig= ht_connection *inport, + struct coresight_connection *outport) +{ + struct trace_noc_drvdata *drvdata =3D dev_get_drvdata(csdev->dev.parent); + + spin_lock(&drvdata->spinlock); + if (csdev->refcnt =3D=3D 0) + trace_noc_enable_hw(drvdata); + + csdev->refcnt++; + spin_unlock(&drvdata->spinlock); + + return 0; +} + +static void trace_noc_disable_hw(struct trace_noc_drvdata *drvdata) +{ + writel_relaxed(0x0, drvdata->base + TRACE_NOC_CTRL); + dev_dbg(drvdata->dev, "Trace NOC is disabled\n"); +} + +static void trace_noc_disable(struct coresight_device *csdev, struct cores= ight_connection *inport, + struct coresight_connection *outport) +{ + struct trace_noc_drvdata *drvdata =3D dev_get_drvdata(csdev->dev.parent); + + spin_lock(&drvdata->spinlock); + if (--csdev->refcnt =3D=3D 0) + trace_noc_disable_hw(drvdata); + + spin_unlock(&drvdata->spinlock); + dev_info(drvdata->dev, "Trace NOC is disabled\n"); +} + +static const struct coresight_ops_link trace_noc_link_ops =3D { + .enable =3D trace_noc_enable, + .disable =3D trace_noc_disable, +}; + +static const struct coresight_ops trace_noc_cs_ops =3D { + .link_ops =3D &trace_noc_link_ops, +}; + +static int trace_noc_init_default_data(struct trace_noc_drvdata *drvdata) +{ + int atid; + + atid =3D coresight_trace_id_get_system_id(); + if (atid < 0) + return atid; + + drvdata->atid =3D atid; + + drvdata->freq_type =3D FREQ_TS; + drvdata->flag_type =3D FLAG; + drvdata->freq_req_val =3D 0; + + return 0; +} + +static int trace_noc_probe(struct amba_device *adev, const struct amba_id = *id) +{ + struct device *dev =3D &adev->dev; + struct coresight_platform_data *pdata; + struct trace_noc_drvdata *drvdata; + struct coresight_desc desc =3D { 0 }; + int ret; + + desc.name =3D coresight_alloc_device_name(&trace_noc_devs, dev); + if (!desc.name) + return -ENOMEM; + pdata =3D coresight_get_platform_data(dev); + if (IS_ERR(pdata)) + return PTR_ERR(pdata); + adev->dev.platform_data =3D pdata; + + drvdata =3D devm_kzalloc(dev, sizeof(*drvdata), GFP_KERNEL); + if (!drvdata) + return -ENOMEM; + + drvdata->dev =3D &adev->dev; + dev_set_drvdata(dev, drvdata); + + drvdata->base =3D devm_ioremap_resource(dev, &adev->res); + if (!drvdata->base) + return -ENOMEM; + + spin_lock_init(&drvdata->spinlock); + + ret =3D trace_noc_init_default_data(drvdata); + if (ret) + return ret; + + desc.ops =3D &trace_noc_cs_ops; + desc.type =3D CORESIGHT_DEV_TYPE_LINK; + desc.subtype.link_subtype =3D CORESIGHT_DEV_SUBTYPE_LINK_MERG; + desc.pdata =3D adev->dev.platform_data; + desc.dev =3D &adev->dev; + desc.access =3D CSDEV_ACCESS_IOMEM(drvdata->base); + drvdata->csdev =3D coresight_register(&desc); + if (IS_ERR(drvdata->csdev)) + return PTR_ERR(drvdata->csdev); + + pm_runtime_put(&adev->dev); + + dev_dbg(drvdata->dev, "Trace Noc initialized\n"); + return 0; +} + +static void trace_noc_remove(struct amba_device *adev) +{ + struct trace_noc_drvdata *drvdata =3D dev_get_drvdata(&adev->dev); + + coresight_trace_id_put_system_id(drvdata->atid); + coresight_unregister(drvdata->csdev); +} + +static struct amba_id trace_noc_ids[] =3D { + { + .id =3D 0x000f0c00, + .mask =3D 0x000fff00, + }, + {}, +}; +MODULE_DEVICE_TABLE(amba, trace_noc_ids); + +static struct amba_driver trace_noc_driver =3D { + .drv =3D { + .name =3D "coresight-trace-noc", + .owner =3D THIS_MODULE, + .suppress_bind_attrs =3D true, + }, + .probe =3D trace_noc_probe, + .remove =3D trace_noc_remove, + .id_table =3D trace_noc_ids, +}; + +module_amba_driver(trace_noc_driver); + +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("Trace NOC driver"); diff --git a/drivers/hwtracing/coresight/coresight-tnoc.h b/drivers/hwtraci= ng/coresight/coresight-tnoc.h new file mode 100644 index 0000000000000000000000000000000000000000..b6bd1ef659897d8e0994c5e8514= e8cbdd16eebd8 --- /dev/null +++ b/drivers/hwtracing/coresight/coresight-tnoc.h @@ -0,0 +1,53 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights res= erved. + */ + +#define TRACE_NOC_CTRL 0x008 +#define TRACE_NOC_XLD 0x010 +#define TRACE_NOC_FREQVAL 0x018 +#define TRACE_NOC_SYNCR 0x020 + +/* Enable generation of output ATB traffic.*/ +#define TRACE_NOC_CTRL_PORTEN BIT(0) +/* Writing 1 to issue a FREQ or FREQ_TS packet*/ +#define TRACE_NOC_CTRL_FREQTSREQ BIT(5) +/* Sets the type of issued ATB FLAG packets. 0: 'FLAG' packets; 1: 'FLAG_T= S' packets.*/ +#define TRACE_NOC_CTRL_FLAGTYPE BIT(7) +/* sets the type of issued ATB FREQ packets. 0: 'FREQ' packets; 1: 'FREQ_T= S' packets.*/ +#define TRACE_NOC_CTRL_FREQTYPE BIT(8) +DEFINE_CORESIGHT_DEVLIST(trace_noc_devs, "traceNoc"); + +/** + * struct trace_noc_drvdata - specifics associated to a trace noc component + * @base: memory mapped base address for this component. + * @dev: device node for trace_noc_drvdata. + * @csdev: component vitals needed by the framework. + * @spinlock: only one at a time pls. + * @atid: id for the trace packet. + * @freqtype: 0: 'FREQ' packets; 1: 'FREQ_TS' packets. + * @flagtype: 0: 'FLAG' packets; 1: 'FLAG_TS' packets. + * @freq_req_val: set frequency values carried by 'FREQ' and 'FREQ_TS' pa= ckets. + */ +struct trace_noc_drvdata { + void __iomem *base; + struct device *dev; + struct coresight_device *csdev; + spinlock_t spinlock; /* lock for the drvdata. */ + u32 atid; + u32 freq_type; + u32 flag_type; + u32 freq_req_val; +}; + +/* freq type */ +enum freq_type { + FREQ, + FREQ_TS, +}; + +/* flag type */ +enum flag_type { + FLAG, + FLAG_TS, +}; --=20 2.34.1 From nobody Thu Dec 18 06:06:00 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.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 541A41F0E4E for ; Thu, 20 Feb 2025 09:42:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740044539; cv=none; b=rD1xEQgHRcPQvqh18JNFtLGzUicx5XN9YKZn0bPMoL85+ssxlwk+gTOS6pXJ6L4vEbXujdIiLL2/5qrYHKBIor7IhVgKo+LRxv1kS9DEJaX9XxmsJhWDQp5e+J5WZjz7VkWUF3b+rZ2hsYcZeBGS/GUMW9XBO9xTEs0zAjOJdP4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740044539; c=relaxed/simple; bh=4xpCXsw560jg661+9z67aa65t2gjEDVQA3Nb8Phphnc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=Zla1kK+K35wUS+nHCqFm1pI5M7TZBnMHXV4fsumUQdARHZm2rbLBQfYCtQkDZiAQtfA4nZoSUbLhxCHWZIK3jdy1/NkZD/TJFx64AUAKL8aPTrS6tKsTMy0IYn0nBNWpvlywPQHnOQRVxib9mXAwXDTLG+0//3QZ2TDAK9iB68U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=quicinc.com; spf=pass smtp.mailfrom=quicinc.com; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b=ErKZYffj; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=quicinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=quicinc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="ErKZYffj" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 51K6MkEF022493; Thu, 20 Feb 2025 09:42:07 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= wyE9hYqgwJ+fwXKcYbnbNKN+dKoR1uUu7EJFvLAMv7w=; b=ErKZYffj6MYLS5nJ 7mMs8ARqeJ5Djt6dtp82viBEo/OFAiwPqh3aUIooNj4wtfGJalIGK4tg3pYyQzxd ZUIGWg1CWhNqZ01cHjn0II044VkY4e+BFuSommZL53SsrA75zEnsls7vJ3GrGCU1 eDFjnM0/w+x/2nxPHbSpKlidO6+ljZMGoBqZETf13qY0ScuQ6P0Kxm4Oscu+VjnR dtjvKHhZZpXi0Wka7kIyvTbyVyiSqkWCWvH9xQXzz14DVhn715U+GGTQSmA4u3IO Z7iSxuU8KWYAlVXyZjqzwNUDIZvRhZjLLdiksAvxHb3rauYm90hb0SSdJGGycGfr +Ka0yQ== Received: from nalasppmta04.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 44vyy3nqwa-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 20 Feb 2025 09:42:07 +0000 (GMT) Received: from nalasex01b.na.qualcomm.com (nalasex01b.na.qualcomm.com [10.47.209.197]) by NALASPPMTA04.qualcomm.com (8.18.1.2/8.18.1.2) with ESMTPS id 51K9g6a7006128 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 20 Feb 2025 09:42:06 GMT Received: from yuanfang4-gv.ap.qualcomm.com (10.80.80.8) by nalasex01b.na.qualcomm.com (10.47.209.197) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.9; Thu, 20 Feb 2025 01:42:01 -0800 From: Yuanfang Zhang Date: Thu, 20 Feb 2025 17:41:23 +0800 Subject: [PATCH 3/5] coresight-tnoc: add nodes to configure flush 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: <20250220-trace-noc-driver-v1-3-15d78bd48e12@quicinc.com> References: <20250220-trace-noc-driver-v1-0-15d78bd48e12@quicinc.com> In-Reply-To: <20250220-trace-noc-driver-v1-0-15d78bd48e12@quicinc.com> To: Suzuki K Poulose , Mike Leach , James Clark , "Alexander Shishkin" CC: , , , , Yuanfang Zhang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1740044514; l=3878; i=quic_yuanfang@quicinc.com; s=20241209; h=from:subject:message-id; bh=4xpCXsw560jg661+9z67aa65t2gjEDVQA3Nb8Phphnc=; b=uOzxLRvex8Zd5KHr2UE9SQGZ/OHJhbBj88bqDb0Hhz2orG6eGlHSPGlO/K1yuxM1ZxnivzLja ewe2A07pdMLAR8LgltRYg9OiSdjNB1I6149atv2uo79546lb5F3P7Uj X-Developer-Key: i=quic_yuanfang@quicinc.com; a=ed25519; pk=ZrIjRVq9LN8/zCQGbDEwrZK/sfnVjwQ2elyEZAOaV1Q= X-ClientProxiedBy: nasanex01b.na.qualcomm.com (10.46.141.250) To nalasex01b.na.qualcomm.com (10.47.209.197) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-GUID: UPNWhsCoj6tvrlSx9TxUtJZZunB1TKYS X-Proofpoint-ORIG-GUID: UPNWhsCoj6tvrlSx9TxUtJZZunB1TKYS X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-02-20_04,2025-02-20_02,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 impostorscore=0 lowpriorityscore=0 suspectscore=0 spamscore=0 malwarescore=0 phishscore=0 mlxscore=0 mlxlogscore=999 bulkscore=0 adultscore=0 clxscore=1015 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2502200070 Two nodes for configure flush are added here: 1. flush_req: write 1 to initiates a flush sequence. 2. flush_state: read this node to get flush status. 0: sequence in progress; 1: sequence has been completed. Signed-off-by: Yuanfang Zhang --- drivers/hwtracing/coresight/coresight-tnoc.c | 73 ++++++++++++++++++++++++= ++++ drivers/hwtracing/coresight/coresight-tnoc.h | 4 ++ 2 files changed, 77 insertions(+) diff --git a/drivers/hwtracing/coresight/coresight-tnoc.c b/drivers/hwtraci= ng/coresight/coresight-tnoc.c index 11b9a7fd1efdc9fff7c1e9666bda14acb41786cb..25962af3850af106f7a8b7e1738= ad93d44b81ee7 100644 --- a/drivers/hwtracing/coresight/coresight-tnoc.c +++ b/drivers/hwtracing/coresight/coresight-tnoc.c @@ -16,6 +16,78 @@ #include "coresight-tnoc.h" #include "coresight-trace-id.h" =20 +static ssize_t flush_req_store(struct device *dev, + struct device_attribute *attr, + const char *buf, + size_t size) +{ + struct trace_noc_drvdata *drvdata =3D dev_get_drvdata(dev->parent); + struct coresight_device *csdev =3D drvdata->csdev; + unsigned long val; + u32 reg; + + if (kstrtoul(buf, 10, &val)) + return -EINVAL; + + if (val !=3D 1) + return -EINVAL; + + spin_lock(&drvdata->spinlock); + if (csdev->refcnt =3D=3D 0) { + spin_unlock(&drvdata->spinlock); + return -EPERM; + } + + reg =3D readl_relaxed(drvdata->base + TRACE_NOC_CTRL); + reg =3D reg | TRACE_NOC_CTRL_FLUSHREQ; + writel_relaxed(reg, drvdata->base + TRACE_NOC_CTRL); + + spin_unlock(&drvdata->spinlock); + + return size; +} +static DEVICE_ATTR_WO(flush_req); + +/* + * flush-sequence status: + * value 0: sequence in progress; + * value 1: sequence has been completed. + */ +static ssize_t flush_status_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct trace_noc_drvdata *drvdata =3D dev_get_drvdata(dev->parent); + struct coresight_device *csdev =3D drvdata->csdev; + u32 val; + + spin_lock(&drvdata->spinlock); + if (csdev->refcnt =3D=3D 0) { + spin_unlock(&drvdata->spinlock); + return -EPERM; + } + + val =3D readl_relaxed(drvdata->base + TRACE_NOC_CTRL); + spin_unlock(&drvdata->spinlock); + return sysfs_emit(buf, "%u\n", BMVAL(val, 2, 2)); +} +static DEVICE_ATTR_RO(flush_status); + +static struct attribute *trace_noc_attrs[] =3D { + &dev_attr_flush_req.attr, + &dev_attr_flush_status.attr, + NULL, +}; + +static struct attribute_group trace_noc_attr_grp =3D { + .attrs =3D trace_noc_attrs, +}; + +static const struct attribute_group *trace_noc_attr_grps[] =3D { + &trace_noc_attr_grp, + NULL, +}; + static void trace_noc_enable_hw(struct trace_noc_drvdata *drvdata) { u32 val; @@ -142,6 +214,7 @@ static int trace_noc_probe(struct amba_device *adev, co= nst struct amba_id *id) return ret; =20 desc.ops =3D &trace_noc_cs_ops; + desc.groups =3D trace_noc_attr_grps; desc.type =3D CORESIGHT_DEV_TYPE_LINK; desc.subtype.link_subtype =3D CORESIGHT_DEV_SUBTYPE_LINK_MERG; desc.pdata =3D adev->dev.platform_data; diff --git a/drivers/hwtracing/coresight/coresight-tnoc.h b/drivers/hwtraci= ng/coresight/coresight-tnoc.h index b6bd1ef659897d8e0994c5e8514e8cbdd16eebd8..d0fe8f52709ff4147d66dbf9098= 7595012cfaa4e 100644 --- a/drivers/hwtracing/coresight/coresight-tnoc.h +++ b/drivers/hwtracing/coresight/coresight-tnoc.h @@ -10,6 +10,10 @@ =20 /* Enable generation of output ATB traffic.*/ #define TRACE_NOC_CTRL_PORTEN BIT(0) +/* Writing 1 to initiate a flush sequence.*/ +#define TRACE_NOC_CTRL_FLUSHREQ BIT(1) +/* 0: sequence in progress; 1: sequence has been completed.*/ +#define TRACE_NOC_CTRL_FLUSHSTATUS BIT(2) /* Writing 1 to issue a FREQ or FREQ_TS packet*/ #define TRACE_NOC_CTRL_FREQTSREQ BIT(5) /* Sets the type of issued ATB FLAG packets. 0: 'FLAG' packets; 1: 'FLAG_T= S' packets.*/ --=20 2.34.1 From nobody Thu Dec 18 06:06:00 2025 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 A2E3C1F12E7 for ; Thu, 20 Feb 2025 09:42:17 +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=1740044541; cv=none; b=BMENT10LSoEQI5HN9SQymw9CU4y/VdhOHlwIx0/R2MVBVSfdReNX0l7lFkS6eANgWYrrdzMAxzMHGE89ZfqVfnw6eeE1ovdiqvVOdX2TLbxZ98IYh3S8dm57lg1MUaSYsESem0a38WcuqkPHhhIRgQOmu5hEQkiuP/s0/bBEMDo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740044541; c=relaxed/simple; bh=XbTCKvIMDyl2DMpRiyDboA4ABVpbG+2OBuCevF1YKhI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=WnnS3azTB37wJ0BTqX50b6qBEArf+rFgXtNk2SLIuK28Hpu7uIBkEwzsELsrSYW2EfKE//YMlflpsd6tRdTHVJKgGRuplvaQd4VyX2p9cX+UJVl6uxEDCphFQcRSxFzml52aVOxBNzOhORX9BLqz6C/oQTB4iCNsWLu8CR26tQ8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=quicinc.com; spf=pass smtp.mailfrom=quicinc.com; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b=GNsLARMk; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=quicinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=quicinc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="GNsLARMk" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 51K70UB1016821; Thu, 20 Feb 2025 09:42:10 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= ARB5psRXmL5x7dm7O2B78qjvJCsCcFRky0xfe+WKbYI=; b=GNsLARMkkwQ6ikwq MRlsngqC/C7iulpf5qLTVJbV7MjLAvPzp3rJaM645tilCQ8nJrXKKkAi1fEsE62D l0mrcxHeJOmVBFxIUFNrtAZTtkCLA1oyfB4fnwTSClFWslecxcj2dLU34V6UiqR9 6hAqxOR9Qbvw+qbSp3YYPaLzXDwpAkVFjdewjh58sXVF1f9h2hEfVrCXvBql48iO 5JUpu7z1xkAEf4t5/Tjq0hK2CN8OPyc+FCeN8gMs+uxrR2y+vhCbOlM/BWRtjF09 UmFlPtIiiYh6J+EvurjtqmqNLUDVeLMdlnbJgcaXx/+ma7pNT3GwXzVGci8rGVf/ OuE3ww== Received: from nalasppmta05.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 44vyy0dkgq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 20 Feb 2025 09:42:09 +0000 (GMT) Received: from nalasex01b.na.qualcomm.com (nalasex01b.na.qualcomm.com [10.47.209.197]) by NALASPPMTA05.qualcomm.com (8.18.1.2/8.18.1.2) with ESMTPS id 51K9g9Mh015743 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 20 Feb 2025 09:42:09 GMT Received: from yuanfang4-gv.ap.qualcomm.com (10.80.80.8) by nalasex01b.na.qualcomm.com (10.47.209.197) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.9; Thu, 20 Feb 2025 01:42:04 -0800 From: Yuanfang Zhang Date: Thu, 20 Feb 2025 17:41:24 +0800 Subject: [PATCH 4/5] coresight-tnoc: add node to configure flag type 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: <20250220-trace-noc-driver-v1-4-15d78bd48e12@quicinc.com> References: <20250220-trace-noc-driver-v1-0-15d78bd48e12@quicinc.com> In-Reply-To: <20250220-trace-noc-driver-v1-0-15d78bd48e12@quicinc.com> To: Suzuki K Poulose , Mike Leach , James Clark , "Alexander Shishkin" CC: , , , , Yuanfang Zhang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1740044514; l=2045; i=quic_yuanfang@quicinc.com; s=20241209; h=from:subject:message-id; bh=XbTCKvIMDyl2DMpRiyDboA4ABVpbG+2OBuCevF1YKhI=; b=Pqu1/3bbvFLUYjPvJZO5lWaJKO3UxVsRxm5FRBy/v11wJCsNnVjFVEza1AOLl89N6DJFrQ6kR CJSVyYpgEgPD3JGs3zsSfiXUyc/skejDe8T2qZYTCSeXzsjhSLZBsXr X-Developer-Key: i=quic_yuanfang@quicinc.com; a=ed25519; pk=ZrIjRVq9LN8/zCQGbDEwrZK/sfnVjwQ2elyEZAOaV1Q= X-ClientProxiedBy: nasanex01b.na.qualcomm.com (10.46.141.250) To nalasex01b.na.qualcomm.com (10.47.209.197) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-GUID: aZgUy1ru-dBazPNIbWun75JTrcoi3lnP X-Proofpoint-ORIG-GUID: aZgUy1ru-dBazPNIbWun75JTrcoi3lnP X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-02-20_04,2025-02-20_02,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 mlxlogscore=889 clxscore=1015 mlxscore=0 lowpriorityscore=0 adultscore=0 phishscore=0 suspectscore=0 bulkscore=0 malwarescore=0 impostorscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2502200070 flag_type=EF=BC=9Aused to set the type of issued ATB FLAG packets. 0: 'FLAG' packets; 1: 'FLAG_TS' packets. Signed-off-by: Yuanfang Zhang --- drivers/hwtracing/coresight/coresight-tnoc.c | 42 ++++++++++++++++++++++++= +++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/drivers/hwtracing/coresight/coresight-tnoc.c b/drivers/hwtraci= ng/coresight/coresight-tnoc.c index 25962af3850af106f7a8b7e1738ad93d44b81ee7..3ff3504603f66bd595484374f1c= dac90c528b665 100644 --- a/drivers/hwtracing/coresight/coresight-tnoc.c +++ b/drivers/hwtracing/coresight/coresight-tnoc.c @@ -26,7 +26,7 @@ static ssize_t flush_req_store(struct device *dev, unsigned long val; u32 reg; =20 - if (kstrtoul(buf, 10, &val)) + if (kstrtoul(buf, 0, &val)) return -EINVAL; =20 if (val !=3D 1) @@ -73,9 +73,49 @@ static ssize_t flush_status_show(struct device *dev, } static DEVICE_ATTR_RO(flush_status); =20 +/* + * Sets the type of issued ATB FLAG packets: + * 0: 'FLAG' packets; + * 1: 'FLAG_TS' packets. + */ +static ssize_t flag_type_store(struct device *dev, + struct device_attribute *attr, + const char *buf, + size_t size) +{ + struct trace_noc_drvdata *drvdata =3D dev_get_drvdata(dev->parent); + unsigned long val; + + if (kstrtoul(buf, 10, &val)) + return -EINVAL; + + if (val !=3D 1 && val !=3D 0) + return -EINVAL; + + spin_lock(&drvdata->spinlock); + if (val) + drvdata->flag_type =3D FLAG_TS; + else + drvdata->flag_type =3D FLAG; + spin_unlock(&drvdata->spinlock); + + return size; +} + +static ssize_t flag_type_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct trace_noc_drvdata *drvdata =3D dev_get_drvdata(dev->parent); + + return sysfs_emit(buf, "%u\n", drvdata->flag_type); +} +static DEVICE_ATTR_RW(flag_type); + static struct attribute *trace_noc_attrs[] =3D { &dev_attr_flush_req.attr, &dev_attr_flush_status.attr, + &dev_attr_flag_type.attr, NULL, }; =20 --=20 2.34.1 From nobody Thu Dec 18 06:06:00 2025 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 A2F021F12E9 for ; Thu, 20 Feb 2025 09:42:19 +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=1740044541; cv=none; b=Nnh/eKeytqhO+TsVB7ibRy8J+e2F+9rN6HW8jtjJ8eb67I49aXnl0xUR94UwKmTFLLY1SWeOydP1sL1NHM6jjYuANspEY1OJqX8xrSswglpJp1nixx0a/pgC2T2OF3+Me/ufSBZHJBsIT/PQNra85GJQBBpqZqPyHgzP86m54Bg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740044541; c=relaxed/simple; bh=D9nO0Rw8IFdx8/JC61W3qCybMF46rPTusGdMNvOiv98=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=CRlHCNbn2mgOGN+CKxF0iOpQZT5Dc+dlKiST/LXYNZVyrc93Aw9mOu3tgyd2dnv0pW6q62IzS/OTqiuHN4/i2CAc2lkA28BERB+lZDFiDm3X5k1iJclQE2NvWGViettTd8Ghwz0fvFGCoS2jQqVuX6u8gba5/EzyacVzK3lGsDs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=quicinc.com; spf=pass smtp.mailfrom=quicinc.com; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b=htoHkTqe; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=quicinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=quicinc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="htoHkTqe" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 51K6q7dM002872; Thu, 20 Feb 2025 09:42:12 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= IJyVAzse7xLFb8xCPnWRvVTtifhlIa8lHqL9vpKMvTY=; b=htoHkTqewfmaGjOo dW53N/5j4HTrBOsS2f7HGFmNkTz/Fyaxa6L75W++F39UHaQcPtVMJXQpLhPgbqOy fNRttGQVqV+sYcvQO2o90cXoXCL1kd/shfGamPSzZKDDLEdY1+UJ9luy0Y5q3383 aO11F7VW+yLM5yy7paiqhSJBJswnPfNuj9DCIX2YzuuNXDQ5U0ZGzzcFYKeLh/kZ Mvtq3h5FImopJGeBBU80NyGgwkQwB8PjkTUpH1fn5a2EdZoboW1ma/lxK6tz2U8n NDLdA+Y5DvKIxz9qI9/uI6VLxMBhJDOhDyd/SgWS02cFeCI5CX/yyP8LIKZAG9s8 9n9EBw== Received: from nalasppmta03.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 44vyy2dnqk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 20 Feb 2025 09:42:12 +0000 (GMT) Received: from nalasex01b.na.qualcomm.com (nalasex01b.na.qualcomm.com [10.47.209.197]) by NALASPPMTA03.qualcomm.com (8.18.1.2/8.18.1.2) with ESMTPS id 51K9gBxk014611 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 20 Feb 2025 09:42:11 GMT Received: from yuanfang4-gv.ap.qualcomm.com (10.80.80.8) by nalasex01b.na.qualcomm.com (10.47.209.197) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.9; Thu, 20 Feb 2025 01:42:06 -0800 From: Yuanfang Zhang Date: Thu, 20 Feb 2025 17:41:25 +0800 Subject: [PATCH 5/5] coresight-tnoc: add nodes to configure freq packet 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: <20250220-trace-noc-driver-v1-5-15d78bd48e12@quicinc.com> References: <20250220-trace-noc-driver-v1-0-15d78bd48e12@quicinc.com> In-Reply-To: <20250220-trace-noc-driver-v1-0-15d78bd48e12@quicinc.com> To: Suzuki K Poulose , Mike Leach , James Clark , "Alexander Shishkin" CC: , , , , Yuanfang Zhang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1740044514; l=3505; i=quic_yuanfang@quicinc.com; s=20241209; h=from:subject:message-id; bh=D9nO0Rw8IFdx8/JC61W3qCybMF46rPTusGdMNvOiv98=; b=ytz5uErs24gdEcmBxtu39+tZCkTaeRzPZqkFSIlGu3N5H9CtOudTsRJnlEculWU/ssPHawnR+ xqLzvW7E1mtCKwKVfl8Kw+cs2+1C1N6wX0DTNDJbc1E4lrTezhh8wpG X-Developer-Key: i=quic_yuanfang@quicinc.com; a=ed25519; pk=ZrIjRVq9LN8/zCQGbDEwrZK/sfnVjwQ2elyEZAOaV1Q= X-ClientProxiedBy: nasanex01b.na.qualcomm.com (10.46.141.250) To nalasex01b.na.qualcomm.com (10.47.209.197) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-ORIG-GUID: 3bG4iI2z1IT3A49eBuqdkjYEGYgTiFwY X-Proofpoint-GUID: 3bG4iI2z1IT3A49eBuqdkjYEGYgTiFwY X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-02-20_04,2025-02-20_02,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 lowpriorityscore=0 clxscore=1015 adultscore=0 phishscore=0 mlxlogscore=999 bulkscore=0 malwarescore=0 impostorscore=0 priorityscore=1501 mlxscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2502200070 Three nodes for freq packet config are added here: 1. freq_type: used to set the type of issued ATB FREQ packets. 0: 'FREQ' packets; 1: 'FREQ_TS' packets. 2. freq_req_val: used to set frequency values carried by 'FREQ' and 'FREQ_TS' packets. 3. freq_ts_req: writing '1' to issue a 'FREQ' or 'FREQ_TS' packet. Signed-off-by: Yuanfang Zhang --- drivers/hwtracing/coresight/coresight-tnoc.c | 97 ++++++++++++++++++++++++= ++++ 1 file changed, 97 insertions(+) diff --git a/drivers/hwtracing/coresight/coresight-tnoc.c b/drivers/hwtraci= ng/coresight/coresight-tnoc.c index 3ff3504603f66bd595484374f1cdac90c528b665..629df98959d1bfb55771376fac2= 818a48cb9c259 100644 --- a/drivers/hwtracing/coresight/coresight-tnoc.c +++ b/drivers/hwtracing/coresight/coresight-tnoc.c @@ -112,10 +112,107 @@ static ssize_t flag_type_show(struct device *dev, } static DEVICE_ATTR_RW(flag_type); =20 +static ssize_t freq_type_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct trace_noc_drvdata *drvdata =3D dev_get_drvdata(dev->parent); + + return sysfs_emit(buf, "%u\n", drvdata->freq_type); +} + +static ssize_t freq_type_store(struct device *dev, + struct device_attribute *attr, + const char *buf, + size_t size) +{ + struct trace_noc_drvdata *drvdata =3D dev_get_drvdata(dev->parent); + unsigned long val; + + if (kstrtoul(buf, 0, &val)) + return -EINVAL; + + if (val !=3D 1 && val !=3D 0) + return -EINVAL; + + spin_lock(&drvdata->spinlock); + if (val) + drvdata->freq_type =3D FREQ_TS; + else + drvdata->freq_type =3D FREQ; + spin_unlock(&drvdata->spinlock); + + return size; +} +static DEVICE_ATTR_RW(freq_type); + +static ssize_t freq_req_val_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct trace_noc_drvdata *drvdata =3D dev_get_drvdata(dev->parent); + + return sysfs_emit(buf, "%u\n", drvdata->freq_req_val); +} + +static ssize_t freq_req_val_store(struct device *dev, + struct device_attribute *attr, + const char *buf, + size_t size) +{ + struct trace_noc_drvdata *drvdata =3D dev_get_drvdata(dev->parent); + unsigned long val; + + if (kstrtoul(buf, 0, &val)) + return -EINVAL; + + if (val) { + spin_lock(&drvdata->spinlock); + drvdata->freq_req_val =3D val; + spin_unlock(&drvdata->spinlock); + } + + return size; +} +static DEVICE_ATTR_RW(freq_req_val); + +static ssize_t freq_ts_req_store(struct device *dev, + struct device_attribute *attr, + const char *buf, + size_t size) +{ + struct trace_noc_drvdata *drvdata =3D dev_get_drvdata(dev->parent); + struct coresight_device *csdev =3D drvdata->csdev; + unsigned long val; + u32 reg; + + if (kstrtoul(buf, 0, &val)) + return -EINVAL; + + spin_lock(&drvdata->spinlock); + if (csdev->refcnt =3D=3D 0) { + spin_unlock(&drvdata->spinlock); + return -EPERM; + } + + if (val) { + reg =3D readl_relaxed(drvdata->base + TRACE_NOC_CTRL); + reg =3D reg | TRACE_NOC_CTRL_FREQTSREQ; + writel_relaxed(reg, drvdata->base + TRACE_NOC_CTRL); + } + spin_unlock(&drvdata->spinlock); + + return size; +} +static DEVICE_ATTR_WO(freq_ts_req); + static struct attribute *trace_noc_attrs[] =3D { &dev_attr_flush_req.attr, &dev_attr_flush_status.attr, &dev_attr_flag_type.attr, + &dev_attr_freq_type.attr, + &dev_attr_freq_req_val.attr, + &dev_attr_freq_ts_req.attr, NULL, }; =20 --=20 2.34.1