Re: Regression found (Stop-marking-clocks-as-CLK_IS_CRITICAL)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On 01-11-18 15:28, Dean Wallace wrote:
On 01-11-18, Hans de Goede wrote:
Hi,

On 01-11-18 11:37, Dean Wallace wrote:
On 31-10-18, Pierre-Louis Bossart wrote:

Just thought it worth mentioning, this new patch that fixes sound
again, seems to have ressurected an old issue with PLL unlock.  I'm
seeing journal entries after fresh boot ......

```
picard kernel: max98090 i2c-193C9890:00: PLL unlocked
picard systemd[462]: Started Sound Service.
picard kernel: max98090 i2c-193C9890:00: PLL unlocked
picard kernel: max98090 i2c-193C9890:00: PLL unlocked
picard kernel: max98090 i2c-193C9890:00: PLL unlocked
picard kernel: max98090 i2c-193C9890:00: PLL unlocked
picard kernel: max98090 i2c-193C9890:00: PLL unlocked
picard kernel: max98090 i2c-193C9890:00: PLL unlocked
picard kernel: max98090 i2c-193C9890:00: PLL unlocked
picard kernel: max98090 i2c-193C9890:00: PLL unlocked
picard kernel: max98090_pll_work: 141 callbacks suppressed
picard kernel: max98090 i2c-193C9890:00: PLL unlocked
```

sound is ok, but sometimes plugging in headphones spams journal with
those PLL messages, and sound turns into "daleks", and I have to
remove/insert headphones few times or stop/start audio to fix it.
It's a very old issue, maybe you'd know more about it.

I noticed this error on my Orco device used for tests many moons ago, but I
could never find out what led to this error case, it wasn't deterministic
and didn't impact the audio quality. All I could do is rate_limit it... If
we have an A vs. B situation it'd be really helpful to diagnose further.

Is there really a causality between the changes from Hans and this PLL
unlock error? Are you 100% sure this was not present in the previous install
you used (4.18.14 as mentioned earlier in the thread)?

Thanks

-Pierre

Well, numerous boots, kernels, headphone inserting - no PLL or
'Daleks'.  My laptop must have been haunted that day (halloween).
I'll put it to bed.

So you can no longer reproduce. Bummer. Note this might be caused by
the temperature of the laptop when you were running the tests...

Anyways if you hit this again and you can reproduce it, please
give adding a msleep(10) after code mucking with the clk a try.

Regards,

Hans

Right then, I can make it unlock and 'daleks' by going into
pavucontrol and switching the Profile back and forth from Stereo
Output to Stereo Output+Analog Mono Input, which is actually something
I've done to make it correct itself as well.  I don't use the mic or
anything so I've had it set to Stereo Ouput only which I 'think' has
somehow made it more stable for me.  With all my playing around, one
of the things I did was clean out my .config/pulse folder which meant
by default the 'Profile' in pavucontrol was set to Output+Input, which
seems to help trigger the PLL issue when inserting headphones.

So what would you like me to do, as I can trigger it on demand it
seems.

Please give the attached patch a try (on top of my patch for the clk quirk)
and let us know if that fixes these errors.

Regards,

Hans

>From d81f1906f08bb6d3aa45a0403adc1d36754c13cc Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@xxxxxxxxxx>
Date: Thu, 1 Nov 2018 15:47:42 +0100
Subject: [PATCH] ASoC: intel: cht_bsw_max98090_ti: Sleep a bit after enabling
 the mclk

Sleep a bit after enabling the mclk to give the PLL some time to lock,
this fixes the log showing a whole bunch of:

kernel: max98090 i2c-193C9890:00: PLL unlocked

errors.

Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx>
---
 sound/soc/intel/boards/cht_bsw_max98090_ti.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/sound/soc/intel/boards/cht_bsw_max98090_ti.c b/sound/soc/intel/boards/cht_bsw_max98090_ti.c
index 9d9f6e41d81c..f3bc0bfdfe08 100644
--- a/sound/soc/intel/boards/cht_bsw_max98090_ti.c
+++ b/sound/soc/intel/boards/cht_bsw_max98090_ti.c
@@ -19,6 +19,7 @@
  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  */
 
+#include <linux/delay.h>
 #include <linux/dmi.h>
 #include <linux/module.h>
 #include <linux/platform_device.h>
@@ -66,6 +67,7 @@ static int platform_clock_control(struct snd_soc_dapm_widget *w,
 				"could not configure MCLK state");
 			return ret;
 		}
+		usleep_range(5000, 10000);
 	} else {
 		clk_disable_unprepare(ctx->mclk);
 	}
-- 
2.19.0


[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux