From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nicolin Chen Subject: Re: [PATCH] ASoC: cs42888: Add codec driver support Date: Tue, 25 Feb 2014 10:32:21 +0800 Message-ID: <20140225023219.GA7229@MrMyself> References: <1393224929-7555-1-git-send-email-Guangyu.Chen@freescale.com> <20140224113011.GE25940@sirena.org.uk> <20140224160648.GC6132@MrMyself> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from va3outboundpool.messaging.microsoft.com (va3ehsobe006.messaging.microsoft.com [216.32.180.16]) by alsa0.perex.cz (Postfix) with ESMTP id 5F4E026538C for ; Tue, 25 Feb 2014 03:49:03 +0100 (CET) Content-Disposition: inline In-Reply-To: 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: "Austin, Brian" Cc: "mark.rutland@arm.com" , "devicetree@vger.kernel.org" , "alsa-devel@alsa-project.org" , "pawel.moll@arm.com" , "ijc+devicetree@hellion.org.uk" , Mark Brown , "linux-doc@vger.kernel.org" , Liam Girdwood , "Handrigan, Paul" , "linux-kernel@vger.kernel.org" , "robh+dt@kernel.org" , "rob@landley.net" , "galak@codeaurora.org" , "grant.likely@linaro.org" List-Id: alsa-devel@alsa-project.org T24gTW9uLCBGZWIgMjQsIDIwMTQgYXQgMDQ6MzI6MDZQTSArMDAwMCwgQXVzdGluLCBCcmlhbiB3 cm90ZToKPiAKPiBPbiBGZWIgMjQsIDIwMTQsIGF0IDEwOjA2IEFNLCBOaWNvbGluIENoZW4gPEd1 YW5neXUuQ2hlbkBmcmVlc2NhbGUuY29tPiB3cm90ZToKPiAKPiA+IE9uIE1vbiwgRmViIDI0LCAy MDE0IGF0IDAzOjUyOjI0UE0gKzAwMDAsIEF1c3RpbiwgQnJpYW4gd3JvdGU6Cj4gPj4+PiArCWlm ICghSVNfRVJSKGNzNDI4ODgtPmNsaykpCj4gPj4+PiArCQljbGtfZGlzYWJsZV91bnByZXBhcmUo Y3M0Mjg4OC0+Y2xrKTsKPiA+Pj4gCj4gPj4+IERvZXMgdGhlIGRldmljZSB3b3JrIHdpdGhvdXQg TUNMSz8KPiA+PiBZZXMsIE1DTEsgaXMgcmVxdWlyZWQuIElmIHlvdSBjYW7igJl0IGdldCB0aGUg Y2xvY2sgeW91IHNob3VsZCBlcnJvciBvdXQuCj4gPiAKPiA+IFdhaXQuLi5SZWdhcmRpbmcgdGhp cyBjbG9jayBwYXJ0LCBJIGp1c3QgZm9yZ290IHRoZSByZWFzb24gSSBwdXQgdGhlIGNvZGU6Cj4g PiAKPiA+IDM4NSAgICAgICAgIGNzNDI4ODgtPmNsayA9IGRldm1fY2xrX2dldCgmaTJjLT5kZXYs ICJtY2xrIik7Cj4gPiAzODYgICAgICAgICBpZiAoSVNfRVJSKGNzNDI4ODgtPmNsaykpCj4gPiAz ODcgICAgICAgICAgICAgICAgIGRldl93YXJuKCZpMmMtPmRldiwgImZhaWxlZCB0byBnZXQgdGhl IGNsb2NrOiAlbGRcbiIsCj4gPiAzODggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ VFJfRVJSKGNzNDI4ODgtPmNsaykpOwo+ID4gCj4gPiB3YXMgYmVjYXVzZSB0aGUgTUNMSyBtaWdo dCBiZSBwcm92aWRlZCBmcm9tIFNvQyAoREFJIG1hc3Rlcikgc28gaXQgY291bGQKPiA+IGJlIHRv dGFsbHkgY29udHJvbGxlZCBieSBDUFUgREFJIGRyaXZlciwgRVNBSSBmb3IgZXhhbXBsZSBoYXMg aXRzIG93bgo+ID4gZGl2aWRlcnMgdG8gZGVyaXZlIHRoZSBIQ0tUIGNsb2NrIChNQ0xLIGZvciBU eCkgZnJvbSBhaGIgY2xvY2sgaW4gU29DCj4gPiBjbG9jayB0cmVlLCBpbiB3aGljaCBjYXNlIHdl IG1pZ2h0IG5vdCBlYXNpbHkgcGFzcyBhIHZhbGlkIGNsb2NrIHBoYW5kbGUKPiA+IHZpYSBEVC4g KFJGQyB0byB0aGlzIHRob3VnaHQuKQo+IE9LLCBJdOKAmXMgYW4gZXh0ZXJuYWwgTUNMSyBzb3Vy Y2UsIHNvIHdoeSBub3QganVzdCBoYW5kbGUgdGhhdCBpbiB0aGUgbWFjaGluZSBkcml2ZXI/IAo+ IFVzdWFsbHkgeW91IHdvdWxkIHdhbnQgdGhlIGNsb2NrIGVuYWJsZWQvZGlzYWJsZWQgaW4gdGhl IG1hY2hpbmUgZHJpdmVyIHNvIGlmIHlvdSBkb27igJl0IGdldCBpdCwgeW91IGNhbiBiYWlsIG91 dCB0aGVyZS4gCj4gQXQgbGVhc3QgdGhhdCBpcyBob3cgSSBkbyBvdXIgTUNMS+KAmXMuIFNpbmNl IHlvdSBhcmUgb25seSB1c2luZyB0aGUgZnJlcSBvZiB0aGUgY2xvY2sgdG8gZGVyaXZlIG1vZGVz LCBqdXN0IHB1dCB0aGUgY2xvY2sgaW5pdGlhbGl6YXRpb24gb3V0c2lkZSBhbmQganVzdCBwYXNz IGluIHRoZSBmcmVxIGxpa2UgeW91IGRvIGluIHNldF9zeXNjbGsKCkxldHRpbmcgY29kZWMgaGFu ZGxlIHRoZSBjbG9jayBoZXJlIGlzIHRyeWluZyB0byBlbi9kaXNhYmxlIGl0IG9ubHkgd2hlbiB1 c2luZwppdCAtLSBwbV9ydW50aW1lX3Jlc3VtZS9zdXNwZW5kKCkgc28gdGhhdCB3ZSBjYW4gc2F2 ZSBwb3dlciBkdXJpbmcgaWRsZSBzdGF0ZXMsCndoaWxlIHB1dHRpbmcgaXQgaW50byBtYWNoaW5l IGRyaXZlciwgcXVpdGUgY29tbW9uIGluIGxvdHMgb2YgbWFjaGluZSBkcml2ZXJzCnRob3VnaCwg d291bGQgbmVlZCB1cyB0byBlbmFibGUgaXQgaW4gdGhlIHByb2JlKCksIG90aGVyd2lzZSBtYWNo aW5lIGRyaXZlcgpjYW4ndCBmaW5pc2ggdGhlIGNsb2NrIGVuYWJsaW5nIGJlZm9yZSBjb2RlYyBk cml2ZXIncyBwbV9ydW50aW1lX3Jlc3VtZSgpIGFzCnBtX3J1bnRpbWVfZ2V0X3N5bmMoY29kZWNf ZGFpLT5kZXYpIGlzIGFsbW9zdCB0aGUgaGVhZCBvZiBzb2NfcGNtX29wZW4oKS4KCkF0IGZpcnN0 IHBsYWNlLCBJIGRpZCBsZXQgdGhpcyBjb2RlYyBkcml2ZXIgYmUgdG90YWxseSBleGVtcHQgZnJv bSB0aGlzIGNsb2NrCmhhbmRsaW5nLiBBbmQgaXQncyBxdWl0ZSBmYWlyIGFuZCBuZWF0IHRvIGRv IHRoYXQgaW4gdGhlIG1hY2hpbmUgZHJpdmVyIHRpbGwKdGhpcyBzZWNvbmQgdGhvdWdodCBjYW1l IHRvIG1lLi4uLgoKVGhhbmsgeW91LApOaWNvbGluIENoZW4KCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBbHNhLWRldmVsIG1haWxpbmcgbGlzdApBbHNh LWRldmVsQGFsc2EtcHJvamVjdC5vcmcKaHR0cDovL21haWxtYW4uYWxzYS1wcm9qZWN0Lm9yZy9t YWlsbWFuL2xpc3RpbmZvL2Fsc2EtZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753206AbaBYCuJ (ORCPT ); Mon, 24 Feb 2014 21:50:09 -0500 Received: from va3ehsobe010.messaging.microsoft.com ([216.32.180.30]:53133 "EHLO va3outboundpool.messaging.microsoft.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753183AbaBYCuD convert rfc822-to-8bit (ORCPT ); Mon, 24 Feb 2014 21:50:03 -0500 X-Forefront-Antispam-Report: CIP:70.37.183.190;KIP:(null);UIP:(null);IPV:NLI;H:mail.freescale.net;RD:none;EFVD:NLI X-SpamScore: -3 X-BigFish: VS-3(zz98dI9371Ic89bh1432Izz1f42h2148h208ch1ee6h1de0h1fdah2073h2146h1202h1e76h2189h1d1ah1d2ah21bch1fc6hzz1de098h8275bh1de097hz2dh2a8h839h93fhd25hd2bhf0ah1288h12a5h12a9h12bdh137ah13b6h1441h1504h1537h153bh162dh1631h1758h18e1h1946h19b5h1ad9h1b0ah1b2fh2222h224fh1fb3h1d0ch1d2eh1d3fh1dfeh1dffh1fe8h1ff5h209eh2216h22d0h2336h2438h2461h2487h24ach24d7h2516h2545h255eh1155h) Date: Tue, 25 Feb 2014 10:32:21 +0800 From: Nicolin Chen To: "Austin, Brian" CC: Mark Brown , "Handrigan, Paul" , "robh+dt@kernel.org" , "pawel.moll@arm.com" , "mark.rutland@arm.com" , "ijc+devicetree@hellion.org.uk" , "galak@codeaurora.org" , "rob@landley.net" , Liam Girdwood , "grant.likely@linaro.org" , "devicetree@vger.kernel.org" , "linux-doc@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "alsa-devel@alsa-project.org" Subject: Re: [PATCH] ASoC: cs42888: Add codec driver support Message-ID: <20140225023219.GA7229@MrMyself> References: <1393224929-7555-1-git-send-email-Guangyu.Chen@freescale.com> <20140224113011.GE25940@sirena.org.uk> <20140224160648.GC6132@MrMyself> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Content-Transfer-Encoding: 8BIT X-OriginatorOrg: freescale.com X-FOPE-CONNECTOR: Id%0$Dn%*$RO%0$TLS%0$FQDN%$TlsDn% Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Feb 24, 2014 at 04:32:06PM +0000, Austin, Brian wrote: > > On Feb 24, 2014, at 10:06 AM, Nicolin Chen wrote: > > > On Mon, Feb 24, 2014 at 03:52:24PM +0000, Austin, Brian wrote: > >>>> + if (!IS_ERR(cs42888->clk)) > >>>> + clk_disable_unprepare(cs42888->clk); > >>> > >>> Does the device work without MCLK? > >> Yes, MCLK is required. If you can’t get the clock you should error out. > > > > Wait...Regarding this clock part, I just forgot the reason I put the code: > > > > 385 cs42888->clk = devm_clk_get(&i2c->dev, "mclk"); > > 386 if (IS_ERR(cs42888->clk)) > > 387 dev_warn(&i2c->dev, "failed to get the clock: %ld\n", > > 388 PTR_ERR(cs42888->clk)); > > > > was because the MCLK might be provided from SoC (DAI master) so it could > > be totally controlled by CPU DAI driver, ESAI for example has its own > > dividers to derive the HCKT clock (MCLK for Tx) from ahb clock in SoC > > clock tree, in which case we might not easily pass a valid clock phandle > > via DT. (RFC to this thought.) > OK, It’s an external MCLK source, so why not just handle that in the machine driver? > Usually you would want the clock enabled/disabled in the machine driver so if you don’t get it, you can bail out there. > At least that is how I do our MCLK’s. Since you are only using the freq of the clock to derive modes, just put the clock initialization outside and just pass in the freq like you do in set_sysclk Letting codec handle the clock here is trying to en/disable it only when using it -- pm_runtime_resume/suspend() so that we can save power during idle states, while putting it into machine driver, quite common in lots of machine drivers though, would need us to enable it in the probe(), otherwise machine driver can't finish the clock enabling before codec driver's pm_runtime_resume() as pm_runtime_get_sync(codec_dai->dev) is almost the head of soc_pcm_open(). At first place, I did let this codec driver be totally exempt from this clock handling. And it's quite fair and neat to do that in the machine driver till this second thought came to me.... Thank you, Nicolin Chen