Re: [EXTERNAL] Re: [PATCH] ASoC: max98373: Mark cache dirty before entering sleep
From: Pierre-Louis Bossart
Date: Tue Sep 28 2021 - 14:15:40 EST
>>>> Instead of changing the suspend sequence, can we please try to modify
>>>> the max98373_io_init() routine to unconditionally flag the cache as
>>>> dirty, maybe this points to a problem with the management of the
>>>> max98373->first_hw_init flag.
>>>
>>> A quick survey of other drivers suggests that this pattern should be
>>> factored out into some helpers as it looks like there's several ways
>>> of implementing it that look very similar but not quite the same...
>>
>> No disagreement here, we tried really hard to enforce a common pattern for
>> suspend-resume, but i just noticed that the maxim amp driver is different on
>> suspend (resume is consistent with the rest).
>
> OK. I believe it was similar before. But it looks like 'regcache_mark_dirty' is being
> disappeared on suspend function.
Not sure what you are trying to say?
> static int __maybe_unused rt5682_dev_suspend(struct device *dev)
> {
> struct rt5682_priv *rt5682 = dev_get_drvdata(dev);
>
> if (!rt5682->hw_init)
> return 0;
>
> cancel_delayed_work_sync(&rt5682->jack_detect_work);
>
> regcache_cache_only(rt5682->regmap, true);
> regcache_mark_dirty(rt5682->regmap);
>
> return 0;
> }
That last line is also not needed. If you look at rt5682-sdw.c, you'll
see a regcache_mark_dirty() when the device is re-initialized.
But now I am starting to wonder if this is due to Chrome kernel
differences and possibly a missing backport patch? I no longer believe
in coincidences, these two devices are ONLY used in Chromebooks so far...