2019-04-19 12:21:52 +02:00
// SPDX-License-Identifier: GPL-2.0
//
// Copyright 2009 Simtec Electronics
2009-08-20 22:50:40 +01:00
2011-07-15 12:38:28 -04:00
# include <linux/module.h>
2009-08-20 22:50:40 +01:00
# include <sound/soc.h>
# include "s3c24xx_simtec.h"
/* supported machines:
*
* Machine Connections AMP
* - - - - - - - - - - - - - - - - - - - - -
* BAST MIC , HPOUT , LOUT , LIN TPA2001D1 ( HPOUTL , R ) ( gain hardwired )
* VR1000 HPOUT , LIN None
* VR2000 LIN , LOUT , MIC , HP LM4871 ( HPOUTL , R )
* DePicture LIN , LOUT , MIC , HP LM4871 ( HPOUTL , R )
* Anubis LIN , LOUT , MIC , HP TPA2001D1 ( HPOUTL , R )
*/
static const struct snd_soc_dapm_widget dapm_widgets [ ] = {
SND_SOC_DAPM_HP ( " Headphone Jack " , NULL ) ,
SND_SOC_DAPM_LINE ( " Line In " , NULL ) ,
SND_SOC_DAPM_LINE ( " Line Out " , NULL ) ,
SND_SOC_DAPM_MIC ( " Mic Jack " , NULL ) ,
} ;
static const struct snd_soc_dapm_route base_map [ ] = {
{ " Headphone Jack " , NULL , " LHPOUT " } ,
{ " Headphone Jack " , NULL , " RHPOUT " } ,
{ " Line Out " , NULL , " LOUT " } ,
{ " Line Out " , NULL , " ROUT " } ,
{ " LLINEIN " , NULL , " Line In " } ,
{ " RLINEIN " , NULL , " Line In " } ,
{ " MICIN " , NULL , " Mic Jack " } ,
} ;
/**
* simtec_tlv320aic23_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_tlv320aic23_init ( struct snd_soc_pcm_runtime * rtd )
2009-08-20 22:50:40 +01:00
{
2010-03-17 20:15:21 +00:00
simtec_audio_init ( rtd ) ;
2009-08-20 22:50:40 +01:00
return 0 ;
}
2019-06-06 13:10:11 +09:00
SND_SOC_DAILINK_DEFS ( tlv320aic23 ,
DAILINK_COMP_ARRAY ( COMP_CPU ( " s3c24xx-iis " ) ) ,
DAILINK_COMP_ARRAY ( COMP_CODEC ( " tlv320aic3x-codec.0-001a " ,
" tlv320aic3x-hifi " ) ) ,
DAILINK_COMP_ARRAY ( COMP_PLATFORM ( " s3c24xx-iis " ) ) ) ;
2009-08-20 22:50:40 +01:00
static struct snd_soc_dai_link simtec_dai_aic23 = {
. name = " tlv320aic23 " ,
. stream_name = " TLV320AIC23 " ,
. init = simtec_tlv320aic23_init ,
2019-06-06 13:10:11 +09:00
SND_SOC_DAILINK_REG ( tlv320aic23 ) ,
2009-08-20 22:50:40 +01:00
} ;
/* simtec audio machine driver */
static struct snd_soc_card snd_soc_machine_simtec_aic23 = {
. name = " Simtec " ,
2011-12-22 10:53:15 +08:00
. owner = THIS_MODULE ,
2009-08-20 22:50:40 +01:00
. dai_link = & simtec_dai_aic23 ,
. 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:40 +01:00
} ;
2012-12-07 09:26:15 -05:00
static int simtec_audio_tlv320aic23_probe ( struct platform_device * pd )
2009-08-20 22:50:40 +01:00
{
2010-03-17 20:15:21 +00:00
return simtec_audio_core_probe ( pd , & snd_soc_machine_simtec_aic23 ) ;
2009-08-20 22:50:40 +01:00
}
2011-12-07 18:04:10 +08:00
static struct platform_driver simtec_audio_tlv320aic23_driver = {
2009-08-20 22:50:40 +01:00
. driver = {
. name = " s3c24xx-simtec-tlv320aic23 " ,
. pm = simtec_audio_pm ,
} ,
. probe = simtec_audio_tlv320aic23_probe ,
2012-12-07 09:26:15 -05:00
. remove = simtec_audio_remove ,
2009-08-20 22:50:40 +01:00
} ;
2011-12-07 18:04:10 +08:00
module_platform_driver ( simtec_audio_tlv320aic23_driver ) ;
2009-08-20 22:50:40 +01:00
2011-11-23 15:20:13 +00:00
MODULE_ALIAS ( " platform:s3c24xx-simtec-tlv320aic23 " ) ;
2009-08-20 22:50:40 +01:00
MODULE_AUTHOR ( " Ben Dooks <ben@simtec.co.uk> " ) ;
MODULE_DESCRIPTION ( " ALSA SoC Simtec Audio support " ) ;
MODULE_LICENSE ( " GPL " ) ;