Commit 37bfeebc authored by Rosen Penev's avatar Rosen Penev Committed by Paolo Abeni
Browse files

net: dsa: rzn1_a5psw: use devm to enable clocks



The remove function has these in the wrong order. The switch should be
unregistered last. Simpler to use devm so that the right thing is done.

Signed-off-by: default avatarRosen Penev <rosenp@gmail.com>
Link: https://patch.msgid.link/20250708014144.2514-3-rosenp@gmail.com


Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent f38ae0c6
Loading
Loading
Loading
Loading
+4 −18
Original line number Diff line number Diff line
@@ -1227,35 +1227,27 @@ static int a5psw_probe(struct platform_device *pdev)
	if (ret)
		return ret;

	a5psw->hclk = devm_clk_get(dev, "hclk");
	a5psw->hclk = devm_clk_get_enabled(dev, "hclk");
	if (IS_ERR(a5psw->hclk)) {
		dev_err(dev, "failed get hclk clock\n");
		ret = PTR_ERR(a5psw->hclk);
		goto free_pcs;
	}

	a5psw->clk = devm_clk_get(dev, "clk");
	a5psw->clk = devm_clk_get_enabled(dev, "clk");
	if (IS_ERR(a5psw->clk)) {
		dev_err(dev, "failed get clk_switch clock\n");
		ret = PTR_ERR(a5psw->clk);
		goto free_pcs;
	}

	ret = clk_prepare_enable(a5psw->clk);
	if (ret)
		goto free_pcs;

	ret = clk_prepare_enable(a5psw->hclk);
	if (ret)
		goto clk_disable;

	mdio = of_get_available_child_by_name(dev->of_node, "mdio");
	if (mdio) {
		ret = a5psw_probe_mdio(a5psw, mdio);
		of_node_put(mdio);
		if (ret) {
			dev_err(dev, "Failed to register MDIO: %d\n", ret);
			goto hclk_disable;
			goto free_pcs;
		}
	}

@@ -1269,15 +1261,11 @@ static int a5psw_probe(struct platform_device *pdev)
	ret = dsa_register_switch(ds);
	if (ret) {
		dev_err(dev, "Failed to register DSA switch: %d\n", ret);
		goto hclk_disable;
		goto free_pcs;
	}

	return 0;

hclk_disable:
	clk_disable_unprepare(a5psw->hclk);
clk_disable:
	clk_disable_unprepare(a5psw->clk);
free_pcs:
	a5psw_pcs_free(a5psw);

@@ -1293,8 +1281,6 @@ static void a5psw_remove(struct platform_device *pdev)

	dsa_unregister_switch(&a5psw->ds);
	a5psw_pcs_free(a5psw);
	clk_disable_unprepare(a5psw->hclk);
	clk_disable_unprepare(a5psw->clk);
}

static void a5psw_shutdown(struct platform_device *pdev)