• Liam Girdwood's avatar
    ASoC: dpcm: Add Dynamic PCM core operations. · 01d7584c
    Liam Girdwood authored
    The Dynamic PCM core allows digital audio data to be dynamically
    routed between different ALSA PCMs and DAI links on SoC CPUs with
    on chip DSP devices. e.g. audio data could be played on pcm:0,0 and
    routed to any (or all) SoC DAI links.
    
    Dynamic PCM introduces the concept of Front End (FE) PCMs and Back
    End (BE) PCMs. The FE PCMs are normal ALSA PCM devices except that
    they can dynamically route digital audio data to any supported BE
    PCM. A BE PCM has no ALSA device, but represents a DAI link and it's
    substream and audio HW parameters.
    
    e.g. pcm:0,0 routing digital data to 2 external codecs.
    
    FE pcm:0,0  ----> BE (McBSP.0) ----> CODEC 0
                 +--> BE (McPDM.0) ----> CODEC 1
    
    e.g. pcm:0,0 and pcm:0,1 routing digital data to 1 external codec.
    
    FE pcm:0,0 ---
                 +--> BE (McBSP.0) ----> CODEC
    FE pcm:0,1 ---
    
    The digital audio routing is controlled by the usual ALSA method
    of mixer kcontrols. Dynamic PCM uses a DAPM graph to work out the
    routing based upon the mixer settings and configures the BE PCMs
    based on routing and the FE HW params.
    
    DPCM is designed so that most ASoC component drivers will need no
    modification at all. It's intended that existing CODEC, DAI and
    platform drivers can be used in DPCM based audio devices without
    any changes. However, there will be some cases where minor changes
    are required (e.g. for very tightly coupled HW) and there are
    helpers to support this too.
    
    Somethimes the HW params of a FE and BE do not match or are
    incompatible, so in these cases the machine driver can reconfigure
    any hw_params and make any DSP perform sample rate / format conversion.
    
    This patch adds the core DPCM code and contains :-
    
     o The FE and BE PCM operations.
     o FE and BE DAI link support.
     o FE and BE PCM creation.
     o BE support API.
     o BE and FE link management.
    Signed-off-by: default avatarLiam Girdwood <lrg@ti.com>
    Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
    01d7584c
soc-pcm.c 51.6 KB