hda: how to implement component master_unbind?

Kai Vehmanen kai.vehmanen at linux.intel.com
Fri Oct 1 11:46:26 CEST 2021


Hi,

On Tue, 28 Sep 2021, Takashi Iwai wrote:

> Removing a component from the card is a PITA for now, indeed,
> especially when its influence is over different APIs (PCM, control,
> whatever)...
> 
> One thing I can think of is to perform like the vga_switcheroo
> handling in hda_intel.c; it's essentially a forced runtime suspend,
> and disable the whole card.  But in the case of audio-component
> unbind, we need to think about re-binding -- or completely ignore
> re-binding until the whole driver gets unloaded. 

thanks for the feedback! The switcheroo approach doesn't work too well for 
integrated HDA controllers that will typically have other codecs connected 
as well (and may have a DSP -> e.g. SOF/SST used as controller driver 
which would all need to implement this separately), but for the discrete 
GPU case this might be a workable approach (and makes sense as this is 
what switcheroo is meant for). I think gracefully handling the unbind is 
priority, but re-binding should be possible as well. We could do a 
switcheroo-enable type of flow in hdac_component_master_bind() and have 
the controller back up.

Of course it's not perfect still. I'd guess at least attempt to reach the 
codec#x procfs entry would hit timeouts if the controller is disabled this 
way.

Br, Kai


More information about the Alsa-devel mailing list