• Ranjani Sridharan's avatar
    ASoC: core: remove link components before cleaning up card resources · f96fb7d1
    Ranjani Sridharan authored
    When the card is registered by the machine driver,
    dai link components are probed after the snd_card is
    created. This is done in snd_soc_bind_card() which calls
    snd_soc_instantiate_card() to first create the snd_card
    and then probes the link components by calling
    soc_probe_link_components(). The snd_card is used by the
    component driver to add the kcontrols associated
    with dapm widgets to the card.
    
    When the machine driver is unregistered, the snd_card
    is freed when the card resources are cleaned up.
    But the snd_card needs to be valid while unloading the
    topology dapm widgets in order to remove the kcontrols
    from the card.
    
    Since, unloading topology is done when the component
    driver is removed, the link components should be removed
    in snd_soc_unbind_card(). This will ensure that the kcontrols
    are removed before the card resources are cleaned up and
    the snd_card itself is freed.
    Signed-off-by: default avatarRanjani Sridharan <ranjani.sridharan@linux.intel.com>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    f96fb7d1
soc-core.c 98.1 KB