[PATCH v1 3/3] coresight-tpda: Optimize the function of reading element size
Suzuki K Poulose
suzuki.poulose at arm.com
Mon Jul 8 08:49:53 PDT 2024
On 05/07/2024 09:51, Tao Zhang wrote:
> Since the new funnel device supports multi-port output scenarios,
> there may be more than one TPDM connected to one TPDA. In this
> way, when reading the element size of the TPDM, TPDA driver needs
> to find the expected TPDM corresponding to the filter source.
> When TPDA finds a TPDM or a filter source from a input connection,
> it will read the Devicetree to get the expected TPDM's element
> size.
>
> Signed-off-by: Tao Zhang <quic_taozha at quicinc.com>
> ---
> drivers/hwtracing/coresight/coresight-tpda.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/hwtracing/coresight/coresight-tpda.c b/drivers/hwtracing/coresight/coresight-tpda.c
> index 52b0201090fb..fc5a4e46cf5d 100644
> --- a/drivers/hwtracing/coresight/coresight-tpda.c
> +++ b/drivers/hwtracing/coresight/coresight-tpda.c
> @@ -110,9 +110,12 @@ 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)
> + || csdev->pdata->in_conns[i]->filter_src_dev) {
How can we assume that the filter-source device is always TPDM ?
It may be true for your test board, but driver must handle all
possible cases. I would rather prefer:
diff --git a/drivers/hwtracing/coresight/coresight-tpda.c
b/drivers/hwtracing/coresight/coresight-tpda.c
index bfca103f9f84..b1d6f1dd60e3 100644
--- a/drivers/hwtracing/coresight/coresight-tpda.c
+++ b/drivers/hwtracing/coresight/coresight-tpda.c
@@ -110,6 +110,13 @@ static int tpda_get_element_size(struct
tpda_drvdata *drvdata,
csdev->pdata->in_conns[i]->dest_port != inport)
continue;
+ /*
+ * If this port is tied to a source device,
+ * jump to that directly.
+ */
+ if (csdev->pdata->in_conns[i]->filter_src)
+ in = csdev->pdata->in_conns[i]->filter_src;
+
if (coresight_device_is_tpdm(in)) {
if (drvdata->dsb_esize || drvdata->cmb_esize)
return -EEXIST;
Suzuki
More information about the linux-arm-kernel
mailing list