11802d0beSThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only 297d3ddd7SFlorian Meier /* 397d3ddd7SFlorian Meier * Driver for the PCM5102A codec 497d3ddd7SFlorian Meier * 597d3ddd7SFlorian Meier * Author: Florian Meier <florian.meier@koalo.de> 697d3ddd7SFlorian Meier * Copyright 2013 797d3ddd7SFlorian Meier */ 897d3ddd7SFlorian Meier 997d3ddd7SFlorian Meier #include <linux/init.h> 1097d3ddd7SFlorian Meier #include <linux/module.h> 1197d3ddd7SFlorian Meier #include <linux/platform_device.h> 1297d3ddd7SFlorian Meier 1397d3ddd7SFlorian Meier #include <sound/soc.h> 1497d3ddd7SFlorian Meier 1597d3ddd7SFlorian Meier static struct snd_soc_dai_driver pcm5102a_dai = { 1697d3ddd7SFlorian Meier .name = "pcm5102a-hifi", 1797d3ddd7SFlorian Meier .playback = { 1897d3ddd7SFlorian Meier .channels_min = 2, 1997d3ddd7SFlorian Meier .channels_max = 2, 2097d3ddd7SFlorian Meier .rates = SNDRV_PCM_RATE_8000_192000, 2197d3ddd7SFlorian Meier .formats = SNDRV_PCM_FMTBIT_S16_LE | 2297d3ddd7SFlorian Meier SNDRV_PCM_FMTBIT_S24_LE | 2397d3ddd7SFlorian Meier SNDRV_PCM_FMTBIT_S32_LE 2497d3ddd7SFlorian Meier }, 2597d3ddd7SFlorian Meier }; 2697d3ddd7SFlorian Meier 27d5e90badSKuninori Morimoto static struct snd_soc_component_driver soc_component_dev_pcm5102a = { 28d5e90badSKuninori Morimoto .idle_bias_on = 1, 29d5e90badSKuninori Morimoto .use_pmdown_time = 1, 30d5e90badSKuninori Morimoto .endianness = 1, 31d5e90badSKuninori Morimoto .non_legacy_dai_naming = 1, 32d5e90badSKuninori Morimoto }; 3397d3ddd7SFlorian Meier 3497d3ddd7SFlorian Meier static int pcm5102a_probe(struct platform_device *pdev) 3597d3ddd7SFlorian Meier { 36d5e90badSKuninori Morimoto return devm_snd_soc_register_component(&pdev->dev, &soc_component_dev_pcm5102a, 3797d3ddd7SFlorian Meier &pcm5102a_dai, 1); 3897d3ddd7SFlorian Meier } 3997d3ddd7SFlorian Meier 4097d3ddd7SFlorian Meier static const struct of_device_id pcm5102a_of_match[] = { 4197d3ddd7SFlorian Meier { .compatible = "ti,pcm5102a", }, 4297d3ddd7SFlorian Meier { } 4397d3ddd7SFlorian Meier }; 4497d3ddd7SFlorian Meier MODULE_DEVICE_TABLE(of, pcm5102a_of_match); 4597d3ddd7SFlorian Meier 4697d3ddd7SFlorian Meier static struct platform_driver pcm5102a_codec_driver = { 4797d3ddd7SFlorian Meier .probe = pcm5102a_probe, 4897d3ddd7SFlorian Meier .driver = { 4997d3ddd7SFlorian Meier .name = "pcm5102a-codec", 5097d3ddd7SFlorian Meier .of_match_table = pcm5102a_of_match, 5197d3ddd7SFlorian Meier }, 5297d3ddd7SFlorian Meier }; 5397d3ddd7SFlorian Meier 5497d3ddd7SFlorian Meier module_platform_driver(pcm5102a_codec_driver); 5597d3ddd7SFlorian Meier 5697d3ddd7SFlorian Meier MODULE_DESCRIPTION("ASoC PCM5102A codec driver"); 5797d3ddd7SFlorian Meier MODULE_AUTHOR("Florian Meier <florian.meier@koalo.de>"); 5897d3ddd7SFlorian Meier MODULE_LICENSE("GPL v2"); 59