• Cezary Rojewski's avatar
    ASoC: codecs: Add HD-Audio codec driver · b5df2a7d
    Cezary Rojewski authored
    Add generic ASoC equivalent of ALSA HD-Audio codec. This codec is
    designed to follow HDA_DEV_LEGACY convention. Driver wrapps existing
    hda_codec.c handlers to prevent code duplication within the newly added
    code. Number of DAIs created is dependent on capabilities exposed by the
    codec itself. Because of this, single solution can be applied to support
    every single HD-Audio codec type.
    
    At the same time, through the ASoC topology, platform drivers may limit
    the number of endpoints available to the userspace as codec driver
    exposes BE DAIs only.
    
    Both hda_codec_probe() and hda_codec_remove() declare their expectations
    on device's usage_count and suspended-status. This is to catch any
    unexpected behavior as PM-related code for HD-Audio has been changing
    quite a bit throughout the years.
    
    In order for codec DAI list to reflect its actual PCM capabilities, PCMs
    need to be built and that can only happen once codec device is
    constructed. To do that, a valid component->card->snd_card pointer is
    needed. Said pointer will be provided by the framework once all card
    components are accounted for and their probing can begin. Usage of
    "binder" BE DAI solves the problem - codec can be listed as one of
    HD-Audio card components without declaring any actual BE DAIs
    statically.
    
    Relation with hdac_hda:
    
    Addition of parallel solution is motivated by behavioral differences
    between hdac_hda.c and its legacy equivalent found in sound/pci/hda
    e.g.: lack of dynamic, based on codec capabilities, resource allocation
    and high cost of removing such differences on actively used targets.
    Major goal of codec driver presented here is to follow HD-Audio legacy
    behavior in 1:1 fashion by becoming a wrapper. Doing so increases code
    coverage of the legacy code and reduces the maintenance cost for both
    solutions.
    Signed-off-by: default avatarCezary Rojewski <cezary.rojewski@intel.com>
    Link: https://lore.kernel.org/r/20220511162403.3987658-3-cezary.rojewski@intel.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
    b5df2a7d
Kconfig 46.4 KB