]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
coresight: tpda: fix the logic to setup the element size
authorJie Gan <jie.gan@oss.qualcomm.com>
Fri, 5 Sep 2025 23:53:04 +0000 (07:53 +0800)
committerSuzuki K Poulose <suzuki.poulose@arm.com>
Tue, 23 Sep 2025 13:14:13 +0000 (14:14 +0100)
Some TPDM devices support both CMB and DSB datasets, requiring
the system to enable the port with both corresponding element sizes.

Currently, the logic treats tpdm_read_element_size as successful if
the CMB element size is retrieved correctly, regardless of whether
the DSB element size is obtained. This behavior causes issues
when parsing data from TPDM devices that depend on both element sizes.

To address this, the function should explicitly fail if the DSB
element size cannot be read correctly.

Fixes: e6d7f5252f73 ("coresight-tpda: Add support to configure CMB element")
Reviewed-by: James Clark <james.clark@linaro.org>
Signed-off-by: Jie Gan <jie.gan@oss.qualcomm.com>
Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Link: https://lore.kernel.org/r/20250906-fix_element_size_issue-v2-1-dbb0ac2541a9@oss.qualcomm.com
drivers/hwtracing/coresight/coresight-tpda.c

index 0633f04beb240b4415cf469b3296f52e0a5b1d05..333b3cb236859f0feb1498f4ab81037c772143fd 100644 (file)
@@ -71,6 +71,8 @@ static int tpdm_read_element_size(struct tpda_drvdata *drvdata,
        if (tpdm_data->dsb) {
                rc = fwnode_property_read_u32(dev_fwnode(csdev->dev.parent),
                                "qcom,dsb-element-bits", &drvdata->dsb_esize);
+               if (rc)
+                       goto out;
        }
 
        if (tpdm_data->cmb) {
@@ -78,6 +80,7 @@ static int tpdm_read_element_size(struct tpda_drvdata *drvdata,
                                "qcom,cmb-element-bits", &drvdata->cmb_esize);
        }
 
+out:
        if (rc)
                dev_warn_once(&csdev->dev,
                        "Failed to read TPDM Element size: %d\n", rc);