• Pierre-Louis Bossart's avatar
    ASoC: SOF: dai: include new flags for DAI_CONFIG · 21c51692
    Pierre-Louis Bossart authored
    Mirror changes done in SOF tree. The changes do not rely on
    BIT/GENMASK on purpose to keep the structure and flags common with the
    firmware tree.
    
    The DAI_CONFIG IPC is currently used in multiple ways. It is sent to
    the DSP firmware when enabling static or dynamic pipelines, in
    hw_params or prepare callbacks for Intel SSP, HDaudio and ALH, on
    trigger_stop and hw_free.
    
    This IPC has been abused a bit in the past, i.e. the values used for
    some of the DAI-specific fields are used to either allocate or free
    resources. Two typical examples are Intel HDaudio and SoundWire/ALH
    DAIs, where using a zero DMA channel number or stream tag signals to
    the firmware the DMA channels or tags allocated earlier can be freed.
    
    Rather than add a new IPC for 'hw_params' and 'hw_free', this patch
    suggests supporting a 2-bit value conveying the 'stage' information in
    an existing IPC structure. Only 3 possible values are used.
    
    The mapping between HW_PARAMS and HW_FREE flags and ALSA definitions
    is not strictly 1:1, e.g. in some cases the HW_PARAM flag might be set
    during the .prepare callback, while the HW_FREE might be sent during the
    ALSA .trigger for stop/suspend.
    
    The semantics of the flags is to reserve and start/stop all needed
    resources, typically hardware related such as DMAs or clocks, when the
    HW_PARAMS is set, while the HW_FREE flag allows the firmware to
    release the resources allocated. The data transfers are still
    controlled within the firmware through the propagation of the trigger
    command.
    
    The driver can then pass information that the DAI_CONFIG was invoked
    in e.g. a pipeline/DAI setup, hw_params or hw_free stage without
    having to use a special DAI-specific encoding. Unfortunately we can't
    remove old encodings due to backwards-compatibility requirements but
    for new cases, such as the SSP in follow-up patches, we can make the
    IPC less cryptic.
    
    This change is tagged as ABI 3.19 and is completely backwards compatible.
    Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Reviewed-by: default avatarBard Liao <bard.liao@intel.com>
    Reviewed-by: default avatarGuennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
    Reviewed-by: default avatarBrent Lu <brent.lu@intel.com>
    Link: https://lore.kernel.org/r/20211004171430.103674-3-pierre-louis.bossart@linux.intel.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
    21c51692
dai.h 3.43 KB