2010-10-14 18:49:08 +04:00
/*
* simone . c - - ASoC audio for Simplemachines Sim . One board
*
* Copyright ( c ) 2010 Mika Westerberg
*
* Based on snappercl15 machine driver by Ryan Mallon .
*
* 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/init.h>
# include <linux/module.h>
# include <linux/platform_device.h>
# include <sound/core.h>
# include <sound/pcm.h>
# include <sound/soc.h>
# include <asm/mach-types.h>
# include <mach/hardware.h>
static struct snd_soc_dai_link simone_dai = {
. name = " AC97 " ,
. stream_name = " AC97 HiFi " ,
. cpu_dai_name = " ep93xx-ac97 " ,
. codec_dai_name = " ac97-hifi " ,
. codec_name = " ac97-codec " ,
. platform_name = " ep93xx-pcm-audio " ,
} ;
static struct snd_soc_card snd_soc_simone = {
. name = " Sim.One " ,
2011-12-22 17:21:37 +04:00
. owner = THIS_MODULE ,
2010-10-14 18:49:08 +04:00
. dai_link = & simone_dai ,
. num_links = 1 ,
} ;
static struct platform_device * simone_snd_ac97_device ;
2012-12-07 18:26:23 +04:00
static int simone_probe ( struct platform_device * pdev )
2010-10-14 18:49:08 +04:00
{
2011-09-11 13:28:50 +04:00
struct snd_soc_card * card = & snd_soc_simone ;
2010-10-14 18:49:08 +04:00
int ret ;
2011-09-11 13:28:50 +04:00
simone_snd_ac97_device = platform_device_register_simple ( " ac97-codec " ,
- 1 , NULL , 0 ) ;
if ( IS_ERR ( simone_snd_ac97_device ) )
return PTR_ERR ( simone_snd_ac97_device ) ;
2010-10-14 18:49:08 +04:00
2011-09-11 13:28:50 +04:00
card - > dev = & pdev - > dev ;
2010-10-14 18:49:08 +04:00
2011-09-11 13:28:50 +04:00
ret = snd_soc_register_card ( card ) ;
if ( ret ) {
dev_err ( & pdev - > dev , " snd_soc_register_card() failed: %d \n " ,
ret ) ;
platform_device_unregister ( simone_snd_ac97_device ) ;
2010-10-14 18:49:08 +04:00
}
2011-09-11 13:28:50 +04:00
return ret ;
}
2012-12-07 18:26:23 +04:00
static int simone_remove ( struct platform_device * pdev )
2011-09-11 13:28:50 +04:00
{
struct snd_soc_card * card = platform_get_drvdata ( pdev ) ;
snd_soc_unregister_card ( card ) ;
platform_device_unregister ( simone_snd_ac97_device ) ;
2010-10-14 18:49:08 +04:00
2010-11-25 10:12:30 +03:00
return 0 ;
2011-09-11 13:28:50 +04:00
}
2010-10-14 18:49:08 +04:00
2011-09-11 13:28:50 +04:00
static struct platform_driver simone_driver = {
. driver = {
. name = " simone-audio " ,
. owner = THIS_MODULE ,
} ,
. probe = simone_probe ,
2012-12-07 18:26:23 +04:00
. remove = simone_remove ,
2011-09-11 13:28:50 +04:00
} ;
2011-11-24 08:07:55 +04:00
module_platform_driver ( simone_driver ) ;
2010-10-14 18:49:08 +04:00
MODULE_DESCRIPTION ( " ALSA SoC Simplemachines Sim.One " ) ;
MODULE_AUTHOR ( " Mika Westerberg <mika.westerberg@iki.fi> " ) ;
MODULE_LICENSE ( " GPL " ) ;
2011-09-11 13:28:50 +04:00
MODULE_ALIAS ( " platform:simone-audio " ) ;