linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: afaerber@suse.de (Andreas Färber)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/6] ASoC: max98088: Document DT bindings
Date: Fri, 20 Feb 2015 01:36:56 +0100	[thread overview]
Message-ID: <54E681A8.6040702@suse.de> (raw)
In-Reply-To: <54E64C09.5000505@collabora.co.uk>

Am 19.02.2015 um 21:48 schrieb Javier Martinez Canillas:
> On 02/19/2015 07:54 PM, Andreas F?rber wrote:
>> Am 19.02.2015 um 19:40 schrieb Andreas F?rber:
>>> I updated max98088 and had it working on first boot, but on
>>> second boot it complained about the frequency:
>>>
>>> [    7.896834] max98088 7-0010: revision A
>>> [    7.912776] snow-audio sound: HiFi <-> 3830000.i2s mapping ok
>>> [    7.919367] max98088 7-0010: Invalid master clock frequency
>>> [    7.919429] snow-audio sound: ASoC: Spring-I2S-MAX98089 late_probe()
>>> failed: -22
>>> [    7.920019] snow-audio sound: snd_soc_register_card failed (-22)
>>> [    7.920109] snow-audio: probe of sound failed with error -22
>>
> 
> I had the same error on Snow but even on the first boot and after doing some
> code archeology, I found the following commit [0] in a Samsung downstream
> tree that solves the issue.
> 
> The problem is that clk_round_rate(max98095->mclk, freq) returns 0 as the
> rounded rate if XCLOUT is not allowed to be re-parented on rate change.

Same on Spring:

diff --git a/sound/soc/codecs/max98088.c b/sound/soc/codecs/max98088.c
index 1aa81321afba..46dc64675c26 100644
--- a/sound/soc/codecs/max98088.c
+++ b/sound/soc/codecs/max98088.c
@@ -1365,6 +1365,7 @@ static int max98088_dai_set_sysclk(struct
snd_soc_dai *dai,

        if (!IS_ERR(max98088->mclk)) {
                freq = clk_round_rate(max98088->mclk, freq);
+               dev_warn(codec->dev, "freq = %u\n", freq);
                clk_set_rate(max98088->mclk, freq);
        }


> With Tushar's patch I see that clk_round_rate() returns 24000000 (24MHz)
> so the codec driver setups the correct PLL clock.

Ditto. With the clkout reparenting patch, clk_round_rate() returns 24MHz
just like when double-beep-initialized. However when not
double-beep-initialized, the driver initializes, but no audible output,
so there must be another missing puzzle piece.

>> On a suspicion, the fourth boot I waited for the double-beep of the
>> firmware (waiting for Ctrl+d/u), and then it did work.
>>
>> So it seems the mclk is not always set up properly by the kernel,
>> relying on firmware. Who's in charge of setting that clock up?
> 
> Right, it seems audio is only working due the firmware doing some previous
> setup. Probably it works on every boot if you have "sound init" as a part of
> the u-boot boot commands?

Indeed it does, 24 MHz without the reparenting patch, and sound working.

'sound init' code:
https://github.com/afaerber/u-boot/blob/spring/drivers/sound/max98088.c

Regards,
Andreas

-- 
SUSE Linux GmbH, Maxfeldstr. 5, 90409 N?rnberg, Germany
GF: Felix Imend?rffer, Jane Smithard, Jennifer Guild, Dilip Upmanyu,
Graham Norton; HRB 21284 (AG N?rnberg)

  reply	other threads:[~2015-02-20  0:36 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-18 18:25 [PATCH 0/6] ASoC: samsung: Spring sound support Andreas Färber
2015-02-18 18:25 ` [PATCH 1/6] ASoC: max98088: Document DT bindings Andreas Färber
2015-02-19 13:55   ` Javier Martinez Canillas
2015-02-19 14:13     ` Andreas Färber
2015-02-19 17:48       ` Doug Anderson
2015-02-19 18:40         ` Andreas Färber
2015-02-19 18:54           ` Andreas Färber
2015-02-19 20:48             ` Javier Martinez Canillas
2015-02-20  0:36               ` Andreas Färber [this message]
2015-02-20 12:12                 ` Sylwester Nawrocki
2015-02-23 16:46                   ` Javier Martinez Canillas
2015-02-18 18:25 ` [PATCH 2/6] ASoC: max98088: Add " Andreas Färber
2015-02-18 19:08   ` Sergei Shtylyov
2015-02-18 19:17     ` Andreas Färber
2015-02-19 19:18   ` [PATCH] ASoC: max98088: Add master clock handling Andreas Färber
2015-02-20  3:27     ` [alsa-devel] " Tushar Behera
2015-02-23  8:29       ` Javier Martinez Canillas
2015-02-23 12:23         ` Andreas Färber
2015-02-18 18:25 ` [PATCH 3/6] ARM: dts: Add max98089 to exynos5250-spring Andreas Färber
2015-02-18 18:25 ` [PATCH 4/6] ASoC: samsung: Document binding for max98089 based Snow driver Andreas Färber
2015-02-19  3:49   ` [alsa-devel] " Tushar Behera
2015-02-18 18:25 ` [PATCH 5/6] ASoC: samsung: Extend Snow driver to support max98089 Andreas Färber
2015-02-19  9:44   ` Mark Brown
2015-02-19 12:33     ` Andreas Färber
2015-02-19 17:44     ` Doug Anderson
2015-02-19 17:56       ` Andreas Färber
2015-02-19 19:01         ` Doug Anderson
2015-02-21  2:40       ` Mark Brown
2015-02-18 18:25 ` [PATCH 6/6] ARM: dts: Add sound support to exynos5250-spring Andreas Färber
2015-02-19 14:05   ` Javier Martinez Canillas

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=54E681A8.6040702@suse.de \
    --to=afaerber@suse.de \
    --cc=linux-arm-kernel@lists.infradead.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).