| Vipin Kumar | cdf6052 | 2012-06-28 12:31:37 +0530 | [diff] [blame] | 1 | /* | 
 | 2 |  * ALSA SoC SPDIF DIR (Digital Interface Reciever) driver | 
 | 3 |  * | 
 | 4 |  * Based on ALSA SoC SPDIF DIT driver | 
 | 5 |  * | 
 | 6 |  *  This driver is used by controllers which can operate in DIR (SPDI/F) where | 
 | 7 |  *  no codec is needed.  This file provides stub codec that can be used | 
 | 8 |  *  in these configurations. SPEAr SPDIF IN Audio controller uses this driver. | 
 | 9 |  * | 
 | 10 |  * Author:      Vipin Kumar,  <vipin.kumar@st.com> | 
 | 11 |  * Copyright:   (C) 2012  ST Microelectronics | 
 | 12 |  * | 
 | 13 |  * This program is free software; you can redistribute it and/or modify | 
 | 14 |  * it under the terms of the GNU General Public License version 2 as | 
 | 15 |  * published by the Free Software Foundation. | 
 | 16 |  */ | 
 | 17 |  | 
 | 18 | #include <linux/module.h> | 
 | 19 | #include <linux/moduleparam.h> | 
 | 20 | #include <linux/slab.h> | 
 | 21 | #include <sound/soc.h> | 
 | 22 | #include <sound/pcm.h> | 
 | 23 | #include <sound/initval.h> | 
 | 24 |  | 
 | 25 | #define STUB_RATES	SNDRV_PCM_RATE_8000_192000 | 
 | 26 | #define STUB_FORMATS	(SNDRV_PCM_FMTBIT_S16_LE | \ | 
 | 27 | 			SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_LE) | 
 | 28 |  | 
 | 29 | static struct snd_soc_codec_driver soc_codec_spdif_dir; | 
 | 30 |  | 
 | 31 | static struct snd_soc_dai_driver dir_stub_dai = { | 
 | 32 | 	.name		= "dir-hifi", | 
 | 33 | 	.capture	= { | 
 | 34 | 		.stream_name	= "Capture", | 
 | 35 | 		.channels_min	= 1, | 
 | 36 | 		.channels_max	= 384, | 
 | 37 | 		.rates		= STUB_RATES, | 
 | 38 | 		.formats	= STUB_FORMATS, | 
 | 39 | 	}, | 
 | 40 | }; | 
 | 41 |  | 
 | 42 | static int spdif_dir_probe(struct platform_device *pdev) | 
 | 43 | { | 
 | 44 | 	return snd_soc_register_codec(&pdev->dev, &soc_codec_spdif_dir, | 
 | 45 | 			&dir_stub_dai, 1); | 
 | 46 | } | 
 | 47 |  | 
 | 48 | static int spdif_dir_remove(struct platform_device *pdev) | 
 | 49 | { | 
 | 50 | 	snd_soc_unregister_codec(&pdev->dev); | 
 | 51 | 	return 0; | 
 | 52 | } | 
 | 53 |  | 
 | 54 | static struct platform_driver spdif_dir_driver = { | 
 | 55 | 	.probe		= spdif_dir_probe, | 
 | 56 | 	.remove		= spdif_dir_remove, | 
 | 57 | 	.driver		= { | 
 | 58 | 		.name	= "spdif-dir", | 
 | 59 | 		.owner	= THIS_MODULE, | 
 | 60 | 	}, | 
 | 61 | }; | 
 | 62 |  | 
 | 63 | module_platform_driver(spdif_dir_driver); | 
 | 64 |  | 
 | 65 | MODULE_DESCRIPTION("ASoC SPDIF DIR driver"); | 
 | 66 | MODULE_AUTHOR("Vipin Kumar <vipin.kumar@st.com>"); | 
 | 67 | MODULE_LICENSE("GPL"); |