Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

PM / devfreq: exynos: Use Use devm_clk_get_enabled() helpers

The devm_clk_get_enabled() helpers:
- call devm_clk_get()
- call clk_prepare_enable() and register what is needed in order to
call clk_disable_unprepare() when needed, as a managed resource.

This simplifies the code and avoids the calls to clk_disable_unprepare().

While at it, use dev_err_probe consistently, and use its return value
to return the error code.

Link: https://lore.kernel.org/lkml/20240510094034.12493-1-linux.amoon@gmail.com/
Signed-off-by: Anand Moon <linux.amoon@gmail.com>
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>

authored by

Anand Moon and committed by
Chanwoo Choi
629277b7 53e4e2b5

+5 -17
+5 -17
drivers/devfreq/exynos-bus.c
··· 160 160 platform_device_unregister(bus->icc_pdev); 161 161 162 162 dev_pm_opp_of_remove_table(dev); 163 - clk_disable_unprepare(bus->clk); 164 163 dev_pm_opp_put_regulators(bus->opp_token); 165 164 } 166 165 ··· 170 171 platform_device_unregister(bus->icc_pdev); 171 172 172 173 dev_pm_opp_of_remove_table(dev); 173 - clk_disable_unprepare(bus->clk); 174 174 } 175 175 176 176 static int exynos_bus_parent_parse_of(struct device_node *np, ··· 245 247 int ret; 246 248 247 249 /* Get the clock to provide each bus with source clock */ 248 - bus->clk = devm_clk_get(dev, "bus"); 249 - if (IS_ERR(bus->clk)) { 250 - dev_err(dev, "failed to get bus clock\n"); 251 - return PTR_ERR(bus->clk); 252 - } 253 - 254 - ret = clk_prepare_enable(bus->clk); 255 - if (ret < 0) { 256 - dev_err(dev, "failed to get enable clock\n"); 257 - return ret; 258 - } 250 + bus->clk = devm_clk_get_enabled(dev, "bus"); 251 + if (IS_ERR(bus->clk)) 252 + return dev_err_probe(dev, PTR_ERR(bus->clk), 253 + "failed to get bus clock\n"); 259 254 260 255 /* Get the freq and voltage from OPP table to scale the bus freq */ 261 256 ret = dev_pm_opp_of_add_table(dev); 262 257 if (ret < 0) { 263 258 dev_err(dev, "failed to get OPP table\n"); 264 - goto err_clk; 259 + return ret; 265 260 } 266 261 267 262 rate = clk_get_rate(bus->clk); ··· 272 281 273 282 err_opp: 274 283 dev_pm_opp_of_remove_table(dev); 275 - err_clk: 276 - clk_disable_unprepare(bus->clk); 277 284 278 285 return ret; 279 286 } ··· 442 453 443 454 err: 444 455 dev_pm_opp_of_remove_table(dev); 445 - clk_disable_unprepare(bus->clk); 446 456 err_reg: 447 457 dev_pm_opp_put_regulators(bus->opp_token); 448 458