From mboxrd@z Thu Jan 1 00:00:00 1970 From: Liam Girdwood Subject: Re: [PATCH v2 2/4] soc/imx: add eukrea-tlv320 Date: Thu, 27 May 2010 14:50:05 +0100 Message-ID: <1274968205.3542.283.camel@odin> References: <1274950737-26498-1-git-send-email-eric@eukrea.com> <1274950737-26498-2-git-send-email-eric@eukrea.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wy0-f177.google.com (mail-wy0-f177.google.com [74.125.82.177]) by alsa0.perex.cz (Postfix) with ESMTP id 1C267103A7D for ; Thu, 27 May 2010 15:50:11 +0200 (CEST) Received: by wyb33 with SMTP id 33so632540wyb.8 for ; Thu, 27 May 2010 06:50:10 -0700 (PDT) In-Reply-To: <1274950737-26498-2-git-send-email-eric@eukrea.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: alsa-devel-bounces@alsa-project.org Errors-To: alsa-devel-bounces@alsa-project.org To: Eric =?ISO-8859-1?Q?B=E9nard?= Cc: alsa-devel@alsa-project.org, Mark Brown , Sascha Hauer , linux-arm-kernel@lists.infradead.org List-Id: alsa-devel@alsa-project.org T24gVGh1LCAyMDEwLTA1LTI3IGF0IDEwOjU4ICswMjAwLCBFcmljIELDqW5hcmQgd3JvdGU6Cj4g QWRkIHRoZSBuZWNlc3NhcnkgZmlsZXMgdG8gc3VwcG9ydCB0aGUgVExWMzIwQUlDMjNCIHdpcmVk IGluIEkyUwo+IG9uIG91ciBpLk1YIHBsYXRmb3Jtcy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBFcmlj IELDqW5hcmQgPGVyaWNAZXVrcmVhLmNvbT4KPiBDYzogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBl bmd1dHJvbml4LmRlPgo+IENjOiBNYXJrIEJyb3duIDxicm9vbmllQG9wZW5zb3VyY2Uud29sZnNv bm1pY3JvLmNvbT4KPiBDYzogTGlhbSBHaXJkd29vZCA8bHJnQHNsaW1sb2dpYy5jby51az4KPiAt LS0KPiAgc291bmQvc29jL2lteC9LY29uZmlnICAgICAgICAgfCAgICA4ICsrKwo+ICBzb3VuZC9z b2MvaW14L01ha2VmaWxlICAgICAgICB8ICAgIDIgKwo+ICBzb3VuZC9zb2MvaW14L2V1a3JlYS10 bHYzMjAuYyB8ICAxMzUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK PiAgMyBmaWxlcyBjaGFuZ2VkLCAxNDUgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0IHNvdW5kL3NvYy9pbXgvZXVrcmVhLXRsdjMyMC5jCj4gCj4gZGlm ZiAtLWdpdCBhL3NvdW5kL3NvYy9pbXgvS2NvbmZpZyBiL3NvdW5kL3NvYy9pbXgvS2NvbmZpZwo+ IGluZGV4IDcxNzRiNGMuLjNlMjdiMTYgMTAwNjQ0Cj4gLS0tIGEvc291bmQvc29jL2lteC9LY29u ZmlnCj4gKysrIGIvc291bmQvc29jL2lteC9LY29uZmlnCj4gQEAgLTExLDMgKzExLDExIEBAIGNv bmZpZyBTTkRfSU1YX1NPQwo+ICBjb25maWcgU05EX01YQ19TT0NfU1NJCj4gIAl0cmlzdGF0ZQo+ ICAKPiArY29uZmlnIFNORF9TT0NfRVVLUkVBX1RMVjMyMAo+ICsJYm9vbCAiRXVrcmVhIFRMVjMy MCIKPiArCWRlcGVuZHMgb24gTUFDSF9FVUtSRUFfTUJJTVgyN19CQVNFQk9BUkQKPiArCXNlbGVj dCBTTkRfSU1YX1NPQwo+ICsJc2VsZWN0IFNORF9TT0NfVExWMzIwQUlDMjMKPiArCWhlbHAKPiAr CSAgRW5hYmxlIEkyUyBiYXNlZCBhY2Nlc3MgdG8gdGhlIFRMVjMyMEFJQzIzQiBjb2RlYyBhdHRh Y2hlZAo+ICsJICB0byB0aGUgU1NJNCBpbnRlcmZhY2UKPiBkaWZmIC0tZ2l0IGEvc291bmQvc29j L2lteC9NYWtlZmlsZSBiL3NvdW5kL3NvYy9pbXgvTWFrZWZpbGUKPiBpbmRleCA5ZjhiYjkyLi4y OGQ0YjFlIDEwMDY0NAo+IC0tLSBhL3NvdW5kL3NvYy9pbXgvTWFrZWZpbGUKPiArKysgYi9zb3Vu ZC9zb2MvaW14L01ha2VmaWxlCj4gQEAgLTEwLDMgKzEwLDUgQEAgb2JqLSQoQ09ORklHX1NORF9J TVhfU09DKSArPSBzbmQtc29jLWlteC5vCj4gICMgaS5NWCBNYWNoaW5lIFN1cHBvcnQKPiAgc25k LXNvYy1waHljb3JlLWFjOTctb2JqcyA6PSBwaHljb3JlLWFjOTcubwo+ICBvYmotJChDT05GSUdf U05EX1NPQ19QSFlDT1JFX0FDOTcpICs9IHNuZC1zb2MtcGh5Y29yZS1hYzk3Lm8KPiArc25kLXNv Yy1ldWtyZWEtdGx2MzIwLW9ianMgOj0gZXVrcmVhLXRsdjMyMC5vCj4gK29iai0kKENPTkZJR19T TkRfU09DX0VVS1JFQV9UTFYzMjApICs9IHNuZC1zb2MtZXVrcmVhLXRsdjMyMC5vCj4gZGlmZiAt LWdpdCBhL3NvdW5kL3NvYy9pbXgvZXVrcmVhLXRsdjMyMC5jIGIvc291bmQvc29jL2lteC9ldWty ZWEtdGx2MzIwLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjk2ODM4 MGEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvc291bmQvc29jL2lteC9ldWtyZWEtdGx2MzIwLmMK PiBAQCAtMCwwICsxLDEzNSBAQAo+ICsvKgo+ICsgKiBldWtyZWEtdGx2MzIwLmMgIC0tICBTb0Mg YXVkaW8gZm9yIGV1a3JlYV9jcHVpbXhYWCBpbiBJMlMgbW9kZQo+ICsgKgo+ICsgKiBDb3B5cmln aHQgMjAxMCBFcmljIELDqW5hcmQsIEV1a3LDqWEgRWxlY3Ryb21hdGlxdWUgPGVyaWNAZXVrcmVh LmNvbT4KPiArICoKPiArICogYmFzZWQgb24gc291bmQvc29jL3MzYzI0eHgvczNjMjR4eF9zaW10 ZWNfdGx2MzIwYWljMjMuYwo+ICsgKiB3aGljaCBpcyBDb3B5cmlnaHQgMjAwOSBTaW10ZWMgRWxl Y3Ryb25pY3MKPiArICogYW5kIG9uIHNvdW5kL3NvYy9pbXgvcGh5Y29yZS1hYzk3LmMgd2hpY2gg aXMKPiArICogQ29weXJpZ2h0IDIwMDkgU2FzY2hhIEhhdWVyLCBQZW5ndXRyb25peCA8cy5oYXVl ckBwZW5ndXRyb25peC5kZT4KPiArICogCj4gKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgIGl0IGFuZC9vciBtb2RpZnkgaXQKPiArICogIHVu ZGVyICB0aGUgdGVybXMgb2YgIHRoZSBHTlUgR2VuZXJhbCAgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5IHRoZQo+ICsgKiAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyAgZWl0aGVyIHZl cnNpb24gMiBvZiB0aGUgIExpY2Vuc2UsIG9yIChhdCB5b3VyCj4gKyAqICBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgo+ICsgKgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUu aD4KPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZXBhcmFtLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9k ZXZpY2UuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2kyYy5oPgo+ICsjaW5jbHVkZSA8c291bmQvY29y ZS5oPgo+ICsjaW5jbHVkZSA8c291bmQvcGNtLmg+Cj4gKyNpbmNsdWRlIDxzb3VuZC9zb2MuaD4K PiArI2luY2x1ZGUgPHNvdW5kL3NvYy1kYXBtLmg+Cj4gKyNpbmNsdWRlIDxhc20vbWFjaC10eXBl cy5oPgo+ICsKPiArI2luY2x1ZGUgIi4uL2NvZGVjcy90bHYzMjBhaWMyMy5oIgo+ICsjaW5jbHVk ZSAiaW14LXNzaS5oIgo+ICsKPiArI2RlZmluZSBDT0RFQ19DTE9DSyAxMjAwMDAwMAo+ICsKPiAr c3RhdGljIGludCBldWtyZWFfdGx2MzIwX2h3X3BhcmFtcyhzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJl YW0gKnN1YnN0cmVhbSwKPiArCQkJICAgIHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1z KQo+ICt7Cj4gKwlzdHJ1Y3Qgc25kX3NvY19wY21fcnVudGltZSAqcnRkID0gc3Vic3RyZWFtLT5w cml2YXRlX2RhdGE7Cj4gKwlzdHJ1Y3Qgc25kX3NvY19kYWkgKmNvZGVjX2RhaSA9IHJ0ZC0+ZGFp LT5jb2RlY19kYWk7Cj4gKwlzdHJ1Y3Qgc25kX3NvY19kYWkgKmNwdV9kYWkgPSBydGQtPmRhaS0+ Y3B1X2RhaTsKPiArCWludCByZXQ7Cj4gKwo+ICsJcmV0ID0gc25kX3NvY19kYWlfc2V0X2ZtdChj cHVfZGFpLCBTTkRfU09DX0RBSUZNVF9JMlMgfAo+ICsJCQkJICBTTkRfU09DX0RBSUZNVF9OQl9O RiB8Cj4gKwkJCQkgIFNORF9TT0NfREFJRk1UX0NCTV9DRk0pOwo+ICsJaWYgKHJldCkgewo+ICsJ CXByX2VycigiJXM6IGZhaWxlZCBzZXQgY3B1IGRhaSBmb3JtYXRcbiIsIF9fZnVuY19fKTsKPiAr CQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCXJldCA9IHNuZF9zb2NfZGFpX3NldF9mbXQoY29k ZWNfZGFpLCBTTkRfU09DX0RBSUZNVF9JMlMgfAo+ICsJCQkJICBTTkRfU09DX0RBSUZNVF9OQl9O RiB8Cj4gKwkJCQkgIFNORF9TT0NfREFJRk1UX0NCTV9DRk0pOwo+ICsJaWYgKHJldCkgewo+ICsJ CXByX2VycigiJXM6IGZhaWxlZCBzZXQgY29kZWMgZGFpIGZvcm1hdFxuIiwgX19mdW5jX18pOwo+ ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gc25kX3NvY19kYWlfc2V0X3N5c2Ns ayhjb2RlY19kYWksIDAsCj4gKwkJCQkgICAgIENPREVDX0NMT0NLLCBTTkRfU09DX0NMT0NLX09V VCk7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJcHJfZXJyKCIlczogZmFpbGVkIHNldHRpbmcgY29kZWMg c3lzY2xrXG4iLCBfX2Z1bmNfXyk7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwlyZXQg PSBzbmRfc29jX2RhaV9zZXRfc3lzY2xrKGNwdV9kYWksIElNWF9TU1BfU1lTX0NMSywgMCwKPiAr CQkJCVNORF9TT0NfQ0xPQ0tfSU4pOwo+ICsJaWYgKHJldCkgewo+ICsJCXByX2VycigiY2FuJ3Qg c2V0IENQVSBzeXN0ZW0gY2xvY2sgSU1YX1NTUF9TWVNfQ0xLXG4iKTsKPiArCQlyZXR1cm4gcmV0 Owo+ICsJfQo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IHNuZF9z b2Nfb3BzIGV1a3JlYV90bHYzMjBfc25kX29wcyA9IHsKPiArCS5od19wYXJhbXMJPSBldWtyZWFf dGx2MzIwX2h3X3BhcmFtcywKPiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3Qgc25kX3NvY19kYWlf bGluayBldWtyZWFfdGx2MzIwX2RhaSA9IHsKPiArCS5uYW1lCQk9ICJ0bHYzMjBhaWMyMyIsCj4g Kwkuc3RyZWFtX25hbWUJPSAiVExWMzIwQUlDMjMiLAo+ICsJLmNvZGVjX2RhaQk9ICZ0bHYzMjBh aWMyM19kYWksCj4gKwkub3BzCQk9ICZldWtyZWFfdGx2MzIwX3NuZF9vcHMsCj4gK307Cj4gKwo+ ICtzdGF0aWMgc3RydWN0IHNuZF9zb2NfY2FyZCBldWtyZWFfdGx2MzIwID0gewo+ICsJLm5hbWUJ CT0gImNwdWlteC1hdWRpbyIsCj4gKwkucGxhdGZvcm0JPSAmaW14X3NvY19wbGF0Zm9ybSwKPiAr CS5kYWlfbGluawk9ICZldWtyZWFfdGx2MzIwX2RhaSwKPiArCS5udW1fbGlua3MJPSAxLAo+ICt9 Owo+ICsKPiArc3RhdGljIHN0cnVjdCBzbmRfc29jX2RldmljZSBldWtyZWFfdGx2MzIwX3NuZF9k ZXZkYXRhID0gewo+ICsJLmNhcmQJCT0gJmV1a3JlYV90bHYzMjAsCj4gKwkuY29kZWNfZGV2CT0g JnNvY19jb2RlY19kZXZfdGx2MzIwYWljMjMsCj4gK307Cj4gKwo+ICtzdGF0aWMgc3RydWN0IHBs YXRmb3JtX2RldmljZSAqZXVrcmVhX3RsdjMyMF9zbmRfZGV2aWNlOwo+ICsKPiArc3RhdGljIGlu dCBfX2luaXQgZXVrcmVhX3RsdjMyMF9pbml0KHZvaWQpCj4gK3sKPiArCWludCByZXQ7Cj4gKwo+ ICsJaWYgKCFtYWNoaW5lX2lzX2V1a3JlYV9jcHVpbXgyNygpKQo+ICsJCS8qIHJldHVybiBoYXBw eS4gV2UgbWlnaHQgcnVuIG9uIGEgdG90YWxseSBkaWZmZXJlbnQgbWFjaGluZSAqLwo+ICsJCXJl dHVybiAwOwo+ICsKPiArCWV1a3JlYV90bHYzMjBfc25kX2RldmljZSA9IHBsYXRmb3JtX2Rldmlj ZV9hbGxvYygic29jLWF1ZGlvIiwgLTEpOwo+ICsJaWYgKCFldWtyZWFfdGx2MzIwX3NuZF9kZXZp Y2UpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJZXVrcmVhX3RsdjMyMF9kYWkuY3B1X2Rh aSA9ICZpbXhfc3NpX3BjbV9kYWlbMF07CgpBbnkgcmVhc29uIHdoeSB0aGlzIGlzIG5vdCBkZWZp bmVkIGFib3ZlID8KClRoYW5rcwoKTGlhbQotLSAKRnJlZWxhbmNlIERldmVsb3BlciwgU2xpbUxv Z2ljIEx0ZApBU29DIGFuZCBWb2x0YWdlIFJlZ3VsYXRvciBNYWludGFpbmVyLgpodHRwOi8vd3d3 LnNsaW1sb2dpYy5jby51awoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KQWxzYS1kZXZlbCBtYWlsaW5nIGxpc3QKQWxzYS1kZXZlbEBhbHNhLXByb2plY3Qu b3JnCmh0dHA6Ly9tYWlsbWFuLmFsc2EtcHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbHNh LWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: lrg@slimlogic.co.uk (Liam Girdwood) Date: Thu, 27 May 2010 14:50:05 +0100 Subject: [PATCH v2 2/4] soc/imx: add eukrea-tlv320 In-Reply-To: <1274950737-26498-2-git-send-email-eric@eukrea.com> References: <1274950737-26498-1-git-send-email-eric@eukrea.com> <1274950737-26498-2-git-send-email-eric@eukrea.com> Message-ID: <1274968205.3542.283.camel@odin> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Thu, 2010-05-27 at 10:58 +0200, Eric B?nard wrote: > Add the necessary files to support the TLV320AIC23B wired in I2S > on our i.MX platforms. > > Signed-off-by: Eric B?nard > Cc: Sascha Hauer > Cc: Mark Brown > Cc: Liam Girdwood > --- > sound/soc/imx/Kconfig | 8 +++ > sound/soc/imx/Makefile | 2 + > sound/soc/imx/eukrea-tlv320.c | 135 +++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 145 insertions(+), 0 deletions(-) > create mode 100644 sound/soc/imx/eukrea-tlv320.c > > diff --git a/sound/soc/imx/Kconfig b/sound/soc/imx/Kconfig > index 7174b4c..3e27b16 100644 > --- a/sound/soc/imx/Kconfig > +++ b/sound/soc/imx/Kconfig > @@ -11,3 +11,11 @@ config SND_IMX_SOC > config SND_MXC_SOC_SSI > tristate > > +config SND_SOC_EUKREA_TLV320 > + bool "Eukrea TLV320" > + depends on MACH_EUKREA_MBIMX27_BASEBOARD > + select SND_IMX_SOC > + select SND_SOC_TLV320AIC23 > + help > + Enable I2S based access to the TLV320AIC23B codec attached > + to the SSI4 interface > diff --git a/sound/soc/imx/Makefile b/sound/soc/imx/Makefile > index 9f8bb92..28d4b1e 100644 > --- a/sound/soc/imx/Makefile > +++ b/sound/soc/imx/Makefile > @@ -10,3 +10,5 @@ obj-$(CONFIG_SND_IMX_SOC) += snd-soc-imx.o > # i.MX Machine Support > snd-soc-phycore-ac97-objs := phycore-ac97.o > obj-$(CONFIG_SND_SOC_PHYCORE_AC97) += snd-soc-phycore-ac97.o > +snd-soc-eukrea-tlv320-objs := eukrea-tlv320.o > +obj-$(CONFIG_SND_SOC_EUKREA_TLV320) += snd-soc-eukrea-tlv320.o > diff --git a/sound/soc/imx/eukrea-tlv320.c b/sound/soc/imx/eukrea-tlv320.c > new file mode 100644 > index 0000000..968380a > --- /dev/null > +++ b/sound/soc/imx/eukrea-tlv320.c > @@ -0,0 +1,135 @@ > +/* > + * eukrea-tlv320.c -- SoC audio for eukrea_cpuimxXX in I2S mode > + * > + * Copyright 2010 Eric B?nard, Eukr?a Electromatique > + * > + * based on sound/soc/s3c24xx/s3c24xx_simtec_tlv320aic23.c > + * which is Copyright 2009 Simtec Electronics > + * and on sound/soc/imx/phycore-ac97.c which is > + * Copyright 2009 Sascha Hauer, Pengutronix > + * > + * 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. > + * > + */ > + > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +#include "../codecs/tlv320aic23.h" > +#include "imx-ssi.h" > + > +#define CODEC_CLOCK 12000000 > + > +static int eukrea_tlv320_hw_params(struct snd_pcm_substream *substream, > + struct snd_pcm_hw_params *params) > +{ > + struct snd_soc_pcm_runtime *rtd = substream->private_data; > + struct snd_soc_dai *codec_dai = rtd->dai->codec_dai; > + struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai; > + int ret; > + > + ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S | > + SND_SOC_DAIFMT_NB_NF | > + SND_SOC_DAIFMT_CBM_CFM); > + if (ret) { > + pr_err("%s: failed set cpu dai format\n", __func__); > + return ret; > + } > + > + ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S | > + SND_SOC_DAIFMT_NB_NF | > + SND_SOC_DAIFMT_CBM_CFM); > + if (ret) { > + pr_err("%s: failed set codec dai format\n", __func__); > + return ret; > + } > + > + ret = snd_soc_dai_set_sysclk(codec_dai, 0, > + CODEC_CLOCK, SND_SOC_CLOCK_OUT); > + if (ret) { > + pr_err("%s: failed setting codec sysclk\n", __func__); > + return ret; > + } > + > + ret = snd_soc_dai_set_sysclk(cpu_dai, IMX_SSP_SYS_CLK, 0, > + SND_SOC_CLOCK_IN); > + if (ret) { > + pr_err("can't set CPU system clock IMX_SSP_SYS_CLK\n"); > + return ret; > + } > + > + return 0; > +} > + > +static struct snd_soc_ops eukrea_tlv320_snd_ops = { > + .hw_params = eukrea_tlv320_hw_params, > +}; > + > +static struct snd_soc_dai_link eukrea_tlv320_dai = { > + .name = "tlv320aic23", > + .stream_name = "TLV320AIC23", > + .codec_dai = &tlv320aic23_dai, > + .ops = &eukrea_tlv320_snd_ops, > +}; > + > +static struct snd_soc_card eukrea_tlv320 = { > + .name = "cpuimx-audio", > + .platform = &imx_soc_platform, > + .dai_link = &eukrea_tlv320_dai, > + .num_links = 1, > +}; > + > +static struct snd_soc_device eukrea_tlv320_snd_devdata = { > + .card = &eukrea_tlv320, > + .codec_dev = &soc_codec_dev_tlv320aic23, > +}; > + > +static struct platform_device *eukrea_tlv320_snd_device; > + > +static int __init eukrea_tlv320_init(void) > +{ > + int ret; > + > + if (!machine_is_eukrea_cpuimx27()) > + /* return happy. We might run on a totally different machine */ > + return 0; > + > + eukrea_tlv320_snd_device = platform_device_alloc("soc-audio", -1); > + if (!eukrea_tlv320_snd_device) > + return -ENOMEM; > + > + eukrea_tlv320_dai.cpu_dai = &imx_ssi_pcm_dai[0]; Any reason why this is not defined above ? Thanks Liam -- Freelance Developer, SlimLogic Ltd ASoC and Voltage Regulator Maintainer. http://www.slimlogic.co.uk