From be461ba836770263826457624bc4a5173a1f5040 Mon Sep 17 00:00:00 2001 From: Chaithrika U S Date: Thu, 28 May 2009 05:10:50 -0400 Subject: ASoC: Add dummy S/PDIF codec support McASP on DM646x can operate in DIT (S/PDIF) where no codec is needed. This patch provides stub codec that can be used in these configurations. On DM646x EVM the McASP1 is connected to the S/PDIF out. Signed-off-by: Steve Chen Signed-off-by: Pavel Kiryukhin Signed-off-by: Naresh Medisetty Signed-off-by: Chaithrika U S Signed-off-by: Mark Brown --- sound/soc/codecs/spdif_transciever.c | 69 ++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 sound/soc/codecs/spdif_transciever.c (limited to 'sound/soc/codecs/spdif_transciever.c') diff --git a/sound/soc/codecs/spdif_transciever.c b/sound/soc/codecs/spdif_transciever.c new file mode 100644 index 000000000000..118e976b28ac --- /dev/null +++ b/sound/soc/codecs/spdif_transciever.c @@ -0,0 +1,69 @@ +/* + * ALSA SoC SPDIF DIT driver + * + * This driver is used by controllers which can operate in DIT (SPDI/F) where + * no codec is needed. This file provides stub codec that can be used + * in these configurations. TI DaVinci Audio controller uses this driver. + * + * Author: Steve Chen, + * Copyright: (C) 2009 MontaVista Software, Inc., + * Copyright: (C) 2009 Texas Instruments, India + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include +#include +#include +#include + +#define STUB_RATES SNDRV_PCM_RATE_8000_96000 +#define STUB_FORMATS SNDRV_PCM_FMTBIT_S16_LE + + +struct snd_soc_dai dit_stub_dai = { + .name = "DIT", + .playback = { + .stream_name = "Playback", + .channels_min = 1, + .channels_max = 384, + .rates = STUB_RATES, + .formats = STUB_FORMATS, + }, +}; + +static int spdif_dit_probe(struct platform_device *pdev) +{ + return snd_soc_register_dai(&dit_stub_dai); +} + +static int spdif_dit_remove(struct platform_device *pdev) +{ + snd_soc_unregister_dai(&dit_stub_dai); + return 0; +} + +static struct platform_driver spdif_dit_driver = { + .probe = spdif_dit_probe, + .remove = spdif_dit_remove, + .driver = { + .name = "spdif-dit", + .owner = THIS_MODULE, + }, +}; + +static int __init dit_modinit(void) +{ + return platform_driver_register(&spdif_dit_driver); +} + +static void __exit dit_exit(void) +{ + platform_driver_unregister(&spdif_dit_driver); +} + +module_init(dit_modinit); +module_exit(dit_exit); + -- cgit v1.2.3 From 203350c1a8e23adf17fd9a96d8bfc7adf63c1ff6 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Thu, 28 May 2009 14:51:00 +0100 Subject: ASoC: Initialise dev for the dummy S/PDIF DAI Also include the header to make sure the DAI is prototyped. Signed-off-by: Mark Brown --- sound/soc/codecs/spdif_transciever.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'sound/soc/codecs/spdif_transciever.c') diff --git a/sound/soc/codecs/spdif_transciever.c b/sound/soc/codecs/spdif_transciever.c index 118e976b28ac..218b33adad90 100644 --- a/sound/soc/codecs/spdif_transciever.c +++ b/sound/soc/codecs/spdif_transciever.c @@ -19,10 +19,11 @@ #include #include +#include "spdif_transciever.h" + #define STUB_RATES SNDRV_PCM_RATE_8000_96000 #define STUB_FORMATS SNDRV_PCM_FMTBIT_S16_LE - struct snd_soc_dai dit_stub_dai = { .name = "DIT", .playback = { @@ -36,6 +37,7 @@ struct snd_soc_dai dit_stub_dai = { static int spdif_dit_probe(struct platform_device *pdev) { + dit_stub_dai.dev = &pdev->dev; return snd_soc_register_dai(&dit_stub_dai); } -- cgit v1.2.3