• M
    ASoC: core: Support transparent CODEC<->CODEC DAI links · c74184ed
    Mark Brown 提交于
    Rather than having the user half start a stream but avoid any DMA to
    trigger data flow on links which don't pass through the CPU create a
    DAPM route between the two DAI widgets using a hw_params configuration
    provided by the machine driver with the new 'params' member of the
    dai_link struct.  If no configuration is provided in the dai_link then
    use the old style even for CODEC<->CODEC links to avoid breaking
    systems.
    
    This greatly simplifies the userspace usage of such links, making them
    as simple as analogue connections with the stream configuration being
    completely transparent to them.
    
    This is achieved by defining a new dai_link widget type which is created
    when CODECs are linked and triggering the configuration of the link via
    the normal PCM operations from there.  It is expected that the bias
    level callbacks will be used for clock configuration.
    
    Currently only the DAI format, rate and channel count can be configured
    and currently the only DAI operations which can be called are hw_params
    and digital_mute().  This corresponds well to the majority of CODEC
    drivers which only use other callbacks for constraint setting but there
    is obviously much room for extension here.  We can't simply call
    hw_params() on startup as things like the system clocking configuration
    may change at runtime and in future it will be desirable to offer some
    configurability of the link parameters.
    
    At present we are also restricted to a single DAPM link for the entire
    DAI.  Once we have better support for channel mapping it would also be
    desirable to extend this feature so that we can propagate per-channel
    power state over the link.
    Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
    Acked-by: NLiam Girdwood <lrg@ti.com>
    c74184ed
soc-dapm.c 85.6 KB