1 // SPDX-License-Identifier: GPL-2.0-only 2 /* 3 * Driver for the PCM5102A codec 4 * 5 * Author: Florian Meier <florian.meier@koalo.de> 6 * Copyright 2013 7 */ 8 9 #include <linux/init.h> 10 #include <linux/module.h> 11 #include <linux/platform_device.h> 12 13 #include <sound/soc.h> 14 15 static struct snd_soc_dai_driver pcm5102a_dai = { 16 .name = "pcm5102a-hifi", 17 .playback = { 18 .channels_min = 2, 19 .channels_max = 2, 20 .rates = SNDRV_PCM_RATE_8000_384000, 21 .formats = SNDRV_PCM_FMTBIT_S16_LE | 22 SNDRV_PCM_FMTBIT_S24_LE | 23 SNDRV_PCM_FMTBIT_S32_LE 24 }, 25 }; 26 27 static struct snd_soc_component_driver soc_component_dev_pcm5102a = { 28 .idle_bias_on = 1, 29 .use_pmdown_time = 1, 30 .endianness = 1, 31 }; 32 33 static int pcm5102a_probe(struct platform_device *pdev) 34 { 35 return devm_snd_soc_register_component(&pdev->dev, &soc_component_dev_pcm5102a, 36 &pcm5102a_dai, 1); 37 } 38 39 static const struct of_device_id pcm5102a_of_match[] = { 40 { .compatible = "ti,pcm5102a", }, 41 { } 42 }; 43 MODULE_DEVICE_TABLE(of, pcm5102a_of_match); 44 45 static struct platform_driver pcm5102a_codec_driver = { 46 .probe = pcm5102a_probe, 47 .driver = { 48 .name = "pcm5102a-codec", 49 .of_match_table = pcm5102a_of_match, 50 }, 51 }; 52 53 module_platform_driver(pcm5102a_codec_driver); 54 55 MODULE_DESCRIPTION("ASoC PCM5102A codec driver"); 56 MODULE_AUTHOR("Florian Meier <florian.meier@koalo.de>"); 57 MODULE_LICENSE("GPL v2"); 58