diff options
| author | Leo Yan <leo.yan@arm.com> | 2025-07-31 13:23:44 +0100 | 
|---|---|---|
| committer | Suzuki K Poulose <suzuki.poulose@arm.com> | 2025-09-23 14:14:13 +0100 | 
| commit | ba6b61fa21aa44a5634f2dbf78ee6817d3196fc4 (patch) | |
| tree | 4d44253f5afe5459ec692c572d6698940bb47301 /drivers | |
| parent | fbe7514a7912959e384acf108931ac1bfbb16466 (diff) | |
coresight: Refactor driver data allocation
The driver data no longer needs to be allocated separately in the static
and dynamic probes. Moved the allocation into the low-level functions to
avoid code duplication.
Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com>
Reviewed-by: Yeoreum Yun <yeoreum.yun@arm.com>
Tested-by: James Clark <james.clark@linaro.org>
Signed-off-by: Leo Yan <leo.yan@arm.com>
Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Link: https://lore.kernel.org/r/20250731-arm_cs_fix_clock_v4-v6-8-1dfe10bb3f6f@arm.com
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/hwtracing/coresight/coresight-catu.c | 20 | ||||
| -rw-r--r-- | drivers/hwtracing/coresight/coresight-cpu-debug.c | 21 | ||||
| -rw-r--r-- | drivers/hwtracing/coresight/coresight-tmc-core.c | 20 | 
3 files changed, 21 insertions, 40 deletions
| diff --git a/drivers/hwtracing/coresight/coresight-catu.c b/drivers/hwtracing/coresight/coresight-catu.c index 0f476a0cbd74..a3ccb7034ae1 100644 --- a/drivers/hwtracing/coresight/coresight-catu.c +++ b/drivers/hwtracing/coresight/coresight-catu.c @@ -515,11 +515,17 @@ static int __catu_probe(struct device *dev, struct resource *res)  {  	int ret = 0;  	u32 dma_mask; -	struct catu_drvdata *drvdata = dev_get_drvdata(dev); +	struct catu_drvdata *drvdata;  	struct coresight_desc catu_desc;  	struct coresight_platform_data *pdata = NULL;  	void __iomem *base; +	drvdata = devm_kzalloc(dev, sizeof(*drvdata), GFP_KERNEL); +	if (!drvdata) +		return -ENOMEM; + +	dev_set_drvdata(dev, drvdata); +  	ret = coresight_get_enable_clocks(dev, &drvdata->pclk, &drvdata->atclk);  	if (ret)  		return ret; @@ -580,14 +586,8 @@ out:  static int catu_probe(struct amba_device *adev, const struct amba_id *id)  { -	struct catu_drvdata *drvdata;  	int ret; -	drvdata = devm_kzalloc(&adev->dev, sizeof(*drvdata), GFP_KERNEL); -	if (!drvdata) -		return -ENOMEM; - -	amba_set_drvdata(adev, drvdata);  	ret = __catu_probe(&adev->dev, &adev->res);  	if (!ret)  		pm_runtime_put(&adev->dev); @@ -627,18 +627,12 @@ static struct amba_driver catu_driver = {  static int catu_platform_probe(struct platform_device *pdev)  {  	struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0); -	struct catu_drvdata *drvdata;  	int ret = 0; -	drvdata = devm_kzalloc(&pdev->dev, sizeof(*drvdata), GFP_KERNEL); -	if (!drvdata) -		return -ENOMEM; -  	pm_runtime_get_noresume(&pdev->dev);  	pm_runtime_set_active(&pdev->dev);  	pm_runtime_enable(&pdev->dev); -	dev_set_drvdata(&pdev->dev, drvdata);  	ret = __catu_probe(&pdev->dev, res);  	pm_runtime_put(&pdev->dev);  	if (ret) diff --git a/drivers/hwtracing/coresight/coresight-cpu-debug.c b/drivers/hwtracing/coresight/coresight-cpu-debug.c index 5f6db2fb95d4..3edfb5d3d020 100644 --- a/drivers/hwtracing/coresight/coresight-cpu-debug.c +++ b/drivers/hwtracing/coresight/coresight-cpu-debug.c @@ -562,10 +562,16 @@ static void debug_func_exit(void)  static int __debug_probe(struct device *dev, struct resource *res)  { -	struct debug_drvdata *drvdata = dev_get_drvdata(dev); +	struct debug_drvdata *drvdata;  	void __iomem *base;  	int ret; +	drvdata = devm_kzalloc(dev, sizeof(*drvdata), GFP_KERNEL); +	if (!drvdata) +		return -ENOMEM; + +	dev_set_drvdata(dev, drvdata); +  	ret = coresight_get_enable_clocks(dev, &drvdata->pclk, NULL);  	if (ret)  		return ret; @@ -629,13 +635,6 @@ err:  static int debug_probe(struct amba_device *adev, const struct amba_id *id)  { -	struct debug_drvdata *drvdata; - -	drvdata = devm_kzalloc(&adev->dev, sizeof(*drvdata), GFP_KERNEL); -	if (!drvdata) -		return -ENOMEM; - -	amba_set_drvdata(adev, drvdata);  	return __debug_probe(&adev->dev, &adev->res);  } @@ -694,14 +693,8 @@ static struct amba_driver debug_driver = {  static int debug_platform_probe(struct platform_device *pdev)  {  	struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0); -	struct debug_drvdata *drvdata;  	int ret = 0; -	drvdata = devm_kzalloc(&pdev->dev, sizeof(*drvdata), GFP_KERNEL); -	if (!drvdata) -		return -ENOMEM; - -	dev_set_drvdata(&pdev->dev, drvdata);  	pm_runtime_get_noresume(&pdev->dev);  	pm_runtime_set_active(&pdev->dev);  	pm_runtime_enable(&pdev->dev); diff --git a/drivers/hwtracing/coresight/coresight-tmc-core.c b/drivers/hwtracing/coresight/coresight-tmc-core.c index 25c987e2d114..36599c431be6 100644 --- a/drivers/hwtracing/coresight/coresight-tmc-core.c +++ b/drivers/hwtracing/coresight/coresight-tmc-core.c @@ -775,10 +775,16 @@ static int __tmc_probe(struct device *dev, struct resource *res)  	u32 devid;  	void __iomem *base;  	struct coresight_platform_data *pdata = NULL; -	struct tmc_drvdata *drvdata = dev_get_drvdata(dev); +	struct tmc_drvdata *drvdata;  	struct coresight_desc desc = { 0 };  	struct coresight_dev_list *dev_list = NULL; +	drvdata = devm_kzalloc(dev, sizeof(*drvdata), GFP_KERNEL); +	if (!drvdata) +		return -ENOMEM; + +	dev_set_drvdata(dev, drvdata); +  	ret = coresight_get_enable_clocks(dev, &drvdata->pclk, &drvdata->atclk);  	if (ret)  		return ret; @@ -888,14 +894,8 @@ out:  static int tmc_probe(struct amba_device *adev, const struct amba_id *id)  { -	struct tmc_drvdata *drvdata;  	int ret; -	drvdata = devm_kzalloc(&adev->dev, sizeof(*drvdata), GFP_KERNEL); -	if (!drvdata) -		return -ENOMEM; - -	amba_set_drvdata(adev, drvdata);  	ret = __tmc_probe(&adev->dev, &adev->res);  	if (!ret)  		pm_runtime_put(&adev->dev); @@ -972,14 +972,8 @@ static struct amba_driver tmc_driver = {  static int tmc_platform_probe(struct platform_device *pdev)  {  	struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0); -	struct tmc_drvdata *drvdata;  	int ret = 0; -	drvdata = devm_kzalloc(&pdev->dev, sizeof(*drvdata), GFP_KERNEL); -	if (!drvdata) -		return -ENOMEM; - -	dev_set_drvdata(&pdev->dev, drvdata);  	pm_runtime_get_noresume(&pdev->dev);  	pm_runtime_set_active(&pdev->dev);  	pm_runtime_enable(&pdev->dev); | 
