Commit f6ae541c authored by Bartosz Golaszewski's avatar Bartosz Golaszewski Committed by Krzysztof Kozlowski

memory: ti-aemif: use devm_clk_get_enabled() and shrink the code

Remove several lines of code and a jump label by using the managed
variant of clk_get() that also prepares and enables the clock (and
disables and unprepares it on driver detach).
Signed-off-by: default avatarBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Link: https://lore.kernel.org/r/20240809-ti-aemif-v1-2-27b1e5001390@linaro.orgSigned-off-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
parent 8c386177
...@@ -338,26 +338,20 @@ static int aemif_probe(struct platform_device *pdev) ...@@ -338,26 +338,20 @@ static int aemif_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, aemif); platform_set_drvdata(pdev, aemif);
aemif->clk = devm_clk_get(dev, NULL); aemif->clk = devm_clk_get_enabled(dev, NULL);
if (IS_ERR(aemif->clk)) { if (IS_ERR(aemif->clk)) {
dev_err(dev, "cannot get clock 'aemif'\n"); dev_err(dev, "cannot get clock 'aemif'\n");
return PTR_ERR(aemif->clk); return PTR_ERR(aemif->clk);
} }
ret = clk_prepare_enable(aemif->clk);
if (ret)
return ret;
aemif->clk_rate = clk_get_rate(aemif->clk) / MSEC_PER_SEC; aemif->clk_rate = clk_get_rate(aemif->clk) / MSEC_PER_SEC;
if (np && of_device_is_compatible(np, "ti,da850-aemif")) if (np && of_device_is_compatible(np, "ti,da850-aemif"))
aemif->cs_offset = 2; aemif->cs_offset = 2;
aemif->base = devm_platform_ioremap_resource(pdev, 0); aemif->base = devm_platform_ioremap_resource(pdev, 0);
if (IS_ERR(aemif->base)) { if (IS_ERR(aemif->base))
ret = PTR_ERR(aemif->base); return PTR_ERR(aemif->base);
goto error;
}
if (np) { if (np) {
/* /*
...@@ -370,7 +364,7 @@ static int aemif_probe(struct platform_device *pdev) ...@@ -370,7 +364,7 @@ static int aemif_probe(struct platform_device *pdev)
ret = of_aemif_parse_abus_config(pdev, child_np); ret = of_aemif_parse_abus_config(pdev, child_np);
if (ret < 0) { if (ret < 0) {
of_node_put(child_np); of_node_put(child_np);
goto error; return ret;
} }
} }
} }
...@@ -380,7 +374,7 @@ static int aemif_probe(struct platform_device *pdev) ...@@ -380,7 +374,7 @@ static int aemif_probe(struct platform_device *pdev)
if (ret < 0) { if (ret < 0) {
dev_err(dev, "Error configuring chip select %d\n", dev_err(dev, "Error configuring chip select %d\n",
aemif->cs_data[i].cs); aemif->cs_data[i].cs);
goto error; return ret;
} }
} }
...@@ -393,27 +387,16 @@ static int aemif_probe(struct platform_device *pdev) ...@@ -393,27 +387,16 @@ static int aemif_probe(struct platform_device *pdev)
ret = of_platform_populate(child_np, NULL, NULL, dev); ret = of_platform_populate(child_np, NULL, NULL, dev);
if (ret < 0) { if (ret < 0) {
of_node_put(child_np); of_node_put(child_np);
goto error; return ret;
} }
} }
} }
return 0; return 0;
error:
clk_disable_unprepare(aemif->clk);
return ret;
}
static void aemif_remove(struct platform_device *pdev)
{
struct aemif_device *aemif = platform_get_drvdata(pdev);
clk_disable_unprepare(aemif->clk);
} }
static struct platform_driver aemif_driver = { static struct platform_driver aemif_driver = {
.probe = aemif_probe, .probe = aemif_probe,
.remove_new = aemif_remove,
.driver = { .driver = {
.name = "ti-aemif", .name = "ti-aemif",
.of_match_table = of_match_ptr(aemif_of_match), .of_match_table = of_match_ptr(aemif_of_match),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment