From: Greg Kroah-Hartman Date: Wed, 4 Jan 2023 11:41:39 +0000 (+0100) Subject: 5.15-stable patches X-Git-Tag: v6.1.4~78 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ddfd7f6e1ebb6d151cdf42222cf1cb7ed0f9600c;p=thirdparty%2Fkernel%2Fstable-queue.git 5.15-stable patches added patches: asoc-intel-sof-use-set_stream-instead-of-set_tdm_slots-for-hdaudio.patch asoc-soundwire-dai-expand-stream-concept-beyond-soundwire.patch --- diff --git a/queue-5.15/asoc-intel-sof-use-set_stream-instead-of-set_tdm_slots-for-hdaudio.patch b/queue-5.15/asoc-intel-sof-use-set_stream-instead-of-set_tdm_slots-for-hdaudio.patch new file mode 100644 index 00000000000..8f7becbb403 --- /dev/null +++ b/queue-5.15/asoc-intel-sof-use-set_stream-instead-of-set_tdm_slots-for-hdaudio.patch @@ -0,0 +1,115 @@ +From 636110411ca726f19ef8e87b0be51bb9a4cdef06 Mon Sep 17 00:00:00 2001 +From: Pierre-Louis Bossart +Date: Fri, 24 Dec 2021 10:10:32 +0800 +Subject: ASoC: Intel/SOF: use set_stream() instead of set_tdm_slots() for HDAudio + +From: Pierre-Louis Bossart + +commit 636110411ca726f19ef8e87b0be51bb9a4cdef06 upstream. + +Overloading the tx_mask with a linear value is asking for trouble and +only works because the codec_dai hw_params() is called before the +cpu_dai hw_params(). + +Move to the more generic set_stream() API to pass the hdac_stream +information. + +Signed-off-by: Pierre-Louis Bossart +Reviewed-by: Rander Wang +Reviewed-by: Ranjani Sridharan +Signed-off-by: Bard Liao +Link: https://lore.kernel.org/r/20211224021034.26635-6-yung-chuan.liao@linux.intel.com +Signed-off-by: Mark Brown +Cc: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman +--- + sound/soc/codecs/hdac_hda.c | 22 +++++++++++----------- + sound/soc/intel/skylake/skl-pcm.c | 7 ++----- + sound/soc/sof/intel/hda-dai.c | 7 ++----- + 3 files changed, 15 insertions(+), 21 deletions(-) + +--- a/sound/soc/codecs/hdac_hda.c ++++ b/sound/soc/codecs/hdac_hda.c +@@ -46,9 +46,8 @@ static int hdac_hda_dai_hw_params(struct + struct snd_soc_dai *dai); + static int hdac_hda_dai_hw_free(struct snd_pcm_substream *substream, + struct snd_soc_dai *dai); +-static int hdac_hda_dai_set_tdm_slot(struct snd_soc_dai *dai, +- unsigned int tx_mask, unsigned int rx_mask, +- int slots, int slot_width); ++static int hdac_hda_dai_set_stream(struct snd_soc_dai *dai, void *stream, ++ int direction); + static struct hda_pcm *snd_soc_find_pcm_from_dai(struct hdac_hda_priv *hda_pvt, + struct snd_soc_dai *dai); + +@@ -58,7 +57,7 @@ static const struct snd_soc_dai_ops hdac + .prepare = hdac_hda_dai_prepare, + .hw_params = hdac_hda_dai_hw_params, + .hw_free = hdac_hda_dai_hw_free, +- .set_tdm_slot = hdac_hda_dai_set_tdm_slot, ++ .set_stream = hdac_hda_dai_set_stream, + }; + + static struct snd_soc_dai_driver hdac_hda_dais[] = { +@@ -180,21 +179,22 @@ static struct snd_soc_dai_driver hdac_hd + + }; + +-static int hdac_hda_dai_set_tdm_slot(struct snd_soc_dai *dai, +- unsigned int tx_mask, unsigned int rx_mask, +- int slots, int slot_width) ++static int hdac_hda_dai_set_stream(struct snd_soc_dai *dai, ++ void *stream, int direction) + { + struct snd_soc_component *component = dai->component; + struct hdac_hda_priv *hda_pvt; + struct hdac_hda_pcm *pcm; ++ struct hdac_stream *hstream; ++ ++ if (!stream) ++ return -EINVAL; + + hda_pvt = snd_soc_component_get_drvdata(component); + pcm = &hda_pvt->pcm[dai->id]; ++ hstream = (struct hdac_stream *)stream; + +- if (tx_mask) +- pcm->stream_tag[SNDRV_PCM_STREAM_PLAYBACK] = tx_mask; +- else +- pcm->stream_tag[SNDRV_PCM_STREAM_CAPTURE] = rx_mask; ++ pcm->stream_tag[direction] = hstream->stream_tag; + + return 0; + } +--- a/sound/soc/intel/skylake/skl-pcm.c ++++ b/sound/soc/intel/skylake/skl-pcm.c +@@ -562,11 +562,8 @@ static int skl_link_hw_params(struct snd + + stream_tag = hdac_stream(link_dev)->stream_tag; + +- /* set the stream tag in the codec dai dma params */ +- if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) +- snd_soc_dai_set_tdm_slot(codec_dai, stream_tag, 0, 0, 0); +- else +- snd_soc_dai_set_tdm_slot(codec_dai, 0, stream_tag, 0, 0); ++ /* set the hdac_stream in the codec dai */ ++ snd_soc_dai_set_stream(codec_dai, hdac_stream(link_dev), substream->stream); + + p_params.s_fmt = snd_pcm_format_width(params_format(params)); + p_params.ch = params_channels(params); +--- a/sound/soc/sof/intel/hda-dai.c ++++ b/sound/soc/sof/intel/hda-dai.c +@@ -236,11 +236,8 @@ static int hda_link_hw_params(struct snd + if (!link) + return -EINVAL; + +- /* set the stream tag in the codec dai dma params */ +- if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) +- snd_soc_dai_set_tdm_slot(codec_dai, stream_tag, 0, 0, 0); +- else +- snd_soc_dai_set_tdm_slot(codec_dai, 0, stream_tag, 0, 0); ++ /* set the hdac_stream in the codec dai */ ++ snd_soc_dai_set_stream(codec_dai, hdac_stream(link_dev), substream->stream); + + p_params.s_fmt = snd_pcm_format_width(params_format(params)); + p_params.ch = params_channels(params); diff --git a/queue-5.15/asoc-soundwire-dai-expand-stream-concept-beyond-soundwire.patch b/queue-5.15/asoc-soundwire-dai-expand-stream-concept-beyond-soundwire.patch new file mode 100644 index 00000000000..a686641eed8 --- /dev/null +++ b/queue-5.15/asoc-soundwire-dai-expand-stream-concept-beyond-soundwire.patch @@ -0,0 +1,395 @@ +From e8444560b4d9302a511f0996f4cfdf85b628f4ca Mon Sep 17 00:00:00 2001 +From: Pierre-Louis Bossart +Date: Fri, 24 Dec 2021 10:10:31 +0800 +Subject: ASoC/SoundWire: dai: expand 'stream' concept beyond SoundWire + +From: Pierre-Louis Bossart + +commit e8444560b4d9302a511f0996f4cfdf85b628f4ca upstream. + +The HDAudio ASoC support relies on the set_tdm_slots() helper to store +the HDaudio stream tag in the tx_mask. This only works because of the +pre-existing order in soc-pcm.c, where the hw_params() is handled for +codec_dais *before* cpu_dais. When the order is reversed, the +stream_tag is used as a mask in the codec fixup functions: + + /* fixup params based on TDM slot masks */ + if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK && + codec_dai->tx_mask) + soc_pcm_codec_params_fixup(&codec_params, + codec_dai->tx_mask); + +As a result of this confusion, the codec_params_fixup() ends-up +generating bad channel masks, depending on what stream_tag was +allocated. + +We could add a flag to state that the tx_mask is really not a mask, +but it would be quite ugly to persist in overloading concepts. + +Instead, this patch suggests a more generic get/set 'stream' API based +on the existing model for SoundWire. We can expand the concept to +store 'stream' opaque information that is specific to different DAI +types. In the case of HDAudio DAIs, we only need to store a stream tag +as an unsigned char pointer. The TDM rx_ and tx_masks should really +only be used to store masks. + +Rename get_sdw_stream/set_sdw_stream callbacks and helpers as +get_stream/set_stream. No functionality change beyond the rename. + +Signed-off-by: Pierre-Louis Bossart +Reviewed-by: Rander Wang +Reviewed-by: Ranjani Sridharan +Signed-off-by: Bard Liao +Acked-By: Vinod Koul +Link: https://lore.kernel.org/r/20211224021034.26635-5-yung-chuan.liao@linux.intel.com +Signed-off-by: Mark Brown +Cc: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman +--- + drivers/soundwire/intel.c | 8 ++++---- + drivers/soundwire/qcom.c | 8 ++++---- + drivers/soundwire/stream.c | 4 ++-- + include/sound/soc-dai.h | 32 ++++++++++++++++---------------- + sound/soc/codecs/max98373-sdw.c | 2 +- + sound/soc/codecs/rt1308-sdw.c | 2 +- + sound/soc/codecs/rt1316-sdw.c | 2 +- + sound/soc/codecs/rt5682-sdw.c | 2 +- + sound/soc/codecs/rt700.c | 2 +- + sound/soc/codecs/rt711-sdca.c | 2 +- + sound/soc/codecs/rt711.c | 2 +- + sound/soc/codecs/rt715-sdca.c | 2 +- + sound/soc/codecs/rt715.c | 2 +- + sound/soc/codecs/sdw-mockup.c | 2 +- + sound/soc/codecs/wcd938x.c | 2 +- + sound/soc/codecs/wsa881x.c | 2 +- + sound/soc/intel/boards/sof_sdw.c | 6 +++--- + sound/soc/qcom/sdm845.c | 4 ++-- + sound/soc/qcom/sm8250.c | 4 ++-- + 19 files changed, 45 insertions(+), 45 deletions(-) + +--- a/drivers/soundwire/intel.c ++++ b/drivers/soundwire/intel.c +@@ -1065,8 +1065,8 @@ static const struct snd_soc_dai_ops inte + .prepare = intel_prepare, + .hw_free = intel_hw_free, + .shutdown = intel_shutdown, +- .set_sdw_stream = intel_pcm_set_sdw_stream, +- .get_sdw_stream = intel_get_sdw_stream, ++ .set_stream = intel_pcm_set_sdw_stream, ++ .get_stream = intel_get_sdw_stream, + }; + + static const struct snd_soc_dai_ops intel_pdm_dai_ops = { +@@ -1075,8 +1075,8 @@ static const struct snd_soc_dai_ops inte + .prepare = intel_prepare, + .hw_free = intel_hw_free, + .shutdown = intel_shutdown, +- .set_sdw_stream = intel_pdm_set_sdw_stream, +- .get_sdw_stream = intel_get_sdw_stream, ++ .set_stream = intel_pdm_set_sdw_stream, ++ .get_stream = intel_get_sdw_stream, + }; + + static const struct snd_soc_component_driver dai_component = { +--- a/drivers/soundwire/qcom.c ++++ b/drivers/soundwire/qcom.c +@@ -1032,8 +1032,8 @@ static int qcom_swrm_startup(struct snd_ + ctrl->sruntime[dai->id] = sruntime; + + for_each_rtd_codec_dais(rtd, i, codec_dai) { +- ret = snd_soc_dai_set_sdw_stream(codec_dai, sruntime, +- substream->stream); ++ ret = snd_soc_dai_set_stream(codec_dai, sruntime, ++ substream->stream); + if (ret < 0 && ret != -ENOTSUPP) { + dev_err(dai->dev, "Failed to set sdw stream on %s\n", + codec_dai->name); +@@ -1059,8 +1059,8 @@ static const struct snd_soc_dai_ops qcom + .hw_free = qcom_swrm_hw_free, + .startup = qcom_swrm_startup, + .shutdown = qcom_swrm_shutdown, +- .set_sdw_stream = qcom_swrm_set_sdw_stream, +- .get_sdw_stream = qcom_swrm_get_sdw_stream, ++ .set_stream = qcom_swrm_set_sdw_stream, ++ .get_stream = qcom_swrm_get_sdw_stream, + }; + + static const struct snd_soc_component_driver qcom_swrm_dai_component = { +--- a/drivers/soundwire/stream.c ++++ b/drivers/soundwire/stream.c +@@ -1880,7 +1880,7 @@ static int set_stream(struct snd_pcm_sub + + /* Set stream pointer on all DAIs */ + for_each_rtd_dais(rtd, i, dai) { +- ret = snd_soc_dai_set_sdw_stream(dai, sdw_stream, substream->stream); ++ ret = snd_soc_dai_set_stream(dai, sdw_stream, substream->stream); + if (ret < 0) { + dev_err(rtd->dev, "failed to set stream pointer on dai %s\n", dai->name); + break; +@@ -1951,7 +1951,7 @@ void sdw_shutdown_stream(void *sdw_subst + /* Find stream from first CPU DAI */ + dai = asoc_rtd_to_cpu(rtd, 0); + +- sdw_stream = snd_soc_dai_get_sdw_stream(dai, substream->stream); ++ sdw_stream = snd_soc_dai_get_stream(dai, substream->stream); + + if (IS_ERR(sdw_stream)) { + dev_err(rtd->dev, "no stream found for DAI %s\n", dai->name); +--- a/include/sound/soc-dai.h ++++ b/include/sound/soc-dai.h +@@ -295,9 +295,9 @@ struct snd_soc_dai_ops { + unsigned int *rx_num, unsigned int *rx_slot); + int (*set_tristate)(struct snd_soc_dai *dai, int tristate); + +- int (*set_sdw_stream)(struct snd_soc_dai *dai, +- void *stream, int direction); +- void *(*get_sdw_stream)(struct snd_soc_dai *dai, int direction); ++ int (*set_stream)(struct snd_soc_dai *dai, ++ void *stream, int direction); ++ void *(*get_stream)(struct snd_soc_dai *dai, int direction); + + /* + * DAI digital mute - optional. +@@ -515,42 +515,42 @@ static inline void *snd_soc_dai_get_drvd + } + + /** +- * snd_soc_dai_set_sdw_stream() - Configures a DAI for SDW stream operation ++ * snd_soc_dai_set_stream() - Configures a DAI for stream operation + * @dai: DAI +- * @stream: STREAM ++ * @stream: STREAM (opaque structure depending on DAI type) + * @direction: Stream direction(Playback/Capture) +- * SoundWire subsystem doesn't have a notion of direction and we reuse ++ * Some subsystems, such as SoundWire, don't have a notion of direction and we reuse + * the ASoC stream direction to configure sink/source ports. + * Playback maps to source ports and Capture for sink ports. + * + * This should be invoked with NULL to clear the stream set previously. + * Returns 0 on success, a negative error code otherwise. + */ +-static inline int snd_soc_dai_set_sdw_stream(struct snd_soc_dai *dai, +- void *stream, int direction) ++static inline int snd_soc_dai_set_stream(struct snd_soc_dai *dai, ++ void *stream, int direction) + { +- if (dai->driver->ops->set_sdw_stream) +- return dai->driver->ops->set_sdw_stream(dai, stream, direction); ++ if (dai->driver->ops->set_stream) ++ return dai->driver->ops->set_stream(dai, stream, direction); + else + return -ENOTSUPP; + } + + /** +- * snd_soc_dai_get_sdw_stream() - Retrieves SDW stream from DAI ++ * snd_soc_dai_get_stream() - Retrieves stream from DAI + * @dai: DAI + * @direction: Stream direction(Playback/Capture) + * + * This routine only retrieves that was previously configured +- * with snd_soc_dai_get_sdw_stream() ++ * with snd_soc_dai_get_stream() + * + * Returns pointer to stream or an ERR_PTR value, e.g. + * ERR_PTR(-ENOTSUPP) if callback is not supported; + */ +-static inline void *snd_soc_dai_get_sdw_stream(struct snd_soc_dai *dai, +- int direction) ++static inline void *snd_soc_dai_get_stream(struct snd_soc_dai *dai, ++ int direction) + { +- if (dai->driver->ops->get_sdw_stream) +- return dai->driver->ops->get_sdw_stream(dai, direction); ++ if (dai->driver->ops->get_stream) ++ return dai->driver->ops->get_stream(dai, direction); + else + return ERR_PTR(-ENOTSUPP); + } +--- a/sound/soc/codecs/max98373-sdw.c ++++ b/sound/soc/codecs/max98373-sdw.c +@@ -741,7 +741,7 @@ static int max98373_sdw_set_tdm_slot(str + static const struct snd_soc_dai_ops max98373_dai_sdw_ops = { + .hw_params = max98373_sdw_dai_hw_params, + .hw_free = max98373_pcm_hw_free, +- .set_sdw_stream = max98373_set_sdw_stream, ++ .set_stream = max98373_set_sdw_stream, + .shutdown = max98373_shutdown, + .set_tdm_slot = max98373_sdw_set_tdm_slot, + }; +--- a/sound/soc/codecs/rt1308-sdw.c ++++ b/sound/soc/codecs/rt1308-sdw.c +@@ -613,7 +613,7 @@ static const struct snd_soc_component_dr + static const struct snd_soc_dai_ops rt1308_aif_dai_ops = { + .hw_params = rt1308_sdw_hw_params, + .hw_free = rt1308_sdw_pcm_hw_free, +- .set_sdw_stream = rt1308_set_sdw_stream, ++ .set_stream = rt1308_set_sdw_stream, + .shutdown = rt1308_sdw_shutdown, + .set_tdm_slot = rt1308_sdw_set_tdm_slot, + }; +--- a/sound/soc/codecs/rt1316-sdw.c ++++ b/sound/soc/codecs/rt1316-sdw.c +@@ -602,7 +602,7 @@ static const struct snd_soc_component_dr + static const struct snd_soc_dai_ops rt1316_aif_dai_ops = { + .hw_params = rt1316_sdw_hw_params, + .hw_free = rt1316_sdw_pcm_hw_free, +- .set_sdw_stream = rt1316_set_sdw_stream, ++ .set_stream = rt1316_set_sdw_stream, + .shutdown = rt1316_sdw_shutdown, + }; + +--- a/sound/soc/codecs/rt5682-sdw.c ++++ b/sound/soc/codecs/rt5682-sdw.c +@@ -272,7 +272,7 @@ static int rt5682_sdw_hw_free(struct snd + static const struct snd_soc_dai_ops rt5682_sdw_ops = { + .hw_params = rt5682_sdw_hw_params, + .hw_free = rt5682_sdw_hw_free, +- .set_sdw_stream = rt5682_set_sdw_stream, ++ .set_stream = rt5682_set_sdw_stream, + .shutdown = rt5682_sdw_shutdown, + }; + +--- a/sound/soc/codecs/rt700.c ++++ b/sound/soc/codecs/rt700.c +@@ -1015,7 +1015,7 @@ static int rt700_pcm_hw_free(struct snd_ + static const struct snd_soc_dai_ops rt700_ops = { + .hw_params = rt700_pcm_hw_params, + .hw_free = rt700_pcm_hw_free, +- .set_sdw_stream = rt700_set_sdw_stream, ++ .set_stream = rt700_set_sdw_stream, + .shutdown = rt700_shutdown, + }; + +--- a/sound/soc/codecs/rt711-sdca.c ++++ b/sound/soc/codecs/rt711-sdca.c +@@ -1361,7 +1361,7 @@ static int rt711_sdca_pcm_hw_free(struct + static const struct snd_soc_dai_ops rt711_sdca_ops = { + .hw_params = rt711_sdca_pcm_hw_params, + .hw_free = rt711_sdca_pcm_hw_free, +- .set_sdw_stream = rt711_sdca_set_sdw_stream, ++ .set_stream = rt711_sdca_set_sdw_stream, + .shutdown = rt711_sdca_shutdown, + }; + +--- a/sound/soc/codecs/rt711.c ++++ b/sound/soc/codecs/rt711.c +@@ -1092,7 +1092,7 @@ static int rt711_pcm_hw_free(struct snd_ + static const struct snd_soc_dai_ops rt711_ops = { + .hw_params = rt711_pcm_hw_params, + .hw_free = rt711_pcm_hw_free, +- .set_sdw_stream = rt711_set_sdw_stream, ++ .set_stream = rt711_set_sdw_stream, + .shutdown = rt711_shutdown, + }; + +--- a/sound/soc/codecs/rt715-sdca.c ++++ b/sound/soc/codecs/rt715-sdca.c +@@ -938,7 +938,7 @@ static int rt715_sdca_pcm_hw_free(struct + static const struct snd_soc_dai_ops rt715_sdca_ops = { + .hw_params = rt715_sdca_pcm_hw_params, + .hw_free = rt715_sdca_pcm_hw_free, +- .set_sdw_stream = rt715_sdca_set_sdw_stream, ++ .set_stream = rt715_sdca_set_sdw_stream, + .shutdown = rt715_sdca_shutdown, + }; + +--- a/sound/soc/codecs/rt715.c ++++ b/sound/soc/codecs/rt715.c +@@ -909,7 +909,7 @@ static int rt715_pcm_hw_free(struct snd_ + static const struct snd_soc_dai_ops rt715_ops = { + .hw_params = rt715_pcm_hw_params, + .hw_free = rt715_pcm_hw_free, +- .set_sdw_stream = rt715_set_sdw_stream, ++ .set_stream = rt715_set_sdw_stream, + .shutdown = rt715_shutdown, + }; + +--- a/sound/soc/codecs/sdw-mockup.c ++++ b/sound/soc/codecs/sdw-mockup.c +@@ -138,7 +138,7 @@ static int sdw_mockup_pcm_hw_free(struct + static const struct snd_soc_dai_ops sdw_mockup_ops = { + .hw_params = sdw_mockup_pcm_hw_params, + .hw_free = sdw_mockup_pcm_hw_free, +- .set_sdw_stream = sdw_mockup_set_sdw_stream, ++ .set_stream = sdw_mockup_set_sdw_stream, + .shutdown = sdw_mockup_shutdown, + }; + +--- a/sound/soc/codecs/wcd938x.c ++++ b/sound/soc/codecs/wcd938x.c +@@ -4302,7 +4302,7 @@ static int wcd938x_codec_set_sdw_stream( + static const struct snd_soc_dai_ops wcd938x_sdw_dai_ops = { + .hw_params = wcd938x_codec_hw_params, + .hw_free = wcd938x_codec_free, +- .set_sdw_stream = wcd938x_codec_set_sdw_stream, ++ .set_stream = wcd938x_codec_set_sdw_stream, + }; + + static struct snd_soc_dai_driver wcd938x_dais[] = { +--- a/sound/soc/codecs/wsa881x.c ++++ b/sound/soc/codecs/wsa881x.c +@@ -1026,7 +1026,7 @@ static const struct snd_soc_dai_ops wsa8 + .hw_params = wsa881x_hw_params, + .hw_free = wsa881x_hw_free, + .mute_stream = wsa881x_digital_mute, +- .set_sdw_stream = wsa881x_set_sdw_stream, ++ .set_stream = wsa881x_set_sdw_stream, + }; + + static struct snd_soc_dai_driver wsa881x_dais[] = { +--- a/sound/soc/intel/boards/sof_sdw.c ++++ b/sound/soc/intel/boards/sof_sdw.c +@@ -291,7 +291,7 @@ int sdw_prepare(struct snd_pcm_substream + /* Find stream from first CPU DAI */ + dai = asoc_rtd_to_cpu(rtd, 0); + +- sdw_stream = snd_soc_dai_get_sdw_stream(dai, substream->stream); ++ sdw_stream = snd_soc_dai_get_stream(dai, substream->stream); + + if (IS_ERR(sdw_stream)) { + dev_err(rtd->dev, "no stream found for DAI %s", dai->name); +@@ -311,7 +311,7 @@ int sdw_trigger(struct snd_pcm_substream + /* Find stream from first CPU DAI */ + dai = asoc_rtd_to_cpu(rtd, 0); + +- sdw_stream = snd_soc_dai_get_sdw_stream(dai, substream->stream); ++ sdw_stream = snd_soc_dai_get_stream(dai, substream->stream); + + if (IS_ERR(sdw_stream)) { + dev_err(rtd->dev, "no stream found for DAI %s", dai->name); +@@ -350,7 +350,7 @@ int sdw_hw_free(struct snd_pcm_substream + /* Find stream from first CPU DAI */ + dai = asoc_rtd_to_cpu(rtd, 0); + +- sdw_stream = snd_soc_dai_get_sdw_stream(dai, substream->stream); ++ sdw_stream = snd_soc_dai_get_stream(dai, substream->stream); + + if (IS_ERR(sdw_stream)) { + dev_err(rtd->dev, "no stream found for DAI %s", dai->name); +--- a/sound/soc/qcom/sdm845.c ++++ b/sound/soc/qcom/sdm845.c +@@ -56,8 +56,8 @@ static int sdm845_slim_snd_hw_params(str + int ret = 0, i; + + for_each_rtd_codec_dais(rtd, i, codec_dai) { +- sruntime = snd_soc_dai_get_sdw_stream(codec_dai, +- substream->stream); ++ sruntime = snd_soc_dai_get_stream(codec_dai, ++ substream->stream); + if (sruntime != ERR_PTR(-ENOTSUPP)) + pdata->sruntime[cpu_dai->id] = sruntime; + +--- a/sound/soc/qcom/sm8250.c ++++ b/sound/soc/qcom/sm8250.c +@@ -70,8 +70,8 @@ static int sm8250_snd_hw_params(struct s + switch (cpu_dai->id) { + case WSA_CODEC_DMA_RX_0: + for_each_rtd_codec_dais(rtd, i, codec_dai) { +- sruntime = snd_soc_dai_get_sdw_stream(codec_dai, +- substream->stream); ++ sruntime = snd_soc_dai_get_stream(codec_dai, ++ substream->stream); + if (sruntime != ERR_PTR(-ENOTSUPP)) + pdata->sruntime[cpu_dai->id] = sruntime; + } diff --git a/queue-5.15/series b/queue-5.15/series index 45cc368d42b..766bf6fb035 100644 --- a/queue-5.15/series +++ b/queue-5.15/series @@ -52,3 +52,5 @@ tpm-tpm_crb-add-the-missed-acpi_put_table-to-fix-memory-leak.patch tpm-tpm_tis-add-the-missed-acpi_put_table-to-fix-memory-leak.patch sunrpc-don-t-leak-netobj-memory-when-gss_read_proxy_verf-fails.patch kcsan-instrument-memcpy-memset-memmove-with-newer-clang.patch +asoc-intel-sof-use-set_stream-instead-of-set_tdm_slots-for-hdaudio.patch +asoc-soundwire-dai-expand-stream-concept-beyond-soundwire.patch