• Ranjani Sridharan's avatar
    ASoC: SOF: IPC: dai: Expand DAI_CONFIG IPC flags · a0f84dfb
    Ranjani Sridharan authored
    Some DAI components, such as HDaudio, need to be stopped in two steps
    a) stop the DAI component
    b) stop the DAI DMA
    
    This patch enables this two-step stop by expanding the DAI_CONFIG
    IPC flags and split them into 2 parts.
    
    The 4 LSB bits indicate when the DAI_CONFIG IPC is sent, ex: hw_params,
    hw_free or pause. The 4 MSB bits are used as the quirk flags to be used
    along with the command flags. The quirk flag called
    SOF_DAI_CONFIG_FLAGS_2_STEP_STOP shall be set along with the HW_PARAMS
    command flag, i.e. before the pipeline is started so that the stop/pause
    trigger op in the FW can take the appropriate action to either
    perform/skip the DMA stop. If set, the DMA stop will be executed when
    the DAI_CONFIG IPC is sent during hw_free. In the case of pause, DMA
    pause will be handled when the DAI_CONFIG IPC is sent with the PAUSE
    command flag.
    
    Along with this, modify the signature for the hda_ctrl_dai_widget_setup/
    hda_ctrl_dai_widget_free() functions to take additional flags as an
    argument and modify all users to pass the appropriate quirk flags. Only
    the HDA DAI's need to pass the SOF_DAI_CONFIG_FLAGS_2_STEP_STOP quirk
    flag during hw_params to indicate that it supports two-step stop and
    pause.
    Signed-off-by: default avatarRanjani Sridharan <ranjani.sridharan@linux.intel.com>
    Reviewed-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Signed-off-by: default avatarKai Vehmanen <kai.vehmanen@linux.intel.com>
    Link: https://lore.kernel.org/r/20211125101520.291581-10-kai.vehmanen@linux.intel.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
    a0f84dfb
hda.c 36.7 KB