• Lars-Peter Clausen's avatar
    ASoC: Allow to register jacks at the card level · 97093996
    Lars-Peter Clausen authored
    Jacks are typically card level elements, but are currently registered with a
    CODEC. When it was originally introduced snd_soc_jack_new() took a
    snd_soc_card as its parameter, but at that time DAPM was only implemented at
    the CODEC level and there was only one CODEC per card. This made it clear
    which CODEC to use for the jack DAPM operations. But the multi-component
    patchset added support for having multiple CODECs per card and with it the
    API was updated to register jacks with a specific CODEC instance instead.
    Subsequently DAPM support at the card level has been introduced, but the
    snd_soc_jack_new() API has so remained unchanged.
    
    This leaves us with the issue that the DAPM pins that are managed by the
    jack detection logic usually are part of the card DAPM context but are
    accessed through a CODEC DAPM context. Currently this works fine, but might
    break in the future if we take a more hierarchical approach to DAPM
    contexts.
    
    Furthermore with componentization progressing systems that do not register
    a snd_soc_codec might appear, while these system may still want to able to
    register a jack.
    
    This patch addresses these issues by adding a new function called
    snd_soc_card_jack_new() that can be used to register jacks with the card
    rather than a CODEC.
    
    This new function is mostly identical to snd_soc_jack_new() except that it
    additionally allows to directly specify the DAPM pins associated with the
    jack. This was done since most users of snd_soc_jack_new() typically call
    snd_soc_jack_add_pins() right after it, which is not necessary with the new
    API and allows to reduce the amount of boiler plate code.
    
    The old snd_soc_jack_new() is re-implemented as a wrapper around
    snd_soc_card_jack_new().
    Signed-off-by: default avatarLars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    97093996
soc-jack.c 10.9 KB