ASoC: SOF: Intel: hda-loader: add flag to tag ICCMAX stream
authorPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Thu, 4 Apr 2024 18:54:45 +0000 (13:54 -0500)
committerMark Brown <broonie@kernel.org>
Thu, 4 Apr 2024 18:58:25 +0000 (19:58 +0100)
The existing code conflates capture stream and ICCMAX stream. This
isn't going to be true any longer when we add support for SDW BPT RX
streams. Add a boolean tag to flag ICCMAX streams.

No functionality change, only future-proofing change.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Rander Wang <rander.wang@intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Link: https://msgid.link/r/20240404185448.136157-2-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sof/intel/hda-loader.c
sound/soc/sof/intel/hda.h

index d5b9209beb5a63286dc1442dfdd9203f923b3711..dafb6b3ebb20cd97b085c1cadf803d982c64ac61 100644 (file)
@@ -46,7 +46,7 @@ static void hda_ssp_set_cbp_cfp(struct snd_sof_dev *sdev)
 
 struct hdac_ext_stream *hda_cl_stream_prepare(struct snd_sof_dev *sdev, unsigned int format,
                                              unsigned int size, struct snd_dma_buffer *dmab,
-                                             int direction)
+                                             int direction, bool is_iccmax)
 {
        struct hdac_ext_stream *hext_stream;
        struct hdac_stream *hstream;
@@ -73,7 +73,7 @@ struct hdac_ext_stream *hda_cl_stream_prepare(struct snd_sof_dev *sdev, unsigned
        hstream->format_val = format;
        hstream->bufsize = size;
 
-       if (direction == SNDRV_PCM_STREAM_CAPTURE) {
+       if (is_iccmax) {
                ret = hda_dsp_iccmax_stream_hw_params(sdev, hext_stream, dmab, NULL);
                if (ret < 0) {
                        dev_err(sdev->dev, "error: iccmax stream prepare failed: %d\n", ret);
@@ -335,7 +335,7 @@ int hda_dsp_cl_boot_firmware_iccmax(struct snd_sof_dev *sdev)
         * the data, so use a buffer of PAGE_SIZE for receiving.
         */
        iccmax_stream = hda_cl_stream_prepare(sdev, HDA_CL_STREAM_FORMAT, PAGE_SIZE,
-                                             &dmab_bdl, SNDRV_PCM_STREAM_CAPTURE);
+                                             &dmab_bdl, SNDRV_PCM_STREAM_CAPTURE, true);
        if (IS_ERR(iccmax_stream)) {
                dev_err(sdev->dev, "error: dma prepare for ICCMAX stream failed\n");
                return PTR_ERR(iccmax_stream);
@@ -421,7 +421,7 @@ int hda_dsp_cl_boot_firmware(struct snd_sof_dev *sdev)
        /* prepare DMA for code loader stream */
        hext_stream = hda_cl_stream_prepare(sdev, HDA_CL_STREAM_FORMAT,
                                            stripped_firmware.size,
-                                           &dmab, SNDRV_PCM_STREAM_PLAYBACK);
+                                           &dmab, SNDRV_PCM_STREAM_PLAYBACK, false);
        if (IS_ERR(hext_stream)) {
                dev_err(sdev->dev, "error: dma prepare for fw loading failed\n");
                return PTR_ERR(hext_stream);
@@ -538,7 +538,7 @@ int hda_dsp_ipc4_load_library(struct snd_sof_dev *sdev,
        /* prepare DMA for code loader stream */
        hext_stream = hda_cl_stream_prepare(sdev, HDA_CL_STREAM_FORMAT,
                                            stripped_firmware.size,
-                                           &dmab, SNDRV_PCM_STREAM_PLAYBACK);
+                                           &dmab, SNDRV_PCM_STREAM_PLAYBACK, false);
        if (IS_ERR(hext_stream)) {
                dev_err(sdev->dev, "%s: DMA prepare failed\n", __func__);
                return PTR_ERR(hext_stream);
index 16140ae22c9054c14b5910a07fcf98bd96a21cd1..30a185d4c7ab8e764224ec25a3c07dd8fb68ea79 100644 (file)
@@ -705,7 +705,7 @@ int hda_dsp_cl_boot_firmware_iccmax(struct snd_sof_dev *sdev);
 int hda_cl_copy_fw(struct snd_sof_dev *sdev, struct hdac_ext_stream *hext_stream);
 struct hdac_ext_stream *hda_cl_stream_prepare(struct snd_sof_dev *sdev, unsigned int format,
                                              unsigned int size, struct snd_dma_buffer *dmab,
-                                             int direction);
+                                             int direction, bool is_iccmax);
 int hda_cl_cleanup(struct snd_sof_dev *sdev, struct snd_dma_buffer *dmab,
                   struct hdac_ext_stream *hext_stream);
 int cl_dsp_init(struct snd_sof_dev *sdev, int stream_tag, bool imr_boot);