• Mark Brown's avatar
    ASoC: dapm: Implement and instantiate DAI widgets · 888df395
    Mark Brown authored
    In order to allow us to do smarter things with DAI links create DAPM
    widgets which directly represent the DAIs in the DAPM graph. These are
    automatically created from the DAIs as we probe the card with references
    held in both directions between the widget and the DAI.
    
    The widgets are not made available for direct instantiation by drivers,
    they are created automatically from the DAIs.  Drivers should be updated
    to create stream routes using DAPM maps rather than by annotating AIF
    and DAC widgets with streams.
    
    In order to ease transition to this model from existing drivers we
    automatically create DAPM routes between the DAI widgets and the existing
    stream widgets which are started and stopped by the DAI widgets, though
    the old stream handling mechanism is still in place.  This also has the
    nice effect of removing non-DAPM devices as any device with a DAI
    acquires a widget automatically which will allow future simplifications
    to the core DAPM logic.
    
    The intention is that in future the AIF and DAI widgets will gain the
    ability to interact such that we are able to manage activity on
    individual channels independantly rather than powering up and down the
    entire AIF as we do currently.
    
    Currently we only generate these for CODECs, mostly as I have no systems
    with non-CODEC DAPM to integrate with. It should be a simple matter of
    programming to add the additional hookup for these.
    Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
    Acked-by: default avatarLiam Girdwood <lrg@ti.com>
    888df395
soc-dapm.c 79.8 KB