2010-01-27 08:59:19 +03:00
/*
* smdk_wm9713 . c - - SoC audio for SMDK
*
* Copyright 2010 Samsung Electronics Co . Ltd .
2012-02-25 14:54:36 +04:00
* Author : Jaswinder Singh Brar < jassisinghbrar @ gmail . com >
2010-01-27 08:59:19 +03:00
*
* 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 .
*
*/
2011-07-15 20:38:28 +04:00
# include <linux/module.h>
2010-01-27 08:59:19 +03:00
# include <sound/soc.h>
static struct snd_soc_card smdk ;
2010-01-27 23:54:13 +03:00
/*
* Default CFG switch settings to use this driver :
*
* SMDK6410 : Set CFG1 1 - 3 On , CFG2 1 - 4 Off
2010-05-27 07:11:31 +04:00
* SMDKC100 : Set CFG6 1 - 3 On , CFG7 1 On
2010-05-27 07:11:44 +04:00
* SMDKC110 : Set CFGB10 1 - 2 Off , CFGB12 1 - 3 On
* SMDKV210 : Set CFGB10 1 - 2 Off , CFGB12 1 - 3 On
2010-12-20 05:05:56 +03:00
* SMDKV310 : Set CFG2 1 - 2 Off , CFG4 All On , CFG7 All Off , CFG8 1 - On
2010-01-27 23:54:13 +03:00
*/
2010-01-27 08:59:19 +03:00
/*
Playback ( HeadPhone ) : -
2010-01-29 04:57:07 +03:00
$ amixer sset ' Headphone ' unmute
$ amixer sset ' Right Headphone Out Mux ' ' Headphone '
$ amixer sset ' Left Headphone Out Mux ' ' Headphone '
$ amixer sset ' Right HP Mixer PCM ' unmute
$ amixer sset ' Left HP Mixer PCM ' unmute
2010-01-27 08:59:19 +03:00
Capture ( LineIn ) : -
2010-01-29 04:57:07 +03:00
$ amixer sset ' Right Capture Source ' ' Line '
$ amixer sset ' Left Capture Source ' ' Line '
2010-01-27 08:59:19 +03:00
*/
static struct snd_soc_dai_link smdk_dai = {
. name = " AC97 " ,
. stream_name = " AC97 PCM " ,
2012-12-07 12:29:21 +04:00
. platform_name = " samsung-ac97 " ,
2010-11-22 09:36:00 +03:00
. cpu_dai_name = " samsung-ac97 " ,
2010-03-17 23:15:21 +03:00
. codec_dai_name = " wm9713-hifi " ,
. codec_name = " wm9713-codec " ,
2010-01-27 08:59:19 +03:00
} ;
static struct snd_soc_card smdk = {
2010-09-22 22:44:13 +04:00
. name = " SMDK WM9713 " ,
2011-12-22 06:53:15 +04:00
. owner = THIS_MODULE ,
2010-01-27 08:59:19 +03:00
. dai_link = & smdk_dai ,
. num_links = 1 ,
} ;
2010-03-17 23:15:21 +03:00
static struct platform_device * smdk_snd_wm9713_device ;
2010-01-27 08:59:19 +03:00
static struct platform_device * smdk_snd_ac97_device ;
static int __init smdk_init ( void )
{
int ret ;
2010-03-17 23:15:21 +03:00
smdk_snd_wm9713_device = platform_device_alloc ( " wm9713-codec " , - 1 ) ;
if ( ! smdk_snd_wm9713_device )
2010-01-27 08:59:19 +03:00
return - ENOMEM ;
2010-03-17 23:15:21 +03:00
ret = platform_device_add ( smdk_snd_wm9713_device ) ;
if ( ret )
2010-11-25 10:11:45 +03:00
goto err1 ;
2010-03-17 23:15:21 +03:00
smdk_snd_ac97_device = platform_device_alloc ( " soc-audio " , - 1 ) ;
if ( ! smdk_snd_ac97_device ) {
ret = - ENOMEM ;
2010-11-25 10:11:45 +03:00
goto err2 ;
2010-03-17 23:15:21 +03:00
}
platform_set_drvdata ( smdk_snd_ac97_device , & smdk ) ;
2010-01-27 08:59:19 +03:00
ret = platform_device_add ( smdk_snd_ac97_device ) ;
2010-11-25 10:11:45 +03:00
if ( ret )
goto err3 ;
2010-01-27 08:59:19 +03:00
2010-03-17 23:15:21 +03:00
return 0 ;
2010-11-25 10:11:45 +03:00
err3 :
platform_device_put ( smdk_snd_ac97_device ) ;
err2 :
platform_device_del ( smdk_snd_wm9713_device ) ;
err1 :
2010-03-17 23:15:21 +03:00
platform_device_put ( smdk_snd_wm9713_device ) ;
2010-01-27 08:59:19 +03:00
return ret ;
}
static void __exit smdk_exit ( void )
{
platform_device_unregister ( smdk_snd_ac97_device ) ;
2010-09-23 18:28:14 +04:00
platform_device_unregister ( smdk_snd_wm9713_device ) ;
2010-01-27 08:59:19 +03:00
}
module_init ( smdk_init ) ;
module_exit ( smdk_exit ) ;
/* Module information */
2012-02-25 14:54:36 +04:00
MODULE_AUTHOR ( " Jaswinder Singh Brar, jassisinghbrar@gmail.com " ) ;
2010-01-27 08:59:19 +03:00
MODULE_DESCRIPTION ( " ALSA SoC SMDK+WM9713 " ) ;
MODULE_LICENSE ( " GPL " ) ;