From patchwork Thu Mar 21 08:32:04 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tao Zhang X-Patchwork-Id: 13598495 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 7244020312; Thu, 21 Mar 2024 08:32:53 +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=1711009975; cv=none; b=Dj2tfWEebfHDjGMgonVIVdMxtcwH7DQR54dTyuBhLR2UNSDzbhMeDzHVMAGsqzpYMyEoJO+SJ10zWJsA5LS9r77xgDBnqSNHBeotlkg/Erhss+ZULSmOFUEN2DURomistXbNGzl7iXNhgjB4bPhb3NaUF+TBF0ITJGQ77BZCw+M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711009975; c=relaxed/simple; bh=8io2EGR1L1+Uiz9KhTAPZ8khuUJh03rL0FXlTsw+QaA=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=ucNUxAVzB484/pEfu4yMh8t+/0o3fMXfWNoChQv67eNcPZH4XzNyVtOPnmKZs/fhH/4bWe5hJ370OxnrB9BVhT8dbYUVdUMnUGVZfCk6TC7HF5Cc3R9snjjXvuGP0svxftuERinsB7YtxmAne+QM1ujk9QgNKSCEfNlAAO7Qon0= 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=JUTTOBk/; 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="JUTTOBk/" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id 42L7bZJP012693; Thu, 21 Mar 2024 08:32:36 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h= from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-type; s=qcppdkim1; bh=HFI8HIac9if1Y4WZiEOV ol/hOSTOPl6waJF+ZSoXpCY=; b=JUTTOBk/wWMIfAMoGuuCnw6qVml9NnCiREim RAY6dbJ9V7vbPSm8k12mLJqjcSCGMflt/3HrZ0LFEXVP/75ZnVPKG1/tczlz5f+b 9e29KpAUkkl33J2rRLQmxkUO70bGo/KR8uzyMkbdsuNEq7D0mWmLYnUZHAl1mhPo rXSGOFWNgFsdAR+KxuplfhQ0OEhCx9208qkkKdUvfBti0TxBHVV9DfaTFXb6+e61 NLrgHTu/ufCt4a7skpp7Kyb0l7Eh0kctMjynMrFChARCLQfuu+5wdDvZ8lqzjRV6 ehXwaA0CaubIKq+x40rNaxdORS2W6nyXUEyo6UAy5sik4Uppvg== Received: from nalasppmta01.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3x0c67gkva-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 21 Mar 2024 08:32:36 +0000 (GMT) Received: from nalasex01c.na.qualcomm.com (nalasex01c.na.qualcomm.com [10.47.97.35]) by NALASPPMTA01.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 42L8WZDG002282 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 21 Mar 2024 08:32:35 GMT Received: from taozha-gv.qualcomm.com (10.80.80.8) by nalasex01c.na.qualcomm.com (10.47.97.35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Thu, 21 Mar 2024 01:32:30 -0700 From: Tao Zhang To: Mathieu Poirier , Suzuki K Poulose , Alexander Shishkin , Konrad Dybcio , Mike Leach , Rob Herring , Krzysztof Kozlowski CC: Tao Zhang , Jinlong Mao , Leo Yan , Greg Kroah-Hartman , , , , , Tingwei Zhang , Yuanfang Zhang , Trilok Soni , Song Chai , , Subject: [PATCH 1/4] dt-bindings: arm: qcom,coresight-funnel: Add label for multi-ouput Date: Thu, 21 Mar 2024 16:32:04 +0800 Message-ID: <1711009927-17873-2-git-send-email-quic_taozha@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1711009927-17873-1-git-send-email-quic_taozha@quicinc.com> References: <1711009927-17873-1-git-send-email-quic_taozha@quicinc.com> Precedence: bulk X-Mailing-List: linux-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: nasanex01a.na.qualcomm.com (10.52.223.231) To nalasex01c.na.qualcomm.com (10.47.97.35) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-GUID: G6BvcXkXF3yE2H_Vx-vgo_haQ3_zjU8W X-Proofpoint-ORIG-GUID: G6BvcXkXF3yE2H_Vx-vgo_haQ3_zjU8W X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-03-21_05,2024-03-18_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 malwarescore=0 mlxlogscore=999 lowpriorityscore=0 clxscore=1015 priorityscore=1501 phishscore=0 impostorscore=0 spamscore=0 suspectscore=0 bulkscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2403140001 definitions=main-2403210057 Add new property "label" to label the source corresponding to the output connection. When the funnel supports multi-output, this property needs to be introduced to mark which source component a certain output connection corresponds to. Signed-off-by: Tao Zhang --- .../arm/arm,coresight-dynamic-funnel.yaml | 34 ++++++++++++++++--- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/Documentation/devicetree/bindings/arm/arm,coresight-dynamic-funnel.yaml b/Documentation/devicetree/bindings/arm/arm,coresight-dynamic-funnel.yaml index 44a1041cb0fc..cde62c286d29 100644 --- a/Documentation/devicetree/bindings/arm/arm,coresight-dynamic-funnel.yaml +++ b/Documentation/devicetree/bindings/arm/arm,coresight-dynamic-funnel.yaml @@ -66,13 +66,39 @@ properties: $ref: /schemas/graph.yaml#/properties/port out-ports: - $ref: /schemas/graph.yaml#/properties/ports - additionalProperties: false - + type: object properties: + "#address-cells": + const: 1 + + "#size-cells": + const: 0 + port: + type: object + + patternProperties: + '^port(@[0-7])?$': + type: object description: Output connection to CoreSight Trace bus - $ref: /schemas/graph.yaml#/properties/port + + patternProperties: + "^endpoint(@[0-9a-f]+)?$": + type: object + properties: + remote-endpoint: + description: | + phandle to an 'endpoint' subnode of a remote device node. + $ref: /schemas/types.yaml#/definitions/phandle + label: + description: Label the source corresponding to the output connection + $ref: /schemas/types.yaml#/definitions/string + oneOf: + - required: + - port + - required: + - "#address-cells" + - "#size-cells" required: - compatible From patchwork Thu Mar 21 08:32:05 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tao Zhang X-Patchwork-Id: 13598498 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 AF18A56448; Thu, 21 Mar 2024 08:33:01 +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=1711009984; cv=none; b=u14dGRx8DFaX6fkHPl/pB5uAaEvbh74TVhJBlqjmwJYZIz/dA0mUi/bwhJySSECHvQ3YfnTKJ4yj+wwn52HENSHI2GAqnuVe3RRz2gaaJQqXTDXPp6xNFp/GKiaoUf3suYXY2k4gDgt0kdsm8EzGQPTGLahXI75uN1819UJ3a48= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711009984; c=relaxed/simple; bh=9Osz6ynVLJ8wEF1vBBiviUpb5oLI5hbY7RWeC3AHbKg=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=planruw0QG7U2OOXJpQto4rp85KJr9PgYGb8bi+CH+fl6K2xiKJXn8AbSPn3CSni1D5YJSRNpJm4fvPBrS1OcZivppwIDJ9iFfnoeglp+we1mjqImmUQURTLr1CHq2VRIKOu/8YUG9Rdvla8yYN926vjd1kjxcsrFkJNADKC7IE= 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=Whq8R8Wr; 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="Whq8R8Wr" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id 42L6RRwQ013869; Thu, 21 Mar 2024 08:32:42 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h= from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-type; s=qcppdkim1; bh=977eVCuzV7/oAe69oiBK 0VnWXz/hrZsu+2HflhEkNxE=; b=Whq8R8WrN/jnPJy7a5VMP23duNsP1+Lomv2U aw3CgU5LXWNJotl4H290kGcoCMWUD8MuDCWD/cF4tPxIrPw+VXLgAlp9/yEw82/g Y5Z3jLXTCyW3GxNfmLyRhAsYBtgOHzmc1oXEd+1eElu5c+yJGx/WvVGfSSmJZ1IG Aq0tz4xr/2rko68fr3C9VXRhalRggZIL0owBJpnF3KSTKCg4Kb1rezqgVoR9iU0t 6N35/d2+nhA6pxeWEmAdN0QEnsRG6Y7Pj3hThKMusbbGkycboC0eEIaWhQ10neC8 7/NU/gyOVv0uuqsuMw07KqvtvjjA4MhKtN6a7GPxbXRs3gWqWA== Received: from nalasppmta04.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3x0fmwg7px-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 21 Mar 2024 08:32:41 +0000 (GMT) Received: from nalasex01c.na.qualcomm.com (nalasex01c.na.qualcomm.com [10.47.97.35]) by NALASPPMTA04.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 42L8WeLL009128 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 21 Mar 2024 08:32:40 GMT Received: from taozha-gv.qualcomm.com (10.80.80.8) by nalasex01c.na.qualcomm.com (10.47.97.35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Thu, 21 Mar 2024 01:32:35 -0700 From: Tao Zhang To: Mathieu Poirier , Suzuki K Poulose , Alexander Shishkin , Konrad Dybcio , Mike Leach , Rob Herring , Krzysztof Kozlowski CC: Tao Zhang , Jinlong Mao , Leo Yan , Greg Kroah-Hartman , , , , , Tingwei Zhang , Yuanfang Zhang , Trilok Soni , Song Chai , , Subject: [PATCH 2/4] coresight: Add support for multiple output ports on the funnel Date: Thu, 21 Mar 2024 16:32:05 +0800 Message-ID: <1711009927-17873-3-git-send-email-quic_taozha@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1711009927-17873-1-git-send-email-quic_taozha@quicinc.com> References: <1711009927-17873-1-git-send-email-quic_taozha@quicinc.com> Precedence: bulk X-Mailing-List: linux-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: nasanex01a.na.qualcomm.com (10.52.223.231) To nalasex01c.na.qualcomm.com (10.47.97.35) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-GUID: q-Yq7yFbVYGxXzflWqTW_q52PBs22JVu X-Proofpoint-ORIG-GUID: q-Yq7yFbVYGxXzflWqTW_q52PBs22JVu X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-03-21_05,2024-03-18_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxlogscore=999 clxscore=1015 suspectscore=0 mlxscore=0 spamscore=0 priorityscore=1501 malwarescore=0 impostorscore=0 lowpriorityscore=0 adultscore=0 bulkscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2403140001 definitions=main-2403210056 Funnel devices are now capable of supporting multiple-inputs and multiple-outputs configuration with in built hardware filtering for TPDM devices. Add software support to this function. Output port is selected according to the source in the trace path. The source of the input port on funnels will be marked in the device tree. e.g. tpdm@xxxxxxx { ... ... ... ... }; funnel_XXX: funnel@xxxxxxx { ... ... ... ... out-ports { ... ... ... ... port@x { ... ... ... ... label = "xxxxxxx.tpdm"; <-- To label the source }; corresponding to the output ... ... ... ... connection "port@x". And this }; is a hardware static connections. ... ... ... ... Here needs to refer to hardware }; design. Then driver will parse the source label marked in the device tree, and save it to the coresight path. When the function needs to know the source label, it could obtain it from coresight path parameter. Finally, the output port knows which source it corresponds to, and it also knows which input port it corresponds to. Signed-off-by: Tao Zhang --- drivers/hwtracing/coresight/coresight-core.c | 81 ++++++++++++++++--- .../hwtracing/coresight/coresight-platform.c | 5 ++ include/linux/coresight.h | 2 + 3 files changed, 75 insertions(+), 13 deletions(-) diff --git a/drivers/hwtracing/coresight/coresight-core.c b/drivers/hwtracing/coresight/coresight-core.c index 5dde597403b3..b1b5e6d9ec7a 100644 --- a/drivers/hwtracing/coresight/coresight-core.c +++ b/drivers/hwtracing/coresight/coresight-core.c @@ -113,15 +113,63 @@ struct coresight_device *coresight_get_percpu_sink(int cpu) } EXPORT_SYMBOL_GPL(coresight_get_percpu_sink); +static struct coresight_device *coresight_get_source(struct list_head *path) +{ + struct coresight_device *csdev; + + if (!path) + return NULL; + + csdev = list_first_entry(path, struct coresight_node, link)->csdev; + if (csdev->type != CORESIGHT_DEV_TYPE_SOURCE) + return NULL; + + return csdev; +} + +/** + * coresight_source_filter - checks whether the connection matches the source + * of path if connection is binded to specific source. + * @path: The list of devices + * @conn: The connection of one outport + * + * Return zero if the connection doesn't have a source binded or source of the + * path matches the source binds to connection. + */ +static int coresight_source_filter(struct list_head *path, + struct coresight_connection *conn) +{ + int ret = 0; + struct coresight_device *source = NULL; + + if (conn->source_label == NULL) + return ret; + + source = coresight_get_source(path); + if (source == NULL) + return ret; + + if (strstr(kobject_get_path(&source->dev.kobj, GFP_KERNEL), + conn->source_label)) + ret = 0; + else + ret = -1; + + return ret; +} + static struct coresight_connection * coresight_find_out_connection(struct coresight_device *src_dev, - struct coresight_device *dest_dev) + struct coresight_device *dest_dev, + struct list_head *path) { int i; struct coresight_connection *conn; for (i = 0; i < src_dev->pdata->nr_outconns; i++) { conn = src_dev->pdata->out_conns[i]; + if (coresight_source_filter(path, conn)) + continue; if (conn->dest_dev == dest_dev) return conn; } @@ -312,7 +360,8 @@ static void coresight_disable_sink(struct coresight_device *csdev) static int coresight_enable_link(struct coresight_device *csdev, struct coresight_device *parent, - struct coresight_device *child) + struct coresight_device *child, + struct list_head *path) { int ret = 0; int link_subtype; @@ -321,8 +370,8 @@ static int coresight_enable_link(struct coresight_device *csdev, if (!parent || !child) return -EINVAL; - inconn = coresight_find_out_connection(parent, csdev); - outconn = coresight_find_out_connection(csdev, child); + inconn = coresight_find_out_connection(parent, csdev, path); + outconn = coresight_find_out_connection(csdev, child, path); link_subtype = csdev->subtype.link_subtype; if (link_subtype == CORESIGHT_DEV_SUBTYPE_LINK_MERG && IS_ERR(inconn)) @@ -341,7 +390,8 @@ static int coresight_enable_link(struct coresight_device *csdev, static void coresight_disable_link(struct coresight_device *csdev, struct coresight_device *parent, - struct coresight_device *child) + struct coresight_device *child, + struct list_head *path) { int i; int link_subtype; @@ -350,8 +400,8 @@ static void coresight_disable_link(struct coresight_device *csdev, if (!parent || !child) return; - inconn = coresight_find_out_connection(parent, csdev); - outconn = coresight_find_out_connection(csdev, child); + inconn = coresight_find_out_connection(parent, csdev, path); + outconn = coresight_find_out_connection(csdev, child, path); link_subtype = csdev->subtype.link_subtype; if (link_ops(csdev)->disable) { @@ -507,7 +557,7 @@ static void coresight_disable_path_from(struct list_head *path, case CORESIGHT_DEV_TYPE_LINK: parent = list_prev_entry(nd, link)->csdev; child = list_next_entry(nd, link)->csdev; - coresight_disable_link(csdev, parent, child); + coresight_disable_link(csdev, parent, child, path); break; default: break; @@ -588,7 +638,7 @@ int coresight_enable_path(struct list_head *path, enum cs_mode mode, case CORESIGHT_DEV_TYPE_LINK: parent = list_prev_entry(nd, link)->csdev; child = list_next_entry(nd, link)->csdev; - ret = coresight_enable_link(csdev, parent, child); + ret = coresight_enable_link(csdev, parent, child, path); if (ret) goto err; break; @@ -802,7 +852,8 @@ static void coresight_drop_device(struct coresight_device *csdev) */ static int _coresight_build_path(struct coresight_device *csdev, struct coresight_device *sink, - struct list_head *path) + struct list_head *path, + struct coresight_device *source) { int i, ret; bool found = false; @@ -814,7 +865,7 @@ static int _coresight_build_path(struct coresight_device *csdev, if (coresight_is_percpu_source(csdev) && coresight_is_percpu_sink(sink) && sink == per_cpu(csdev_sink, source_ops(csdev)->cpu_id(csdev))) { - if (_coresight_build_path(sink, sink, path) == 0) { + if (_coresight_build_path(sink, sink, path, source) == 0) { found = true; goto out; } @@ -825,8 +876,12 @@ static int _coresight_build_path(struct coresight_device *csdev, struct coresight_device *child_dev; child_dev = csdev->pdata->out_conns[i]->dest_dev; + if (csdev->pdata->out_conns[i]->source_label && + !strstr(kobject_get_path(&source->dev.kobj, GFP_KERNEL), + csdev->pdata->out_conns[i]->source_label)) + continue; if (child_dev && - _coresight_build_path(child_dev, sink, path) == 0) { + _coresight_build_path(child_dev, sink, path, source) == 0) { found = true; break; } @@ -871,7 +926,7 @@ struct list_head *coresight_build_path(struct coresight_device *source, INIT_LIST_HEAD(path); - rc = _coresight_build_path(source, sink, path); + rc = _coresight_build_path(source, sink, path, source); if (rc) { kfree(path); return ERR_PTR(rc); diff --git a/drivers/hwtracing/coresight/coresight-platform.c b/drivers/hwtracing/coresight/coresight-platform.c index 9d550f5697fa..f553fb20966d 100644 --- a/drivers/hwtracing/coresight/coresight-platform.c +++ b/drivers/hwtracing/coresight/coresight-platform.c @@ -205,6 +205,7 @@ static int of_coresight_parse_endpoint(struct device *dev, struct fwnode_handle *rdev_fwnode; struct coresight_connection conn = {}; struct coresight_connection *new_conn; + const char *label; do { /* Parse the local port details */ @@ -243,6 +244,10 @@ static int of_coresight_parse_endpoint(struct device *dev, conn.dest_fwnode = fwnode_handle_get(rdev_fwnode); conn.dest_port = rendpoint.port; + conn.source_label = NULL; + if (!of_property_read_string(ep, "label", &label)) + conn.source_label = label; + new_conn = coresight_add_out_conn(dev, pdata, &conn); if (IS_ERR_VALUE(new_conn)) { fwnode_handle_put(conn.dest_fwnode); diff --git a/include/linux/coresight.h b/include/linux/coresight.h index e8b6e388218c..a9c06ef9bbb2 100644 --- a/include/linux/coresight.h +++ b/include/linux/coresight.h @@ -167,6 +167,7 @@ struct coresight_desc { * struct coresight_connection - representation of a single connection * @src_port: a connection's output port number. * @dest_port: destination's input port number @src_port is connected to. + * @source_label: source component's label. * @dest_fwnode: destination component's fwnode handle. * @dest_dev: a @coresight_device representation of the component connected to @src_port. NULL until the device is created @@ -195,6 +196,7 @@ struct coresight_desc { struct coresight_connection { int src_port; int dest_port; + const char *source_label; struct fwnode_handle *dest_fwnode; struct coresight_device *dest_dev; struct coresight_sysfs_link *link; From patchwork Thu Mar 21 08:32:06 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tao Zhang X-Patchwork-Id: 13598496 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 BD0F756459; Thu, 21 Mar 2024 08:33:01 +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=1711009983; cv=none; b=uSLmX44ffA817lUigpWWg9r4o89x1VUKll9sFCtONfWvUFEF4W3onNyab14LbuvCoWGujr1/DzXWT4b8ecmdonNvDUOhK4GFUT0D6XHZvGFl4bTYeUN0sDIOHXRwyEObyk5lamTuNJF/KlYBJcxMHdYLrn+/lK6vIndJ2mStc/4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711009983; c=relaxed/simple; bh=841nWnVUqKhNMQuoveCUuZNcpiV05VM3UMo5I/4BTeQ=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=fL/syziepOj5lsqt+PU7U05IV0Ew9IsyTnHXcU/UUogRLVuc3zp5Q8EkoV5kF8E6P1nw0GV+EX4aCOqGEFCWzoR7AfD4n/yR3MzJjxhOPskWCIOAW5lN9CVLFqgEqOYAGW/NV4YIe5P0hnwTqu9OSPKCxJEevzWTjgkjZCA6TtQ= 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=BBp4o6Mx; 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="BBp4o6Mx" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id 42L5Lhot011536; Thu, 21 Mar 2024 08:32:46 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h= from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-type; s=qcppdkim1; bh=IKReU8ZLc37dMn5ztIry Pct1th7et2e4I2ZtfjUG6Ig=; b=BBp4o6MxEK0TcDUAt6EG/7Gffa8g1Caj4gsD ZQsPyLWdYO2tEwbXgL6Chx4adsi2mEW/0W0xQSn6yU9tl3L7dyfUi3o9zeTc5+vn 5wMl97aIGy1hnTMB8RCzxudw5Zdu18IOOKlMKEziGxp2KIoUCD67aDO6jCHJ9QOP lbjkkQruccImkrQrewUYMuWUfBKfPWd1lQF1oGi13A+2FKuhuhIbTJwtvVuQy7Md YJSngOEmCf2TJKV4yazw0ljTuRFYqaDJ5tboPwTGEYgdL/NgNpar8UB1i9BJIDRW ZixV0ZmHbfHympu/KGG7U/meL2k4ecc4DH3naFj5VU8/GOLxVA== Received: from nalasppmta02.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3x01bra3jf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 21 Mar 2024 08:32:46 +0000 (GMT) Received: from nalasex01c.na.qualcomm.com (nalasex01c.na.qualcomm.com [10.47.97.35]) by NALASPPMTA02.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 42L8Wje6009538 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 21 Mar 2024 08:32:45 GMT Received: from taozha-gv.qualcomm.com (10.80.80.8) by nalasex01c.na.qualcomm.com (10.47.97.35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Thu, 21 Mar 2024 01:32:40 -0700 From: Tao Zhang To: Mathieu Poirier , Suzuki K Poulose , Alexander Shishkin , Konrad Dybcio , Mike Leach , Rob Herring , Krzysztof Kozlowski CC: Tao Zhang , Jinlong Mao , Leo Yan , Greg Kroah-Hartman , , , , , Tingwei Zhang , Yuanfang Zhang , Trilok Soni , Song Chai , , Subject: [PATCH 3/4] dt-bindings: arm: qcom,coresight-tpdm: Mark tpda input port number Date: Thu, 21 Mar 2024 16:32:06 +0800 Message-ID: <1711009927-17873-4-git-send-email-quic_taozha@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1711009927-17873-1-git-send-email-quic_taozha@quicinc.com> References: <1711009927-17873-1-git-send-email-quic_taozha@quicinc.com> Precedence: bulk X-Mailing-List: linux-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: nasanex01a.na.qualcomm.com (10.52.223.231) To nalasex01c.na.qualcomm.com (10.47.97.35) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-GUID: TSXCQrsOm2P-A_BUd1bbHqhR0wWGS3-_ X-Proofpoint-ORIG-GUID: TSXCQrsOm2P-A_BUd1bbHqhR0wWGS3-_ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-03-21_05,2024-03-18_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 adultscore=0 priorityscore=1501 phishscore=0 suspectscore=0 malwarescore=0 clxscore=1015 mlxlogscore=999 lowpriorityscore=0 bulkscore=0 mlxscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2403140001 definitions=main-2403210057 Since the funnel supports multi-port output scenario, multiple TPDMs may be connected to one TPDA. Add a new property "qcom,tpda-input-port" to mark the input port number of the TPDA in the device tree, TPDA driver can find out the right TPDM it needs to search according to this new mark property. Signed-off-by: Tao Zhang --- .../devicetree/bindings/arm/qcom,coresight-tpdm.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Documentation/devicetree/bindings/arm/qcom,coresight-tpdm.yaml b/Documentation/devicetree/bindings/arm/qcom,coresight-tpdm.yaml index 8eec07d9d454..383c0f5a658b 100644 --- a/Documentation/devicetree/bindings/arm/qcom,coresight-tpdm.yaml +++ b/Documentation/devicetree/bindings/arm/qcom,coresight-tpdm.yaml @@ -77,6 +77,12 @@ properties: minimum: 0 maximum: 32 + qcom,tpda-input-port: + description: + Specifies the number of the input port on the corresponding TPDA. + $ref: /schemas/types.yaml#/definitions/uint32 + minimum: 0 + clocks: maxItems: 1 @@ -112,6 +118,7 @@ examples: qcom,dsb-element-bits = <32>; qcom,dsb-msrs-num = <16>; + qcom,tpda-input-port = <0>; clocks = <&aoss_qmp>; clock-names = "apb_pclk"; @@ -132,6 +139,7 @@ examples: qcom,cmb-element-bits = <64>; qcom,cmb-msrs-num = <32>; + qcom,tpda-input-port = <4>; clocks = <&aoss_qmp>; clock-names = "apb_pclk"; From patchwork Thu Mar 21 08:32:07 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tao Zhang X-Patchwork-Id: 13598497 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 D385E5645B; Thu, 21 Mar 2024 08:33:01 +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=1711009983; cv=none; b=N3TtetauolqClfgpppYchUKqpaa+YjbX28VdSN+kHrHlwfi+Gq/6t23zKOrl77L3JT8BwEMV9SYriYYLjypD/oseu122rhY4gspRlhWaFwdsYFmM14sFEs5olp/nh0Uk6jDIC6RqBMmVprROYnvPAQKdMeP60udFlhBK1bQbhDw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711009983; c=relaxed/simple; bh=vx2vwBCl0vH0JYk/uQOxu5ro861vYZpASDGOQB/yfR8=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=P9dgr0e+LRS0BH0/iL250kO35DixIckvEdICjzspm8iQAhSX3yj6257qEfAouZ1wt5ukb4Ky9sQzsrgvKQcxgbqJrsS1rkcanIdR8fEb87yvl91W0K6BLnhrPpH9wM14am1uPVWjqqUwrtX1KvHeWuinGyIfo1b6jd4oU/DhPjc= 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=R3xXvejV; 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="R3xXvejV" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id 42L7ocJL013044; Thu, 21 Mar 2024 08:32:51 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h= from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-type; s=qcppdkim1; bh=IGaNZqa/I3mj/VFA3aJv ae8DPRo039rcBSepgeW3wT0=; b=R3xXvejVuSDo4uy6zxrr+GsJDyffCQGlpo1/ eQPsxE+D0TzPqziqqN/HthQpmKbSUwLfSjsXywOVaxUz6gyAq6NjT9A/YgL/T5j/ Q5m0louIybEPE5JBnssevgO5g52Ft7xNG3rt0M4tywIbcTYzFfw6uWB7qXBLadUo i8Oe0IZttkPtPCmrpYOTUZPzFU7drCJ4ieBvYJRA/j1OD/hTRzlenGwkMDaejE6A 1LVp1PWE4V10zgyC6fT5cNW2RU2iVzNy/8obJ+jTa0lY48A8+0lCyWHPTT9EjzYN fi+kdfhqB0C9yqJ6OsSp8s5yy37Qz8DAPnq8paC/Sm0+1UKCmg== Received: from nalasppmta05.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3x0ba10pwg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 21 Mar 2024 08:32:51 +0000 (GMT) Received: from nalasex01c.na.qualcomm.com (nalasex01c.na.qualcomm.com [10.47.97.35]) by NALASPPMTA05.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 42L8WoDN000565 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 21 Mar 2024 08:32:50 GMT Received: from taozha-gv.qualcomm.com (10.80.80.8) by nalasex01c.na.qualcomm.com (10.47.97.35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Thu, 21 Mar 2024 01:32:45 -0700 From: Tao Zhang To: Mathieu Poirier , Suzuki K Poulose , Alexander Shishkin , Konrad Dybcio , Mike Leach , Rob Herring , Krzysztof Kozlowski CC: Tao Zhang , Jinlong Mao , Leo Yan , Greg Kroah-Hartman , , , , , Tingwei Zhang , Yuanfang Zhang , Trilok Soni , Song Chai , , Subject: [PATCH 4/4] coresight-tpda: Add support multi-port input on TPDA Date: Thu, 21 Mar 2024 16:32:07 +0800 Message-ID: <1711009927-17873-5-git-send-email-quic_taozha@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1711009927-17873-1-git-send-email-quic_taozha@quicinc.com> References: <1711009927-17873-1-git-send-email-quic_taozha@quicinc.com> Precedence: bulk X-Mailing-List: linux-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: nasanex01a.na.qualcomm.com (10.52.223.231) To nalasex01c.na.qualcomm.com (10.47.97.35) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-ORIG-GUID: hhH7l2_2HQApscZ2O8blWgoDCff1rfuV X-Proofpoint-GUID: hhH7l2_2HQApscZ2O8blWgoDCff1rfuV X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-03-21_05,2024-03-18_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 phishscore=0 mlxlogscore=999 malwarescore=0 clxscore=1015 adultscore=0 mlxscore=0 lowpriorityscore=0 suspectscore=0 impostorscore=0 priorityscore=1501 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2403140001 definitions=main-2403210056 Since the funnel supports multi-port output scenarios, there may be more than one TPDM connected to one TPDA input port. In this way, when reading the element size of the TPDM, TPDA driver needs to find the correct TPDM corresponding to the input port. When TPDA finds a TPDM on an input port, it read the device tree of the TPDM and finds the configured TPDA input port number. If it is the same as the input port number passed into the function, then it is the correct TPDM that needs to be found. Signed-off-by: Tao Zhang --- drivers/hwtracing/coresight/coresight-tpda.c | 27 +++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/drivers/hwtracing/coresight/coresight-tpda.c b/drivers/hwtracing/coresight/coresight-tpda.c index 52b0201090fb..ba71e1ff18e3 100644 --- a/drivers/hwtracing/coresight/coresight-tpda.c +++ b/drivers/hwtracing/coresight/coresight-tpda.c @@ -84,6 +84,26 @@ static int tpdm_read_element_size(struct tpda_drvdata *drvdata, return rc; } +/* + * Check if the parameter of the input port number in "tpda_get_element_size" + * is the same as the property of the TPDA input port number defined in the device + * tree. + * Return true if they are the same or the property is not read. + * Otherwise, return false. + */ +static bool is_tpda_inport_matched(struct coresight_device *csdev, u32 tpda_inport) +{ + int rc = -EINVAL; + u32 inport_nr; + + rc = fwnode_property_read_u32(dev_fwnode(csdev->dev.parent), + "qcom,tpda-input-port", &inport_nr); + if (!rc) + return (inport_nr == tpda_inport); + + return true; +} + /* * Search and read element data size from the TPDM node in * the devicetree. Each input port of TPDA is connected to @@ -99,6 +119,10 @@ static int tpda_get_element_size(struct tpda_drvdata *drvdata, int rc = 0; int i; struct coresight_device *in; + static u32 tpda_inport; + + if (inport != -1) + tpda_inport = inport; for (i = 0; i < csdev->pdata->nr_inconns; i++) { in = csdev->pdata->in_conns[i]->src_dev; @@ -110,7 +134,8 @@ static int tpda_get_element_size(struct tpda_drvdata *drvdata, csdev->pdata->in_conns[i]->dest_port != inport) continue; - if (coresight_device_is_tpdm(in)) { + if (coresight_device_is_tpdm(in) && + (is_tpda_inport_matched(in, tpda_inport))) { if (drvdata->dsb_esize || drvdata->cmb_esize) return -EEXIST; rc = tpdm_read_element_size(drvdata, in);