From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jack Mitchell Subject: Re: simple-audio-card with omap4-dmic Date: Wed, 03 Jun 2015 17:39:19 +0100 Message-ID: <556F2DB7.50003@embed.me.uk> References: <556F1F1E.8040405@embed.me.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit Return-path: Received: from owm.eumx.net (eumx.net [91.82.101.43]) by alsa0.perex.cz (Postfix) with ESMTP id 67065265ADF for ; Wed, 3 Jun 2015 18:39:12 +0200 (CEST) In-Reply-To: <556F1F1E.8040405@embed.me.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org To: alsa-devel@alsa-project.org List-Id: alsa-devel@alsa-project.org On 03/06/15 16:37, Jack Mitchell wrote: > I'm currently working with a PandaBoard clone (OMAP44xx) which doesn't > have the usual twl6040 codec, however I would like to attach a digital > microphone directly into the OMAP. > > I have added the following to my device tree: > > sound { > compatible = "simple-audio-card"; > simple-audio-card,name = "dmic-card"; > > simple-audio-card,format = "pdm"; > > status = "okay"; > > simple-audio-card,dai-link@0 { > cpu { > sound-dai = <&dmic>; > }; > > codec { > sound-dai = <&dmic_codec>; > }; > }; > }; > > dmic_codec: dmic_codec { > #sound-dai-cells = <0>; > compatible = "linux,dmic-codec"; > }; > > and created a small patch to allow the generic dmic-hifi codec to be > instantiated from device tree. > > diff --git a/sound/soc/codecs/dmic.c b/sound/soc/codecs/dmic.c > index fde5325..67b9198 100644 > --- a/sound/soc/codecs/dmic.c > +++ b/sound/soc/codecs/dmic.c > @@ -69,11 +69,18 @@ static int dmic_dev_remove(struct platform_device > *pdev) > return 0; > } > > -MODULE_ALIAS("platform:dmic-codec"); > +#ifdef CONFIG_OF > +static const struct of_device_id dmic_dt_ids[] = { > + { .compatible = "linux,dmic-codec", }, > + { } > +}; > +MODULE_DEVICE_TABLE(of, dmic_dt_ids); > +#endif > > static struct platform_driver dmic_driver = { > .driver = { > .name = "dmic-codec", > + .of_match_table = of_match_ptr(dmic_dt_ids), > }, > .probe = dmic_dev_probe, > .remove = dmic_dev_remove, > @@ -81,6 +88,7 @@ static struct platform_driver dmic_driver = { > > module_platform_driver(dmic_driver); > > +MODULE_ALIAS("platform:dmic-codec"); > MODULE_DESCRIPTION("Generic DMIC driver"); > MODULE_AUTHOR("Liam Girdwood "); > MODULE_LICENSE("GPL"); > > However, no soundcards get loaded, and I don't get error or warnings > in dmesg, so I'm at a bit of a loss at where I'm going wrong. Can > anybody see any glaring mistakes? I know the driver is definitely > getting loaded as I have seen errors relating to me not specifying the > sound-dai-cells from the simple-audio-card driver. > > Any ideas would be greatly recieved! > > Cheers, > > Ok, playing with this a bit more and I find if I manually modprobe snd-soc-dmic then it fires into life. There are other problems with capturing but I'll fight those myself for a bit first.