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

Configure Feed

Select the types of activity you want to include in your feed.

ASoC: xilinx: xlnx_spdif: Simpify using devm_clk_get_enabled()

Clock handling can be very simlified with using devm_clk_get_enabled() as
was done by commit 8d2aaf4382b7 ("gpio: zynq: Simplify using
devm_clk_get_enabled()").

Signed-off-by: Michal Simek <michal.simek@amd.com>
Link: https://patch.msgid.link/90075f57ceff7cdf958d0d146f46f50661335236.1737039345.git.michal.simek@amd.com
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Michal Simek and committed by
Mark Brown
fee89ddd e436d435

+11 -27
+11 -27
sound/soc/xilinx/xlnx_spdif.c
··· 248 248 if (!ctx) 249 249 return -ENOMEM; 250 250 251 - ctx->axi_clk = devm_clk_get(dev, "s_axi_aclk"); 251 + ctx->axi_clk = devm_clk_get_enabled(dev, "s_axi_aclk"); 252 252 if (IS_ERR(ctx->axi_clk)) { 253 253 ret = PTR_ERR(ctx->axi_clk); 254 254 dev_err(dev, "failed to get s_axi_aclk(%d)\n", ret); 255 255 return ret; 256 256 } 257 - ret = clk_prepare_enable(ctx->axi_clk); 258 - if (ret) { 259 - dev_err(dev, "failed to enable s_axi_aclk(%d)\n", ret); 260 - return ret; 261 - } 262 257 263 258 ctx->base = devm_platform_ioremap_resource(pdev, 0); 264 - if (IS_ERR(ctx->base)) { 265 - ret = PTR_ERR(ctx->base); 266 - goto clk_err; 267 - } 259 + if (IS_ERR(ctx->base)) 260 + return PTR_ERR(ctx->base); 261 + 268 262 ret = of_property_read_u32(node, "xlnx,spdif-mode", &ctx->mode); 269 263 if (ret < 0) { 270 264 dev_err(dev, "cannot get SPDIF mode\n"); 271 - goto clk_err; 265 + return ret; 272 266 } 273 267 if (ctx->mode) { 274 268 dai_drv = &xlnx_spdif_tx_dai; 275 269 } else { 276 270 ret = platform_get_irq(pdev, 0); 277 271 if (ret < 0) 278 - goto clk_err; 272 + return ret; 273 + 279 274 ret = devm_request_irq(dev, ret, 280 275 xlnx_spdifrx_irq_handler, 281 276 0, "XLNX_SPDIF_RX", ctx); 282 277 if (ret) { 283 278 dev_err(dev, "spdif rx irq request failed\n"); 284 - ret = -ENODEV; 285 - goto clk_err; 279 + return -ENODEV; 286 280 } 287 281 288 282 init_waitqueue_head(&ctx->chsts_q); ··· 286 292 ret = of_property_read_u32(node, "xlnx,aud_clk_i", &ctx->aclk); 287 293 if (ret < 0) { 288 294 dev_err(dev, "cannot get aud_clk_i value\n"); 289 - goto clk_err; 295 + return ret; 290 296 } 291 297 292 298 dev_set_drvdata(dev, ctx); ··· 295 301 dai_drv, 1); 296 302 if (ret) { 297 303 dev_err(dev, "SPDIF component registration failed\n"); 298 - goto clk_err; 304 + return ret; 299 305 } 300 306 301 307 writel(XSPDIF_SOFT_RESET_VALUE, ctx->base + XSPDIF_SOFT_RESET_REG); 302 308 dev_info(dev, "%s DAI registered\n", dai_drv->name); 303 309 304 - clk_err: 305 - clk_disable_unprepare(ctx->axi_clk); 306 - return ret; 307 - } 308 - 309 - static void xlnx_spdif_remove(struct platform_device *pdev) 310 - { 311 - struct spdif_dev_data *ctx = dev_get_drvdata(&pdev->dev); 312 - 313 - clk_disable_unprepare(ctx->axi_clk); 310 + return 0; 314 311 } 315 312 316 313 static struct platform_driver xlnx_spdif_driver = { ··· 310 325 .of_match_table = xlnx_spdif_of_match, 311 326 }, 312 327 .probe = xlnx_spdif_probe, 313 - .remove = xlnx_spdif_remove, 314 328 }; 315 329 module_platform_driver(xlnx_spdif_driver); 316 330