diff options
author | Chen-Yu Tsai <wenst@chromium.org> | 2022-02-08 15:40:32 +0300 |
---|---|---|
committer | Stephen Boyd <sboyd@kernel.org> | 2022-02-17 23:12:25 +0300 |
commit | f3e690b00b86d2b2182b70433993fb038515f086 (patch) | |
tree | f1d9526b0e650333a4adb871ffc7a4d9b1bf222c /drivers/clk/mediatek/clk-mt8195-apusys_pll.c | |
parent | cd3a77a085f5449696aed6f8f350241d4be509e8 (diff) | |
download | linux-f3e690b00b86d2b2182b70433993fb038515f086.tar.xz |
clk: mediatek: mt8195: Implement error handling in probe functions
Until now the mediatek clk driver library did not have any way to
unregister clks, and so all drivers did not do proper cleanup in
their error paths.
Now that the library does have APIs to unregister clks, use them
in the error path of the probe functions for the mt8195 clk drivers
to do proper cleanup.
Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
Link: https://lore.kernel.org/r/20220208124034.414635-30-wenst@chromium.org
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Diffstat (limited to 'drivers/clk/mediatek/clk-mt8195-apusys_pll.c')
-rw-r--r-- | drivers/clk/mediatek/clk-mt8195-apusys_pll.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/clk/mediatek/clk-mt8195-apusys_pll.c b/drivers/clk/mediatek/clk-mt8195-apusys_pll.c index db449ff877d7..f489b57e325e 100644 --- a/drivers/clk/mediatek/clk-mt8195-apusys_pll.c +++ b/drivers/clk/mediatek/clk-mt8195-apusys_pll.c @@ -66,13 +66,18 @@ static int clk_mt8195_apusys_pll_probe(struct platform_device *pdev) if (!clk_data) return -ENOMEM; - mtk_clk_register_plls(node, apusys_plls, ARRAY_SIZE(apusys_plls), clk_data); - r = of_clk_add_provider(node, of_clk_src_onecell_get, clk_data); + r = mtk_clk_register_plls(node, apusys_plls, ARRAY_SIZE(apusys_plls), clk_data); if (r) goto free_apusys_pll_data; + r = of_clk_add_provider(node, of_clk_src_onecell_get, clk_data); + if (r) + goto unregister_plls; + return r; +unregister_plls: + mtk_clk_unregister_plls(apusys_plls, ARRAY_SIZE(apusys_plls), clk_data); free_apusys_pll_data: mtk_free_clk_data(clk_data); return r; |