• Lars-Peter Clausen's avatar
    ASoC: Consolidate platform and CODEC probe/remove · f1d45cc3
    Lars-Peter Clausen authored
    The platform and CODEC probe and remove code is now largely identical. This
    patch consolidates it at the component level.
    
    The resulting code is slightly larger due to all the boiler plate code setting
    up the indirection for the table based control and DAPM registration.  Once all
    drivers have been update to no longer use the snd_soc_codec_driver and
    snd_soc_platform_driver specific fields for this the indirection can be removed
    again.
    
    This patch contains two noteworthy hacks that are only meant to be temporary to
    be able to update drivers and the core in separate incremental patches.
    
    The first hack is related to that some DPCM platforms expect that the DAPM
    widgets for the DAIs of a snd_soc_component are created in the DAPM context of
    the snd_soc_platform that has the same parent device. For handling this the
    steal_sibling_dai_widgets attribute is introduced. It gets set for
    snd_soc_platforms that register DAPM elements. When creating the DAI widgets for
    a component this flag is checked and if it is found on one of the siblings the
    component will not create any DAI widgets in its own DAPM context. If the
    attribute is set on a platform it will look for siblings components and create
    DAI widgets for them in its own context. The fix for this will be to update
    the offending drivers to only register a single component rather than two.
    
    The second hack deals with the fact that the ASoC card suspend and resume code
    still needs a list of CODECs that have been registered for the card. To handle
    this the generic probe and remove path have a check to see if the component is
    CODEC and if yes add/remove it to the card's CODEC list. While it is possible to
    clean up the suspend/resume code to not need the CODEC list anymore this is a
    bit of a chicken and egg problem since it will become easier to clean up the
    suspend/resume code once there is a unified component layer.
    Signed-off-by: default avatarLars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: default avatarMark Brown <broonie@linaro.org>
    f1d45cc3
soc-generic-dmaengine-pcm.c 13.3 KB