devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Stephen Warren <swarren@wwwdotorg.org>
To: Mark Brown <broonie@kernel.org>
Cc: Tushar Behera <tushar.behera@linaro.org>,
	alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org,
	devicetree@vger.kernel.org, tiwai@suse.de, perex@perex.cz,
	dianders@chromium.org, jerry.wong@maximintegrated.com
Subject: Re: [PATCH 1/2] ASoC: max98090: Add master clock handling
Date: Thu, 22 May 2014 16:24:55 -0600	[thread overview]
Message-ID: <537E7937.2010408@wwwdotorg.org> (raw)
In-Reply-To: <20140522181948.GP12304@sirena.org.uk>

On 05/22/2014 12:19 PM, Mark Brown wrote:
> On Thu, May 22, 2014 at 11:50:55AM -0600, Stephen Warren wrote:
> 
>> I think we should nail down exactly what set_sysclk() means. Since it
>> takes an explicit MCLK clock rate (rather than e.g. sample rate) right
>> now, surely it's a notification of what the clock /is/, not a request
>> for the CODEC to set up its input clock. If we expect the CODEC to go to
> 
> It really should be that from a device model/clock API point of view and
> it certainly is with the patch proposed, the fact that it happens not to
> have been is just a product of the poor clock support in Linux than
> anything else.
> 
>> the clock driver and request an MCLK for itself (e.g. based on sample
>> rate), surely that should happen from some function besides
>> set_sysclk(), with different semantics e.g. hw_params().
> 
> I'm not sure where you see the CODEC going off and deciding the MCLK
> rate itself here?  Essentially all that's happening here is that
> set_sysclk() is behaving like the clock API does and setting its own
> rate to what it was explicitly asked to set, including bouncing that
> request up the chain.

If set_sysclk() is never allowed to do anything other than forward the
value it receives to the clock API, I'm much less concerned, althoguh
still a bit.

My main worry is that this patch opens the door for set_sysclk() to
perform some kind of calculation to determine the MCLK rate. Right now,
this patch doesn't do that, but there's nothing obvious from the code
that no CODEC is allowed to do that. After all, sysclk has a parameter
to indicate *which* clock in the CODEC to set. Some CODEC driver author
might write something where the machine driver tells the CODEC driver
the desired rate of some CODEC-internal PLL, from which set_sysclk()
calculates what it needs for MCLK, and then goes off and requests that
value from the clock API.

Ignoring that, I'm still not sure that the CODEC driver setting the MCLK
rate is appropriate. If we have 1 MCLK output from an SoC, connected to
2 different CODECs, why wouldn't the overall machine driver call
clk_set_rate() on that clock, and then notify the two CODEC drivers of
that rate. Making each CODEC's set_sysclk() call clk_set_rate() on the
same clock with the same value seems redundant, albeit it should work
out fine since they both request the same rate.

  reply	other threads:[~2014-05-22 22:24 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-22  9:17 [PATCH 0/2] ASoC: max98090/max98095: Add master clock handing Tushar Behera
2014-05-22  9:17 ` [PATCH 1/2] ASoC: max98090: Add master clock handling Tushar Behera
2014-05-22 10:30   ` Mark Brown
     [not found]     ` <20140522103039.GD12304-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2014-05-23  5:35       ` Tushar Behera
     [not found]         ` <CAHbNUh2QHv8n7Y19qfO7BagX5AWe0i17MjDvr7yOpHf6YNGW4A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-05-23 11:14           ` Mark Brown
     [not found]             ` <20140523111446.GA12304-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2014-05-23 11:36               ` Tushar Behera
     [not found]                 ` <CAHbNUh152xgyVxcCHiv0M6PLw8DE7KZ990WG7uRWWFBc8sPWRQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-05-23 11:41                   ` Mark Brown
     [not found]                     ` <20140523114113.GE12304-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2014-05-23 12:02                       ` Tushar Behera
2014-05-22 15:51   ` Stephen Warren
     [not found]     ` <537E1D0A.6020303-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2014-05-22 17:34       ` Mark Brown
     [not found]         ` <20140522173403.GL12304-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2014-05-22 17:50           ` Stephen Warren
     [not found]             ` <537E38FF.9000407-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2014-05-22 18:19               ` Mark Brown
2014-05-22 22:24                 ` Stephen Warren [this message]
2014-05-22 23:36                   ` Mark Brown
2014-05-22  9:17 ` [PATCH 2/2] ASoC: max98095: " Tushar Behera
2014-05-22 10:31   ` Mark Brown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=537E7937.2010408@wwwdotorg.org \
    --to=swarren@wwwdotorg.org \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dianders@chromium.org \
    --cc=jerry.wong@maximintegrated.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=perex@perex.cz \
    --cc=tiwai@suse.de \
    --cc=tushar.behera@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).