blob: 25006ba629b36bc241b5d89b5055c4d13f259140 [file] [log] [blame]
// SPDX-License-Identifier: GPL-2.0
/*
* ALSA SoC pdm_dummy codec driver
*
* Copyright (C) 2019 Amlogic,inc
*
*/
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/of.h>
#include <sound/soc.h>
#define DRV_NAME "pdm_dummy"
#define DUMMY_RATES (SNDRV_PCM_RATE_96000 |\
SNDRV_PCM_RATE_64000 |\
SNDRV_PCM_RATE_48000 |\
SNDRV_PCM_RATE_32000 |\
SNDRV_PCM_RATE_16000 |\
SNDRV_PCM_RATE_8000)
#define DUMMY_FORMATS (SNDRV_PCM_FMTBIT_S16_LE |\
SNDRV_PCM_FMTBIT_S24_LE |\
SNDRV_PCM_FMTBIT_S32_LE)
struct snd_soc_dai_driver pdm_dummy_dai = {
.name = DRV_NAME,
.capture = {
.stream_name = "PDM Capture",
.channels_min = 1,
.channels_max = 16,
.rates = DUMMY_RATES,
.formats = DUMMY_FORMATS,
},
};
static const struct snd_soc_component_driver soc_component_dev_pdm_dummy = {
.name = DRV_NAME,
};
static const struct of_device_id pdm_dummy_codec_device_id[] = {
{ .compatible = "amlogic, pdm_dummy_codec" },
{ },
};
MODULE_DEVICE_TABLE(of, pdm_dummy_codec_device_id);
static int pdm_dummy_platform_probe(struct platform_device *pdev)
{
pr_info("%s\n", __func__);
return devm_snd_soc_register_component(&pdev->dev,
&soc_component_dev_pdm_dummy,
&pdm_dummy_dai, 1);
}
static int pdm_dummy_platform_remove(struct platform_device *pdev)
{
return 0;
}
static struct platform_driver pdm_dummy_platform_driver = {
.driver = {
.name = DRV_NAME,
.owner = THIS_MODULE,
.of_match_table = of_match_ptr(pdm_dummy_codec_device_id),
},
.probe = pdm_dummy_platform_probe,
.remove = pdm_dummy_platform_remove,
};
module_platform_driver(pdm_dummy_platform_driver);
MODULE_AUTHOR("AMLogic, Inc.");
MODULE_DESCRIPTION("ASoC pdm_dummy codec driver");
MODULE_LICENSE("GPL");