axg-spdifout.c (4b4193256c8d3bc3a5397b5cd9494c2ad386317d) | axg-spdifout.c (2ff4e003e8e105fb65c682c876a5cb0e00f854bf) |
---|---|
1// SPDX-License-Identifier: (GPL-2.0 OR MIT) 2// 3// Copyright (c) 2018 BayLibre, SAS. 4// Author: Jerome Brunet <jbrunet@baylibre.com> 5 6#include <linux/clk.h> 7#include <linux/module.h> 8#include <linux/of_platform.h> --- 389 unchanged lines hidden (view full) --- 398}; 399MODULE_DEVICE_TABLE(of, axg_spdifout_of_match); 400 401static int axg_spdifout_probe(struct platform_device *pdev) 402{ 403 struct device *dev = &pdev->dev; 404 struct axg_spdifout *priv; 405 void __iomem *regs; | 1// SPDX-License-Identifier: (GPL-2.0 OR MIT) 2// 3// Copyright (c) 2018 BayLibre, SAS. 4// Author: Jerome Brunet <jbrunet@baylibre.com> 5 6#include <linux/clk.h> 7#include <linux/module.h> 8#include <linux/of_platform.h> --- 389 unchanged lines hidden (view full) --- 398}; 399MODULE_DEVICE_TABLE(of, axg_spdifout_of_match); 400 401static int axg_spdifout_probe(struct platform_device *pdev) 402{ 403 struct device *dev = &pdev->dev; 404 struct axg_spdifout *priv; 405 void __iomem *regs; |
406 int ret; | |
407 408 priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); 409 if (!priv) 410 return -ENOMEM; 411 platform_set_drvdata(pdev, priv); 412 413 regs = devm_platform_ioremap_resource(pdev, 0); 414 if (IS_ERR(regs)) 415 return PTR_ERR(regs); 416 417 priv->map = devm_regmap_init_mmio(dev, regs, &axg_spdifout_regmap_cfg); 418 if (IS_ERR(priv->map)) { 419 dev_err(dev, "failed to init regmap: %ld\n", 420 PTR_ERR(priv->map)); 421 return PTR_ERR(priv->map); 422 } 423 424 priv->pclk = devm_clk_get(dev, "pclk"); | 406 407 priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); 408 if (!priv) 409 return -ENOMEM; 410 platform_set_drvdata(pdev, priv); 411 412 regs = devm_platform_ioremap_resource(pdev, 0); 413 if (IS_ERR(regs)) 414 return PTR_ERR(regs); 415 416 priv->map = devm_regmap_init_mmio(dev, regs, &axg_spdifout_regmap_cfg); 417 if (IS_ERR(priv->map)) { 418 dev_err(dev, "failed to init regmap: %ld\n", 419 PTR_ERR(priv->map)); 420 return PTR_ERR(priv->map); 421 } 422 423 priv->pclk = devm_clk_get(dev, "pclk"); |
425 if (IS_ERR(priv->pclk)) { 426 ret = PTR_ERR(priv->pclk); 427 if (ret != -EPROBE_DEFER) 428 dev_err(dev, "failed to get pclk: %d\n", ret); 429 return ret; 430 } | 424 if (IS_ERR(priv->pclk)) 425 return dev_err_probe(dev, PTR_ERR(priv->pclk), "failed to get pclk\n"); |
431 432 priv->mclk = devm_clk_get(dev, "mclk"); | 426 427 priv->mclk = devm_clk_get(dev, "mclk"); |
433 if (IS_ERR(priv->mclk)) { 434 ret = PTR_ERR(priv->mclk); 435 if (ret != -EPROBE_DEFER) 436 dev_err(dev, "failed to get mclk: %d\n", ret); 437 return ret; 438 } | 428 if (IS_ERR(priv->mclk)) 429 return dev_err_probe(dev, PTR_ERR(priv->mclk), "failed to get mclk\n"); |
439 440 return devm_snd_soc_register_component(dev, &axg_spdifout_component_drv, 441 axg_spdifout_dai_drv, ARRAY_SIZE(axg_spdifout_dai_drv)); 442} 443 444static struct platform_driver axg_spdifout_pdrv = { 445 .probe = axg_spdifout_probe, 446 .driver = { 447 .name = "axg-spdifout", 448 .of_match_table = axg_spdifout_of_match, 449 }, 450}; 451module_platform_driver(axg_spdifout_pdrv); 452 453MODULE_DESCRIPTION("Amlogic AXG SPDIF Output driver"); 454MODULE_AUTHOR("Jerome Brunet <jbrunet@baylibre.com>"); 455MODULE_LICENSE("GPL v2"); | 430 431 return devm_snd_soc_register_component(dev, &axg_spdifout_component_drv, 432 axg_spdifout_dai_drv, ARRAY_SIZE(axg_spdifout_dai_drv)); 433} 434 435static struct platform_driver axg_spdifout_pdrv = { 436 .probe = axg_spdifout_probe, 437 .driver = { 438 .name = "axg-spdifout", 439 .of_match_table = axg_spdifout_of_match, 440 }, 441}; 442module_platform_driver(axg_spdifout_pdrv); 443 444MODULE_DESCRIPTION("Amlogic AXG SPDIF Output driver"); 445MODULE_AUTHOR("Jerome Brunet <jbrunet@baylibre.com>"); 446MODULE_LICENSE("GPL v2"); |