All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next v1 1/4] net: mvpp2: Put fwnode in error case during ->probe()
@ 2021-05-10  9:58 Andy Shevchenko
  2021-05-10  9:58 ` [PATCH net-next v1 2/4] net: mvpp2: Use device_get_match_data() helper Andy Shevchenko
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Andy Shevchenko @ 2021-05-10  9:58 UTC (permalink / raw)
  To: David S. Miller, netdev, linux-kernel
  Cc: Marcin Wojtas, Russell King, Jakub Kicinski, Andy Shevchenko

In each iteration fwnode_for_each_available_child_node() bumps a reference
counting of a loop variable followed by dropping in on a next iteration,

Since in error case the loop is broken, we have to drop a reference count
by ourselves. Do it for port_fwnode in error case during ->probe().

Fixes: 248122212f68 ("net: mvpp2: use device_*/fwnode_* APIs instead of of_*")
Cc: Marcin Wojtas <mw@semihalf.com>
Signed-off-by: Andy Shevchenko <andy.shevchenko@gmail.com>
---
 drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
index ec706d614cac..b48c08829a31 100644
--- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
+++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
@@ -7552,6 +7552,8 @@ static int mvpp2_probe(struct platform_device *pdev)
 	return 0;
 
 err_port_probe:
+	fwnode_handle_put(port_fwnode);
+
 	i = 0;
 	fwnode_for_each_available_child_node(fwnode, port_fwnode) {
 		if (priv->port_list[i])
-- 
2.31.1


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

* [PATCH net-next v1 2/4] net: mvpp2: Use device_get_match_data() helper
  2021-05-10  9:58 [PATCH net-next v1 1/4] net: mvpp2: Put fwnode in error case during ->probe() Andy Shevchenko
@ 2021-05-10  9:58 ` Andy Shevchenko
  2021-05-10  9:58 ` [PATCH net-next v1 3/4] net: mvpp2: Use devm_clk_get_optional() Andy Shevchenko
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Andy Shevchenko @ 2021-05-10  9:58 UTC (permalink / raw)
  To: David S. Miller, netdev, linux-kernel
  Cc: Marcin Wojtas, Russell King, Jakub Kicinski, Andy Shevchenko,
	Andy Shevchenko

From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

Use the device_get_match_data() helper instead of open coding.

Signed-off-by: Andy Shevchenko <andy.shevchenko@gmail.com>
---
 drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 12 +-----------
 1 file changed, 1 insertion(+), 11 deletions(-)

diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
index b48c08829a31..6bfad75c4087 100644
--- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
+++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
@@ -7311,7 +7311,6 @@ static int mvpp2_get_sram(struct platform_device *pdev,
 
 static int mvpp2_probe(struct platform_device *pdev)
 {
-	const struct acpi_device_id *acpi_id;
 	struct fwnode_handle *fwnode = pdev->dev.fwnode;
 	struct fwnode_handle *port_fwnode;
 	struct mvpp2 *priv;
@@ -7324,16 +7323,7 @@ static int mvpp2_probe(struct platform_device *pdev)
 	if (!priv)
 		return -ENOMEM;
 
-	if (has_acpi_companion(&pdev->dev)) {
-		acpi_id = acpi_match_device(pdev->dev.driver->acpi_match_table,
-					    &pdev->dev);
-		if (!acpi_id)
-			return -EINVAL;
-		priv->hw_version = (unsigned long)acpi_id->driver_data;
-	} else {
-		priv->hw_version =
-			(unsigned long)of_device_get_match_data(&pdev->dev);
-	}
+	priv->hw_version = (unsigned long)device_get_match_data(&pdev->dev);
 
 	/* multi queue mode isn't supported on PPV2.1, fallback to single
 	 * mode
-- 
2.31.1


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

* [PATCH net-next v1 3/4] net: mvpp2: Use devm_clk_get_optional()
  2021-05-10  9:58 [PATCH net-next v1 1/4] net: mvpp2: Put fwnode in error case during ->probe() Andy Shevchenko
  2021-05-10  9:58 ` [PATCH net-next v1 2/4] net: mvpp2: Use device_get_match_data() helper Andy Shevchenko
@ 2021-05-10  9:58 ` Andy Shevchenko
  2021-05-10  9:58 ` [PATCH net-next v1 4/4] net: mvpp2: Unshadow error code of device_property_read_u32() Andy Shevchenko
  2021-05-10 22:20 ` [PATCH net-next v1 1/4] net: mvpp2: Put fwnode in error case during ->probe() patchwork-bot+netdevbpf
  3 siblings, 0 replies; 5+ messages in thread
From: Andy Shevchenko @ 2021-05-10  9:58 UTC (permalink / raw)
  To: David S. Miller, netdev, linux-kernel
  Cc: Marcin Wojtas, Russell King, Jakub Kicinski, Andy Shevchenko,
	Andy Shevchenko

From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

Replace open coded variants of devm_clk_get_optional().

Signed-off-by: Andy Shevchenko <andy.shevchenko@gmail.com>
---
 .../net/ethernet/marvell/mvpp2/mvpp2_main.c   | 34 ++++++++-----------
 1 file changed, 15 insertions(+), 19 deletions(-)

diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
index 6bfad75c4087..b6b7ba891e71 100644
--- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
+++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
@@ -7435,28 +7435,27 @@ static int mvpp2_probe(struct platform_device *pdev)
 			if (err < 0)
 				goto err_gop_clk;
 
-			priv->mg_core_clk = devm_clk_get(&pdev->dev, "mg_core_clk");
+			priv->mg_core_clk = devm_clk_get_optional(&pdev->dev, "mg_core_clk");
 			if (IS_ERR(priv->mg_core_clk)) {
-				priv->mg_core_clk = NULL;
-			} else {
-				err = clk_prepare_enable(priv->mg_core_clk);
-				if (err < 0)
-					goto err_mg_clk;
+				err = PTR_ERR(priv->mg_core_clk);
+				goto err_mg_clk;
 			}
+
+			err = clk_prepare_enable(priv->mg_core_clk);
+			if (err < 0)
+				goto err_mg_clk;
 		}
 
-		priv->axi_clk = devm_clk_get(&pdev->dev, "axi_clk");
+		priv->axi_clk = devm_clk_get_optional(&pdev->dev, "axi_clk");
 		if (IS_ERR(priv->axi_clk)) {
 			err = PTR_ERR(priv->axi_clk);
-			if (err == -EPROBE_DEFER)
-				goto err_mg_core_clk;
-			priv->axi_clk = NULL;
-		} else {
-			err = clk_prepare_enable(priv->axi_clk);
-			if (err < 0)
-				goto err_mg_core_clk;
+			goto err_mg_core_clk;
 		}
 
+		err = clk_prepare_enable(priv->axi_clk);
+		if (err < 0)
+			goto err_mg_core_clk;
+
 		/* Get system's tclk rate */
 		priv->tclk = clk_get_rate(priv->pp_clk);
 	} else if (device_property_read_u32(&pdev->dev, "clock-frequency",
@@ -7552,13 +7551,10 @@ static int mvpp2_probe(struct platform_device *pdev)
 	}
 err_axi_clk:
 	clk_disable_unprepare(priv->axi_clk);
-
 err_mg_core_clk:
-	if (priv->hw_version >= MVPP22)
-		clk_disable_unprepare(priv->mg_core_clk);
+	clk_disable_unprepare(priv->mg_core_clk);
 err_mg_clk:
-	if (priv->hw_version >= MVPP22)
-		clk_disable_unprepare(priv->mg_clk);
+	clk_disable_unprepare(priv->mg_clk);
 err_gop_clk:
 	clk_disable_unprepare(priv->gop_clk);
 err_pp_clk:
-- 
2.31.1


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

* [PATCH net-next v1 4/4] net: mvpp2: Unshadow error code of device_property_read_u32()
  2021-05-10  9:58 [PATCH net-next v1 1/4] net: mvpp2: Put fwnode in error case during ->probe() Andy Shevchenko
  2021-05-10  9:58 ` [PATCH net-next v1 2/4] net: mvpp2: Use device_get_match_data() helper Andy Shevchenko
  2021-05-10  9:58 ` [PATCH net-next v1 3/4] net: mvpp2: Use devm_clk_get_optional() Andy Shevchenko
@ 2021-05-10  9:58 ` Andy Shevchenko
  2021-05-10 22:20 ` [PATCH net-next v1 1/4] net: mvpp2: Put fwnode in error case during ->probe() patchwork-bot+netdevbpf
  3 siblings, 0 replies; 5+ messages in thread
From: Andy Shevchenko @ 2021-05-10  9:58 UTC (permalink / raw)
  To: David S. Miller, netdev, linux-kernel
  Cc: Marcin Wojtas, Russell King, Jakub Kicinski, Andy Shevchenko

device_property_read_u32() may return different error codes.
Propagate it to the caller.

Signed-off-by: Andy Shevchenko <andy.shevchenko@gmail.com>
---
 drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
index b6b7ba891e71..9f464e44ae1b 100644
--- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
+++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
@@ -7458,10 +7458,12 @@ static int mvpp2_probe(struct platform_device *pdev)
 
 		/* Get system's tclk rate */
 		priv->tclk = clk_get_rate(priv->pp_clk);
-	} else if (device_property_read_u32(&pdev->dev, "clock-frequency",
-					    &priv->tclk)) {
-		dev_err(&pdev->dev, "missing clock-frequency value\n");
-		return -EINVAL;
+	} else {
+		err = device_property_read_u32(&pdev->dev, "clock-frequency", &priv->tclk);
+		if (err) {
+			dev_err(&pdev->dev, "missing clock-frequency value\n");
+			return err;
+		}
 	}
 
 	if (priv->hw_version >= MVPP22) {
-- 
2.31.1


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

* Re: [PATCH net-next v1 1/4] net: mvpp2: Put fwnode in error case during ->probe()
  2021-05-10  9:58 [PATCH net-next v1 1/4] net: mvpp2: Put fwnode in error case during ->probe() Andy Shevchenko
                   ` (2 preceding siblings ...)
  2021-05-10  9:58 ` [PATCH net-next v1 4/4] net: mvpp2: Unshadow error code of device_property_read_u32() Andy Shevchenko
@ 2021-05-10 22:20 ` patchwork-bot+netdevbpf
  3 siblings, 0 replies; 5+ messages in thread
From: patchwork-bot+netdevbpf @ 2021-05-10 22:20 UTC (permalink / raw)
  To: Andy Shevchenko; +Cc: davem, netdev, linux-kernel, mw, linux, kuba

Hello:

This series was applied to netdev/net-next.git (refs/heads/master):

On Mon, 10 May 2021 12:58:05 +0300 you wrote:
> In each iteration fwnode_for_each_available_child_node() bumps a reference
> counting of a loop variable followed by dropping in on a next iteration,
> 
> Since in error case the loop is broken, we have to drop a reference count
> by ourselves. Do it for port_fwnode in error case during ->probe().
> 
> Fixes: 248122212f68 ("net: mvpp2: use device_*/fwnode_* APIs instead of of_*")
> Cc: Marcin Wojtas <mw@semihalf.com>
> Signed-off-by: Andy Shevchenko <andy.shevchenko@gmail.com>
> 
> [...]

Here is the summary with links:
  - [net-next,v1,1/4] net: mvpp2: Put fwnode in error case during ->probe()
    https://git.kernel.org/netdev/net-next/c/71f0891c84df
  - [net-next,v1,2/4] net: mvpp2: Use device_get_match_data() helper
    https://git.kernel.org/netdev/net-next/c/692b82c57f71
  - [net-next,v1,3/4] net: mvpp2: Use devm_clk_get_optional()
    https://git.kernel.org/netdev/net-next/c/cf3399b731d3
  - [net-next,v1,4/4] net: mvpp2: Unshadow error code of device_property_read_u32()
    https://git.kernel.org/netdev/net-next/c/584525554fd6

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



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

end of thread, other threads:[~2021-05-10 22:20 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-10  9:58 [PATCH net-next v1 1/4] net: mvpp2: Put fwnode in error case during ->probe() Andy Shevchenko
2021-05-10  9:58 ` [PATCH net-next v1 2/4] net: mvpp2: Use device_get_match_data() helper Andy Shevchenko
2021-05-10  9:58 ` [PATCH net-next v1 3/4] net: mvpp2: Use devm_clk_get_optional() Andy Shevchenko
2021-05-10  9:58 ` [PATCH net-next v1 4/4] net: mvpp2: Unshadow error code of device_property_read_u32() Andy Shevchenko
2021-05-10 22:20 ` [PATCH net-next v1 1/4] net: mvpp2: Put fwnode in error case during ->probe() patchwork-bot+netdevbpf

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.