[PATCH v5 4/7] coresight-tgu: Add TGU decode support

Jonathan Cameron Jonathan.Cameron at huawei.com
Thu May 29 04:32:04 PDT 2025


On Thu, 29 May 2025 16:19:45 +0800
Songwei Chai <quic_songchai at quicinc.com> wrote:

> Decoding is when all the potential pieces for creating a trigger
> are brought together for a given step. Example - there may be a
> counter keeping track of some occurrences and a priority-group that
> is being used to detect a pattern on the sense inputs. These 2
> inputs to condition_decode must be programmed, for a given step,
> to establish the condition for the trigger, or movement to another
> steps.
> 
> Signed-off-by: Songwei Chai <quic_songchai at quicinc.com>

> diff --git a/drivers/hwtracing/coresight/coresight-tgu.c b/drivers/hwtracing/coresight/coresight-tgu.c
> index 6dbfd4c604b1..8dbe8ab30174 100644
> --- a/drivers/hwtracing/coresight/coresight-tgu.c
> +++ b/drivers/hwtracing/coresight/coresight-tgu.c
> @@ -21,13 +21,35 @@ static int calculate_array_location(struct tgu_drvdata *drvdata,

> +
>  static int tgu_enable(struct coresight_device *csdev, enum cs_mode mode,
>  		      void *data)
>  {
> +	int ret = 0;
From what can be seen here, looks like ret is always set, so no need to init.
>  	struct tgu_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent);
>  
>  	spin_lock(&drvdata->spinlock);
> @@ -150,11 +264,15 @@ static int tgu_enable(struct coresight_device *csdev, enum cs_mode mode,
>  		spin_unlock(&drvdata->spinlock);
>  		return -EBUSY;
>  	}
> -	tgu_write_all_hw_regs(drvdata);
> +	ret = tgu_write_all_hw_regs(drvdata);
> +
> +	if (ret == -EINVAL)
> +		goto exit;
>  	drvdata->enable = true;
>  
> +exit:
>  	spin_unlock(&drvdata->spinlock);
> -	return 0;
> +	return ret;
>  }

> diff --git a/drivers/hwtracing/coresight/coresight-tgu.h b/drivers/hwtracing/coresight/coresight-tgu.h
> index f07ead505365..691da393ffa3 100644
> --- a/drivers/hwtracing/coresight/coresight-tgu.h
> +++ b/drivers/hwtracing/coresight/coresight-tgu.h

>  enum operation_index {
>  	TGU_PRIORITY0,
>  	TGU_PRIORITY1,
>  	TGU_PRIORITY2,
> -	TGU_PRIORITY3
> +	TGU_PRIORITY3,

And here is why the previous patch should definitely have had the ,

> +	TGU_CONDITION_DECODE
>  
>  };

> 
> 




More information about the linux-arm-kernel mailing list