Unverified Commit f6887a71 authored by Jason Montleon's avatar Jason Montleon Committed by Mark Brown
Browse files

ASoC: hdac_hdmi: use set_stream() instead of set_tdm_slots()

hdac_hdmi was not updated to use set_stream() instead of set_tdm_slots()
in the original commit so HDMI no longer produces audio.

Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/regressions/CAJD_bPKQdtaExvVEKxhQ47G-ZXDA=k+gzhMJRHLBe=mysPnuKA@mail.gmail.com/


Fixes: 63611041 ("ASoC: Intel/SOF: use set_stream() instead of set_tdm_slots() for HDAudio")
Signed-off-by: default avatarJason Montleon <jmontleo@redhat.com>
Reviewed-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/20230324170711.2526-1-jmontleo@redhat.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent a4a32034
Loading
Loading
Loading
Loading
+11 −6
Original line number Diff line number Diff line
@@ -436,23 +436,28 @@ static int hdac_hdmi_setup_audio_infoframe(struct hdac_device *hdev,
	return 0;
}

static int hdac_hdmi_set_tdm_slot(struct snd_soc_dai *dai,
		unsigned int tx_mask, unsigned int rx_mask,
		int slots, int slot_width)
static int hdac_hdmi_set_stream(struct snd_soc_dai *dai,
				void *stream, int direction)
{
	struct hdac_hdmi_priv *hdmi = snd_soc_dai_get_drvdata(dai);
	struct hdac_device *hdev = hdmi->hdev;
	struct hdac_hdmi_dai_port_map *dai_map;
	struct hdac_hdmi_pcm *pcm;
	struct hdac_stream *hstream;

	dev_dbg(&hdev->dev, "%s: strm_tag: %d\n", __func__, tx_mask);
	if (!stream)
		return -EINVAL;

	hstream = (struct hdac_stream *)stream;

	dev_dbg(&hdev->dev, "%s: strm_tag: %d\n", __func__, hstream->stream_tag);

	dai_map = &hdmi->dai_map[dai->id];

	pcm = hdac_hdmi_get_pcm_from_cvt(hdmi, dai_map->cvt);

	if (pcm)
		pcm->stream_tag = (tx_mask << 4);
		pcm->stream_tag = (hstream->stream_tag << 4);

	return 0;
}
@@ -1544,7 +1549,7 @@ static const struct snd_soc_dai_ops hdmi_dai_ops = {
	.startup = hdac_hdmi_pcm_open,
	.shutdown = hdac_hdmi_pcm_close,
	.hw_params = hdac_hdmi_set_hw_params,
	.set_tdm_slot = hdac_hdmi_set_tdm_slot,
	.set_stream = hdac_hdmi_set_stream,
};

/*