2010-11-22 15:37:25 +09:00
/* sound/soc/samsung/s3c24xx_simtec_hermes.c
2009-08-20 22:50:43 +01:00
*
* Copyright 2009 Simtec Electronics
*
* 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 .
*/
2011-07-15 12:38:28 -04:00
# include <linux/module.h>
2009-08-20 22:50:43 +01:00
# include <sound/soc.h>
# include "s3c24xx_simtec.h"
static const struct snd_soc_dapm_widget dapm_widgets [ ] = {
SND_SOC_DAPM_LINE ( " GSM Out " , NULL ) ,
SND_SOC_DAPM_LINE ( " GSM In " , NULL ) ,
SND_SOC_DAPM_LINE ( " Line In " , NULL ) ,
SND_SOC_DAPM_LINE ( " Line Out " , NULL ) ,
SND_SOC_DAPM_LINE ( " ZV " , NULL ) ,
SND_SOC_DAPM_MIC ( " Mic Jack " , NULL ) ,
SND_SOC_DAPM_HP ( " Headphone Jack " , NULL ) ,
} ;
static const struct snd_soc_dapm_route base_map [ ] = {
/* Headphone connected to HP{L,R}OUT and HP{L,R}COM */
{ " Headphone Jack " , NULL , " HPLOUT " } ,
{ " Headphone Jack " , NULL , " HPLCOM " } ,
{ " Headphone Jack " , NULL , " HPROUT " } ,
{ " Headphone Jack " , NULL , " HPRCOM " } ,
/* ZV connected to Line1 */
{ " LINE1L " , NULL , " ZV " } ,
{ " LINE1R " , NULL , " ZV " } ,
/* Line In connected to Line2 */
{ " LINE2L " , NULL , " Line In " } ,
{ " LINE2R " , NULL , " Line In " } ,
/* Microphone connected to MIC3R and MIC_BIAS */
{ " MIC3L " , NULL , " Mic Jack " } ,
/* GSM connected to MONO_LOUT and MIC3L (in) */
{ " GSM Out " , NULL , " MONO_LOUT " } ,
{ " MIC3L " , NULL , " GSM In " } ,
/* Speaker is connected to LINEOUT{LN,LP,RN,RP}, however we are
* not using the DAPM to power it up and down as there it makes
* a click when powering up . */
} ;
/**
* simtec_hermes_init - initialise and add controls
* @ codec ; The codec instance to attach to .
*
* Attach our controls and configure the necessary codec
* mappings for our sound card instance .
*/
2010-03-17 20:15:21 +00:00
static int simtec_hermes_init ( struct snd_soc_pcm_runtime * rtd )
2009-08-20 22:50:43 +01:00
{
2010-03-17 20:15:21 +00:00
struct snd_soc_codec * codec = rtd - > codec ;
2010-11-05 15:53:46 +02:00
struct snd_soc_dapm_context * dapm = & codec - > dapm ;
2010-03-17 20:15:21 +00:00
2010-11-05 15:53:46 +02:00
snd_soc_dapm_enable_pin ( dapm , " Headphone Jack " ) ;
snd_soc_dapm_enable_pin ( dapm , " Line In " ) ;
snd_soc_dapm_enable_pin ( dapm , " Line Out " ) ;
snd_soc_dapm_enable_pin ( dapm , " Mic Jack " ) ;
2009-08-20 22:50:43 +01:00
2010-03-17 20:15:21 +00:00
simtec_audio_init ( rtd ) ;
2009-08-20 22:50:43 +01:00
return 0 ;
}
static struct snd_soc_dai_link simtec_dai_aic33 = {
. name = " tlv320aic33 " ,
. stream_name = " TLV320AIC33 " ,
2011-01-24 22:09:22 +01:00
. codec_name = " tlv320aic3x-codec.0-001a " ,
2011-01-24 22:12:42 +01:00
. cpu_dai_name = " s3c24xx-iis " ,
2010-03-17 20:15:21 +00:00
. codec_dai_name = " tlv320aic3x-hifi " ,
2010-11-22 15:35:50 +09:00
. platform_name = " samsung-audio " ,
2009-08-20 22:50:43 +01:00
. init = simtec_hermes_init ,
} ;
/* simtec audio machine driver */
static struct snd_soc_card snd_soc_machine_simtec_aic33 = {
. name = " Simtec-Hermes " ,
2011-12-22 10:53:15 +08:00
. owner = THIS_MODULE ,
2009-08-20 22:50:43 +01:00
. dai_link = & simtec_dai_aic33 ,
. num_links = 1 ,
2011-10-08 12:19:12 +01:00
. dapm_widgets = dapm_widgets ,
. num_dapm_widgets = ARRAY_SIZE ( dapm_widgets ) ,
. dapm_routes = base_map ,
. num_dapm_routes = ARRAY_SIZE ( base_map ) ,
2009-08-20 22:50:43 +01:00
} ;
static int __devinit simtec_audio_hermes_probe ( struct platform_device * pd )
{
dev_info ( & pd - > dev , " probing.... \n " ) ;
2010-03-17 20:15:21 +00:00
return simtec_audio_core_probe ( pd , & snd_soc_machine_simtec_aic33 ) ;
2009-08-20 22:50:43 +01:00
}
static struct platform_driver simtec_audio_hermes_platdrv = {
. driver = {
. owner = THIS_MODULE ,
. name = " s3c24xx-simtec-hermes-snd " ,
. pm = simtec_audio_pm ,
} ,
. probe = simtec_audio_hermes_probe ,
. remove = __devexit_p ( simtec_audio_remove ) ,
} ;
2011-11-23 15:20:13 +00:00
module_platform_driver ( simtec_audio_hermes_platdrv ) ;
2009-08-20 22:50:43 +01:00
2011-11-23 15:20:13 +00:00
MODULE_ALIAS ( " platform:s3c24xx-simtec-hermes-snd " ) ;
2009-08-20 22:50:43 +01:00
MODULE_AUTHOR ( " Ben Dooks <ben@simtec.co.uk> " ) ;
MODULE_DESCRIPTION ( " ALSA SoC Simtec Audio support " ) ;
MODULE_LICENSE ( " GPL " ) ;