• Lars-Peter Clausen's avatar
    ASoC: dapm: Simplify fully route card handling · 86d75003
    Lars-Peter Clausen authored
    For legacy reasons the ASoC framework assumes that a CODEC INPUT or OUTPUT
    widget that is not explicitly connected to a external source or sink is
    potentially connected to a source or a sink and hence the framework treats
    the widget itself as source (for INPUT) or sink (for OUTPUT). For this
    reason a INPUT or OUTPUT widget that is really not connected needs to be
    explicitly marked as so.
    
    Setting the card's fully_routed flag will cause the ASoC core, once that all
    widgets and routes have been registered, to go through the list of all
    widgets and mark all INPUT and OUTPUT that are not externally connected as
    non-connected. This essentially negates the default behaviour of treating
    INPUT or OUTPUT widgets without external routes as sources or sinks.
    
    This patch takes a different approach while getting the same result. Instead
    of first marking INPUT and OUTPUT widgets as sinks/sources and then later
    marking them as non-connected, just never mark them as a sink or a source if
    the fully_routed flag is set on a card.
    
    This requires a lot less code and also results in a slightly faster card
    initialization since there is no need to iterate over all widgets and check
    whether the INPUT and OUTPUT widgets are connected or not.
    Signed-off-by: default avatarLars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    86d75003
soc-dapm.c 95.8 KB