mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-12 09:20:50 +08:00
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: Rosen Penev <rosenp@gmail.com> Link: https://patch.msgid.link/20250708014144.2514-3-rosenp@gmail.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user