All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michael Walle <michael@walle.cc>
To: Sameer Pujar <spujar@nvidia.com>
Cc: alsa-devel@alsa-project.org, broonie@kernel.org,
	devicetree@vger.kernel.org, jonathanh@nvidia.com,
	kuninori.morimoto.gx@renesas.com, linux-kernel@vger.kernel.org,
	linux-tegra@vger.kernel.org, robh@kernel.org, sharadg@nvidia.com,
	thierry.reding@gmail.com
Subject: Re: [PATCH 1/3] ASoC: simple-card-utils: Fix device module clock
Date: Thu, 11 Mar 2021 16:43:20 +0100	[thread overview]
Message-ID: <d4947632a8b3ebefff7fb6751d05a9bd@walle.cc> (raw)
In-Reply-To: <36c37df5-dffb-9168-d92f-4b3e482602fa@nvidia.com>

Am 2021-03-11 15:29, schrieb Sameer Pujar:
> On 3/11/2021 4:46 PM, Michael Walle wrote:
>> Am 2021-03-11 12:05, schrieb Sameer Pujar:
>> 
>>> It would work and initially I had similar patch, see [0] and related
>>> series. Suggestion is to always use "clocks" property with devices
>>> only.
>> 
>> I see. But again, I don't think it is correct to change the clock of
>> the codec by default. What happens if this is for example a
>> compatible = "fixed-clock"?
> 
> The codec rate won't be changed unless a corresponding "*mclk-fs" is 
> provided.
> 
>> 
>> As you pointed out in the referred thread [0]. simple-audio-card has
>> that clock and judging from the code it is exactly for this reason:
>> to either change/enable it or not.
>> 
> 
> 
>> With this patch you'll switch that to "always change it". Therefore,
>> shouldn't there be a dt flag to indicate wheter 
>> simple-audio-card/graph
>> should be in charge of the codecs clock input?
> 
> As mentioned above, it does not change always. Requires "*mclk-fs" to 
> do so.

As mentioned earlier, this is changing the sysclk, too. And I'd guess
most codecs need a fixed factor for the sysclk, thus if the codec 
supports
generating its own sysclk by a PLL it will need this factor, too.

Which is also defined in the binding:

   system-clock-frequency:
     description: |
       If a clock is specified and a multiplication factor is given with
       mclk-fs, the clock will be set to the calculated mclk frequency
       when the stream starts.


> May be below could be a possible alternative?
> - Re-order if-else of clock parsing.
> 
>    if (!of_property_read_u32(node, "system-clock-frequency", &val)) {
>        // Since you are fixing rate already via "assigned-clocks" this
> may be a duplication. OR

exactly. and also need a device tree change (also for older kernels)
on my side.

This could be a last resort, yes. But I'd rather see a flag which
indicates whether the simple-audio-card should control the (first)
clock of the codec or not. Because until now, this wasn't the case.
And I don't know if this was an oversight or on purpose. Kuninori would
need to comment on that. And with the "we change mclk by default", we
break codecs with automatic sysclk generation.

>        // "assigned-clocks" can be parsed to understand if a fixed
> rate is expected.

Sounds like a hack to me. Esp. its doing the same as its already
doing right now. That is a "sysfreq = clk_get_rate(codec)".

>        simple_dai->sysclk = val;
>    } else {
>        // fetch MCLK clock from device and setup sysclk
>        // a. If "*mclk-fs" is given and "clocks" is found, the rate
> would be updated.
>        // b. If "*mclk-fs" is not mentioned and "clocks" is found,
> then simple-card utils won't touch rate. It will just do clock
> enable/disable.

mclk-fs is also a factor for the sysclk, thus it is also needed
if there is no mclk (or a fixed mclk).

I don't think you can deduce whether you can change the codecs
first clock with the current information :(

>    }
> 
>> 
>> And its fetching just the first clock, doesn't it? What happens if a
>> codec has two clock inputs?
> 
> Yes, it would have been more descriptive if it were specifically
> looking for clock "mclk". I think the original assumption was codec
> takes one input clock (MCLK) and uses it for sysclk.

Yeah, I've just noticed that the clk_get_rate() also only works
for the first clock of the codec.

-michael

WARNING: multiple messages have this Message-ID (diff)
From: Michael Walle <michael@walle.cc>
To: Sameer Pujar <spujar@nvidia.com>
Cc: devicetree@vger.kernel.org, alsa-devel@alsa-project.org,
	kuninori.morimoto.gx@renesas.com, robh@kernel.org,
	linux-kernel@vger.kernel.org, jonathanh@nvidia.com,
	sharadg@nvidia.com, broonie@kernel.org, thierry.reding@gmail.com,
	linux-tegra@vger.kernel.org
Subject: Re: [PATCH 1/3] ASoC: simple-card-utils: Fix device module clock
Date: Thu, 11 Mar 2021 16:43:20 +0100	[thread overview]
Message-ID: <d4947632a8b3ebefff7fb6751d05a9bd@walle.cc> (raw)
In-Reply-To: <36c37df5-dffb-9168-d92f-4b3e482602fa@nvidia.com>

Am 2021-03-11 15:29, schrieb Sameer Pujar:
> On 3/11/2021 4:46 PM, Michael Walle wrote:
>> Am 2021-03-11 12:05, schrieb Sameer Pujar:
>> 
>>> It would work and initially I had similar patch, see [0] and related
>>> series. Suggestion is to always use "clocks" property with devices
>>> only.
>> 
>> I see. But again, I don't think it is correct to change the clock of
>> the codec by default. What happens if this is for example a
>> compatible = "fixed-clock"?
> 
> The codec rate won't be changed unless a corresponding "*mclk-fs" is 
> provided.
> 
>> 
>> As you pointed out in the referred thread [0]. simple-audio-card has
>> that clock and judging from the code it is exactly for this reason:
>> to either change/enable it or not.
>> 
> 
> 
>> With this patch you'll switch that to "always change it". Therefore,
>> shouldn't there be a dt flag to indicate wheter 
>> simple-audio-card/graph
>> should be in charge of the codecs clock input?
> 
> As mentioned above, it does not change always. Requires "*mclk-fs" to 
> do so.

As mentioned earlier, this is changing the sysclk, too. And I'd guess
most codecs need a fixed factor for the sysclk, thus if the codec 
supports
generating its own sysclk by a PLL it will need this factor, too.

Which is also defined in the binding:

   system-clock-frequency:
     description: |
       If a clock is specified and a multiplication factor is given with
       mclk-fs, the clock will be set to the calculated mclk frequency
       when the stream starts.


> May be below could be a possible alternative?
> - Re-order if-else of clock parsing.
> 
>    if (!of_property_read_u32(node, "system-clock-frequency", &val)) {
>        // Since you are fixing rate already via "assigned-clocks" this
> may be a duplication. OR

exactly. and also need a device tree change (also for older kernels)
on my side.

This could be a last resort, yes. But I'd rather see a flag which
indicates whether the simple-audio-card should control the (first)
clock of the codec or not. Because until now, this wasn't the case.
And I don't know if this was an oversight or on purpose. Kuninori would
need to comment on that. And with the "we change mclk by default", we
break codecs with automatic sysclk generation.

>        // "assigned-clocks" can be parsed to understand if a fixed
> rate is expected.

Sounds like a hack to me. Esp. its doing the same as its already
doing right now. That is a "sysfreq = clk_get_rate(codec)".

>        simple_dai->sysclk = val;
>    } else {
>        // fetch MCLK clock from device and setup sysclk
>        // a. If "*mclk-fs" is given and "clocks" is found, the rate
> would be updated.
>        // b. If "*mclk-fs" is not mentioned and "clocks" is found,
> then simple-card utils won't touch rate. It will just do clock
> enable/disable.

mclk-fs is also a factor for the sysclk, thus it is also needed
if there is no mclk (or a fixed mclk).

I don't think you can deduce whether you can change the codecs
first clock with the current information :(

>    }
> 
>> 
>> And its fetching just the first clock, doesn't it? What happens if a
>> codec has two clock inputs?
> 
> Yes, it would have been more descriptive if it were specifically
> looking for clock "mclk". I think the original assumption was codec
> takes one input clock (MCLK) and uses it for sysclk.

Yeah, I've just noticed that the clk_get_rate() also only works
for the first clock of the codec.

-michael

  reply	other threads:[~2021-03-11 15:44 UTC|newest]

Thread overview: 74+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-10  6:43 [PATCH 0/3] Use clocks property in a device node Sameer Pujar
2021-02-10  6:43 ` Sameer Pujar
2021-02-10  6:43 ` [PATCH 1/3] ASoC: simple-card-utils: Fix device module clock Sameer Pujar
2021-02-10  6:43   ` Sameer Pujar
2021-02-11 23:44   ` Kuninori Morimoto
2021-02-11 23:44     ` Kuninori Morimoto
2021-02-14 17:56     ` Sameer Pujar
2021-02-14 17:56       ` Sameer Pujar
2021-02-14 23:25       ` Kuninori Morimoto
2021-02-14 23:25         ` Kuninori Morimoto
2021-03-09 14:41   ` Michael Walle
2021-03-09 14:41     ` Michael Walle
2021-03-09 16:27     ` Sameer Pujar
2021-03-09 16:27       ` Sameer Pujar
2021-03-09 22:30       ` Michael Walle
2021-03-09 22:30         ` Michael Walle
2021-03-10 14:50         ` Sameer Pujar
2021-03-10 14:50           ` Sameer Pujar
2021-03-10 18:14           ` Michael Walle
2021-03-10 18:14             ` Michael Walle
2021-03-10 19:19             ` Sameer Pujar
2021-03-10 19:19               ` Sameer Pujar
2021-03-11 10:27           ` Michael Walle
2021-03-11 10:27             ` Michael Walle
2021-03-11 11:05             ` Sameer Pujar
2021-03-11 11:05               ` Sameer Pujar
2021-03-11 11:16               ` Michael Walle
2021-03-11 11:16                 ` Michael Walle
2021-03-11 14:29                 ` Sameer Pujar
2021-03-11 14:29                   ` Sameer Pujar
2021-03-11 15:43                   ` Michael Walle [this message]
2021-03-11 15:43                     ` Michael Walle
2021-03-11 16:41                     ` Mark Brown
2021-03-11 16:41                       ` Mark Brown
2021-03-11 16:15           ` Mark Brown
2021-03-11 16:15             ` Mark Brown
2021-03-11 22:11             ` Michael Walle
2021-03-11 22:11               ` Michael Walle
2021-03-12 11:35               ` Mark Brown
2021-03-12 11:35                 ` Mark Brown
2021-03-12 12:01                 ` Michael Walle
2021-03-12 12:01                   ` Michael Walle
2021-03-12 12:04                   ` Mark Brown
2021-03-12 12:04                     ` Mark Brown
2021-03-12 12:30                     ` Michael Walle
2021-03-12 12:30                       ` Michael Walle
2021-03-12 13:46                       ` Mark Brown
2021-03-12 13:46                         ` Mark Brown
2021-03-15 12:05                         ` Michael Walle
2021-03-15 12:05                           ` Michael Walle
2021-03-15 15:19                           ` Sameer Pujar
2021-03-15 15:19                             ` Sameer Pujar
2021-03-15 15:33                             ` Michael Walle
2021-03-15 15:33                               ` Michael Walle
2021-03-15 15:57                               ` Sameer Pujar
2021-03-15 15:57                                 ` Sameer Pujar
2021-03-15 15:39                             ` Mark Brown
2021-03-15 15:39                               ` Mark Brown
2021-03-15 17:10                               ` Sameer Pujar
2021-03-15 17:10                                 ` Sameer Pujar
2021-03-15 17:13                                 ` Michael Walle
2021-03-15 17:13                                   ` Michael Walle
2021-03-11 16:00     ` Mark Brown
2021-03-11 16:00       ` Mark Brown
2021-03-11 21:34       ` Michael Walle
2021-03-11 21:34         ` Michael Walle
2021-02-10  6:43 ` [PATCH 2/3] Revert "ASoC: audio-graph-card: Add clocks property to endpoint node" Sameer Pujar
2021-02-10  6:43   ` Sameer Pujar
2021-02-11 13:00   ` Mark Brown
2021-02-11 13:00     ` Mark Brown
2021-02-10  6:43 ` [PATCH 3/3] arm64: tegra: Move clocks from RT5658 endpoint to device node Sameer Pujar
2021-02-10  6:43   ` Sameer Pujar
2021-02-11 15:38 ` [PATCH 0/3] Use clocks property in a " Mark Brown
2021-02-11 15:38   ` 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=d4947632a8b3ebefff7fb6751d05a9bd@walle.cc \
    --to=michael@walle.cc \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=jonathanh@nvidia.com \
    --cc=kuninori.morimoto.gx@renesas.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=robh@kernel.org \
    --cc=sharadg@nvidia.com \
    --cc=spujar@nvidia.com \
    --cc=thierry.reding@gmail.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.