History

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()").

Michal Simek committed 1 year ago

Commit fee89dd1 parent e436d431 file · +11 −27Browse files

Unified · Split

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

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t