Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit be461ba8 authored by Chaithrika U S's avatar Chaithrika U S Committed by Mark Brown
Browse files

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: default avatarSteve Chen <schen@mvista.com>
Signed-off-by: default avatarPavel Kiryukhin <pkiryukhin@ru.mvista.com>
Signed-off-by: default avatarNaresh Medisetty <naresh@ti.com>
Signed-off-by: default avatarChaithrika U S <chaithrika@ti.com>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 449bd54d
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ config SND_SOC_ALL_CODECS
	select SND_SOC_AK4535 if I2C
	select SND_SOC_CS4270 if I2C
	select SND_SOC_PCM3008
	select SND_SOC_SPDIF
	select SND_SOC_SSM2602 if I2C
	select SND_SOC_STAC9766 if SND_SOC_AC97_BUS
	select SND_SOC_TLV320AIC23 if I2C
@@ -91,6 +92,9 @@ config SND_SOC_L3
config SND_SOC_PCM3008
       tristate

config SND_SOC_SPDIF
	tristate

config SND_SOC_SSM2602
	tristate

+2 −0
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@ snd-soc-ak4535-objs := ak4535.o
snd-soc-cs4270-objs := cs4270.o
snd-soc-l3-objs := l3.o
snd-soc-pcm3008-objs := pcm3008.o
snd-soc-spdif-objs := spdif_transciever.o
snd-soc-ssm2602-objs := ssm2602.o
snd-soc-stac9766-objs := stac9766.o
snd-soc-tlv320aic23-objs := tlv320aic23.o
@@ -42,6 +43,7 @@ obj-$(CONFIG_SND_SOC_AK4535) += snd-soc-ak4535.o
obj-$(CONFIG_SND_SOC_CS4270)	+= snd-soc-cs4270.o
obj-$(CONFIG_SND_SOC_L3)	+= snd-soc-l3.o
obj-$(CONFIG_SND_SOC_PCM3008)	+= snd-soc-pcm3008.o
obj-$(CONFIG_SND_SOC_SPDIF)	+= snd-soc-spdif.o
obj-$(CONFIG_SND_SOC_SSM2602)	+= snd-soc-ssm2602.o
obj-$(CONFIG_SND_SOC_STAC9766)	+= snd-soc-stac9766.o
obj-$(CONFIG_SND_SOC_TLV320AIC23)	+= snd-soc-tlv320aic23.o
+69 −0
Original line number Diff line number Diff line
/*
 * 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,  <schen@mvista.com>
 * Copyright:   (C) 2009 MontaVista Software, Inc., <source@mvista.com>
 * 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 <linux/module.h>
#include <linux/moduleparam.h>
#include <sound/soc.h>
#include <sound/pcm.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 	= {
		.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);
+17 −0
Original line number Diff line number Diff line
/*
 * ALSA SoC DIT/DIR driver header
 *
 * Author:      Steve Chen,  <schen@mvista.com>
 * Copyright:   (C) 2008 MontaVista Software, Inc., <source@mvista.com>
 *
 * 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.
 */

#ifndef CODEC_STUBS_H
#define CODEC_STUBS_H

extern struct snd_soc_dai dit_stub_dai;

#endif /* CODEC_STUBS_H */