lkml.org 
[lkml]   [2007]   [May]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectFwd: [ASoC] Mic record is not working with wm9713 ASoC driver
---------- Forwarded message ----------
From: Nobin Mathew <nobin.mathew@gmail.com>
Date: May 9, 2007 4:25 PM
Subject: Re: [ASoC] Mic record is not working with wm9713 ASoC driver
To: Liam Girdwood <lg@opensource.wolfsonmicro.com>


Liam i got the mail.
I am not setting any audio paths in my machine driver


On 5/9/07, Liam Girdwood <lg@opensource.wolfsonmicro.com> wrote:
> The mail server is probably a little behind..... give it about 30
> mins...
>
> Liam
>
> On Wed, 2007-05-09 at 16:14 +0530, Nobin Mathew wrote:
> > Liam Sorry for disturbing you again,
> >
> > I could not find that reply on alsa devel mailing list
> >
> > Can u send that to me
> >
> > Thanks
> >
> >
> > On 5/9/07, Liam Girdwood <lg@opensource.wolfsonmicro.com> wrote:
> > > On Wed, 2007-05-09 at 14:48 +0530, Nobin Mathew wrote:
> > > > I am trying to record mic with AsoC wm9713 driver. My Mic is connected "Mic 1".
> > >
> > > I've replied to this duplicate post on alsa-dev.
> > >
> > > Liam
> > >
> > >
> > -
> > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at http://vger.kernel.org/majordomo-info.html
> > Please read the FAQ at http://www.tux.org/lkml/
>
>
/*
* SiRF Technology, Inc. GPS Software
*
* Copyright (C) 2006 by SiRF Technology, Inc. All rights reserved.
*
* linux/sound/soc/sirf3a/identity_wm9713.c
*
* 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.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/

/*
* Machine Specific codefor ASoC driver
* This will setup ac97 controller with wm9713 codec support
*/

#include <linux/module.h>
#include <linux/delay.h>
#include <linux/init.h>
#include <linux/ioport.h>
#include <linux/device.h>
#include <linux/spinlock.h>
#include <linux/interrupt.h>
#include <linux/err.h>
#include <linux/amba/bus.h>
#include <linux/dma-mapping.h> /* DMA memory is used for the buffer even if no DMA for this architecture */
#include <linux/pm.h>


#include <asm/io.h>
#include <asm/irq.h>
#include <asm/sizes.h>

#ifdef CONFIG_ARM_AMBA_DMA
# include <asm/mach-types.h>
#endif

#include <sound/driver.h>
#include <sound/core.h>
#include <sound/initval.h>
#include <sound/ac97_codec.h>
#include <sound/pcm.h>
#include <sound/pcm_params.h>
#include <sound/soc.h>
#include <sound/soc-dapm.h>

#include "../codecs/ac97.h"
#include "platform_sound.h"
#include "aaci.h"

extern struct snd_soc_cpu_dai aaci_ac97_dai[];
extern struct snd_soc_codec_dai wm9713_dai[];
extern struct snd_soc_platform sirf3a_soc_platform;
extern struct snd_soc_codec_device soc_codec_dev_wm9713;
extern struct ac97_pcm ac97_defs[];

extern int sirf3a_ac97_probe(struct platform_device *);
extern void sirf3a_ac97_remove(struct platform_device *);
extern void snd_ac97_bus_proc_init(struct snd_ac97_bus *);
extern void snd_ac97_bus_proc_done(struct snd_ac97_bus *);


static int identity_wm9713_startup(snd_pcm_substream_t *substream)
{
return 0;
}

static struct snd_soc_ops identity_wm9713_ops = {
.startup = identity_wm9713_startup,
};

static int identity_wm9713_ac97_init(struct snd_soc_codec *codec)
{
struct platform_controller *controller = codec->ac97->bus->private_data;
struct aaci *aaci = (struct aaci *)controller->bus_controller;

snd_ac97_pcm_assign(codec->ac97->bus, 3, ac97_defs);
aaci->ac97_bus = codec->ac97->bus;

/*
* * Disable AC97 PC Beep input on audio codecs.
* */
if (ac97_is_audio(codec->ac97))
snd_ac97_write_cache(codec->ac97, AC97_PC_BEEP, 0x801e);
return 0;
}
unsigned int identity_wm9713_config_sysclk(struct snd_soc_pcm_runtime *rtd,
struct snd_soc_clock_info *info)
{
return rtd->codec_dai->config_sysclk(rtd->codec_dai, info, 12187500);
}


static struct snd_soc_dai_link identity_wm9713_dai[] = {
{
.name = "AC97",
.stream_name = "AC97 HiFi",
.cpu_dai = &aaci_ac97_dai[0],
.codec_dai = &wm9713_dai[0],
.init = identity_wm9713_ac97_init,
.config_sysclk = identity_wm9713_config_sysclk,

},
/*
{
.name = "WM9713",
.stream_name = "BLUETOOTH VOICE",
.cpu_dai = &aaci_ac97_dai[1],
.codec_dai = &wm9713_dai[2],
},
*/
};

int identity_wm9713_probe(struct platform_device *pdev)
{
int ret = 0;
struct snd_soc_device *socdev;

socdev = platform_get_drvdata(pdev);
socdev->machine->dai_link->cpu_dai->probe = sirf3a_ac97_probe;
socdev->machine->dai_link->cpu_dai->remove = sirf3a_ac97_remove;

return ret;
}

int identity_wm9713_suspend_pre(struct platform_device *pdev, pm_message_t state)
{
struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec;
struct snd_soc_codec_dai *dai = codec->dai;
struct platform_controller *controller = dai->private_data;

controller->state.event = state.event;
return 0;
}

int identity_wm9713_resume_post(struct platform_device *pdev)
{
struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->codec;
struct snd_soc_codec_dai *dai = codec->dai;
struct platform_controller *controller = dai->private_data;

controller->state.event = PM_EVENT_ON;
return 0;
}

static struct snd_soc_machine identity_wm9713 = {
.name = "IDENTITY",
.probe = identity_wm9713_probe,
.suspend_pre = identity_wm9713_suspend_pre,
.resume_post = identity_wm9713_resume_post,
.dai_link = identity_wm9713_dai,
.num_links = ARRAY_SIZE(identity_wm9713_dai),
.ops = &identity_wm9713_ops,
};

static struct snd_soc_device identity_wm9713_snd_devdata = {
.machine = &identity_wm9713,
.platform = &sirf3a_soc_platform,
.codec_dev = &soc_codec_dev_wm9713,
};

extern struct platform_device identity_snd_device;
struct platform_device *pidentity_wm9713_snd_device = &identity_snd_device;

static int __init identity_wm9713_init(void)
{
int ret;

device_initialize(&pidentity_wm9713_snd_device->dev);
platform_set_drvdata(pidentity_wm9713_snd_device, &identity_wm9713_snd_devdata);
identity_wm9713_snd_devdata.dev = &pidentity_wm9713_snd_device->dev;
ret = platform_device_add(pidentity_wm9713_snd_device);

if (ret)
platform_device_put(pidentity_wm9713_snd_device);

return ret;
}

static void __exit identity_wm9713_exit(void)
{
platform_device_unregister(pidentity_wm9713_snd_device);
}

module_init(identity_wm9713_init);
module_exit(identity_wm9713_exit);

/* Module information */
MODULE_AUTHOR("Nobin Mathew");
MODULE_DESCRIPTION("ALSA SoC SiRF3A");
MODULE_LICENSE("GPL");
\
 
 \ /
  Last update: 2007-05-09 13:13    [W:0.042 / U:0.912 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site