mutex_init(&dmic->mutex);
- dmic->fclk = clk_get(dmic->dev, "fck");
+ dmic->fclk = devm_clk_get(dmic->dev, "fck");
if (IS_ERR(dmic->fclk)) {
dev_err(dmic->dev, "cant get fck\n");
return -ENODEV;
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "dma");
if (!res) {
dev_err(dmic->dev, "invalid dma memory resource\n");
- ret = -ENODEV;
- goto err_put_clk;
+ return -ENODEV;
}
dmic->dma_data.addr = res->start + OMAP_DMIC_DATA_REG;
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "mpu");
dmic->io_base = devm_ioremap_resource(&pdev->dev, res);
- if (IS_ERR(dmic->io_base)) {
- ret = PTR_ERR(dmic->io_base);
- goto err_put_clk;
- }
+ if (IS_ERR(dmic->io_base))
+ return PTR_ERR(dmic->io_base);
ret = devm_snd_soc_register_component(&pdev->dev,
&omap_dmic_component,
&omap_dmic_dai, 1);
if (ret)
- goto err_put_clk;
+ return ret;
ret = omap_pcm_platform_register(&pdev->dev);
if (ret)
- goto err_put_clk;
-
- return 0;
-
-err_put_clk:
- clk_put(dmic->fclk);
- return ret;
-}
-
-static int asoc_dmic_remove(struct platform_device *pdev)
-{
- struct omap_dmic *dmic = platform_get_drvdata(pdev);
-
- clk_put(dmic->fclk);
+ return ret;
return 0;
}
.of_match_table = omap_dmic_of_match,
},
.probe = asoc_dmic_probe,
- .remove = asoc_dmic_remove,
};
module_platform_driver(asoc_dmic_driver);