On Thu, 2020-04-16 at 09:04 +0200, Takashi Iwai wrote:
On Thu, 16 Apr 2020 07:52:45 +0200, Sridharan, Ranjani wrote:
Hi Takashi,
While working on implementing the probes features in SOF using a separate card for the probe DAI links, I noticed that calling snd_soc_register_card() results in incrementing the usage_count for the device that registers the card by 2 and it is not decremented until the card is freed.
Is this the expected behaviour? Typically, we register a separate platform device for the Intel machines which in turn register the card and none of them ever enable runtime PM. So this has no impact on the parent device's runtime PM status.
I'd like to avoid creating a separate platform device just to register the card if possible while also enabling runtime PM . But when I do this today, the device cannot enter runtime suspend at all. Could you please shed some light on this?
It's not clear how you see the things. Which device are you looking at? Typically a card object points to two different devices, one is the real device that the chip belongs to (card->dev), and another the own device object for managing the device files (card.card_dev). And in general, snd_soc_card_register() or snd_card_register() don't manipulate the runtime PM stuff by itself at all.
Its the card->dev that I am looking at. This is the device that calls devm_snd_soc_register_card(). In my tests, the usage_count for this device is 0 before calling devm_snd_soc_register_card and it is 2 after the card registration is complete.
Thanks, Ranjani