On Wed, 09 Feb 2022 11:38:23 +0100, Cezary Rojewski wrote:
On 2022-02-09 11:21 AM, Cezary Rojewski wrote:
snd_soc_bind_card() invokes snd_card_register() which in consequence leads to snd_device_register_all() and that to automatic ->dev_register call. That call involves PM operations, and at that moment, codec is not ready for it.
By that I mean: bus driver (here, avs-driver) has some saying on the PM matter too e.g.: sets their (codecs) status to suspended via pm_runtime_set_suspended() so the bus runtime suspend is not blocked by codecs that could possibly never complete their probing.
Hm, but the runtime PM of hda_codec device is suppressed at first in snd_hda_codec_device_new() via pm_runtime_forbid(), i.e. the codec should be kept running until it reaches to snd_hda_codec_register(), it shouldn't be runtime-suspended beforehand.
I might overlook something, but it's a bit hard to follow...
thanks,
Takashi