On Tue, Jan 21, 2020 at 06:32:47PM +0000, Mark Brown wrote:
On Tue, Jan 21, 2020 at 07:29:37PM +0100, Maxime Ripard wrote:
Mark, our issue here is that we have a driver tied to a device that is an HDMI encoder. Obviously, we'll want to register into DRM, which is what we were doing so far, with the usual case where at remove / unbind time, in order to free the resources, we just retrieve our pointer to our private structure using the device's drvdata.
Now, snd_soc_register_card also sets that pointer to the card we try to register, which is problematic. It seems that it's used to handle suspend / resume automatically, which in this case would be also not really fit for us (or rather, we would need to do more that just suspend the audio part).
There's a drvdata field in the snd_soc_card for cases like this - would that work for you?
Ah, right, we could just retrieve the snd_soc_card in the unbind, and the retrieve our structure that way. That's pretty simple :)
Stefan, I guess this is the easiest solution, we should just make sure that there's a comment to explain why we retrieve snd_soc_card in the unbind, since it's somewhat unusual.
Thanks! Maxime