Re: suspend/Resume Sound issue workaround

From: Krzysztof Kozlowski
Date: Mon Aug 05 2019 - 04:31:43 EST


On Sun, 4 Aug 2019 at 14:36, Jaafar Ali <jaafarkhalaf@xxxxxxxxx> wrote:
> Dear Krzysztof,
> The sound of Odroid-XU4 after suspend/resume cycle has an issue. As a workaround, the I2SMOD register value should be set to zero after resume, the i2s_resume function would be:
>
> static int i2s_resume(struct snd_soc_dai *dai)
> {
> struct samsung_i2s_priv *priv = dev_get_drvdata(dai->dev);
> printk(KERN_EMERG "i2s resume of dai !\n");
> priv->suspend_i2smod = 0;//workaround-1 , to force using internal codec clock source (CDCLKCON bit = 0)
> //see another workaround inside hw_param
>
> return pm_runtime_force_resume(dai->dev);
>
> }
>
> Also, inside hw_params function, the rclk_srcrate must be halved to solve unknown problem of clock shift, so before return from hw_params we must insert:
> if(mod == 0){
> priv->rclk_srcrate = priv->rclk_srcrate / 2; //workaround-2, clock is being halved due to unknwon bug
> printk(KERN_EMERG "i2s hw_param rclk_srcrate after %lu !\n", priv->rclk_srcrate);
> }
> return 0;
>
> With these two workaround sound issue was solved, but I hope we can get concrete fix.

Hi Jaafar,

Thanks for the report. Preferred way to send bug reports is to use the
public channels by sending to Linux kernel mailing lists:
linux-samsung-soc@xxxxxxxxxxxxxxx and linux-kernel@xxxxxxxxxxxxxxx,
with the Cc of other interested people. The best is to use the
scripts/get_maintainer.pl tool (with -f for example) to get the list
of addresses to Cc.

Best regards,
Krzysztof