Linux clock framework development
 help / color / mirror / Atom feed
* [PATCH v3 0/4] Provide devm_clk_bulk_get_all_enabled() helper
@ 2024-10-17 23:17 Cristian Ciocaltea
  2024-10-17 23:17 ` [PATCH v3 1/4] clk: " Cristian Ciocaltea
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Cristian Ciocaltea @ 2024-10-17 23:17 UTC (permalink / raw)
  To: Michael Turquette, Stephen Boyd, Russell King, Matthias Brugger,
	AngeloGioacchino Del Regno, Jingoo Han, Lorenzo Pieralisi,
	Krzysztof Wilczyński, Manivannan Sadhasivam, Rob Herring,
	Bjorn Helgaas, Krzysztof Kozlowski, Alim Akhtar
  Cc: kernel, linux-clk, linux-kernel, linux-arm-kernel, linux-mediatek,
	linux-pci, linux-samsung-soc

Commit 265b07df758a ("clk: Provide managed helper to get and enable bulk
clocks") added devm_clk_bulk_get_all_enable() function, but missed to
return the number of clocks stored in the clk_bulk_data table referenced
by the clks argument.

That is required in case there is a need to iterate these clocks later,
therefore I couldn't see any use case of this parameter and should have
been simply removed from the function declaration.

The first patch in the series provides devm_clk_bulk_get_all_enabled()
variant, which is consistent with devm_clk_bulk_get_all() in terms of
the returned value:

 > 0 if one or more clocks have been stored
 = 0 if there are no clocks
 < 0 if an error occurred

Moreover, the naming is consistent with devm_clk_get_enabled(), i.e. use
the past form of 'enable'.

The next two patches switch existing users of devm_clk_get_enable() to
the new helper - there were only two, as of next-20240913.

The last patch drops the now obsolete devm_clk_bulk_get_all_enable()
helper.

Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
---
Changes in v3:
- Made devm_clk_bulk_get_all_enable() use the new helper, as suggested
  by Stephen to improve diff readability
- Rebased series onto next-20241017
- Link to v2: https://lore.kernel.org/r/20240926-clk_bulk_ena_fix-v2-0-9c767510fbb5@collabora.com

Changes in v2:
- Dropped references to 'broken' API in commit descriptions, per Mani's
  suggestion
- Added R-b tags from Angelo and Mani
- Link to v1: https://lore.kernel.org/r/20240914-clk_bulk_ena_fix-v1-0-ce3537585c06@collabora.com

---
Cristian Ciocaltea (4):
      clk: Provide devm_clk_bulk_get_all_enabled() helper
      soc: mediatek: pwrap: Switch to devm_clk_bulk_get_all_enabled()
      PCI: exynos: Switch to devm_clk_bulk_get_all_enabled()
      clk: Drop obsolete devm_clk_bulk_get_all_enable() helper

 drivers/clk/clk-devres.c                | 30 ++++++++++++++++--------------
 drivers/pci/controller/dwc/pci-exynos.c |  2 +-
 drivers/soc/mediatek/mtk-pmic-wrap.c    |  4 ++--
 include/linux/clk.h                     | 12 +++++++-----
 4 files changed, 26 insertions(+), 22 deletions(-)
---
base-commit: 7df1e7189cecb6965ce672e820a5ec6cf499b65b
change-id: 20240912-clk_bulk_ena_fix-16ba77358ddf


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

* [PATCH v3 1/4] clk: Provide devm_clk_bulk_get_all_enabled() helper
  2024-10-17 23:17 [PATCH v3 0/4] Provide devm_clk_bulk_get_all_enabled() helper Cristian Ciocaltea
@ 2024-10-17 23:17 ` Cristian Ciocaltea
  2024-10-19  5:56   ` Stephen Boyd
  2024-10-17 23:17 ` [PATCH v3 2/4] soc: mediatek: pwrap: Switch to devm_clk_bulk_get_all_enabled() Cristian Ciocaltea
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 7+ messages in thread
From: Cristian Ciocaltea @ 2024-10-17 23:17 UTC (permalink / raw)
  To: Michael Turquette, Stephen Boyd, Russell King, Matthias Brugger,
	AngeloGioacchino Del Regno, Jingoo Han, Lorenzo Pieralisi,
	Krzysztof Wilczyński, Manivannan Sadhasivam, Rob Herring,
	Bjorn Helgaas, Krzysztof Kozlowski, Alim Akhtar
  Cc: kernel, linux-clk, linux-kernel, linux-arm-kernel, linux-mediatek,
	linux-pci, linux-samsung-soc

Commit 265b07df758a ("clk: Provide managed helper to get and enable bulk
clocks") added devm_clk_bulk_get_all_enable() function, but missed to
return the number of clocks stored in the clk_bulk_data table referenced
by the clks argument.  Without knowing the number, it's not possible to
iterate these clocks when needed, hence the argument is useless and
could have been simply removed.

Introduce devm_clk_bulk_get_all_enabled() variant, which is consistent
with devm_clk_bulk_get_all() in terms of the returned value:

 > 0 if one or more clocks have been stored
 = 0 if there are no clocks
 < 0 if an error occurred

Moreover, the naming is consistent with devm_clk_get_enabled(), i.e. use
the past form of 'enable'.

To reduce code duplication and improve patch readability, make
devm_clk_bulk_get_all_enable() use the new helper, as suggested by
Stephen Boyd.

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
---
 drivers/clk/clk-devres.c | 35 +++++++++++++++++++++++------------
 include/linux/clk.h      | 24 ++++++++++++++++++++++++
 2 files changed, 47 insertions(+), 12 deletions(-)

diff --git a/drivers/clk/clk-devres.c b/drivers/clk/clk-devres.c
index 82ae1f26e634572b943d18b8d86267f0a69911a6..0d0fe364b66a8590d5e7c63dc6c1e70c59d53e89 100644
--- a/drivers/clk/clk-devres.c
+++ b/drivers/clk/clk-devres.c
@@ -220,6 +220,15 @@ static void devm_clk_bulk_release_all_enable(struct device *dev, void *res)
 
 int __must_check devm_clk_bulk_get_all_enable(struct device *dev,
 					      struct clk_bulk_data **clks)
+{
+	int ret = devm_clk_bulk_get_all_enabled(dev, clks);
+
+	return ret > 0 ? 0 : ret;
+}
+EXPORT_SYMBOL_GPL(devm_clk_bulk_get_all_enable);
+
+int __must_check devm_clk_bulk_get_all_enabled(struct device *dev,
+					       struct clk_bulk_data **clks)
 {
 	struct clk_bulk_devres *devres;
 	int ret;
@@ -230,25 +239,27 @@ int __must_check devm_clk_bulk_get_all_enable(struct device *dev,
 		return -ENOMEM;
 
 	ret = clk_bulk_get_all(dev, &devres->clks);
-	if (ret > 0) {
-		*clks = devres->clks;
-		devres->num_clks = ret;
-	} else {
-		devres_free(devres);
-		return ret;
-	}
+	if (ret <= 0)
+		goto err_free_devres;
+
+	*clks = devres->clks;
+	devres->num_clks = ret;
 
 	ret = clk_bulk_prepare_enable(devres->num_clks, *clks);
-	if (!ret) {
-		devres_add(dev, devres);
-	} else {
+	if (ret) {
 		clk_bulk_put_all(devres->num_clks, devres->clks);
-		devres_free(devres);
+		goto err_free_devres;
 	}
 
+	devres_add(dev, devres);
+
+	return devres->num_clks;
+
+err_free_devres:
+	devres_free(devres);
 	return ret;
 }
-EXPORT_SYMBOL_GPL(devm_clk_bulk_get_all_enable);
+EXPORT_SYMBOL_GPL(devm_clk_bulk_get_all_enabled);
 
 static int devm_clk_match(struct device *dev, void *res, void *data)
 {
diff --git a/include/linux/clk.h b/include/linux/clk.h
index 851a0f2cf42c8c1bbada49d991bc185587942155..158c5072852e36c1583dc47ca7516fcdd928fe59 100644
--- a/include/linux/clk.h
+++ b/include/linux/clk.h
@@ -511,6 +511,24 @@ int __must_check devm_clk_bulk_get_all(struct device *dev,
 int __must_check devm_clk_bulk_get_all_enable(struct device *dev,
 					      struct clk_bulk_data **clks);
 
+/**
+ * devm_clk_bulk_get_all_enabled - Get and enable all clocks of the consumer (managed)
+ * @dev: device for clock "consumer"
+ * @clks: pointer to the clk_bulk_data table of consumer
+ *
+ * Returns a positive value for the number of clocks obtained while the
+ * clock references are stored in the clk_bulk_data table in @clks field.
+ * Returns 0 if there're none and a negative value if something failed.
+ *
+ * This helper function allows drivers to get all clocks of the
+ * consumer and enables them in one operation with management.
+ * The clks will automatically be disabled and freed when the device
+ * is unbound.
+ */
+
+int __must_check devm_clk_bulk_get_all_enabled(struct device *dev,
+					       struct clk_bulk_data **clks);
+
 /**
  * devm_clk_get - lookup and obtain a managed reference to a clock producer.
  * @dev: device for clock "consumer"
@@ -1040,6 +1058,12 @@ static inline int __must_check devm_clk_bulk_get_all_enable(struct device *dev,
 	return 0;
 }
 
+static inline int __must_check devm_clk_bulk_get_all_enabled(struct device *dev,
+						struct clk_bulk_data **clks)
+{
+	return 0;
+}
+
 static inline struct clk *devm_get_clk_from_child(struct device *dev,
 				struct device_node *np, const char *con_id)
 {

-- 
2.47.0


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

* [PATCH v3 2/4] soc: mediatek: pwrap: Switch to devm_clk_bulk_get_all_enabled()
  2024-10-17 23:17 [PATCH v3 0/4] Provide devm_clk_bulk_get_all_enabled() helper Cristian Ciocaltea
  2024-10-17 23:17 ` [PATCH v3 1/4] clk: " Cristian Ciocaltea
@ 2024-10-17 23:17 ` Cristian Ciocaltea
  2024-10-17 23:17 ` [PATCH v3 3/4] PCI: exynos: " Cristian Ciocaltea
  2024-10-17 23:17 ` [PATCH v3 4/4] clk: Drop obsolete devm_clk_bulk_get_all_enable() helper Cristian Ciocaltea
  3 siblings, 0 replies; 7+ messages in thread
From: Cristian Ciocaltea @ 2024-10-17 23:17 UTC (permalink / raw)
  To: Michael Turquette, Stephen Boyd, Russell King, Matthias Brugger,
	AngeloGioacchino Del Regno, Jingoo Han, Lorenzo Pieralisi,
	Krzysztof Wilczyński, Manivannan Sadhasivam, Rob Herring,
	Bjorn Helgaas, Krzysztof Kozlowski, Alim Akhtar
  Cc: kernel, linux-clk, linux-kernel, linux-arm-kernel, linux-mediatek,
	linux-pci, linux-samsung-soc

The helper devm_clk_bulk_get_all_enable() missed to return the number of
clocks stored in the clk_bulk_data table referenced by the clks
argument and, therefore, will be dropped.

Use the newly introduced devm_clk_bulk_get_all_enabled() variant
instead, which is consistent with devm_clk_bulk_get_all() in terms of
the returned value:

 > 0 if one or more clocks have been stored
 = 0 if there are no clocks
 < 0 if an error occurred

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
---
 drivers/soc/mediatek/mtk-pmic-wrap.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/soc/mediatek/mtk-pmic-wrap.c b/drivers/soc/mediatek/mtk-pmic-wrap.c
index 9fdc0ef79202618d0bd0188d0bf53152285c6c51..0bcd8582637550c90c1c6df619077b7df7bb0048 100644
--- a/drivers/soc/mediatek/mtk-pmic-wrap.c
+++ b/drivers/soc/mediatek/mtk-pmic-wrap.c
@@ -2518,8 +2518,8 @@ static int pwrap_probe(struct platform_device *pdev)
 		}
 	}
 
-	ret = devm_clk_bulk_get_all_enable(wrp->dev, &clk);
-	if (ret)
+	ret = devm_clk_bulk_get_all_enabled(wrp->dev, &clk);
+	if (ret < 0)
 		return dev_err_probe(wrp->dev, ret,
 				     "failed to get clocks\n");
 

-- 
2.47.0


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

* [PATCH v3 3/4] PCI: exynos: Switch to devm_clk_bulk_get_all_enabled()
  2024-10-17 23:17 [PATCH v3 0/4] Provide devm_clk_bulk_get_all_enabled() helper Cristian Ciocaltea
  2024-10-17 23:17 ` [PATCH v3 1/4] clk: " Cristian Ciocaltea
  2024-10-17 23:17 ` [PATCH v3 2/4] soc: mediatek: pwrap: Switch to devm_clk_bulk_get_all_enabled() Cristian Ciocaltea
@ 2024-10-17 23:17 ` Cristian Ciocaltea
  2024-10-17 23:17 ` [PATCH v3 4/4] clk: Drop obsolete devm_clk_bulk_get_all_enable() helper Cristian Ciocaltea
  3 siblings, 0 replies; 7+ messages in thread
From: Cristian Ciocaltea @ 2024-10-17 23:17 UTC (permalink / raw)
  To: Michael Turquette, Stephen Boyd, Russell King, Matthias Brugger,
	AngeloGioacchino Del Regno, Jingoo Han, Lorenzo Pieralisi,
	Krzysztof Wilczyński, Manivannan Sadhasivam, Rob Herring,
	Bjorn Helgaas, Krzysztof Kozlowski, Alim Akhtar
  Cc: kernel, linux-clk, linux-kernel, linux-arm-kernel, linux-mediatek,
	linux-pci, linux-samsung-soc

The helper devm_clk_bulk_get_all_enable() missed to return the number of
clocks stored in the clk_bulk_data table referenced by the clks
argument and, therefore, will be dropped.

Use the newly introduced devm_clk_bulk_get_all_enabled() variant
instead, which is consistent with devm_clk_bulk_get_all() in terms of
the returned value:

 > 0 if one or more clocks have been stored
 = 0 if there are no clocks
 < 0 if an error occurred

Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
---
 drivers/pci/controller/dwc/pci-exynos.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/pci/controller/dwc/pci-exynos.c b/drivers/pci/controller/dwc/pci-exynos.c
index 6a830166d37fff5bbbc35aaa7cc1b67b03e6ec3b..ace736b025b1b7d4cdcbd51d2e9d99af29f21149 100644
--- a/drivers/pci/controller/dwc/pci-exynos.c
+++ b/drivers/pci/controller/dwc/pci-exynos.c
@@ -300,7 +300,7 @@ static int exynos_pcie_probe(struct platform_device *pdev)
 	if (IS_ERR(ep->elbi_base))
 		return PTR_ERR(ep->elbi_base);
 
-	ret = devm_clk_bulk_get_all_enable(dev, &ep->clks);
+	ret = devm_clk_bulk_get_all_enabled(dev, &ep->clks);
 	if (ret < 0)
 		return ret;
 

-- 
2.47.0


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

* [PATCH v3 4/4] clk: Drop obsolete devm_clk_bulk_get_all_enable() helper
  2024-10-17 23:17 [PATCH v3 0/4] Provide devm_clk_bulk_get_all_enabled() helper Cristian Ciocaltea
                   ` (2 preceding siblings ...)
  2024-10-17 23:17 ` [PATCH v3 3/4] PCI: exynos: " Cristian Ciocaltea
@ 2024-10-17 23:17 ` Cristian Ciocaltea
  3 siblings, 0 replies; 7+ messages in thread
From: Cristian Ciocaltea @ 2024-10-17 23:17 UTC (permalink / raw)
  To: Michael Turquette, Stephen Boyd, Russell King, Matthias Brugger,
	AngeloGioacchino Del Regno, Jingoo Han, Lorenzo Pieralisi,
	Krzysztof Wilczyński, Manivannan Sadhasivam, Rob Herring,
	Bjorn Helgaas, Krzysztof Kozlowski, Alim Akhtar
  Cc: kernel, linux-clk, linux-kernel, linux-arm-kernel, linux-mediatek,
	linux-pci, linux-samsung-soc

Commit 265b07df758a ("clk: Provide managed helper to get and enable bulk
clocks") added devm_clk_bulk_get_all_enable() function, but missed to
return the number of clocks stored in the clk_bulk_data table referenced
by the clks argument.  Without knowing the number, it's not possible to
iterate these clocks when needed, hence the argument is useless and
could have been simply removed.

A new helper devm_clk_bulk_get_all_enabled() has been introduced, which
is consistent with devm_clk_bulk_get_all() in terms of the returned
value.

Drop the obsolete function since all users switched to the new helper.

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
---
 drivers/clk/clk-devres.c |  9 ---------
 include/linux/clk.h      | 22 ----------------------
 2 files changed, 31 deletions(-)

diff --git a/drivers/clk/clk-devres.c b/drivers/clk/clk-devres.c
index 0d0fe364b66a8590d5e7c63dc6c1e70c59d53e89..14a657f336feababe8588f3eda90b9a6ae0e6297 100644
--- a/drivers/clk/clk-devres.c
+++ b/drivers/clk/clk-devres.c
@@ -218,15 +218,6 @@ static void devm_clk_bulk_release_all_enable(struct device *dev, void *res)
 	clk_bulk_put_all(devres->num_clks, devres->clks);
 }
 
-int __must_check devm_clk_bulk_get_all_enable(struct device *dev,
-					      struct clk_bulk_data **clks)
-{
-	int ret = devm_clk_bulk_get_all_enabled(dev, clks);
-
-	return ret > 0 ? 0 : ret;
-}
-EXPORT_SYMBOL_GPL(devm_clk_bulk_get_all_enable);
-
 int __must_check devm_clk_bulk_get_all_enabled(struct device *dev,
 					       struct clk_bulk_data **clks)
 {
diff --git a/include/linux/clk.h b/include/linux/clk.h
index 158c5072852e36c1583dc47ca7516fcdd928fe59..b607482ca77e987b9344c38f25ebb5c8d35c1d39 100644
--- a/include/linux/clk.h
+++ b/include/linux/clk.h
@@ -495,22 +495,6 @@ int __must_check devm_clk_bulk_get_optional(struct device *dev, int num_clks,
 int __must_check devm_clk_bulk_get_all(struct device *dev,
 				       struct clk_bulk_data **clks);
 
-/**
- * devm_clk_bulk_get_all_enable - Get and enable all clocks of the consumer (managed)
- * @dev: device for clock "consumer"
- * @clks: pointer to the clk_bulk_data table of consumer
- *
- * Returns success (0) or negative errno.
- *
- * This helper function allows drivers to get all clocks of the
- * consumer and enables them in one operation with management.
- * The clks will automatically be disabled and freed when the device
- * is unbound.
- */
-
-int __must_check devm_clk_bulk_get_all_enable(struct device *dev,
-					      struct clk_bulk_data **clks);
-
 /**
  * devm_clk_bulk_get_all_enabled - Get and enable all clocks of the consumer (managed)
  * @dev: device for clock "consumer"
@@ -1052,12 +1036,6 @@ static inline int __must_check devm_clk_bulk_get_all(struct device *dev,
 	return 0;
 }
 
-static inline int __must_check devm_clk_bulk_get_all_enable(struct device *dev,
-						struct clk_bulk_data **clks)
-{
-	return 0;
-}
-
 static inline int __must_check devm_clk_bulk_get_all_enabled(struct device *dev,
 						struct clk_bulk_data **clks)
 {

-- 
2.47.0


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

* Re: [PATCH v3 1/4] clk: Provide devm_clk_bulk_get_all_enabled() helper
  2024-10-17 23:17 ` [PATCH v3 1/4] clk: " Cristian Ciocaltea
@ 2024-10-19  5:56   ` Stephen Boyd
  2024-10-19 11:20     ` Cristian Ciocaltea
  0 siblings, 1 reply; 7+ messages in thread
From: Stephen Boyd @ 2024-10-19  5:56 UTC (permalink / raw)
  To: Alim Akhtar, AngeloGioacchino Del Regno, Bjorn Helgaas,
	Cristian Ciocaltea, Jingoo Han, Krzysztof Kozlowski,
	Krzysztof Wilczyński, Lorenzo Pieralisi,
	Manivannan Sadhasivam, Matthias Brugger, Michael Turquette,
	Rob Herring, Russell King
  Cc: kernel, linux-clk, linux-kernel, linux-arm-kernel, linux-mediatek,
	linux-pci, linux-samsung-soc

Quoting Cristian Ciocaltea (2024-10-17 16:17:29)
> diff --git a/drivers/clk/clk-devres.c b/drivers/clk/clk-devres.c
> index 82ae1f26e634572b943d18b8d86267f0a69911a6..0d0fe364b66a8590d5e7c63dc6c1e70c59d53e89 100644
> --- a/drivers/clk/clk-devres.c
> +++ b/drivers/clk/clk-devres.c
> @@ -230,25 +239,27 @@ int __must_check devm_clk_bulk_get_all_enable(struct device *dev,
>                 return -ENOMEM;
>  
>         ret = clk_bulk_get_all(dev, &devres->clks);
> -       if (ret > 0) {
> -               *clks = devres->clks;
> -               devres->num_clks = ret;
> -       } else {
> -               devres_free(devres);
> -               return ret;
> -       }
> +       if (ret <= 0)
> +               goto err_free_devres;

Please don't use goto so that the diff is minimized.

> +
> +       *clks = devres->clks;
> +       devres->num_clks = ret;
>  
>         ret = clk_bulk_prepare_enable(devres->num_clks, *clks);
> -       if (!ret) {
> -               devres_add(dev, devres);
> -       } else {
> +       if (ret) {
>                 clk_bulk_put_all(devres->num_clks, devres->clks);
> -               devres_free(devres);
> +               goto err_free_devres;

		return ret;

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

* Re: [PATCH v3 1/4] clk: Provide devm_clk_bulk_get_all_enabled() helper
  2024-10-19  5:56   ` Stephen Boyd
@ 2024-10-19 11:20     ` Cristian Ciocaltea
  0 siblings, 0 replies; 7+ messages in thread
From: Cristian Ciocaltea @ 2024-10-19 11:20 UTC (permalink / raw)
  To: Stephen Boyd, Alim Akhtar, AngeloGioacchino Del Regno,
	Bjorn Helgaas, Jingoo Han, Krzysztof Kozlowski,
	Krzysztof Wilczyński, Lorenzo Pieralisi,
	Manivannan Sadhasivam, Matthias Brugger, Michael Turquette,
	Rob Herring, Russell King
  Cc: kernel, linux-clk, linux-kernel, linux-arm-kernel, linux-mediatek,
	linux-pci, linux-samsung-soc

On 10/19/24 8:56 AM, Stephen Boyd wrote:
> Quoting Cristian Ciocaltea (2024-10-17 16:17:29)
>> diff --git a/drivers/clk/clk-devres.c b/drivers/clk/clk-devres.c
>> index 82ae1f26e634572b943d18b8d86267f0a69911a6..0d0fe364b66a8590d5e7c63dc6c1e70c59d53e89 100644
>> --- a/drivers/clk/clk-devres.c
>> +++ b/drivers/clk/clk-devres.c
>> @@ -230,25 +239,27 @@ int __must_check devm_clk_bulk_get_all_enable(struct device *dev,
>>                 return -ENOMEM;
>>  
>>         ret = clk_bulk_get_all(dev, &devres->clks);
>> -       if (ret > 0) {
>> -               *clks = devres->clks;
>> -               devres->num_clks = ret;
>> -       } else {
>> -               devres_free(devres);
>> -               return ret;
>> -       }
>> +       if (ret <= 0)
>> +               goto err_free_devres;
> 
> Please don't use goto so that the diff is minimized.

Done in v4:

https://lore.kernel.org/all/20241019-clk_bulk_ena_fix-v4-0-57f108f64e70@collabora.com/

Regards,
Cristian

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

end of thread, other threads:[~2024-10-19 11:20 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-17 23:17 [PATCH v3 0/4] Provide devm_clk_bulk_get_all_enabled() helper Cristian Ciocaltea
2024-10-17 23:17 ` [PATCH v3 1/4] clk: " Cristian Ciocaltea
2024-10-19  5:56   ` Stephen Boyd
2024-10-19 11:20     ` Cristian Ciocaltea
2024-10-17 23:17 ` [PATCH v3 2/4] soc: mediatek: pwrap: Switch to devm_clk_bulk_get_all_enabled() Cristian Ciocaltea
2024-10-17 23:17 ` [PATCH v3 3/4] PCI: exynos: " Cristian Ciocaltea
2024-10-17 23:17 ` [PATCH v3 4/4] clk: Drop obsolete devm_clk_bulk_get_all_enable() helper Cristian Ciocaltea

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox