2011-06-22 16:59:25 +04:00
/*
* sound / soc / codecs / wm8782 . c
* simple , strap - pin configured 24 bit 2 ch ADC
*
* Copyright : 2011 Raumfeld GmbH
* Author : Johannes Stezenbach < js @ sig21 . net >
*
* based on ad73311 . c
* Copyright : Analog Device Inc .
* Author : Cliff Cai < cliff . cai @ analog . com >
*
* This program is free software ; you can redistribute it and / or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation ; either version 2 of the License , or ( at your
* option ) any later version .
*/
# include <linux/init.h>
# include <linux/slab.h>
# include <linux/module.h>
# include <linux/kernel.h>
# include <linux/device.h>
# include <sound/core.h>
# include <sound/pcm.h>
# include <sound/ac97_codec.h>
# include <sound/initval.h>
# include <sound/soc.h>
2013-08-18 21:36:06 +04:00
static const struct snd_soc_dapm_widget wm8782_dapm_widgets [ ] = {
SND_SOC_DAPM_INPUT ( " AINL " ) ,
SND_SOC_DAPM_INPUT ( " AINR " ) ,
} ;
static const struct snd_soc_dapm_route wm8782_dapm_routes [ ] = {
{ " Capture " , NULL , " AINL " } ,
{ " Capture " , NULL , " AINR " } ,
} ;
2011-06-22 16:59:25 +04:00
static struct snd_soc_dai_driver wm8782_dai = {
. name = " wm8782 " ,
. capture = {
. stream_name = " Capture " ,
. channels_min = 2 ,
. channels_max = 2 ,
/* For configurations with FSAMPEN=0 */
. rates = SNDRV_PCM_RATE_8000_48000 ,
. formats = SNDRV_PCM_FMTBIT_S16_LE |
SNDRV_PCM_FMTBIT_S20_3LE |
SNDRV_PCM_FMTBIT_S24_LE ,
} ,
} ;
2016-09-01 00:52:27 +03:00
static const struct snd_soc_codec_driver soc_codec_dev_wm8782 = {
2016-08-08 12:31:09 +03:00
. component_driver = {
. dapm_widgets = wm8782_dapm_widgets ,
. num_dapm_widgets = ARRAY_SIZE ( wm8782_dapm_widgets ) ,
. dapm_routes = wm8782_dapm_routes ,
. num_dapm_routes = ARRAY_SIZE ( wm8782_dapm_routes ) ,
} ,
2013-08-18 21:36:06 +04:00
} ;
2011-06-22 16:59:25 +04:00
2012-12-07 18:26:37 +04:00
static int wm8782_probe ( struct platform_device * pdev )
2011-06-22 16:59:25 +04:00
{
return snd_soc_register_codec ( & pdev - > dev ,
& soc_codec_dev_wm8782 , & wm8782_dai , 1 ) ;
}
2012-12-07 18:26:37 +04:00
static int wm8782_remove ( struct platform_device * pdev )
2011-06-22 16:59:25 +04:00
{
snd_soc_unregister_codec ( & pdev - > dev ) ;
return 0 ;
}
static struct platform_driver wm8782_codec_driver = {
. driver = {
. name = " wm8782 " ,
} ,
. probe = wm8782_probe ,
2012-12-07 18:26:37 +04:00
. remove = wm8782_remove ,
2011-06-22 16:59:25 +04:00
} ;
2011-11-24 02:52:08 +04:00
module_platform_driver ( wm8782_codec_driver ) ;
2011-06-22 16:59:25 +04:00
MODULE_DESCRIPTION ( " ASoC WM8782 driver " ) ;
MODULE_AUTHOR ( " Johannes Stezenbach <js@sig21.net> " ) ;
MODULE_LICENSE ( " GPL " ) ;