diff --git a/sound/soc/rockchip/rockchip_pdm.c b/sound/soc/rockchip/rockchip_pdm.c index ecae4d2ff25e..9f840069cc2a 100644 --- a/sound/soc/rockchip/rockchip_pdm.c +++ b/sound/soc/rockchip/rockchip_pdm.c @@ -994,6 +994,22 @@ static int rockchip_pdm_parse_quirks(struct rk_pdm_dev *pdm) return ret; } +static int rockchip_pdm_register_platform(struct device *dev) +{ + int ret = 0; + + if (device_property_read_bool(dev, "rockchip,no-dmaengine")) { + dev_info(dev, "Used for Multi-DAI\n"); + return 0; + } + + ret = devm_snd_dmaengine_pcm_register(dev, NULL, 0); + if (ret) + dev_err(dev, "Could not register PCM\n"); + + return ret; +} + static int rockchip_pdm_probe(struct platform_device *pdev) { struct device_node *node = pdev->dev.of_node; @@ -1096,6 +1112,10 @@ static int rockchip_pdm_probe(struct platform_device *pdev) goto err_pm_disable; } + ret = rockchip_pdm_register_platform(&pdev->dev); + if (ret) + goto err_suspend; + ret = devm_snd_soc_register_component(&pdev->dev, &rockchip_pdm_component, &rockchip_pdm_dai, 1); @@ -1105,17 +1125,6 @@ static int rockchip_pdm_probe(struct platform_device *pdev) goto err_suspend; } - if (of_property_read_bool(node, "rockchip,no-dmaengine")) { - dev_info(&pdev->dev, "Used for Multi-DAI\n"); - return 0; - } - - ret = devm_snd_dmaengine_pcm_register(&pdev->dev, NULL, 0); - if (ret) { - dev_err(&pdev->dev, "could not register pcm: %d\n", ret); - goto err_suspend; - } - clk_disable_unprepare(pdm->hclk); return 0;