Skip to content

Commit fee89dd

Browse files
michalsimekbroonie
authored andcommitted
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 8d2aaf4 ("gpio: zynq: Simplify using devm_clk_get_enabled()"). Signed-off-by: Michal Simek <[email protected]> Link: https://patch.msgid.link/90075f57ceff7cdf958d0d146f46f50661335236.1737039345.git.michal.simek@amd.com Signed-off-by: Mark Brown <[email protected]>
1 parent e436d43 commit fee89dd

File tree

1 file changed

+11
-27
lines changed

1 file changed

+11
-27
lines changed

sound/soc/xilinx/xlnx_spdif.c

Lines changed: 11 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -248,41 +248,35 @@ static int xlnx_spdif_probe(struct platform_device *pdev)
248248
if (!ctx)
249249
return -ENOMEM;
250250

251-
ctx->axi_clk = devm_clk_get(dev, "s_axi_aclk");
251+
ctx->axi_clk = devm_clk_get_enabled(dev, "s_axi_aclk");
252252
if (IS_ERR(ctx->axi_clk)) {
253253
ret = PTR_ERR(ctx->axi_clk);
254254
dev_err(dev, "failed to get s_axi_aclk(%d)\n", ret);
255255
return ret;
256256
}
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-
}
262257

263258
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+
268262
ret = of_property_read_u32(node, "xlnx,spdif-mode", &ctx->mode);
269263
if (ret < 0) {
270264
dev_err(dev, "cannot get SPDIF mode\n");
271-
goto clk_err;
265+
return ret;
272266
}
273267
if (ctx->mode) {
274268
dai_drv = &xlnx_spdif_tx_dai;
275269
} else {
276270
ret = platform_get_irq(pdev, 0);
277271
if (ret < 0)
278-
goto clk_err;
272+
return ret;
273+
279274
ret = devm_request_irq(dev, ret,
280275
xlnx_spdifrx_irq_handler,
281276
0, "XLNX_SPDIF_RX", ctx);
282277
if (ret) {
283278
dev_err(dev, "spdif rx irq request failed\n");
284-
ret = -ENODEV;
285-
goto clk_err;
279+
return -ENODEV;
286280
}
287281

288282
init_waitqueue_head(&ctx->chsts_q);
@@ -292,7 +286,7 @@ static int xlnx_spdif_probe(struct platform_device *pdev)
292286
ret = of_property_read_u32(node, "xlnx,aud_clk_i", &ctx->aclk);
293287
if (ret < 0) {
294288
dev_err(dev, "cannot get aud_clk_i value\n");
295-
goto clk_err;
289+
return ret;
296290
}
297291

298292
dev_set_drvdata(dev, ctx);
@@ -301,22 +295,13 @@ static int xlnx_spdif_probe(struct platform_device *pdev)
301295
dai_drv, 1);
302296
if (ret) {
303297
dev_err(dev, "SPDIF component registration failed\n");
304-
goto clk_err;
298+
return ret;
305299
}
306300

307301
writel(XSPDIF_SOFT_RESET_VALUE, ctx->base + XSPDIF_SOFT_RESET_REG);
308302
dev_info(dev, "%s DAI registered\n", dai_drv->name);
309303

310-
clk_err:
311-
clk_disable_unprepare(ctx->axi_clk);
312-
return ret;
313-
}
314-
315-
static void xlnx_spdif_remove(struct platform_device *pdev)
316-
{
317-
struct spdif_dev_data *ctx = dev_get_drvdata(&pdev->dev);
318-
319-
clk_disable_unprepare(ctx->axi_clk);
304+
return 0;
320305
}
321306

322307
static struct platform_driver xlnx_spdif_driver = {
@@ -325,7 +310,6 @@ static struct platform_driver xlnx_spdif_driver = {
325310
.of_match_table = xlnx_spdif_of_match,
326311
},
327312
.probe = xlnx_spdif_probe,
328-
.remove = xlnx_spdif_remove,
329313
};
330314
module_platform_driver(xlnx_spdif_driver);
331315

0 commit comments

Comments
 (0)