diff options
author | Bartosz Golaszewski <bartosz.golaszewski@linaro.org> | 2024-08-09 16:15:55 +0200 |
---|---|---|
committer | Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> | 2024-08-12 12:32:10 +0200 |
commit | f6ae541cc3355fe872d4c942dc47d67877951d17 (patch) | |
tree | 54b966265e703976a46da699f8bb813feaca72fd /drivers/memory | |
parent | 8c38617722bdf57a90e6c77ed9ee5ebb60958d2a (diff) | |
download | lwn-f6ae541cc3355fe872d4c942dc47d67877951d17.tar.gz lwn-f6ae541cc3355fe872d4c942dc47d67877951d17.zip |
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: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Link: https://lore.kernel.org/r/20240809-ti-aemif-v1-2-27b1e5001390@linaro.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Diffstat (limited to 'drivers/memory')
-rw-r--r-- | drivers/memory/ti-aemif.c | 29 |
1 files changed, 6 insertions, 23 deletions
diff --git a/drivers/memory/ti-aemif.c b/drivers/memory/ti-aemif.c index b92cab455cbb..fbe0786f5ac4 100644 --- a/drivers/memory/ti-aemif.c +++ b/drivers/memory/ti-aemif.c @@ -338,26 +338,20 @@ static int aemif_probe(struct platform_device *pdev) 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)) { dev_err(dev, "cannot get clock 'aemif'\n"); 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; if (np && of_device_is_compatible(np, "ti,da850-aemif")) aemif->cs_offset = 2; aemif->base = devm_platform_ioremap_resource(pdev, 0); - if (IS_ERR(aemif->base)) { - ret = PTR_ERR(aemif->base); - goto error; - } + if (IS_ERR(aemif->base)) + return PTR_ERR(aemif->base); if (np) { /* @@ -370,7 +364,7 @@ static int aemif_probe(struct platform_device *pdev) ret = of_aemif_parse_abus_config(pdev, child_np); if (ret < 0) { of_node_put(child_np); - goto error; + return ret; } } } @@ -380,7 +374,7 @@ static int aemif_probe(struct platform_device *pdev) if (ret < 0) { dev_err(dev, "Error configuring chip select %d\n", aemif->cs_data[i].cs); - goto error; + return ret; } } @@ -393,27 +387,16 @@ static int aemif_probe(struct platform_device *pdev) ret = of_platform_populate(child_np, NULL, NULL, dev); if (ret < 0) { of_node_put(child_np); - goto error; + return ret; } } } 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 = { .probe = aemif_probe, - .remove_new = aemif_remove, .driver = { .name = "ti-aemif", .of_match_table = of_match_ptr(aemif_of_match), |