All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drivers: thermal: mediatek: fix of_iomap leak in mtk_thermal_probe
@ 2023-04-03 10:38 ` Kang Chen
  0 siblings, 0 replies; 30+ messages in thread
From: Kang Chen @ 2023-04-03 10:38 UTC (permalink / raw)
  To: dzm91
  Cc: rafael, daniel.lezcano, amitk, rui.zhang, matthias.bgg,
	angelogioacchino.delregno, daniel, rdunlap, bchihi, henry.yen,
	linux-pm, linux-kernel, linux-arm-kernel, linux-mediatek,
	hust-os-kernel-patches, void0red, error27, Kang Chen

Smatch reports:
1. mtk_thermal_probe() warn: 'apmixed_base' from of_iomap() not released.
2. mtk_thermal_probe() warn: 'auxadc_base' from of_iomap() not released.

The original code forgets to release iomap resource when handling errors,
fix it through unified error handling code at the end of mtk_thermal_probe.

Fixes: 89945047b166 ("thermal: mediatek: Add tsensor support for V2 thermal system")
Signed-off-by: Kang Chen <void0red@hust.edu.cn>
---
I think the this should be released on the success path but I was too
scared of breaking things. Let me know and I will resend if people want
me to do that.

 drivers/thermal/mediatek/auxadc_thermal.c | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/drivers/thermal/mediatek/auxadc_thermal.c b/drivers/thermal/mediatek/auxadc_thermal.c
index ab730f9552d0..741c7d8151bd 100644
--- a/drivers/thermal/mediatek/auxadc_thermal.c
+++ b/drivers/thermal/mediatek/auxadc_thermal.c
@@ -1149,13 +1149,15 @@ static int mtk_thermal_probe(struct platform_device *pdev)
 
 	if (auxadc_phys_base == OF_BAD_ADDR) {
 		dev_err(&pdev->dev, "Can't get auxadc phys address\n");
-		return -EINVAL;
+		ret = -EINVAL;
+		goto err_iounmap_auxadc;
 	}
 
 	apmixedsys = of_parse_phandle(np, "mediatek,apmixedsys", 0);
 	if (!apmixedsys) {
 		dev_err(&pdev->dev, "missing apmixedsys node\n");
-		return -ENODEV;
+		ret = -ENODEV;
+		goto err_iounmap_auxadc;
 	}
 
 	apmixed_base = of_iomap(apmixedsys, 0);
@@ -1165,17 +1167,18 @@ static int mtk_thermal_probe(struct platform_device *pdev)
 
 	if (apmixed_phys_base == OF_BAD_ADDR) {
 		dev_err(&pdev->dev, "Can't get auxadc phys address\n");
-		return -EINVAL;
+		ret = -EINVAL;
+		goto err_iounmap_apmixed;
 	}
 
 	ret = device_reset_optional(&pdev->dev);
 	if (ret)
-		return ret;
+		goto err_iounmap_apmixed;
 
 	ret = clk_prepare_enable(mt->clk_auxadc);
 	if (ret) {
 		dev_err(&pdev->dev, "Can't enable auxadc clk: %d\n", ret);
-		return ret;
+		goto err_iounmap_apmixed;
 	}
 
 	ret = clk_prepare_enable(mt->clk_peri_therm);
@@ -1220,7 +1223,10 @@ static int mtk_thermal_probe(struct platform_device *pdev)
 	clk_disable_unprepare(mt->clk_peri_therm);
 err_disable_clk_auxadc:
 	clk_disable_unprepare(mt->clk_auxadc);
-
+err_iounmap_apmixed:
+	iounmap(apmixed_base);
+err_iounmap_auxadc:
+	iounmap(auxadc_base);
 	return ret;
 }
 
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH] drivers: thermal: mediatek: fix of_iomap leak in mtk_thermal_probe
@ 2023-04-03 10:38 ` Kang Chen
  0 siblings, 0 replies; 30+ messages in thread
From: Kang Chen @ 2023-04-03 10:38 UTC (permalink / raw)
  To: dzm91
  Cc: rafael, daniel.lezcano, amitk, rui.zhang, matthias.bgg,
	angelogioacchino.delregno, daniel, rdunlap, bchihi, henry.yen,
	linux-pm, linux-kernel, linux-arm-kernel, linux-mediatek,
	hust-os-kernel-patches, void0red, error27, Kang Chen

Smatch reports:
1. mtk_thermal_probe() warn: 'apmixed_base' from of_iomap() not released.
2. mtk_thermal_probe() warn: 'auxadc_base' from of_iomap() not released.

The original code forgets to release iomap resource when handling errors,
fix it through unified error handling code at the end of mtk_thermal_probe.

Fixes: 89945047b166 ("thermal: mediatek: Add tsensor support for V2 thermal system")
Signed-off-by: Kang Chen <void0red@hust.edu.cn>
---
I think the this should be released on the success path but I was too
scared of breaking things. Let me know and I will resend if people want
me to do that.

 drivers/thermal/mediatek/auxadc_thermal.c | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/drivers/thermal/mediatek/auxadc_thermal.c b/drivers/thermal/mediatek/auxadc_thermal.c
index ab730f9552d0..741c7d8151bd 100644
--- a/drivers/thermal/mediatek/auxadc_thermal.c
+++ b/drivers/thermal/mediatek/auxadc_thermal.c
@@ -1149,13 +1149,15 @@ static int mtk_thermal_probe(struct platform_device *pdev)
 
 	if (auxadc_phys_base == OF_BAD_ADDR) {
 		dev_err(&pdev->dev, "Can't get auxadc phys address\n");
-		return -EINVAL;
+		ret = -EINVAL;
+		goto err_iounmap_auxadc;
 	}
 
 	apmixedsys = of_parse_phandle(np, "mediatek,apmixedsys", 0);
 	if (!apmixedsys) {
 		dev_err(&pdev->dev, "missing apmixedsys node\n");
-		return -ENODEV;
+		ret = -ENODEV;
+		goto err_iounmap_auxadc;
 	}
 
 	apmixed_base = of_iomap(apmixedsys, 0);
@@ -1165,17 +1167,18 @@ static int mtk_thermal_probe(struct platform_device *pdev)
 
 	if (apmixed_phys_base == OF_BAD_ADDR) {
 		dev_err(&pdev->dev, "Can't get auxadc phys address\n");
-		return -EINVAL;
+		ret = -EINVAL;
+		goto err_iounmap_apmixed;
 	}
 
 	ret = device_reset_optional(&pdev->dev);
 	if (ret)
-		return ret;
+		goto err_iounmap_apmixed;
 
 	ret = clk_prepare_enable(mt->clk_auxadc);
 	if (ret) {
 		dev_err(&pdev->dev, "Can't enable auxadc clk: %d\n", ret);
-		return ret;
+		goto err_iounmap_apmixed;
 	}
 
 	ret = clk_prepare_enable(mt->clk_peri_therm);
@@ -1220,7 +1223,10 @@ static int mtk_thermal_probe(struct platform_device *pdev)
 	clk_disable_unprepare(mt->clk_peri_therm);
 err_disable_clk_auxadc:
 	clk_disable_unprepare(mt->clk_auxadc);
-
+err_iounmap_apmixed:
+	iounmap(apmixed_base);
+err_iounmap_auxadc:
+	iounmap(auxadc_base);
 	return ret;
 }
 
-- 
2.34.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* Re: [PATCH] drivers: thermal: mediatek: fix of_iomap leak in mtk_thermal_probe
  2023-04-03 10:38 ` Kang Chen
@ 2023-04-03 11:32   ` Daniel Lezcano
  -1 siblings, 0 replies; 30+ messages in thread
From: Daniel Lezcano @ 2023-04-03 11:32 UTC (permalink / raw)
  To: Kang Chen, dzm91
  Cc: rafael, amitk, rui.zhang, matthias.bgg,
	angelogioacchino.delregno, daniel, rdunlap, bchihi, henry.yen,
	linux-pm, linux-kernel, linux-arm-kernel, linux-mediatek,
	hust-os-kernel-patches, void0red, error27

On 03/04/2023 12:38, Kang Chen wrote:
> Smatch reports:
> 1. mtk_thermal_probe() warn: 'apmixed_base' from of_iomap() not released.
> 2. mtk_thermal_probe() warn: 'auxadc_base' from of_iomap() not released.
> 
> The original code forgets to release iomap resource when handling errors,
> fix it through unified error handling code at the end of mtk_thermal_probe.
> 
> Fixes: 89945047b166 ("thermal: mediatek: Add tsensor support for V2 thermal system")
> Signed-off-by: Kang Chen <void0red@hust.edu.cn>
> ---
> I think the this should be released on the success path but I was too
> scared of breaking things. Let me know and I will resend if people want
> me to do that.
> 
>   drivers/thermal/mediatek/auxadc_thermal.c | 18 ++++++++++++------
>   1 file changed, 12 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/thermal/mediatek/auxadc_thermal.c b/drivers/thermal/mediatek/auxadc_thermal.c
> index ab730f9552d0..741c7d8151bd 100644
> --- a/drivers/thermal/mediatek/auxadc_thermal.c
> +++ b/drivers/thermal/mediatek/auxadc_thermal.c
> @@ -1149,13 +1149,15 @@ static int mtk_thermal_probe(struct platform_device *pdev)
>   
>   	if (auxadc_phys_base == OF_BAD_ADDR) {
>   		dev_err(&pdev->dev, "Can't get auxadc phys address\n");
> -		return -EINVAL;
> +		ret = -EINVAL;
> +		goto err_iounmap_auxadc;
>   	}

Better to use the devm_of_iomap() variant

And also take the opportunity to use devm_clk_get_enabled(), remove 
clk_prepare_enable() and the rollbacking in the err_disable_clk_per*: 
label sections.

-- 
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog


^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH] drivers: thermal: mediatek: fix of_iomap leak in mtk_thermal_probe
@ 2023-04-03 11:32   ` Daniel Lezcano
  0 siblings, 0 replies; 30+ messages in thread
From: Daniel Lezcano @ 2023-04-03 11:32 UTC (permalink / raw)
  To: Kang Chen, dzm91
  Cc: rafael, amitk, rui.zhang, matthias.bgg,
	angelogioacchino.delregno, daniel, rdunlap, bchihi, henry.yen,
	linux-pm, linux-kernel, linux-arm-kernel, linux-mediatek,
	hust-os-kernel-patches, void0red, error27

On 03/04/2023 12:38, Kang Chen wrote:
> Smatch reports:
> 1. mtk_thermal_probe() warn: 'apmixed_base' from of_iomap() not released.
> 2. mtk_thermal_probe() warn: 'auxadc_base' from of_iomap() not released.
> 
> The original code forgets to release iomap resource when handling errors,
> fix it through unified error handling code at the end of mtk_thermal_probe.
> 
> Fixes: 89945047b166 ("thermal: mediatek: Add tsensor support for V2 thermal system")
> Signed-off-by: Kang Chen <void0red@hust.edu.cn>
> ---
> I think the this should be released on the success path but I was too
> scared of breaking things. Let me know and I will resend if people want
> me to do that.
> 
>   drivers/thermal/mediatek/auxadc_thermal.c | 18 ++++++++++++------
>   1 file changed, 12 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/thermal/mediatek/auxadc_thermal.c b/drivers/thermal/mediatek/auxadc_thermal.c
> index ab730f9552d0..741c7d8151bd 100644
> --- a/drivers/thermal/mediatek/auxadc_thermal.c
> +++ b/drivers/thermal/mediatek/auxadc_thermal.c
> @@ -1149,13 +1149,15 @@ static int mtk_thermal_probe(struct platform_device *pdev)
>   
>   	if (auxadc_phys_base == OF_BAD_ADDR) {
>   		dev_err(&pdev->dev, "Can't get auxadc phys address\n");
> -		return -EINVAL;
> +		ret = -EINVAL;
> +		goto err_iounmap_auxadc;
>   	}

Better to use the devm_of_iomap() variant

And also take the opportunity to use devm_clk_get_enabled(), remove 
clk_prepare_enable() and the rollbacking in the err_disable_clk_per*: 
label sections.

-- 
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [PATCH v2 1/2] thermal: mediatek: use devm_of_iomap to avoid resource leak in mtk_thermal_probe
  2023-04-03 11:32   ` Daniel Lezcano
@ 2023-04-03 16:46     ` Kang Chen
  -1 siblings, 0 replies; 30+ messages in thread
From: Kang Chen @ 2023-04-03 16:46 UTC (permalink / raw)
  To: daniel.lezcano
  Cc: amitk, angelogioacchino.delregno, bchihi, daniel, dzm91, error27,
	henry.yen, hust-os-kernel-patches, linux-arm-kernel,
	linux-kernel, linux-mediatek, linux-pm, matthias.bgg, rafael,
	rdunlap, rui.zhang, void0red, void0red

Smatch reports:
1. mtk_thermal_probe() warn: 'apmixed_base' from of_iomap() not released.
2. mtk_thermal_probe() warn: 'auxadc_base' from of_iomap() not released.

The original code forgets to release iomap resource when handling errors,
fix it by switch to devm_of_iomap.

Fixes: 89945047b166 ("thermal: mediatek: Add tsensor support for V2 thermal system")
Signed-off-by: Kang Chen <void0red@hust.edu.cn>
---
v2 -> v1: use devm_of_iomap instead.

 drivers/thermal/mediatek/auxadc_thermal.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/thermal/mediatek/auxadc_thermal.c b/drivers/thermal/mediatek/auxadc_thermal.c
index ab730f9552d0..df5e2e354408 100644
--- a/drivers/thermal/mediatek/auxadc_thermal.c
+++ b/drivers/thermal/mediatek/auxadc_thermal.c
@@ -1142,7 +1142,10 @@ static int mtk_thermal_probe(struct platform_device *pdev)
 		return -ENODEV;
 	}
 
-	auxadc_base = of_iomap(auxadc, 0);
+	auxadc_base = devm_of_iomap(&pdev->dev, auxadc, 0, NULL);
+	if (IS_ERR(auxadc_base))
+		return PTR_ERR(auxadc_base);
+
 	auxadc_phys_base = of_get_phys_base(auxadc);
 
 	of_node_put(auxadc);
@@ -1158,7 +1161,10 @@ static int mtk_thermal_probe(struct platform_device *pdev)
 		return -ENODEV;
 	}
 
-	apmixed_base = of_iomap(apmixedsys, 0);
+	apmixed_base = devm_of_iomap(&pdev->dev, apmixedsys, 0, NULL);
+	if (IS_ERR(apmixed_base)
+		return PTR_ERR(apmixed_base);
+
 	apmixed_phys_base = of_get_phys_base(apmixedsys);
 
 	of_node_put(apmixedsys);
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH v2 1/2] thermal: mediatek: use devm_of_iomap to avoid resource leak in mtk_thermal_probe
@ 2023-04-03 16:46     ` Kang Chen
  0 siblings, 0 replies; 30+ messages in thread
From: Kang Chen @ 2023-04-03 16:46 UTC (permalink / raw)
  To: daniel.lezcano
  Cc: amitk, angelogioacchino.delregno, bchihi, daniel, dzm91, error27,
	henry.yen, hust-os-kernel-patches, linux-arm-kernel,
	linux-kernel, linux-mediatek, linux-pm, matthias.bgg, rafael,
	rdunlap, rui.zhang, void0red, void0red

Smatch reports:
1. mtk_thermal_probe() warn: 'apmixed_base' from of_iomap() not released.
2. mtk_thermal_probe() warn: 'auxadc_base' from of_iomap() not released.

The original code forgets to release iomap resource when handling errors,
fix it by switch to devm_of_iomap.

Fixes: 89945047b166 ("thermal: mediatek: Add tsensor support for V2 thermal system")
Signed-off-by: Kang Chen <void0red@hust.edu.cn>
---
v2 -> v1: use devm_of_iomap instead.

 drivers/thermal/mediatek/auxadc_thermal.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/thermal/mediatek/auxadc_thermal.c b/drivers/thermal/mediatek/auxadc_thermal.c
index ab730f9552d0..df5e2e354408 100644
--- a/drivers/thermal/mediatek/auxadc_thermal.c
+++ b/drivers/thermal/mediatek/auxadc_thermal.c
@@ -1142,7 +1142,10 @@ static int mtk_thermal_probe(struct platform_device *pdev)
 		return -ENODEV;
 	}
 
-	auxadc_base = of_iomap(auxadc, 0);
+	auxadc_base = devm_of_iomap(&pdev->dev, auxadc, 0, NULL);
+	if (IS_ERR(auxadc_base))
+		return PTR_ERR(auxadc_base);
+
 	auxadc_phys_base = of_get_phys_base(auxadc);
 
 	of_node_put(auxadc);
@@ -1158,7 +1161,10 @@ static int mtk_thermal_probe(struct platform_device *pdev)
 		return -ENODEV;
 	}
 
-	apmixed_base = of_iomap(apmixedsys, 0);
+	apmixed_base = devm_of_iomap(&pdev->dev, apmixedsys, 0, NULL);
+	if (IS_ERR(apmixed_base)
+		return PTR_ERR(apmixed_base);
+
 	apmixed_phys_base = of_get_phys_base(apmixedsys);
 
 	of_node_put(apmixedsys);
-- 
2.34.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH v2 2/2] thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
  2023-04-03 16:46     ` Kang Chen
@ 2023-04-03 16:46       ` Kang Chen
  -1 siblings, 0 replies; 30+ messages in thread
From: Kang Chen @ 2023-04-03 16:46 UTC (permalink / raw)
  To: daniel.lezcano
  Cc: amitk, angelogioacchino.delregno, bchihi, daniel, dzm91, error27,
	henry.yen, hust-os-kernel-patches, linux-arm-kernel,
	linux-kernel, linux-mediatek, linux-pm, matthias.bgg, rafael,
	rdunlap, rui.zhang, void0red, void0red

use devm_clk_get_enabled to do automatic resource management.

Signed-off-by: Kang Chen <void0red@hust.edu.cn>
---
I'm not quite sure if this function should return 0 when
devm_thermal_add_hwmon_sysfs occurs error. So I keep it.

 drivers/thermal/mediatek/auxadc_thermal.c | 25 ++++++++---------------
 1 file changed, 8 insertions(+), 17 deletions(-)

diff --git a/drivers/thermal/mediatek/auxadc_thermal.c b/drivers/thermal/mediatek/auxadc_thermal.c
index df5e2e354408..5baec2c08ebc 100644
--- a/drivers/thermal/mediatek/auxadc_thermal.c
+++ b/drivers/thermal/mediatek/auxadc_thermal.c
@@ -1178,16 +1178,16 @@ static int mtk_thermal_probe(struct platform_device *pdev)
 	if (ret)
 		return ret;
 
-	ret = clk_prepare_enable(mt->clk_auxadc);
-	if (ret) {
+	ret = devm_clk_get_enabled(&pdev->dev, mt->clk_auxadc);
+	if (IS_ERR(ret)) {
 		dev_err(&pdev->dev, "Can't enable auxadc clk: %d\n", ret);
-		return ret;
+		return PTR_ERR(ret);
 	}
 
-	ret = clk_prepare_enable(mt->clk_peri_therm);
-	if (ret) {
+	ret = devm_clk_get_enabled(&pdev->dev, mt->clk_peri_therm);
+	if (IS_ERR(ret)) {
 		dev_err(&pdev->dev, "Can't enable peri clk: %d\n", ret);
-		goto err_disable_clk_auxadc;
+		return PTR_ERR(ret);
 	}
 
 	if (mt->conf->version != MTK_THERMAL_V1) {
@@ -1211,23 +1211,14 @@ static int mtk_thermal_probe(struct platform_device *pdev)
 
 	tzdev = devm_thermal_of_zone_register(&pdev->dev, 0, mt,
 					      &mtk_thermal_ops);
-	if (IS_ERR(tzdev)) {
-		ret = PTR_ERR(tzdev);
-		goto err_disable_clk_peri_therm;
-	}
+	if (IS_ERR(tzdev))
+		return PTR_ERR(tzdev);
 
 	ret = devm_thermal_add_hwmon_sysfs(tzdev);
 	if (ret)
 		dev_warn(&pdev->dev, "error in thermal_add_hwmon_sysfs");
 
 	return 0;
-
-err_disable_clk_peri_therm:
-	clk_disable_unprepare(mt->clk_peri_therm);
-err_disable_clk_auxadc:
-	clk_disable_unprepare(mt->clk_auxadc);
-
-	return ret;
 }
 
 static int mtk_thermal_remove(struct platform_device *pdev)
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH v2 2/2] thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
@ 2023-04-03 16:46       ` Kang Chen
  0 siblings, 0 replies; 30+ messages in thread
From: Kang Chen @ 2023-04-03 16:46 UTC (permalink / raw)
  To: daniel.lezcano
  Cc: amitk, angelogioacchino.delregno, bchihi, daniel, dzm91, error27,
	henry.yen, hust-os-kernel-patches, linux-arm-kernel,
	linux-kernel, linux-mediatek, linux-pm, matthias.bgg, rafael,
	rdunlap, rui.zhang, void0red, void0red

use devm_clk_get_enabled to do automatic resource management.

Signed-off-by: Kang Chen <void0red@hust.edu.cn>
---
I'm not quite sure if this function should return 0 when
devm_thermal_add_hwmon_sysfs occurs error. So I keep it.

 drivers/thermal/mediatek/auxadc_thermal.c | 25 ++++++++---------------
 1 file changed, 8 insertions(+), 17 deletions(-)

diff --git a/drivers/thermal/mediatek/auxadc_thermal.c b/drivers/thermal/mediatek/auxadc_thermal.c
index df5e2e354408..5baec2c08ebc 100644
--- a/drivers/thermal/mediatek/auxadc_thermal.c
+++ b/drivers/thermal/mediatek/auxadc_thermal.c
@@ -1178,16 +1178,16 @@ static int mtk_thermal_probe(struct platform_device *pdev)
 	if (ret)
 		return ret;
 
-	ret = clk_prepare_enable(mt->clk_auxadc);
-	if (ret) {
+	ret = devm_clk_get_enabled(&pdev->dev, mt->clk_auxadc);
+	if (IS_ERR(ret)) {
 		dev_err(&pdev->dev, "Can't enable auxadc clk: %d\n", ret);
-		return ret;
+		return PTR_ERR(ret);
 	}
 
-	ret = clk_prepare_enable(mt->clk_peri_therm);
-	if (ret) {
+	ret = devm_clk_get_enabled(&pdev->dev, mt->clk_peri_therm);
+	if (IS_ERR(ret)) {
 		dev_err(&pdev->dev, "Can't enable peri clk: %d\n", ret);
-		goto err_disable_clk_auxadc;
+		return PTR_ERR(ret);
 	}
 
 	if (mt->conf->version != MTK_THERMAL_V1) {
@@ -1211,23 +1211,14 @@ static int mtk_thermal_probe(struct platform_device *pdev)
 
 	tzdev = devm_thermal_of_zone_register(&pdev->dev, 0, mt,
 					      &mtk_thermal_ops);
-	if (IS_ERR(tzdev)) {
-		ret = PTR_ERR(tzdev);
-		goto err_disable_clk_peri_therm;
-	}
+	if (IS_ERR(tzdev))
+		return PTR_ERR(tzdev);
 
 	ret = devm_thermal_add_hwmon_sysfs(tzdev);
 	if (ret)
 		dev_warn(&pdev->dev, "error in thermal_add_hwmon_sysfs");
 
 	return 0;
-
-err_disable_clk_peri_therm:
-	clk_disable_unprepare(mt->clk_peri_therm);
-err_disable_clk_auxadc:
-	clk_disable_unprepare(mt->clk_auxadc);
-
-	return ret;
 }
 
 static int mtk_thermal_remove(struct platform_device *pdev)
-- 
2.34.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* Re: [PATCH v2 2/2] thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
  2023-04-03 16:46       ` Kang Chen
@ 2023-04-10  3:46         ` 陈康
  -1 siblings, 0 replies; 30+ messages in thread
From: 陈康 @ 2023-04-10  3:46 UTC (permalink / raw)
  To: daniel.lezcano
  Cc: amitk, angelogioacchino.delregno, bchihi, daniel, dzm91, error27,
	henry.yen, hust-os-kernel-patches, linux-arm-kernel,
	linux-kernel, linux-mediatek, linux-pm, matthias.bgg, rafael,
	rdunlap, rui.zhang, void0red




> -----原始邮件-----
> 发件人: "Kang Chen" <void0red@hust.edu.cn>
> 发送时间: 2023-04-04 00:46:10 (星期二)
> 收件人: daniel.lezcano@linaro.org
> 抄送: amitk@kernel.org, angelogioacchino.delregno@collabora.com, bchihi@baylibre.com, daniel@makrotopia.org, dzm91@hust.edu.cn, error27@gmail.com, henry.yen@mediatek.com, hust-os-kernel-patches@googlegroups.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-pm@vger.kernel.org, matthias.bgg@gmail.com, rafael@kernel.org, rdunlap@infradead.org, rui.zhang@intel.com, void0red@gmail.com, void0red@hust.edu.cn
> 主题: [PATCH v2 2/2] thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
> 
> use devm_clk_get_enabled to do automatic resource management.
> 
> Signed-off-by: Kang Chen <void0red@hust.edu.cn>
> ---
> I'm not quite sure if this function should return 0 when
> devm_thermal_add_hwmon_sysfs occurs error. So I keep it.
> 
>  drivers/thermal/mediatek/auxadc_thermal.c | 25 ++++++++---------------
>  1 file changed, 8 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/thermal/mediatek/auxadc_thermal.c b/drivers/thermal/mediatek/auxadc_thermal.c
> index df5e2e354408..5baec2c08ebc 100644
> --- a/drivers/thermal/mediatek/auxadc_thermal.c
> +++ b/drivers/thermal/mediatek/auxadc_thermal.c
> @@ -1178,16 +1178,16 @@ static int mtk_thermal_probe(struct platform_device *pdev)
>  	if (ret)
>  		return ret;
>  
> -	ret = clk_prepare_enable(mt->clk_auxadc);
> -	if (ret) {
> +	ret = devm_clk_get_enabled(&pdev->dev, mt->clk_auxadc);
> +	if (IS_ERR(ret)) {
>  		dev_err(&pdev->dev, "Can't enable auxadc clk: %d\n", ret);
> -		return ret;
> +		return PTR_ERR(ret);
>  	}
>  
> -	ret = clk_prepare_enable(mt->clk_peri_therm);
> -	if (ret) {
> +	ret = devm_clk_get_enabled(&pdev->dev, mt->clk_peri_therm);
> +	if (IS_ERR(ret)) {
>  		dev_err(&pdev->dev, "Can't enable peri clk: %d\n", ret);
> -		goto err_disable_clk_auxadc;
> +		return PTR_ERR(ret);
>  	}
>  
>  	if (mt->conf->version != MTK_THERMAL_V1) {
> @@ -1211,23 +1211,14 @@ static int mtk_thermal_probe(struct platform_device *pdev)
>  
>  	tzdev = devm_thermal_of_zone_register(&pdev->dev, 0, mt,
>  					      &mtk_thermal_ops);
> -	if (IS_ERR(tzdev)) {
> -		ret = PTR_ERR(tzdev);
> -		goto err_disable_clk_peri_therm;
> -	}
> +	if (IS_ERR(tzdev))
> +		return PTR_ERR(tzdev);
>  
>  	ret = devm_thermal_add_hwmon_sysfs(tzdev);
>  	if (ret)
>  		dev_warn(&pdev->dev, "error in thermal_add_hwmon_sysfs");
>  
>  	return 0;
> -
> -err_disable_clk_peri_therm:
> -	clk_disable_unprepare(mt->clk_peri_therm);
> -err_disable_clk_auxadc:
> -	clk_disable_unprepare(mt->clk_auxadc);
> -
> -	return ret;
>  }
>  
>  static int mtk_thermal_remove(struct platform_device *pdev)
> -- 
> 2.34.1

ping?

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH v2 2/2] thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
@ 2023-04-10  3:46         ` 陈康
  0 siblings, 0 replies; 30+ messages in thread
From: 陈康 @ 2023-04-10  3:46 UTC (permalink / raw)
  To: daniel.lezcano
  Cc: amitk, angelogioacchino.delregno, bchihi, daniel, dzm91, error27,
	henry.yen, hust-os-kernel-patches, linux-arm-kernel,
	linux-kernel, linux-mediatek, linux-pm, matthias.bgg, rafael,
	rdunlap, rui.zhang, void0red




> -----原始邮件-----
> 发件人: "Kang Chen" <void0red@hust.edu.cn>
> 发送时间: 2023-04-04 00:46:10 (星期二)
> 收件人: daniel.lezcano@linaro.org
> 抄送: amitk@kernel.org, angelogioacchino.delregno@collabora.com, bchihi@baylibre.com, daniel@makrotopia.org, dzm91@hust.edu.cn, error27@gmail.com, henry.yen@mediatek.com, hust-os-kernel-patches@googlegroups.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-pm@vger.kernel.org, matthias.bgg@gmail.com, rafael@kernel.org, rdunlap@infradead.org, rui.zhang@intel.com, void0red@gmail.com, void0red@hust.edu.cn
> 主题: [PATCH v2 2/2] thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
> 
> use devm_clk_get_enabled to do automatic resource management.
> 
> Signed-off-by: Kang Chen <void0red@hust.edu.cn>
> ---
> I'm not quite sure if this function should return 0 when
> devm_thermal_add_hwmon_sysfs occurs error. So I keep it.
> 
>  drivers/thermal/mediatek/auxadc_thermal.c | 25 ++++++++---------------
>  1 file changed, 8 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/thermal/mediatek/auxadc_thermal.c b/drivers/thermal/mediatek/auxadc_thermal.c
> index df5e2e354408..5baec2c08ebc 100644
> --- a/drivers/thermal/mediatek/auxadc_thermal.c
> +++ b/drivers/thermal/mediatek/auxadc_thermal.c
> @@ -1178,16 +1178,16 @@ static int mtk_thermal_probe(struct platform_device *pdev)
>  	if (ret)
>  		return ret;
>  
> -	ret = clk_prepare_enable(mt->clk_auxadc);
> -	if (ret) {
> +	ret = devm_clk_get_enabled(&pdev->dev, mt->clk_auxadc);
> +	if (IS_ERR(ret)) {
>  		dev_err(&pdev->dev, "Can't enable auxadc clk: %d\n", ret);
> -		return ret;
> +		return PTR_ERR(ret);
>  	}
>  
> -	ret = clk_prepare_enable(mt->clk_peri_therm);
> -	if (ret) {
> +	ret = devm_clk_get_enabled(&pdev->dev, mt->clk_peri_therm);
> +	if (IS_ERR(ret)) {
>  		dev_err(&pdev->dev, "Can't enable peri clk: %d\n", ret);
> -		goto err_disable_clk_auxadc;
> +		return PTR_ERR(ret);
>  	}
>  
>  	if (mt->conf->version != MTK_THERMAL_V1) {
> @@ -1211,23 +1211,14 @@ static int mtk_thermal_probe(struct platform_device *pdev)
>  
>  	tzdev = devm_thermal_of_zone_register(&pdev->dev, 0, mt,
>  					      &mtk_thermal_ops);
> -	if (IS_ERR(tzdev)) {
> -		ret = PTR_ERR(tzdev);
> -		goto err_disable_clk_peri_therm;
> -	}
> +	if (IS_ERR(tzdev))
> +		return PTR_ERR(tzdev);
>  
>  	ret = devm_thermal_add_hwmon_sysfs(tzdev);
>  	if (ret)
>  		dev_warn(&pdev->dev, "error in thermal_add_hwmon_sysfs");
>  
>  	return 0;
> -
> -err_disable_clk_peri_therm:
> -	clk_disable_unprepare(mt->clk_peri_therm);
> -err_disable_clk_auxadc:
> -	clk_disable_unprepare(mt->clk_auxadc);
> -
> -	return ret;
>  }
>  
>  static int mtk_thermal_remove(struct platform_device *pdev)
> -- 
> 2.34.1

ping?
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH v2 2/2] thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
  2023-04-10  3:46         ` 陈康
@ 2023-04-10 19:42           ` Daniel Lezcano
  -1 siblings, 0 replies; 30+ messages in thread
From: Daniel Lezcano @ 2023-04-10 19:42 UTC (permalink / raw)
  To: 陈康
  Cc: amitk, angelogioacchino.delregno, bchihi, daniel, dzm91, error27,
	henry.yen, hust-os-kernel-patches, linux-arm-kernel,
	linux-kernel, linux-mediatek, linux-pm, matthias.bgg, rafael,
	rdunlap, rui.zhang, void0red

On 10/04/2023 05:46, 陈康 wrote:

[ ... ]

>>   static int mtk_thermal_remove(struct platform_device *pdev)
>> -- 
>> 2.34.1
> 
> ping?

Did you check the 'mtk_thermal_remove' function ?



-- 
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog


^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH v2 2/2] thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
@ 2023-04-10 19:42           ` Daniel Lezcano
  0 siblings, 0 replies; 30+ messages in thread
From: Daniel Lezcano @ 2023-04-10 19:42 UTC (permalink / raw)
  To: 陈康
  Cc: amitk, angelogioacchino.delregno, bchihi, daniel, dzm91, error27,
	henry.yen, hust-os-kernel-patches, linux-arm-kernel,
	linux-kernel, linux-mediatek, linux-pm, matthias.bgg, rafael,
	rdunlap, rui.zhang, void0red

On 10/04/2023 05:46, 陈康 wrote:

[ ... ]

>>   static int mtk_thermal_remove(struct platform_device *pdev)
>> -- 
>> 2.34.1
> 
> ping?

Did you check the 'mtk_thermal_remove' function ?



-- 
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [PATCH v3 1/2] thermal: mediatek: use devm_of_iomap to avoid resource leak in mtk_thermal_probe
  2023-04-10 19:42           ` Daniel Lezcano
@ 2023-04-11  6:35             ` Kang Chen
  -1 siblings, 0 replies; 30+ messages in thread
From: Kang Chen @ 2023-04-11  6:35 UTC (permalink / raw)
  To: daniel.lezcano
  Cc: amitk, angelogioacchino.delregno, bchihi, daniel, dzm91, error27,
	henry.yen, hust-os-kernel-patches, linux-arm-kernel,
	linux-kernel, linux-mediatek, linux-pm, matthias.bgg, rafael,
	rdunlap, rui.zhang, void0red, void0red

Smatch reports:
1. mtk_thermal_probe() warn: 'apmixed_base' from of_iomap() not released.
2. mtk_thermal_probe() warn: 'auxadc_base' from of_iomap() not released.

The original code forgets to release iomap resource when handling errors,
fix it by switch to devm_of_iomap.

Fixes: 89945047b166 ("thermal: mediatek: Add tsensor support for V2 thermal system")
Signed-off-by: Kang Chen <void0red@hust.edu.cn>
Reviewed-by: Dongliang Mu <dzm91@hust.edu.cn>
---
v3 -> v2: fix typo and put of_node in error handling
v2 -> v1: use devm_of_iomap instead.

 drivers/thermal/mediatek/auxadc_thermal.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/drivers/thermal/mediatek/auxadc_thermal.c b/drivers/thermal/mediatek/auxadc_thermal.c
index ab730f9552d0..3372f7c29626 100644
--- a/drivers/thermal/mediatek/auxadc_thermal.c
+++ b/drivers/thermal/mediatek/auxadc_thermal.c
@@ -1142,7 +1142,12 @@ static int mtk_thermal_probe(struct platform_device *pdev)
 		return -ENODEV;
 	}
 
-	auxadc_base = of_iomap(auxadc, 0);
+	auxadc_base = devm_of_iomap(&pdev->dev, auxadc, 0, NULL);
+	if (IS_ERR(auxadc_base)) {
+		of_node_put(auxadc);
+		return PTR_ERR(auxadc_base);
+	}
+
 	auxadc_phys_base = of_get_phys_base(auxadc);
 
 	of_node_put(auxadc);
@@ -1158,7 +1163,12 @@ static int mtk_thermal_probe(struct platform_device *pdev)
 		return -ENODEV;
 	}
 
-	apmixed_base = of_iomap(apmixedsys, 0);
+	apmixed_base = devm_of_iomap(&pdev->dev, apmixedsys, 0, NULL);
+	if (IS_ERR(apmixed_base)) {
+		of_node_put(apmixedsys);
+		return PTR_ERR(apmixed_base);
+	}
+
 	apmixed_phys_base = of_get_phys_base(apmixedsys);
 
 	of_node_put(apmixedsys);
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH v3 1/2] thermal: mediatek: use devm_of_iomap to avoid resource leak in mtk_thermal_probe
@ 2023-04-11  6:35             ` Kang Chen
  0 siblings, 0 replies; 30+ messages in thread
From: Kang Chen @ 2023-04-11  6:35 UTC (permalink / raw)
  To: daniel.lezcano
  Cc: amitk, angelogioacchino.delregno, bchihi, daniel, dzm91, error27,
	henry.yen, hust-os-kernel-patches, linux-arm-kernel,
	linux-kernel, linux-mediatek, linux-pm, matthias.bgg, rafael,
	rdunlap, rui.zhang, void0red, void0red

Smatch reports:
1. mtk_thermal_probe() warn: 'apmixed_base' from of_iomap() not released.
2. mtk_thermal_probe() warn: 'auxadc_base' from of_iomap() not released.

The original code forgets to release iomap resource when handling errors,
fix it by switch to devm_of_iomap.

Fixes: 89945047b166 ("thermal: mediatek: Add tsensor support for V2 thermal system")
Signed-off-by: Kang Chen <void0red@hust.edu.cn>
Reviewed-by: Dongliang Mu <dzm91@hust.edu.cn>
---
v3 -> v2: fix typo and put of_node in error handling
v2 -> v1: use devm_of_iomap instead.

 drivers/thermal/mediatek/auxadc_thermal.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/drivers/thermal/mediatek/auxadc_thermal.c b/drivers/thermal/mediatek/auxadc_thermal.c
index ab730f9552d0..3372f7c29626 100644
--- a/drivers/thermal/mediatek/auxadc_thermal.c
+++ b/drivers/thermal/mediatek/auxadc_thermal.c
@@ -1142,7 +1142,12 @@ static int mtk_thermal_probe(struct platform_device *pdev)
 		return -ENODEV;
 	}
 
-	auxadc_base = of_iomap(auxadc, 0);
+	auxadc_base = devm_of_iomap(&pdev->dev, auxadc, 0, NULL);
+	if (IS_ERR(auxadc_base)) {
+		of_node_put(auxadc);
+		return PTR_ERR(auxadc_base);
+	}
+
 	auxadc_phys_base = of_get_phys_base(auxadc);
 
 	of_node_put(auxadc);
@@ -1158,7 +1163,12 @@ static int mtk_thermal_probe(struct platform_device *pdev)
 		return -ENODEV;
 	}
 
-	apmixed_base = of_iomap(apmixedsys, 0);
+	apmixed_base = devm_of_iomap(&pdev->dev, apmixedsys, 0, NULL);
+	if (IS_ERR(apmixed_base)) {
+		of_node_put(apmixedsys);
+		return PTR_ERR(apmixed_base);
+	}
+
 	apmixed_phys_base = of_get_phys_base(apmixedsys);
 
 	of_node_put(apmixedsys);
-- 
2.34.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH v3 2/2] thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
  2023-04-11  6:35             ` Kang Chen
@ 2023-04-11  6:35               ` Kang Chen
  -1 siblings, 0 replies; 30+ messages in thread
From: Kang Chen @ 2023-04-11  6:35 UTC (permalink / raw)
  To: daniel.lezcano
  Cc: amitk, angelogioacchino.delregno, bchihi, daniel, dzm91, error27,
	henry.yen, hust-os-kernel-patches, linux-arm-kernel,
	linux-kernel, linux-mediatek, linux-pm, matthias.bgg, rafael,
	rdunlap, rui.zhang, void0red, void0red

use devm_clk_get_enabled to do automatic resource management.
Meanwhile, remove error handling labels in the probe function and
the whole remove function.

Signed-off-by: Kang Chen <void0red@hust.edu.cn>
Reviewed-by: Dongliang Mu <dzm91@hust.edu.cn>
---
v3 -> v2: remove some useles func calls.
v2 -> v1: init

Notice the devm_clk_get_enabled do the clk_get and clk_prepare_enable
at the same time.
I'm not sure if this has any side effects in initialization.

 drivers/thermal/mediatek/auxadc_thermal.c | 48 +++++------------------
 1 file changed, 10 insertions(+), 38 deletions(-)

diff --git a/drivers/thermal/mediatek/auxadc_thermal.c b/drivers/thermal/mediatek/auxadc_thermal.c
index 3372f7c29626..995837ce3ea2 100644
--- a/drivers/thermal/mediatek/auxadc_thermal.c
+++ b/drivers/thermal/mediatek/auxadc_thermal.c
@@ -1116,14 +1116,6 @@ static int mtk_thermal_probe(struct platform_device *pdev)
 
 	mt->conf = of_device_get_match_data(&pdev->dev);
 
-	mt->clk_peri_therm = devm_clk_get(&pdev->dev, "therm");
-	if (IS_ERR(mt->clk_peri_therm))
-		return PTR_ERR(mt->clk_peri_therm);
-
-	mt->clk_auxadc = devm_clk_get(&pdev->dev, "auxadc");
-	if (IS_ERR(mt->clk_auxadc))
-		return PTR_ERR(mt->clk_auxadc);
-
 	mt->thermal_base = devm_platform_get_and_ioremap_resource(pdev, 0, NULL);
 	if (IS_ERR(mt->thermal_base))
 		return PTR_ERR(mt->thermal_base);
@@ -1182,16 +1174,16 @@ static int mtk_thermal_probe(struct platform_device *pdev)
 	if (ret)
 		return ret;
 
-	ret = clk_prepare_enable(mt->clk_auxadc);
-	if (ret) {
-		dev_err(&pdev->dev, "Can't enable auxadc clk: %d\n", ret);
-		return ret;
+	mt->clk_auxadc = devm_clk_get_enabled(&pdev->dev, "auxadc");
+	if (IS_ERR(mt->clk_auxadc)) {
+		dev_err(&pdev->dev, "Can't enable auxadc clk: %d\n", mt->clk_auxadc);
+		return PTR_ERR(mt->clk_auxadc);
 	}
 
-	ret = clk_prepare_enable(mt->clk_peri_therm);
-	if (ret) {
-		dev_err(&pdev->dev, "Can't enable peri clk: %d\n", ret);
-		goto err_disable_clk_auxadc;
+	mt->clk_peri_therm = devm_clk_get_enabled(&pdev->dev, "therm");
+	if (IS_ERR(mt->clk_peri_therm)) {
+		dev_err(&pdev->dev, "Can't enable peri clk: %d\n", mt->clk_peri_therm);
+		return PTR_ERR(mt->clk_peri_therm);
 	}
 
 	if (mt->conf->version != MTK_THERMAL_V1) {
@@ -1215,38 +1207,18 @@ static int mtk_thermal_probe(struct platform_device *pdev)
 
 	tzdev = devm_thermal_of_zone_register(&pdev->dev, 0, mt,
 					      &mtk_thermal_ops);
-	if (IS_ERR(tzdev)) {
-		ret = PTR_ERR(tzdev);
-		goto err_disable_clk_peri_therm;
-	}
+	if (IS_ERR(tzdev))
+		return PTR_ERR(tzdev);
 
 	ret = devm_thermal_add_hwmon_sysfs(tzdev);
 	if (ret)
 		dev_warn(&pdev->dev, "error in thermal_add_hwmon_sysfs");
 
 	return 0;
-
-err_disable_clk_peri_therm:
-	clk_disable_unprepare(mt->clk_peri_therm);
-err_disable_clk_auxadc:
-	clk_disable_unprepare(mt->clk_auxadc);
-
-	return ret;
-}
-
-static int mtk_thermal_remove(struct platform_device *pdev)
-{
-	struct mtk_thermal *mt = platform_get_drvdata(pdev);
-
-	clk_disable_unprepare(mt->clk_peri_therm);
-	clk_disable_unprepare(mt->clk_auxadc);
-
-	return 0;
 }
 
 static struct platform_driver mtk_thermal_driver = {
 	.probe = mtk_thermal_probe,
-	.remove = mtk_thermal_remove,
 	.driver = {
 		.name = "mtk-thermal",
 		.of_match_table = mtk_thermal_of_match,
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH v3 2/2] thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
@ 2023-04-11  6:35               ` Kang Chen
  0 siblings, 0 replies; 30+ messages in thread
From: Kang Chen @ 2023-04-11  6:35 UTC (permalink / raw)
  To: daniel.lezcano
  Cc: amitk, angelogioacchino.delregno, bchihi, daniel, dzm91, error27,
	henry.yen, hust-os-kernel-patches, linux-arm-kernel,
	linux-kernel, linux-mediatek, linux-pm, matthias.bgg, rafael,
	rdunlap, rui.zhang, void0red, void0red

use devm_clk_get_enabled to do automatic resource management.
Meanwhile, remove error handling labels in the probe function and
the whole remove function.

Signed-off-by: Kang Chen <void0red@hust.edu.cn>
Reviewed-by: Dongliang Mu <dzm91@hust.edu.cn>
---
v3 -> v2: remove some useles func calls.
v2 -> v1: init

Notice the devm_clk_get_enabled do the clk_get and clk_prepare_enable
at the same time.
I'm not sure if this has any side effects in initialization.

 drivers/thermal/mediatek/auxadc_thermal.c | 48 +++++------------------
 1 file changed, 10 insertions(+), 38 deletions(-)

diff --git a/drivers/thermal/mediatek/auxadc_thermal.c b/drivers/thermal/mediatek/auxadc_thermal.c
index 3372f7c29626..995837ce3ea2 100644
--- a/drivers/thermal/mediatek/auxadc_thermal.c
+++ b/drivers/thermal/mediatek/auxadc_thermal.c
@@ -1116,14 +1116,6 @@ static int mtk_thermal_probe(struct platform_device *pdev)
 
 	mt->conf = of_device_get_match_data(&pdev->dev);
 
-	mt->clk_peri_therm = devm_clk_get(&pdev->dev, "therm");
-	if (IS_ERR(mt->clk_peri_therm))
-		return PTR_ERR(mt->clk_peri_therm);
-
-	mt->clk_auxadc = devm_clk_get(&pdev->dev, "auxadc");
-	if (IS_ERR(mt->clk_auxadc))
-		return PTR_ERR(mt->clk_auxadc);
-
 	mt->thermal_base = devm_platform_get_and_ioremap_resource(pdev, 0, NULL);
 	if (IS_ERR(mt->thermal_base))
 		return PTR_ERR(mt->thermal_base);
@@ -1182,16 +1174,16 @@ static int mtk_thermal_probe(struct platform_device *pdev)
 	if (ret)
 		return ret;
 
-	ret = clk_prepare_enable(mt->clk_auxadc);
-	if (ret) {
-		dev_err(&pdev->dev, "Can't enable auxadc clk: %d\n", ret);
-		return ret;
+	mt->clk_auxadc = devm_clk_get_enabled(&pdev->dev, "auxadc");
+	if (IS_ERR(mt->clk_auxadc)) {
+		dev_err(&pdev->dev, "Can't enable auxadc clk: %d\n", mt->clk_auxadc);
+		return PTR_ERR(mt->clk_auxadc);
 	}
 
-	ret = clk_prepare_enable(mt->clk_peri_therm);
-	if (ret) {
-		dev_err(&pdev->dev, "Can't enable peri clk: %d\n", ret);
-		goto err_disable_clk_auxadc;
+	mt->clk_peri_therm = devm_clk_get_enabled(&pdev->dev, "therm");
+	if (IS_ERR(mt->clk_peri_therm)) {
+		dev_err(&pdev->dev, "Can't enable peri clk: %d\n", mt->clk_peri_therm);
+		return PTR_ERR(mt->clk_peri_therm);
 	}
 
 	if (mt->conf->version != MTK_THERMAL_V1) {
@@ -1215,38 +1207,18 @@ static int mtk_thermal_probe(struct platform_device *pdev)
 
 	tzdev = devm_thermal_of_zone_register(&pdev->dev, 0, mt,
 					      &mtk_thermal_ops);
-	if (IS_ERR(tzdev)) {
-		ret = PTR_ERR(tzdev);
-		goto err_disable_clk_peri_therm;
-	}
+	if (IS_ERR(tzdev))
+		return PTR_ERR(tzdev);
 
 	ret = devm_thermal_add_hwmon_sysfs(tzdev);
 	if (ret)
 		dev_warn(&pdev->dev, "error in thermal_add_hwmon_sysfs");
 
 	return 0;
-
-err_disable_clk_peri_therm:
-	clk_disable_unprepare(mt->clk_peri_therm);
-err_disable_clk_auxadc:
-	clk_disable_unprepare(mt->clk_auxadc);
-
-	return ret;
-}
-
-static int mtk_thermal_remove(struct platform_device *pdev)
-{
-	struct mtk_thermal *mt = platform_get_drvdata(pdev);
-
-	clk_disable_unprepare(mt->clk_peri_therm);
-	clk_disable_unprepare(mt->clk_auxadc);
-
-	return 0;
 }
 
 static struct platform_driver mtk_thermal_driver = {
 	.probe = mtk_thermal_probe,
-	.remove = mtk_thermal_remove,
 	.driver = {
 		.name = "mtk-thermal",
 		.of_match_table = mtk_thermal_of_match,
-- 
2.34.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* Re: [PATCH v3 2/2] thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
  2023-04-11  6:35               ` Kang Chen
@ 2023-04-15  7:14                 ` void0red
  -1 siblings, 0 replies; 30+ messages in thread
From: void0red @ 2023-04-15  7:14 UTC (permalink / raw)
  To: daniel.lezcano
  Cc: amitk, angelogioacchino.delregno, bchihi, daniel, dzm91, error27,
	henry.yen, hust-os-kernel-patches, linux-arm-kernel,
	linux-kernel, linux-mediatek, linux-pm, matthias.bgg, rafael,
	rdunlap, rui.zhang, void0red




> -----Original Messages-----
> From: "Kang Chen" <void0red@hust.edu.cn>
> Sent Time: 2023-04-11 14:35:31 (Tuesday)
> To: daniel.lezcano@linaro.org
> Cc: amitk@kernel.org, angelogioacchino.delregno@collabora.com, bchihi@baylibre.com, daniel@makrotopia.org, dzm91@hust.edu.cn, error27@gmail.com, henry.yen@mediatek.com, hust-os-kernel-patches@googlegroups.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-pm@vger.kernel.org, matthias.bgg@gmail.com, rafael@kernel.org, rdunlap@infradead.org, rui.zhang@intel.com, void0red@gmail.com, void0red@hust.edu.cn
> Subject: [PATCH v3 2/2] thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
> 
> use devm_clk_get_enabled to do automatic resource management.
> Meanwhile, remove error handling labels in the probe function and
> the whole remove function.
> 
> Signed-off-by: Kang Chen <void0red@hust.edu.cn>
> Reviewed-by: Dongliang Mu <dzm91@hust.edu.cn>
> ---
> v3 -> v2: remove some useles func calls.
> v2 -> v1: init
> 
> Notice the devm_clk_get_enabled do the clk_get and clk_prepare_enable
> at the same time.
> I'm not sure if this has any side effects in initialization.
> 
>  drivers/thermal/mediatek/auxadc_thermal.c | 48 +++++------------------
>  1 file changed, 10 insertions(+), 38 deletions(-)
> 
> diff --git a/drivers/thermal/mediatek/auxadc_thermal.c b/drivers/thermal/mediatek/auxadc_thermal.c
> index 3372f7c29626..995837ce3ea2 100644
> --- a/drivers/thermal/mediatek/auxadc_thermal.c
> +++ b/drivers/thermal/mediatek/auxadc_thermal.c
> @@ -1116,14 +1116,6 @@ static int mtk_thermal_probe(struct platform_device *pdev)
>  
>  	mt->conf = of_device_get_match_data(&pdev->dev);
>  
> -	mt->clk_peri_therm = devm_clk_get(&pdev->dev, "therm");
> -	if (IS_ERR(mt->clk_peri_therm))
> -		return PTR_ERR(mt->clk_peri_therm);
> -
> -	mt->clk_auxadc = devm_clk_get(&pdev->dev, "auxadc");
> -	if (IS_ERR(mt->clk_auxadc))
> -		return PTR_ERR(mt->clk_auxadc);
> -
>  	mt->thermal_base = devm_platform_get_and_ioremap_resource(pdev, 0, NULL);
>  	if (IS_ERR(mt->thermal_base))
>  		return PTR_ERR(mt->thermal_base);
> @@ -1182,16 +1174,16 @@ static int mtk_thermal_probe(struct platform_device *pdev)
>  	if (ret)
>  		return ret;
>  
> -	ret = clk_prepare_enable(mt->clk_auxadc);
> -	if (ret) {
> -		dev_err(&pdev->dev, "Can't enable auxadc clk: %d\n", ret);
> -		return ret;
> +	mt->clk_auxadc = devm_clk_get_enabled(&pdev->dev, "auxadc");
> +	if (IS_ERR(mt->clk_auxadc)) {
> +		dev_err(&pdev->dev, "Can't enable auxadc clk: %d\n", mt->clk_auxadc);
> +		return PTR_ERR(mt->clk_auxadc);
>  	}
>  
> -	ret = clk_prepare_enable(mt->clk_peri_therm);
> -	if (ret) {
> -		dev_err(&pdev->dev, "Can't enable peri clk: %d\n", ret);
> -		goto err_disable_clk_auxadc;
> +	mt->clk_peri_therm = devm_clk_get_enabled(&pdev->dev, "therm");
> +	if (IS_ERR(mt->clk_peri_therm)) {
> +		dev_err(&pdev->dev, "Can't enable peri clk: %d\n", mt->clk_peri_therm);
> +		return PTR_ERR(mt->clk_peri_therm);
>  	}
>  
>  	if (mt->conf->version != MTK_THERMAL_V1) {
> @@ -1215,38 +1207,18 @@ static int mtk_thermal_probe(struct platform_device *pdev)
>  
>  	tzdev = devm_thermal_of_zone_register(&pdev->dev, 0, mt,
>  					      &mtk_thermal_ops);
> -	if (IS_ERR(tzdev)) {
> -		ret = PTR_ERR(tzdev);
> -		goto err_disable_clk_peri_therm;
> -	}
> +	if (IS_ERR(tzdev))
> +		return PTR_ERR(tzdev);
>  
>  	ret = devm_thermal_add_hwmon_sysfs(tzdev);
>  	if (ret)
>  		dev_warn(&pdev->dev, "error in thermal_add_hwmon_sysfs");
>  
>  	return 0;
> -
> -err_disable_clk_peri_therm:
> -	clk_disable_unprepare(mt->clk_peri_therm);
> -err_disable_clk_auxadc:
> -	clk_disable_unprepare(mt->clk_auxadc);
> -
> -	return ret;
> -}
> -
> -static int mtk_thermal_remove(struct platform_device *pdev)
> -{
> -	struct mtk_thermal *mt = platform_get_drvdata(pdev);
> -
> -	clk_disable_unprepare(mt->clk_peri_therm);
> -	clk_disable_unprepare(mt->clk_auxadc);
> -
> -	return 0;
>  }
>  
>  static struct platform_driver mtk_thermal_driver = {
>  	.probe = mtk_thermal_probe,
> -	.remove = mtk_thermal_remove,
>  	.driver = {
>  		.name = "mtk-thermal",
>  		.of_match_table = mtk_thermal_of_match,
> -- 
> 2.34.1

ping?

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH v3 2/2] thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
@ 2023-04-15  7:14                 ` void0red
  0 siblings, 0 replies; 30+ messages in thread
From: void0red @ 2023-04-15  7:14 UTC (permalink / raw)
  To: daniel.lezcano
  Cc: amitk, angelogioacchino.delregno, bchihi, daniel, dzm91, error27,
	henry.yen, hust-os-kernel-patches, linux-arm-kernel,
	linux-kernel, linux-mediatek, linux-pm, matthias.bgg, rafael,
	rdunlap, rui.zhang, void0red




> -----Original Messages-----
> From: "Kang Chen" <void0red@hust.edu.cn>
> Sent Time: 2023-04-11 14:35:31 (Tuesday)
> To: daniel.lezcano@linaro.org
> Cc: amitk@kernel.org, angelogioacchino.delregno@collabora.com, bchihi@baylibre.com, daniel@makrotopia.org, dzm91@hust.edu.cn, error27@gmail.com, henry.yen@mediatek.com, hust-os-kernel-patches@googlegroups.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-pm@vger.kernel.org, matthias.bgg@gmail.com, rafael@kernel.org, rdunlap@infradead.org, rui.zhang@intel.com, void0red@gmail.com, void0red@hust.edu.cn
> Subject: [PATCH v3 2/2] thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
> 
> use devm_clk_get_enabled to do automatic resource management.
> Meanwhile, remove error handling labels in the probe function and
> the whole remove function.
> 
> Signed-off-by: Kang Chen <void0red@hust.edu.cn>
> Reviewed-by: Dongliang Mu <dzm91@hust.edu.cn>
> ---
> v3 -> v2: remove some useles func calls.
> v2 -> v1: init
> 
> Notice the devm_clk_get_enabled do the clk_get and clk_prepare_enable
> at the same time.
> I'm not sure if this has any side effects in initialization.
> 
>  drivers/thermal/mediatek/auxadc_thermal.c | 48 +++++------------------
>  1 file changed, 10 insertions(+), 38 deletions(-)
> 
> diff --git a/drivers/thermal/mediatek/auxadc_thermal.c b/drivers/thermal/mediatek/auxadc_thermal.c
> index 3372f7c29626..995837ce3ea2 100644
> --- a/drivers/thermal/mediatek/auxadc_thermal.c
> +++ b/drivers/thermal/mediatek/auxadc_thermal.c
> @@ -1116,14 +1116,6 @@ static int mtk_thermal_probe(struct platform_device *pdev)
>  
>  	mt->conf = of_device_get_match_data(&pdev->dev);
>  
> -	mt->clk_peri_therm = devm_clk_get(&pdev->dev, "therm");
> -	if (IS_ERR(mt->clk_peri_therm))
> -		return PTR_ERR(mt->clk_peri_therm);
> -
> -	mt->clk_auxadc = devm_clk_get(&pdev->dev, "auxadc");
> -	if (IS_ERR(mt->clk_auxadc))
> -		return PTR_ERR(mt->clk_auxadc);
> -
>  	mt->thermal_base = devm_platform_get_and_ioremap_resource(pdev, 0, NULL);
>  	if (IS_ERR(mt->thermal_base))
>  		return PTR_ERR(mt->thermal_base);
> @@ -1182,16 +1174,16 @@ static int mtk_thermal_probe(struct platform_device *pdev)
>  	if (ret)
>  		return ret;
>  
> -	ret = clk_prepare_enable(mt->clk_auxadc);
> -	if (ret) {
> -		dev_err(&pdev->dev, "Can't enable auxadc clk: %d\n", ret);
> -		return ret;
> +	mt->clk_auxadc = devm_clk_get_enabled(&pdev->dev, "auxadc");
> +	if (IS_ERR(mt->clk_auxadc)) {
> +		dev_err(&pdev->dev, "Can't enable auxadc clk: %d\n", mt->clk_auxadc);
> +		return PTR_ERR(mt->clk_auxadc);
>  	}
>  
> -	ret = clk_prepare_enable(mt->clk_peri_therm);
> -	if (ret) {
> -		dev_err(&pdev->dev, "Can't enable peri clk: %d\n", ret);
> -		goto err_disable_clk_auxadc;
> +	mt->clk_peri_therm = devm_clk_get_enabled(&pdev->dev, "therm");
> +	if (IS_ERR(mt->clk_peri_therm)) {
> +		dev_err(&pdev->dev, "Can't enable peri clk: %d\n", mt->clk_peri_therm);
> +		return PTR_ERR(mt->clk_peri_therm);
>  	}
>  
>  	if (mt->conf->version != MTK_THERMAL_V1) {
> @@ -1215,38 +1207,18 @@ static int mtk_thermal_probe(struct platform_device *pdev)
>  
>  	tzdev = devm_thermal_of_zone_register(&pdev->dev, 0, mt,
>  					      &mtk_thermal_ops);
> -	if (IS_ERR(tzdev)) {
> -		ret = PTR_ERR(tzdev);
> -		goto err_disable_clk_peri_therm;
> -	}
> +	if (IS_ERR(tzdev))
> +		return PTR_ERR(tzdev);
>  
>  	ret = devm_thermal_add_hwmon_sysfs(tzdev);
>  	if (ret)
>  		dev_warn(&pdev->dev, "error in thermal_add_hwmon_sysfs");
>  
>  	return 0;
> -
> -err_disable_clk_peri_therm:
> -	clk_disable_unprepare(mt->clk_peri_therm);
> -err_disable_clk_auxadc:
> -	clk_disable_unprepare(mt->clk_auxadc);
> -
> -	return ret;
> -}
> -
> -static int mtk_thermal_remove(struct platform_device *pdev)
> -{
> -	struct mtk_thermal *mt = platform_get_drvdata(pdev);
> -
> -	clk_disable_unprepare(mt->clk_peri_therm);
> -	clk_disable_unprepare(mt->clk_auxadc);
> -
> -	return 0;
>  }
>  
>  static struct platform_driver mtk_thermal_driver = {
>  	.probe = mtk_thermal_probe,
> -	.remove = mtk_thermal_remove,
>  	.driver = {
>  		.name = "mtk-thermal",
>  		.of_match_table = mtk_thermal_of_match,
> -- 
> 2.34.1

ping?
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH v3 2/2] thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
  2023-04-15  7:14                 ` void0red
@ 2023-04-17  9:52                   ` Daniel Lezcano
  -1 siblings, 0 replies; 30+ messages in thread
From: Daniel Lezcano @ 2023-04-17  9:52 UTC (permalink / raw)
  To: void0red
  Cc: amitk, angelogioacchino.delregno, bchihi, daniel, dzm91, error27,
	henry.yen, hust-os-kernel-patches, linux-arm-kernel,
	linux-kernel, linux-mediatek, linux-pm, matthias.bgg, rafael,
	rdunlap, rui.zhang, void0red


Hi,

this patch does not apply:

Analyzing 9 messages in the thread
Will use the latest revision: v3
You can pick other revisions using the -vN flag
Checking attestation on all messages, may take a moment...
---
   [PATCH v3 2/2] thermal: mediatek: change clk_prepare_enable to 
devm_clk_get_enabled in mtk_thermal_probe
     + Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
     + Link: 
https://lore.kernel.org/r/20230411063531.3976354-2-void0red@hust.edu.cn
---
Total patches: 1 (cherrypicked: 2)
---
  Link: 
https://lore.kernel.org/r/20230411063531.3976354-1-void0red@hust.edu.cn
  Base: not specified
Applying: thermal: mediatek: change clk_prepare_enable to 
devm_clk_get_enabled in mtk_thermal_probe
error: patch failed: drivers/thermal/mediatek/auxadc_thermal.c:1182
error: drivers/thermal/mediatek/auxadc_thermal.c: patch does not apply
Patch failed at 0001 thermal: mediatek: change clk_prepare_enable to 
devm_clk_get_enabled in mtk_thermal_probe
hint: Use 'git am --show-current-patch=diff' to see the failed patch
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".



On 15/04/2023 09:14, void0red@hust.edu.cn wrote:
> 
> 
> 
>> -----Original Messages-----
>> From: "Kang Chen" <void0red@hust.edu.cn>
>> Sent Time: 2023-04-11 14:35:31 (Tuesday)
>> To: daniel.lezcano@linaro.org
>> Cc: amitk@kernel.org, angelogioacchino.delregno@collabora.com, bchihi@baylibre.com, daniel@makrotopia.org, dzm91@hust.edu.cn, error27@gmail.com, henry.yen@mediatek.com, hust-os-kernel-patches@googlegroups.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-pm@vger.kernel.org, matthias.bgg@gmail.com, rafael@kernel.org, rdunlap@infradead.org, rui.zhang@intel.com, void0red@gmail.com, void0red@hust.edu.cn
>> Subject: [PATCH v3 2/2] thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
>>
>> use devm_clk_get_enabled to do automatic resource management.
>> Meanwhile, remove error handling labels in the probe function and
>> the whole remove function.
>>
>> Signed-off-by: Kang Chen <void0red@hust.edu.cn>
>> Reviewed-by: Dongliang Mu <dzm91@hust.edu.cn>
>> ---
>> v3 -> v2: remove some useles func calls.
>> v2 -> v1: init
>>
>> Notice the devm_clk_get_enabled do the clk_get and clk_prepare_enable
>> at the same time.
>> I'm not sure if this has any side effects in initialization.
>>
>>   drivers/thermal/mediatek/auxadc_thermal.c | 48 +++++------------------
>>   1 file changed, 10 insertions(+), 38 deletions(-)
>>
>> diff --git a/drivers/thermal/mediatek/auxadc_thermal.c b/drivers/thermal/mediatek/auxadc_thermal.c
>> index 3372f7c29626..995837ce3ea2 100644
>> --- a/drivers/thermal/mediatek/auxadc_thermal.c
>> +++ b/drivers/thermal/mediatek/auxadc_thermal.c
>> @@ -1116,14 +1116,6 @@ static int mtk_thermal_probe(struct platform_device *pdev)
>>   
>>   	mt->conf = of_device_get_match_data(&pdev->dev);
>>   
>> -	mt->clk_peri_therm = devm_clk_get(&pdev->dev, "therm");
>> -	if (IS_ERR(mt->clk_peri_therm))
>> -		return PTR_ERR(mt->clk_peri_therm);
>> -
>> -	mt->clk_auxadc = devm_clk_get(&pdev->dev, "auxadc");
>> -	if (IS_ERR(mt->clk_auxadc))
>> -		return PTR_ERR(mt->clk_auxadc);
>> -
>>   	mt->thermal_base = devm_platform_get_and_ioremap_resource(pdev, 0, NULL);
>>   	if (IS_ERR(mt->thermal_base))
>>   		return PTR_ERR(mt->thermal_base);
>> @@ -1182,16 +1174,16 @@ static int mtk_thermal_probe(struct platform_device *pdev)
>>   	if (ret)
>>   		return ret;
>>   
>> -	ret = clk_prepare_enable(mt->clk_auxadc);
>> -	if (ret) {
>> -		dev_err(&pdev->dev, "Can't enable auxadc clk: %d\n", ret);
>> -		return ret;
>> +	mt->clk_auxadc = devm_clk_get_enabled(&pdev->dev, "auxadc");
>> +	if (IS_ERR(mt->clk_auxadc)) {
>> +		dev_err(&pdev->dev, "Can't enable auxadc clk: %d\n", mt->clk_auxadc);
>> +		return PTR_ERR(mt->clk_auxadc);
>>   	}
>>   
>> -	ret = clk_prepare_enable(mt->clk_peri_therm);
>> -	if (ret) {
>> -		dev_err(&pdev->dev, "Can't enable peri clk: %d\n", ret);
>> -		goto err_disable_clk_auxadc;
>> +	mt->clk_peri_therm = devm_clk_get_enabled(&pdev->dev, "therm");
>> +	if (IS_ERR(mt->clk_peri_therm)) {
>> +		dev_err(&pdev->dev, "Can't enable peri clk: %d\n", mt->clk_peri_therm);
>> +		return PTR_ERR(mt->clk_peri_therm);
>>   	}
>>   
>>   	if (mt->conf->version != MTK_THERMAL_V1) {
>> @@ -1215,38 +1207,18 @@ static int mtk_thermal_probe(struct platform_device *pdev)
>>   
>>   	tzdev = devm_thermal_of_zone_register(&pdev->dev, 0, mt,
>>   					      &mtk_thermal_ops);
>> -	if (IS_ERR(tzdev)) {
>> -		ret = PTR_ERR(tzdev);
>> -		goto err_disable_clk_peri_therm;
>> -	}
>> +	if (IS_ERR(tzdev))
>> +		return PTR_ERR(tzdev);
>>   
>>   	ret = devm_thermal_add_hwmon_sysfs(tzdev);
>>   	if (ret)
>>   		dev_warn(&pdev->dev, "error in thermal_add_hwmon_sysfs");
>>   
>>   	return 0;
>> -
>> -err_disable_clk_peri_therm:
>> -	clk_disable_unprepare(mt->clk_peri_therm);
>> -err_disable_clk_auxadc:
>> -	clk_disable_unprepare(mt->clk_auxadc);
>> -
>> -	return ret;
>> -}
>> -
>> -static int mtk_thermal_remove(struct platform_device *pdev)
>> -{
>> -	struct mtk_thermal *mt = platform_get_drvdata(pdev);
>> -
>> -	clk_disable_unprepare(mt->clk_peri_therm);
>> -	clk_disable_unprepare(mt->clk_auxadc);
>> -
>> -	return 0;
>>   }
>>   
>>   static struct platform_driver mtk_thermal_driver = {
>>   	.probe = mtk_thermal_probe,
>> -	.remove = mtk_thermal_remove,
>>   	.driver = {
>>   		.name = "mtk-thermal",
>>   		.of_match_table = mtk_thermal_of_match,
>> -- 
>> 2.34.1
> 
> ping?

-- 
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog


^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH v3 2/2] thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
@ 2023-04-17  9:52                   ` Daniel Lezcano
  0 siblings, 0 replies; 30+ messages in thread
From: Daniel Lezcano @ 2023-04-17  9:52 UTC (permalink / raw)
  To: void0red
  Cc: amitk, angelogioacchino.delregno, bchihi, daniel, dzm91, error27,
	henry.yen, hust-os-kernel-patches, linux-arm-kernel,
	linux-kernel, linux-mediatek, linux-pm, matthias.bgg, rafael,
	rdunlap, rui.zhang, void0red


Hi,

this patch does not apply:

Analyzing 9 messages in the thread
Will use the latest revision: v3
You can pick other revisions using the -vN flag
Checking attestation on all messages, may take a moment...
---
   [PATCH v3 2/2] thermal: mediatek: change clk_prepare_enable to 
devm_clk_get_enabled in mtk_thermal_probe
     + Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
     + Link: 
https://lore.kernel.org/r/20230411063531.3976354-2-void0red@hust.edu.cn
---
Total patches: 1 (cherrypicked: 2)
---
  Link: 
https://lore.kernel.org/r/20230411063531.3976354-1-void0red@hust.edu.cn
  Base: not specified
Applying: thermal: mediatek: change clk_prepare_enable to 
devm_clk_get_enabled in mtk_thermal_probe
error: patch failed: drivers/thermal/mediatek/auxadc_thermal.c:1182
error: drivers/thermal/mediatek/auxadc_thermal.c: patch does not apply
Patch failed at 0001 thermal: mediatek: change clk_prepare_enable to 
devm_clk_get_enabled in mtk_thermal_probe
hint: Use 'git am --show-current-patch=diff' to see the failed patch
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".



On 15/04/2023 09:14, void0red@hust.edu.cn wrote:
> 
> 
> 
>> -----Original Messages-----
>> From: "Kang Chen" <void0red@hust.edu.cn>
>> Sent Time: 2023-04-11 14:35:31 (Tuesday)
>> To: daniel.lezcano@linaro.org
>> Cc: amitk@kernel.org, angelogioacchino.delregno@collabora.com, bchihi@baylibre.com, daniel@makrotopia.org, dzm91@hust.edu.cn, error27@gmail.com, henry.yen@mediatek.com, hust-os-kernel-patches@googlegroups.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-pm@vger.kernel.org, matthias.bgg@gmail.com, rafael@kernel.org, rdunlap@infradead.org, rui.zhang@intel.com, void0red@gmail.com, void0red@hust.edu.cn
>> Subject: [PATCH v3 2/2] thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
>>
>> use devm_clk_get_enabled to do automatic resource management.
>> Meanwhile, remove error handling labels in the probe function and
>> the whole remove function.
>>
>> Signed-off-by: Kang Chen <void0red@hust.edu.cn>
>> Reviewed-by: Dongliang Mu <dzm91@hust.edu.cn>
>> ---
>> v3 -> v2: remove some useles func calls.
>> v2 -> v1: init
>>
>> Notice the devm_clk_get_enabled do the clk_get and clk_prepare_enable
>> at the same time.
>> I'm not sure if this has any side effects in initialization.
>>
>>   drivers/thermal/mediatek/auxadc_thermal.c | 48 +++++------------------
>>   1 file changed, 10 insertions(+), 38 deletions(-)
>>
>> diff --git a/drivers/thermal/mediatek/auxadc_thermal.c b/drivers/thermal/mediatek/auxadc_thermal.c
>> index 3372f7c29626..995837ce3ea2 100644
>> --- a/drivers/thermal/mediatek/auxadc_thermal.c
>> +++ b/drivers/thermal/mediatek/auxadc_thermal.c
>> @@ -1116,14 +1116,6 @@ static int mtk_thermal_probe(struct platform_device *pdev)
>>   
>>   	mt->conf = of_device_get_match_data(&pdev->dev);
>>   
>> -	mt->clk_peri_therm = devm_clk_get(&pdev->dev, "therm");
>> -	if (IS_ERR(mt->clk_peri_therm))
>> -		return PTR_ERR(mt->clk_peri_therm);
>> -
>> -	mt->clk_auxadc = devm_clk_get(&pdev->dev, "auxadc");
>> -	if (IS_ERR(mt->clk_auxadc))
>> -		return PTR_ERR(mt->clk_auxadc);
>> -
>>   	mt->thermal_base = devm_platform_get_and_ioremap_resource(pdev, 0, NULL);
>>   	if (IS_ERR(mt->thermal_base))
>>   		return PTR_ERR(mt->thermal_base);
>> @@ -1182,16 +1174,16 @@ static int mtk_thermal_probe(struct platform_device *pdev)
>>   	if (ret)
>>   		return ret;
>>   
>> -	ret = clk_prepare_enable(mt->clk_auxadc);
>> -	if (ret) {
>> -		dev_err(&pdev->dev, "Can't enable auxadc clk: %d\n", ret);
>> -		return ret;
>> +	mt->clk_auxadc = devm_clk_get_enabled(&pdev->dev, "auxadc");
>> +	if (IS_ERR(mt->clk_auxadc)) {
>> +		dev_err(&pdev->dev, "Can't enable auxadc clk: %d\n", mt->clk_auxadc);
>> +		return PTR_ERR(mt->clk_auxadc);
>>   	}
>>   
>> -	ret = clk_prepare_enable(mt->clk_peri_therm);
>> -	if (ret) {
>> -		dev_err(&pdev->dev, "Can't enable peri clk: %d\n", ret);
>> -		goto err_disable_clk_auxadc;
>> +	mt->clk_peri_therm = devm_clk_get_enabled(&pdev->dev, "therm");
>> +	if (IS_ERR(mt->clk_peri_therm)) {
>> +		dev_err(&pdev->dev, "Can't enable peri clk: %d\n", mt->clk_peri_therm);
>> +		return PTR_ERR(mt->clk_peri_therm);
>>   	}
>>   
>>   	if (mt->conf->version != MTK_THERMAL_V1) {
>> @@ -1215,38 +1207,18 @@ static int mtk_thermal_probe(struct platform_device *pdev)
>>   
>>   	tzdev = devm_thermal_of_zone_register(&pdev->dev, 0, mt,
>>   					      &mtk_thermal_ops);
>> -	if (IS_ERR(tzdev)) {
>> -		ret = PTR_ERR(tzdev);
>> -		goto err_disable_clk_peri_therm;
>> -	}
>> +	if (IS_ERR(tzdev))
>> +		return PTR_ERR(tzdev);
>>   
>>   	ret = devm_thermal_add_hwmon_sysfs(tzdev);
>>   	if (ret)
>>   		dev_warn(&pdev->dev, "error in thermal_add_hwmon_sysfs");
>>   
>>   	return 0;
>> -
>> -err_disable_clk_peri_therm:
>> -	clk_disable_unprepare(mt->clk_peri_therm);
>> -err_disable_clk_auxadc:
>> -	clk_disable_unprepare(mt->clk_auxadc);
>> -
>> -	return ret;
>> -}
>> -
>> -static int mtk_thermal_remove(struct platform_device *pdev)
>> -{
>> -	struct mtk_thermal *mt = platform_get_drvdata(pdev);
>> -
>> -	clk_disable_unprepare(mt->clk_peri_therm);
>> -	clk_disable_unprepare(mt->clk_auxadc);
>> -
>> -	return 0;
>>   }
>>   
>>   static struct platform_driver mtk_thermal_driver = {
>>   	.probe = mtk_thermal_probe,
>> -	.remove = mtk_thermal_remove,
>>   	.driver = {
>>   		.name = "mtk-thermal",
>>   		.of_match_table = mtk_thermal_of_match,
>> -- 
>> 2.34.1
> 
> ping?

-- 
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH v3 2/2] thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
  2023-04-17  9:52                   ` Daniel Lezcano
@ 2023-04-17 10:15                     ` Kang Chen
  -1 siblings, 0 replies; 30+ messages in thread
From: Kang Chen @ 2023-04-17 10:15 UTC (permalink / raw)
  To: Daniel Lezcano
  Cc: amitk, angelogioacchino.delregno, bchihi, daniel, dzm91, error27,
	henry.yen, hust-os-kernel-patches, linux-arm-kernel,
	linux-kernel, linux-mediatek, linux-pm, matthias.bgg, rafael,
	rdunlap, rui.zhang, void0red



> 2023年4月17日 17:52,Daniel Lezcano <daniel.lezcano@linaro.org> 写道:
> 
> 
> Hi,
> 
> this patch does not apply:
> 
> Analyzing 9 messages in the thread
> Will use the latest revision: v3
> You can pick other revisions using the -vN flag
> Checking attestation on all messages, may take a moment...
> ---
>  [PATCH v3 2/2] thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
>    + Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
>    + Link: https://lore.kernel.org/r/20230411063531.3976354-2-void0red@hust.edu.cn
> ---
> Total patches: 1 (cherrypicked: 2)
> ---
> Link: https://lore.kernel.org/r/20230411063531.3976354-1-void0red@hust.edu.cn
> Base: not specified
> Applying: thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
> error: patch failed: drivers/thermal/mediatek/auxadc_thermal.c:1182
> error: drivers/thermal/mediatek/auxadc_thermal.c: patch does not apply
> Patch failed at 0001 thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
Could you show me your work tree? I can apply it on mainline-6.3-rc7...
> hint: Use 'git am --show-current-patch=diff' to see the failed patch
> When you have resolved this problem, run "git am --continue".
> If you prefer to skip this patch, run "git am --skip" instead.
> To restore the original branch and stop patching, run "git am --abort".
> 
> 
> 
> On 15/04/2023 09:14, void0red@hust.edu.cn wrote:
>>> -----Original Messages-----
>>> From: "Kang Chen" <void0red@hust.edu.cn>
>>> Sent Time: 2023-04-11 14:35:31 (Tuesday)
>>> To: daniel.lezcano@linaro.org
>>> Cc: amitk@kernel.org, angelogioacchino.delregno@collabora.com, bchihi@baylibre.com, daniel@makrotopia.org, dzm91@hust.edu.cn, error27@gmail.com, henry.yen@mediatek.com, hust-os-kernel-patches@googlegroups.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-pm@vger.kernel.org, matthias.bgg@gmail.com, rafael@kernel.org, rdunlap@infradead.org, rui.zhang@intel.com, void0red@gmail.com, void0red@hust.edu.cn
>>> Subject: [PATCH v3 2/2] thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
>>> 
>>> use devm_clk_get_enabled to do automatic resource management.
>>> Meanwhile, remove error handling labels in the probe function and
>>> the whole remove function.
>>> 
>>> Signed-off-by: Kang Chen <void0red@hust.edu.cn>
>>> Reviewed-by: Dongliang Mu <dzm91@hust.edu.cn>
>>> ---
>>> v3 -> v2: remove some useles func calls.
>>> v2 -> v1: init
>>> 
>>> Notice the devm_clk_get_enabled do the clk_get and clk_prepare_enable
>>> at the same time.
>>> I'm not sure if this has any side effects in initialization.
>>> 
>>>  drivers/thermal/mediatek/auxadc_thermal.c | 48 +++++------------------
>>>  1 file changed, 10 insertions(+), 38 deletions(-)
>>> 
>>> diff --git a/drivers/thermal/mediatek/auxadc_thermal.c b/drivers/thermal/mediatek/auxadc_thermal.c
>>> index 3372f7c29626..995837ce3ea2 100644
>>> --- a/drivers/thermal/mediatek/auxadc_thermal.c
>>> +++ b/drivers/thermal/mediatek/auxadc_thermal.c
>>> @@ -1116,14 +1116,6 @@ static int mtk_thermal_probe(struct platform_device *pdev)
>>>    	mt->conf = of_device_get_match_data(&pdev->dev);
>>>  -	mt->clk_peri_therm = devm_clk_get(&pdev->dev, "therm");
>>> -	if (IS_ERR(mt->clk_peri_therm))
>>> -		return PTR_ERR(mt->clk_peri_therm);
>>> -
>>> -	mt->clk_auxadc = devm_clk_get(&pdev->dev, "auxadc");
>>> -	if (IS_ERR(mt->clk_auxadc))
>>> -		return PTR_ERR(mt->clk_auxadc);
>>> -
>>>  	mt->thermal_base = devm_platform_get_and_ioremap_resource(pdev, 0, NULL);
>>>  	if (IS_ERR(mt->thermal_base))
>>>  		return PTR_ERR(mt->thermal_base);
>>> @@ -1182,16 +1174,16 @@ static int mtk_thermal_probe(struct platform_device *pdev)
>>>  	if (ret)
>>>  		return ret;
>>>  -	ret = clk_prepare_enable(mt->clk_auxadc);
>>> -	if (ret) {
>>> -		dev_err(&pdev->dev, "Can't enable auxadc clk: %d\n", ret);
>>> -		return ret;
>>> +	mt->clk_auxadc = devm_clk_get_enabled(&pdev->dev, "auxadc");
>>> +	if (IS_ERR(mt->clk_auxadc)) {
>>> +		dev_err(&pdev->dev, "Can't enable auxadc clk: %d\n", mt->clk_auxadc);
>>> +		return PTR_ERR(mt->clk_auxadc);
>>>  	}
>>>  -	ret = clk_prepare_enable(mt->clk_peri_therm);
>>> -	if (ret) {
>>> -		dev_err(&pdev->dev, "Can't enable peri clk: %d\n", ret);
>>> -		goto err_disable_clk_auxadc;
>>> +	mt->clk_peri_therm = devm_clk_get_enabled(&pdev->dev, "therm");
>>> +	if (IS_ERR(mt->clk_peri_therm)) {
>>> +		dev_err(&pdev->dev, "Can't enable peri clk: %d\n", mt->clk_peri_therm);
>>> +		return PTR_ERR(mt->clk_peri_therm);
>>>  	}
>>>    	if (mt->conf->version != MTK_THERMAL_V1) {
>>> @@ -1215,38 +1207,18 @@ static int mtk_thermal_probe(struct platform_device *pdev)
>>>    	tzdev = devm_thermal_of_zone_register(&pdev->dev, 0, mt,
>>>  					      &mtk_thermal_ops);
>>> -	if (IS_ERR(tzdev)) {
>>> -		ret = PTR_ERR(tzdev);
>>> -		goto err_disable_clk_peri_therm;
>>> -	}
>>> +	if (IS_ERR(tzdev))
>>> +		return PTR_ERR(tzdev);
>>>    	ret = devm_thermal_add_hwmon_sysfs(tzdev);
>>>  	if (ret)
>>>  		dev_warn(&pdev->dev, "error in thermal_add_hwmon_sysfs");
>>>    	return 0;
>>> -
>>> -err_disable_clk_peri_therm:
>>> -	clk_disable_unprepare(mt->clk_peri_therm);
>>> -err_disable_clk_auxadc:
>>> -	clk_disable_unprepare(mt->clk_auxadc);
>>> -
>>> -	return ret;
>>> -}
>>> -
>>> -static int mtk_thermal_remove(struct platform_device *pdev)
>>> -{
>>> -	struct mtk_thermal *mt = platform_get_drvdata(pdev);
>>> -
>>> -	clk_disable_unprepare(mt->clk_peri_therm);
>>> -	clk_disable_unprepare(mt->clk_auxadc);
>>> -
>>> -	return 0;
>>>  }
>>>    static struct platform_driver mtk_thermal_driver = {
>>>  	.probe = mtk_thermal_probe,
>>> -	.remove = mtk_thermal_remove,
>>>  	.driver = {
>>>  		.name = "mtk-thermal",
>>>  		.of_match_table = mtk_thermal_of_match,
>>> -- 
>>> 2.34.1
>> ping?
> 
> -- 
> <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs
> 
> Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
> <http://twitter.com/#!/linaroorg> Twitter |
> <http://www.linaro.org/linaro-blog/> Blog



^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH v3 2/2] thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
@ 2023-04-17 10:15                     ` Kang Chen
  0 siblings, 0 replies; 30+ messages in thread
From: Kang Chen @ 2023-04-17 10:15 UTC (permalink / raw)
  To: Daniel Lezcano
  Cc: amitk, angelogioacchino.delregno, bchihi, daniel, dzm91, error27,
	henry.yen, hust-os-kernel-patches, linux-arm-kernel,
	linux-kernel, linux-mediatek, linux-pm, matthias.bgg, rafael,
	rdunlap, rui.zhang, void0red



> 2023年4月17日 17:52,Daniel Lezcano <daniel.lezcano@linaro.org> 写道:
> 
> 
> Hi,
> 
> this patch does not apply:
> 
> Analyzing 9 messages in the thread
> Will use the latest revision: v3
> You can pick other revisions using the -vN flag
> Checking attestation on all messages, may take a moment...
> ---
>  [PATCH v3 2/2] thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
>    + Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
>    + Link: https://lore.kernel.org/r/20230411063531.3976354-2-void0red@hust.edu.cn
> ---
> Total patches: 1 (cherrypicked: 2)
> ---
> Link: https://lore.kernel.org/r/20230411063531.3976354-1-void0red@hust.edu.cn
> Base: not specified
> Applying: thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
> error: patch failed: drivers/thermal/mediatek/auxadc_thermal.c:1182
> error: drivers/thermal/mediatek/auxadc_thermal.c: patch does not apply
> Patch failed at 0001 thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
Could you show me your work tree? I can apply it on mainline-6.3-rc7...
> hint: Use 'git am --show-current-patch=diff' to see the failed patch
> When you have resolved this problem, run "git am --continue".
> If you prefer to skip this patch, run "git am --skip" instead.
> To restore the original branch and stop patching, run "git am --abort".
> 
> 
> 
> On 15/04/2023 09:14, void0red@hust.edu.cn wrote:
>>> -----Original Messages-----
>>> From: "Kang Chen" <void0red@hust.edu.cn>
>>> Sent Time: 2023-04-11 14:35:31 (Tuesday)
>>> To: daniel.lezcano@linaro.org
>>> Cc: amitk@kernel.org, angelogioacchino.delregno@collabora.com, bchihi@baylibre.com, daniel@makrotopia.org, dzm91@hust.edu.cn, error27@gmail.com, henry.yen@mediatek.com, hust-os-kernel-patches@googlegroups.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-pm@vger.kernel.org, matthias.bgg@gmail.com, rafael@kernel.org, rdunlap@infradead.org, rui.zhang@intel.com, void0red@gmail.com, void0red@hust.edu.cn
>>> Subject: [PATCH v3 2/2] thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
>>> 
>>> use devm_clk_get_enabled to do automatic resource management.
>>> Meanwhile, remove error handling labels in the probe function and
>>> the whole remove function.
>>> 
>>> Signed-off-by: Kang Chen <void0red@hust.edu.cn>
>>> Reviewed-by: Dongliang Mu <dzm91@hust.edu.cn>
>>> ---
>>> v3 -> v2: remove some useles func calls.
>>> v2 -> v1: init
>>> 
>>> Notice the devm_clk_get_enabled do the clk_get and clk_prepare_enable
>>> at the same time.
>>> I'm not sure if this has any side effects in initialization.
>>> 
>>>  drivers/thermal/mediatek/auxadc_thermal.c | 48 +++++------------------
>>>  1 file changed, 10 insertions(+), 38 deletions(-)
>>> 
>>> diff --git a/drivers/thermal/mediatek/auxadc_thermal.c b/drivers/thermal/mediatek/auxadc_thermal.c
>>> index 3372f7c29626..995837ce3ea2 100644
>>> --- a/drivers/thermal/mediatek/auxadc_thermal.c
>>> +++ b/drivers/thermal/mediatek/auxadc_thermal.c
>>> @@ -1116,14 +1116,6 @@ static int mtk_thermal_probe(struct platform_device *pdev)
>>>    	mt->conf = of_device_get_match_data(&pdev->dev);
>>>  -	mt->clk_peri_therm = devm_clk_get(&pdev->dev, "therm");
>>> -	if (IS_ERR(mt->clk_peri_therm))
>>> -		return PTR_ERR(mt->clk_peri_therm);
>>> -
>>> -	mt->clk_auxadc = devm_clk_get(&pdev->dev, "auxadc");
>>> -	if (IS_ERR(mt->clk_auxadc))
>>> -		return PTR_ERR(mt->clk_auxadc);
>>> -
>>>  	mt->thermal_base = devm_platform_get_and_ioremap_resource(pdev, 0, NULL);
>>>  	if (IS_ERR(mt->thermal_base))
>>>  		return PTR_ERR(mt->thermal_base);
>>> @@ -1182,16 +1174,16 @@ static int mtk_thermal_probe(struct platform_device *pdev)
>>>  	if (ret)
>>>  		return ret;
>>>  -	ret = clk_prepare_enable(mt->clk_auxadc);
>>> -	if (ret) {
>>> -		dev_err(&pdev->dev, "Can't enable auxadc clk: %d\n", ret);
>>> -		return ret;
>>> +	mt->clk_auxadc = devm_clk_get_enabled(&pdev->dev, "auxadc");
>>> +	if (IS_ERR(mt->clk_auxadc)) {
>>> +		dev_err(&pdev->dev, "Can't enable auxadc clk: %d\n", mt->clk_auxadc);
>>> +		return PTR_ERR(mt->clk_auxadc);
>>>  	}
>>>  -	ret = clk_prepare_enable(mt->clk_peri_therm);
>>> -	if (ret) {
>>> -		dev_err(&pdev->dev, "Can't enable peri clk: %d\n", ret);
>>> -		goto err_disable_clk_auxadc;
>>> +	mt->clk_peri_therm = devm_clk_get_enabled(&pdev->dev, "therm");
>>> +	if (IS_ERR(mt->clk_peri_therm)) {
>>> +		dev_err(&pdev->dev, "Can't enable peri clk: %d\n", mt->clk_peri_therm);
>>> +		return PTR_ERR(mt->clk_peri_therm);
>>>  	}
>>>    	if (mt->conf->version != MTK_THERMAL_V1) {
>>> @@ -1215,38 +1207,18 @@ static int mtk_thermal_probe(struct platform_device *pdev)
>>>    	tzdev = devm_thermal_of_zone_register(&pdev->dev, 0, mt,
>>>  					      &mtk_thermal_ops);
>>> -	if (IS_ERR(tzdev)) {
>>> -		ret = PTR_ERR(tzdev);
>>> -		goto err_disable_clk_peri_therm;
>>> -	}
>>> +	if (IS_ERR(tzdev))
>>> +		return PTR_ERR(tzdev);
>>>    	ret = devm_thermal_add_hwmon_sysfs(tzdev);
>>>  	if (ret)
>>>  		dev_warn(&pdev->dev, "error in thermal_add_hwmon_sysfs");
>>>    	return 0;
>>> -
>>> -err_disable_clk_peri_therm:
>>> -	clk_disable_unprepare(mt->clk_peri_therm);
>>> -err_disable_clk_auxadc:
>>> -	clk_disable_unprepare(mt->clk_auxadc);
>>> -
>>> -	return ret;
>>> -}
>>> -
>>> -static int mtk_thermal_remove(struct platform_device *pdev)
>>> -{
>>> -	struct mtk_thermal *mt = platform_get_drvdata(pdev);
>>> -
>>> -	clk_disable_unprepare(mt->clk_peri_therm);
>>> -	clk_disable_unprepare(mt->clk_auxadc);
>>> -
>>> -	return 0;
>>>  }
>>>    static struct platform_driver mtk_thermal_driver = {
>>>  	.probe = mtk_thermal_probe,
>>> -	.remove = mtk_thermal_remove,
>>>  	.driver = {
>>>  		.name = "mtk-thermal",
>>>  		.of_match_table = mtk_thermal_of_match,
>>> -- 
>>> 2.34.1
>> ping?
> 
> -- 
> <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs
> 
> Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
> <http://twitter.com/#!/linaroorg> Twitter |
> <http://www.linaro.org/linaro-blog/> Blog


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH v3 2/2] thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
  2023-04-17 10:15                     ` Kang Chen
@ 2023-04-17 10:43                       ` Dan Carpenter
  -1 siblings, 0 replies; 30+ messages in thread
From: Dan Carpenter @ 2023-04-17 10:43 UTC (permalink / raw)
  To: Kang Chen
  Cc: Daniel Lezcano, amitk, angelogioacchino.delregno, bchihi, daniel,
	dzm91, henry.yen, hust-os-kernel-patches, linux-arm-kernel,
	linux-kernel, linux-mediatek, linux-pm, matthias.bgg, rafael,
	rdunlap, rui.zhang, void0red

On Mon, Apr 17, 2023 at 06:15:02PM +0800, Kang Chen wrote:
> 
> 
> > 2023年4月17日 17:52,Daniel Lezcano <daniel.lezcano@linaro.org> 写道:
> > 
> > 
> > Hi,
> > 
> > this patch does not apply:
> > 
> > Analyzing 9 messages in the thread
> > Will use the latest revision: v3
> > You can pick other revisions using the -vN flag
> > Checking attestation on all messages, may take a moment...
> > ---
> >  [PATCH v3 2/2] thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
> >    + Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
> >    + Link: https://lore.kernel.org/r/20230411063531.3976354-2-void0red@hust.edu.cn
> > ---
> > Total patches: 1 (cherrypicked: 2)
> > ---
> > Link: https://lore.kernel.org/r/20230411063531.3976354-1-void0red@hust.edu.cn
> > Base: not specified
> > Applying: thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
> > error: patch failed: drivers/thermal/mediatek/auxadc_thermal.c:1182
> > error: drivers/thermal/mediatek/auxadc_thermal.c: patch does not apply
> > Patch failed at 0001 thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
> Could you show me your work tree? I can apply it on mainline-6.3-rc7...

Please write it against linux-next instead.

regards,
dan carpenter


^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH v3 2/2] thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
@ 2023-04-17 10:43                       ` Dan Carpenter
  0 siblings, 0 replies; 30+ messages in thread
From: Dan Carpenter @ 2023-04-17 10:43 UTC (permalink / raw)
  To: Kang Chen
  Cc: Daniel Lezcano, amitk, angelogioacchino.delregno, bchihi, daniel,
	dzm91, henry.yen, hust-os-kernel-patches, linux-arm-kernel,
	linux-kernel, linux-mediatek, linux-pm, matthias.bgg, rafael,
	rdunlap, rui.zhang, void0red

On Mon, Apr 17, 2023 at 06:15:02PM +0800, Kang Chen wrote:
> 
> 
> > 2023年4月17日 17:52,Daniel Lezcano <daniel.lezcano@linaro.org> 写道:
> > 
> > 
> > Hi,
> > 
> > this patch does not apply:
> > 
> > Analyzing 9 messages in the thread
> > Will use the latest revision: v3
> > You can pick other revisions using the -vN flag
> > Checking attestation on all messages, may take a moment...
> > ---
> >  [PATCH v3 2/2] thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
> >    + Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
> >    + Link: https://lore.kernel.org/r/20230411063531.3976354-2-void0red@hust.edu.cn
> > ---
> > Total patches: 1 (cherrypicked: 2)
> > ---
> > Link: https://lore.kernel.org/r/20230411063531.3976354-1-void0red@hust.edu.cn
> > Base: not specified
> > Applying: thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
> > error: patch failed: drivers/thermal/mediatek/auxadc_thermal.c:1182
> > error: drivers/thermal/mediatek/auxadc_thermal.c: patch does not apply
> > Patch failed at 0001 thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
> Could you show me your work tree? I can apply it on mainline-6.3-rc7...

Please write it against linux-next instead.

regards,
dan carpenter


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [PATCH v4 1/2] thermal: mediatek: use devm_of_iomap to avoid resource leak in mtk_thermal_probe
  2023-04-17 10:43                       ` Dan Carpenter
@ 2023-04-17 12:55                         ` Kang Chen
  -1 siblings, 0 replies; 30+ messages in thread
From: Kang Chen @ 2023-04-17 12:55 UTC (permalink / raw)
  To: error27
  Cc: amitk, angelogioacchino.delregno, bchihi, daniel.lezcano, daniel,
	dzm91, henry.yen, hust-os-kernel-patches, linux-arm-kernel,
	linux-kernel, linux-mediatek, linux-pm, matthias.bgg, rafael,
	rdunlap, rui.zhang, void0red, void0red

Smatch reports:
1. mtk_thermal_probe() warn: 'apmixed_base' from of_iomap() not released.
2. mtk_thermal_probe() warn: 'auxadc_base' from of_iomap() not released.

The original code forgets to release iomap resource when handling errors,
fix it by switch to devm_of_iomap.

Fixes: 89945047b166 ("thermal: mediatek: Add tsensor support for V2 thermal system")
Signed-off-by: Kang Chen <void0red@hust.edu.cn>
Reviewed-by: Dongliang Mu <dzm91@hust.edu.cn>
---
v4 -> v3: no modify
v3 -> v2: fix typo and put of_node in error handling
v2 -> v1: use devm_of_iomap instead.

 drivers/thermal/mediatek/auxadc_thermal.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/drivers/thermal/mediatek/auxadc_thermal.c b/drivers/thermal/mediatek/auxadc_thermal.c
index b6bb9eaafb74..dcc64237ea60 100644
--- a/drivers/thermal/mediatek/auxadc_thermal.c
+++ b/drivers/thermal/mediatek/auxadc_thermal.c
@@ -1212,7 +1212,12 @@ static int mtk_thermal_probe(struct platform_device *pdev)
 		return -ENODEV;
 	}
 
-	auxadc_base = of_iomap(auxadc, 0);
+	auxadc_base = devm_of_iomap(&pdev->dev, auxadc, 0, NULL);
+	if (IS_ERR(auxadc_base)) {
+		of_node_put(auxadc);
+		return PTR_ERR(auxadc_base);
+	}
+
 	auxadc_phys_base = of_get_phys_base(auxadc);
 
 	of_node_put(auxadc);
@@ -1228,7 +1233,12 @@ static int mtk_thermal_probe(struct platform_device *pdev)
 		return -ENODEV;
 	}
 
-	apmixed_base = of_iomap(apmixedsys, 0);
+	apmixed_base = devm_of_iomap(&pdev->dev, apmixedsys, 0, NULL);
+	if (IS_ERR(apmixed_base)) {
+		of_node_put(apmixedsys);
+		return PTR_ERR(apmixed_base);
+	}
+
 	apmixed_phys_base = of_get_phys_base(apmixedsys);
 
 	of_node_put(apmixedsys);
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH v4 1/2] thermal: mediatek: use devm_of_iomap to avoid resource leak in mtk_thermal_probe
@ 2023-04-17 12:55                         ` Kang Chen
  0 siblings, 0 replies; 30+ messages in thread
From: Kang Chen @ 2023-04-17 12:55 UTC (permalink / raw)
  To: error27
  Cc: amitk, angelogioacchino.delregno, bchihi, daniel.lezcano, daniel,
	dzm91, henry.yen, hust-os-kernel-patches, linux-arm-kernel,
	linux-kernel, linux-mediatek, linux-pm, matthias.bgg, rafael,
	rdunlap, rui.zhang, void0red, void0red

Smatch reports:
1. mtk_thermal_probe() warn: 'apmixed_base' from of_iomap() not released.
2. mtk_thermal_probe() warn: 'auxadc_base' from of_iomap() not released.

The original code forgets to release iomap resource when handling errors,
fix it by switch to devm_of_iomap.

Fixes: 89945047b166 ("thermal: mediatek: Add tsensor support for V2 thermal system")
Signed-off-by: Kang Chen <void0red@hust.edu.cn>
Reviewed-by: Dongliang Mu <dzm91@hust.edu.cn>
---
v4 -> v3: no modify
v3 -> v2: fix typo and put of_node in error handling
v2 -> v1: use devm_of_iomap instead.

 drivers/thermal/mediatek/auxadc_thermal.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/drivers/thermal/mediatek/auxadc_thermal.c b/drivers/thermal/mediatek/auxadc_thermal.c
index b6bb9eaafb74..dcc64237ea60 100644
--- a/drivers/thermal/mediatek/auxadc_thermal.c
+++ b/drivers/thermal/mediatek/auxadc_thermal.c
@@ -1212,7 +1212,12 @@ static int mtk_thermal_probe(struct platform_device *pdev)
 		return -ENODEV;
 	}
 
-	auxadc_base = of_iomap(auxadc, 0);
+	auxadc_base = devm_of_iomap(&pdev->dev, auxadc, 0, NULL);
+	if (IS_ERR(auxadc_base)) {
+		of_node_put(auxadc);
+		return PTR_ERR(auxadc_base);
+	}
+
 	auxadc_phys_base = of_get_phys_base(auxadc);
 
 	of_node_put(auxadc);
@@ -1228,7 +1233,12 @@ static int mtk_thermal_probe(struct platform_device *pdev)
 		return -ENODEV;
 	}
 
-	apmixed_base = of_iomap(apmixedsys, 0);
+	apmixed_base = devm_of_iomap(&pdev->dev, apmixedsys, 0, NULL);
+	if (IS_ERR(apmixed_base)) {
+		of_node_put(apmixedsys);
+		return PTR_ERR(apmixed_base);
+	}
+
 	apmixed_phys_base = of_get_phys_base(apmixedsys);
 
 	of_node_put(apmixedsys);
-- 
2.34.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH v4 2/2] thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
  2023-04-17 12:55                         ` Kang Chen
@ 2023-04-17 12:55                           ` Kang Chen
  -1 siblings, 0 replies; 30+ messages in thread
From: Kang Chen @ 2023-04-17 12:55 UTC (permalink / raw)
  To: error27
  Cc: amitk, angelogioacchino.delregno, bchihi, daniel.lezcano, daniel,
	dzm91, henry.yen, hust-os-kernel-patches, linux-arm-kernel,
	linux-kernel, linux-mediatek, linux-pm, matthias.bgg, rafael,
	rdunlap, rui.zhang, void0red, void0red

use devm_clk_get_enabled to do automatic resource management.
Meanwhile, remove error handling labels in the probe function and
the whole remove function.

Signed-off-by: Kang Chen <void0red@hust.edu.cn>
Reviewed-by: Dongliang Mu <dzm91@hust.edu.cn>
---
v4 -> v3: port to linux-next tree
v3 -> v2: remove some useles func calls.
v2 -> v1: init

 drivers/thermal/mediatek/auxadc_thermal.c | 48 +++++------------------
 1 file changed, 10 insertions(+), 38 deletions(-)

diff --git a/drivers/thermal/mediatek/auxadc_thermal.c b/drivers/thermal/mediatek/auxadc_thermal.c
index dcc64237ea60..18c8cce960c3 100644
--- a/drivers/thermal/mediatek/auxadc_thermal.c
+++ b/drivers/thermal/mediatek/auxadc_thermal.c
@@ -1186,14 +1186,6 @@ static int mtk_thermal_probe(struct platform_device *pdev)
 
 	mt->conf = of_device_get_match_data(&pdev->dev);
 
-	mt->clk_peri_therm = devm_clk_get(&pdev->dev, "therm");
-	if (IS_ERR(mt->clk_peri_therm))
-		return PTR_ERR(mt->clk_peri_therm);
-
-	mt->clk_auxadc = devm_clk_get(&pdev->dev, "auxadc");
-	if (IS_ERR(mt->clk_auxadc))
-		return PTR_ERR(mt->clk_auxadc);
-
 	mt->thermal_base = devm_platform_get_and_ioremap_resource(pdev, 0, NULL);
 	if (IS_ERR(mt->thermal_base))
 		return PTR_ERR(mt->thermal_base);
@@ -1252,16 +1244,16 @@ static int mtk_thermal_probe(struct platform_device *pdev)
 	if (ret)
 		return ret;
 
-	ret = clk_prepare_enable(mt->clk_auxadc);
-	if (ret) {
-		dev_err(&pdev->dev, "Can't enable auxadc clk: %d\n", ret);
-		return ret;
+	mt->clk_auxadc = devm_clk_get_enabled(&pdev->dev, "auxadc");
+	if (IS_ERR(mt->clk_auxadc)) {
+		dev_err(&pdev->dev, "Can't enable auxadc clk: %d\n", mt->clk_auxadc);
+		return PTR_ERR(mt->clk_auxadc);
 	}
 
-	ret = clk_prepare_enable(mt->clk_peri_therm);
-	if (ret) {
-		dev_err(&pdev->dev, "Can't enable peri clk: %d\n", ret);
-		goto err_disable_clk_auxadc;
+	mt->clk_peri_therm = devm_clk_get_enabled(&pdev->dev, "therm");
+	if (IS_ERR(mt->clk_peri_therm)) {
+		dev_err(&pdev->dev, "Can't enable peri clk: %d\n", mt->clk_peri_therm);
+		return PTR_ERR(mt->clk_peri_therm);
 	}
 
 	mtk_thermal_turn_on_buffer(mt, apmixed_base);
@@ -1288,38 +1280,18 @@ static int mtk_thermal_probe(struct platform_device *pdev)
 
 	tzdev = devm_thermal_of_zone_register(&pdev->dev, 0, mt,
 					      &mtk_thermal_ops);
-	if (IS_ERR(tzdev)) {
-		ret = PTR_ERR(tzdev);
-		goto err_disable_clk_peri_therm;
-	}
+	if (IS_ERR(tzdev))
+		return PTR_ERR(tzdev);
 
 	ret = devm_thermal_add_hwmon_sysfs(&pdev->dev, tzdev);
 	if (ret)
 		dev_warn(&pdev->dev, "error in thermal_add_hwmon_sysfs");
 
 	return 0;
-
-err_disable_clk_peri_therm:
-	clk_disable_unprepare(mt->clk_peri_therm);
-err_disable_clk_auxadc:
-	clk_disable_unprepare(mt->clk_auxadc);
-
-	return ret;
-}
-
-static int mtk_thermal_remove(struct platform_device *pdev)
-{
-	struct mtk_thermal *mt = platform_get_drvdata(pdev);
-
-	clk_disable_unprepare(mt->clk_peri_therm);
-	clk_disable_unprepare(mt->clk_auxadc);
-
-	return 0;
 }
 
 static struct platform_driver mtk_thermal_driver = {
 	.probe = mtk_thermal_probe,
-	.remove = mtk_thermal_remove,
 	.driver = {
 		.name = "mtk-thermal",
 		.of_match_table = mtk_thermal_of_match,
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH v4 2/2] thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled in mtk_thermal_probe
@ 2023-04-17 12:55                           ` Kang Chen
  0 siblings, 0 replies; 30+ messages in thread
From: Kang Chen @ 2023-04-17 12:55 UTC (permalink / raw)
  To: error27
  Cc: amitk, angelogioacchino.delregno, bchihi, daniel.lezcano, daniel,
	dzm91, henry.yen, hust-os-kernel-patches, linux-arm-kernel,
	linux-kernel, linux-mediatek, linux-pm, matthias.bgg, rafael,
	rdunlap, rui.zhang, void0red, void0red

use devm_clk_get_enabled to do automatic resource management.
Meanwhile, remove error handling labels in the probe function and
the whole remove function.

Signed-off-by: Kang Chen <void0red@hust.edu.cn>
Reviewed-by: Dongliang Mu <dzm91@hust.edu.cn>
---
v4 -> v3: port to linux-next tree
v3 -> v2: remove some useles func calls.
v2 -> v1: init

 drivers/thermal/mediatek/auxadc_thermal.c | 48 +++++------------------
 1 file changed, 10 insertions(+), 38 deletions(-)

diff --git a/drivers/thermal/mediatek/auxadc_thermal.c b/drivers/thermal/mediatek/auxadc_thermal.c
index dcc64237ea60..18c8cce960c3 100644
--- a/drivers/thermal/mediatek/auxadc_thermal.c
+++ b/drivers/thermal/mediatek/auxadc_thermal.c
@@ -1186,14 +1186,6 @@ static int mtk_thermal_probe(struct platform_device *pdev)
 
 	mt->conf = of_device_get_match_data(&pdev->dev);
 
-	mt->clk_peri_therm = devm_clk_get(&pdev->dev, "therm");
-	if (IS_ERR(mt->clk_peri_therm))
-		return PTR_ERR(mt->clk_peri_therm);
-
-	mt->clk_auxadc = devm_clk_get(&pdev->dev, "auxadc");
-	if (IS_ERR(mt->clk_auxadc))
-		return PTR_ERR(mt->clk_auxadc);
-
 	mt->thermal_base = devm_platform_get_and_ioremap_resource(pdev, 0, NULL);
 	if (IS_ERR(mt->thermal_base))
 		return PTR_ERR(mt->thermal_base);
@@ -1252,16 +1244,16 @@ static int mtk_thermal_probe(struct platform_device *pdev)
 	if (ret)
 		return ret;
 
-	ret = clk_prepare_enable(mt->clk_auxadc);
-	if (ret) {
-		dev_err(&pdev->dev, "Can't enable auxadc clk: %d\n", ret);
-		return ret;
+	mt->clk_auxadc = devm_clk_get_enabled(&pdev->dev, "auxadc");
+	if (IS_ERR(mt->clk_auxadc)) {
+		dev_err(&pdev->dev, "Can't enable auxadc clk: %d\n", mt->clk_auxadc);
+		return PTR_ERR(mt->clk_auxadc);
 	}
 
-	ret = clk_prepare_enable(mt->clk_peri_therm);
-	if (ret) {
-		dev_err(&pdev->dev, "Can't enable peri clk: %d\n", ret);
-		goto err_disable_clk_auxadc;
+	mt->clk_peri_therm = devm_clk_get_enabled(&pdev->dev, "therm");
+	if (IS_ERR(mt->clk_peri_therm)) {
+		dev_err(&pdev->dev, "Can't enable peri clk: %d\n", mt->clk_peri_therm);
+		return PTR_ERR(mt->clk_peri_therm);
 	}
 
 	mtk_thermal_turn_on_buffer(mt, apmixed_base);
@@ -1288,38 +1280,18 @@ static int mtk_thermal_probe(struct platform_device *pdev)
 
 	tzdev = devm_thermal_of_zone_register(&pdev->dev, 0, mt,
 					      &mtk_thermal_ops);
-	if (IS_ERR(tzdev)) {
-		ret = PTR_ERR(tzdev);
-		goto err_disable_clk_peri_therm;
-	}
+	if (IS_ERR(tzdev))
+		return PTR_ERR(tzdev);
 
 	ret = devm_thermal_add_hwmon_sysfs(&pdev->dev, tzdev);
 	if (ret)
 		dev_warn(&pdev->dev, "error in thermal_add_hwmon_sysfs");
 
 	return 0;
-
-err_disable_clk_peri_therm:
-	clk_disable_unprepare(mt->clk_peri_therm);
-err_disable_clk_auxadc:
-	clk_disable_unprepare(mt->clk_auxadc);
-
-	return ret;
-}
-
-static int mtk_thermal_remove(struct platform_device *pdev)
-{
-	struct mtk_thermal *mt = platform_get_drvdata(pdev);
-
-	clk_disable_unprepare(mt->clk_peri_therm);
-	clk_disable_unprepare(mt->clk_auxadc);
-
-	return 0;
 }
 
 static struct platform_driver mtk_thermal_driver = {
 	.probe = mtk_thermal_probe,
-	.remove = mtk_thermal_remove,
 	.driver = {
 		.name = "mtk-thermal",
 		.of_match_table = mtk_thermal_of_match,
-- 
2.34.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* Re: [PATCH v4 1/2] thermal: mediatek: use devm_of_iomap to avoid resource leak in mtk_thermal_probe
  2023-04-17 12:55                         ` Kang Chen
@ 2023-04-18  9:25                           ` AngeloGioacchino Del Regno
  -1 siblings, 0 replies; 30+ messages in thread
From: AngeloGioacchino Del Regno @ 2023-04-18  9:25 UTC (permalink / raw)
  To: Kang Chen, error27
  Cc: amitk, bchihi, daniel.lezcano, daniel, dzm91, henry.yen,
	hust-os-kernel-patches, linux-arm-kernel, linux-kernel,
	linux-mediatek, linux-pm, matthias.bgg, rafael, rdunlap,
	rui.zhang, void0red

Il 17/04/23 14:55, Kang Chen ha scritto:
> Smatch reports:
> 1. mtk_thermal_probe() warn: 'apmixed_base' from of_iomap() not released.
> 2. mtk_thermal_probe() warn: 'auxadc_base' from of_iomap() not released.
> 
> The original code forgets to release iomap resource when handling errors,
> fix it by switch to devm_of_iomap.
> 
> Fixes: 89945047b166 ("thermal: mediatek: Add tsensor support for V2 thermal system")
> Signed-off-by: Kang Chen <void0red@hust.edu.cn>
> Reviewed-by: Dongliang Mu <dzm91@hust.edu.cn>

Good job!

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>



^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH v4 1/2] thermal: mediatek: use devm_of_iomap to avoid resource leak in mtk_thermal_probe
@ 2023-04-18  9:25                           ` AngeloGioacchino Del Regno
  0 siblings, 0 replies; 30+ messages in thread
From: AngeloGioacchino Del Regno @ 2023-04-18  9:25 UTC (permalink / raw)
  To: Kang Chen, error27
  Cc: amitk, bchihi, daniel.lezcano, daniel, dzm91, henry.yen,
	hust-os-kernel-patches, linux-arm-kernel, linux-kernel,
	linux-mediatek, linux-pm, matthias.bgg, rafael, rdunlap,
	rui.zhang, void0red

Il 17/04/23 14:55, Kang Chen ha scritto:
> Smatch reports:
> 1. mtk_thermal_probe() warn: 'apmixed_base' from of_iomap() not released.
> 2. mtk_thermal_probe() warn: 'auxadc_base' from of_iomap() not released.
> 
> The original code forgets to release iomap resource when handling errors,
> fix it by switch to devm_of_iomap.
> 
> Fixes: 89945047b166 ("thermal: mediatek: Add tsensor support for V2 thermal system")
> Signed-off-by: Kang Chen <void0red@hust.edu.cn>
> Reviewed-by: Dongliang Mu <dzm91@hust.edu.cn>

Good job!

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>



_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 30+ messages in thread

end of thread, other threads:[~2023-04-18  9:26 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-04-03 10:38 [PATCH] drivers: thermal: mediatek: fix of_iomap leak in mtk_thermal_probe Kang Chen
2023-04-03 10:38 ` Kang Chen
2023-04-03 11:32 ` Daniel Lezcano
2023-04-03 11:32   ` Daniel Lezcano
2023-04-03 16:46   ` [PATCH v2 1/2] thermal: mediatek: use devm_of_iomap to avoid resource " Kang Chen
2023-04-03 16:46     ` Kang Chen
2023-04-03 16:46     ` [PATCH v2 2/2] thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled " Kang Chen
2023-04-03 16:46       ` Kang Chen
2023-04-10  3:46       ` 陈康
2023-04-10  3:46         ` 陈康
2023-04-10 19:42         ` Daniel Lezcano
2023-04-10 19:42           ` Daniel Lezcano
2023-04-11  6:35           ` [PATCH v3 1/2] thermal: mediatek: use devm_of_iomap to avoid resource leak " Kang Chen
2023-04-11  6:35             ` Kang Chen
2023-04-11  6:35             ` [PATCH v3 2/2] thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled " Kang Chen
2023-04-11  6:35               ` Kang Chen
2023-04-15  7:14               ` void0red
2023-04-15  7:14                 ` void0red
2023-04-17  9:52                 ` Daniel Lezcano
2023-04-17  9:52                   ` Daniel Lezcano
2023-04-17 10:15                   ` Kang Chen
2023-04-17 10:15                     ` Kang Chen
2023-04-17 10:43                     ` Dan Carpenter
2023-04-17 10:43                       ` Dan Carpenter
2023-04-17 12:55                       ` [PATCH v4 1/2] thermal: mediatek: use devm_of_iomap to avoid resource leak " Kang Chen
2023-04-17 12:55                         ` Kang Chen
2023-04-17 12:55                         ` [PATCH v4 2/2] thermal: mediatek: change clk_prepare_enable to devm_clk_get_enabled " Kang Chen
2023-04-17 12:55                           ` Kang Chen
2023-04-18  9:25                         ` [PATCH v4 1/2] thermal: mediatek: use devm_of_iomap to avoid resource leak " AngeloGioacchino Del Regno
2023-04-18  9:25                           ` AngeloGioacchino Del Regno

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.