2018-06-12 05:59:27 +00:00
// SPDX-License-Identifier: GPL-2.0
//
// Generic AC97 sound support for SH7760
//
// (c) 2007 Manuel Lauss
2007-05-14 18:40:07 +02:00
# include <linux/module.h>
# include <linux/moduleparam.h>
# include <linux/platform_device.h>
# include <sound/core.h>
# include <sound/pcm.h>
# include <sound/soc.h>
# include <asm/io.h>
# define IPSEL 0xFE400034
2019-06-06 13:13:24 +09:00
SND_SOC_DAILINK_DEFS ( ac97 ,
DAILINK_COMP_ARRAY ( COMP_CPU ( " hac-dai.0 " ) ) , /* HAC0 */
DAILINK_COMP_ARRAY ( COMP_CODEC ( " ac97-codec " , " ac97-hifi " ) ) ,
DAILINK_COMP_ARRAY ( COMP_PLATFORM ( " sh7760-pcm-audio " ) ) ) ;
2007-05-14 18:40:07 +02:00
static struct snd_soc_dai_link sh7760_ac97_dai = {
. name = " AC97 " ,
. stream_name = " AC97 HiFi " ,
2019-06-06 13:13:24 +09:00
SND_SOC_DAILINK_REG ( ac97 ) ,
2007-05-14 18:40:07 +02:00
} ;
2008-11-18 20:50:34 +00:00
static struct snd_soc_card sh7760_ac97_soc_machine = {
2007-05-14 18:40:07 +02:00
. name = " SH7760 AC97 " ,
2011-12-23 14:53:32 +08:00
. owner = THIS_MODULE ,
2007-05-14 18:40:07 +02:00
. dai_link = & sh7760_ac97_dai ,
. num_links = 1 ,
} ;
static struct platform_device * sh7760_ac97_snd_device ;
static int __init sh7760_ac97_init ( void )
{
int ret ;
unsigned short ipsel ;
/* enable both AC97 controllers in pinmux reg */
2010-10-27 15:53:50 +09:00
ipsel = __raw_readw ( IPSEL ) ;
__raw_writew ( ipsel | ( 3 < < 10 ) , IPSEL ) ;
2007-05-14 18:40:07 +02:00
ret = - ENOMEM ;
sh7760_ac97_snd_device = platform_device_alloc ( " soc-audio " , - 1 ) ;
if ( ! sh7760_ac97_snd_device )
goto out ;
platform_set_drvdata ( sh7760_ac97_snd_device ,
2010-03-17 20:15:21 +00:00
& sh7760_ac97_soc_machine ) ;
2007-05-14 18:40:07 +02:00
ret = platform_device_add ( sh7760_ac97_snd_device ) ;
if ( ret )
platform_device_put ( sh7760_ac97_snd_device ) ;
out :
return ret ;
}
static void __exit sh7760_ac97_exit ( void )
{
platform_device_unregister ( sh7760_ac97_snd_device ) ;
}
module_init ( sh7760_ac97_init ) ;
module_exit ( sh7760_ac97_exit ) ;
2018-06-12 05:59:27 +00:00
MODULE_LICENSE ( " GPL v2 " ) ;
2007-05-14 18:40:07 +02:00
MODULE_DESCRIPTION ( " Generic SH7760 AC97 sound machine " ) ;
MODULE_AUTHOR ( " Manuel Lauss <mano@roarinelk.homelinux.net> " ) ;