[SRU][OEM-OSP1-B][PATCH 1/1] ALSA: hda: program stripe control for codec

Hui Wang hui.wang at canonical.com
Mon Jul 29 09:25:13 UTC 2019

From: Sameer Pujar <spujar at nvidia.com>

BugLink: https://bugs.launchpad.net/bugs/1838243

Program codec stripe through AC_VERB_SET_STRIPE_CONTROL to use multiple
sdo lines if supported. Audio needs to be striped across number of sdo
lines for simultaneous playbacks of higher resolutions to work.
This needs to be implemented only for an Audio Output Converter and only
if the stripe bit(AC_WCAP_STRIPE) of Audio Widget Capabilities parameter
is 1.

Signed-off-by: Sameer Pujar <spujar at nvidia.com>
Reviewed-by: Mohan Kumar D <mkumard at nvidia.com>
Reviewed-by: Ravindra Lokhande <rlokhande at nvidia.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart at linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai at suse.de>
(cherry picked from commit 053b055948e97268771de11f2ab9b2aa1640b68d)
Signed-off-by: Hui Wang <hui.wang at canonical.com>
 sound/pci/hda/patch_hdmi.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
index b107a6154924..2419f59b168f 100644
--- a/sound/pci/hda/patch_hdmi.c
+++ b/sound/pci/hda/patch_hdmi.c
@@ -1875,7 +1875,7 @@ static int generic_hdmi_playback_pcm_prepare(struct hda_pcm_stream *hinfo,
 	hda_nid_t pin_nid;
 	struct snd_pcm_runtime *runtime = substream->runtime;
 	bool non_pcm;
-	int pinctl;
+	int pinctl, stripe;
 	int err = 0;
@@ -1919,6 +1919,14 @@ static int generic_hdmi_playback_pcm_prepare(struct hda_pcm_stream *hinfo,
 	per_pin->channels = substream->runtime->channels;
 	per_pin->setup = true;
+	if (get_wcaps(codec, cvt_nid) & AC_WCAP_STRIPE) {
+		stripe = snd_hdac_get_stream_stripe_ctl(&codec->bus->core,
+							substream);
+		snd_hda_codec_write(codec, cvt_nid, 0,
+				    stripe);
+	}
 	hdmi_setup_audio_infoframe(codec, per_pin, non_pcm);
 	if (spec->dyn_pin_out) {

More information about the kernel-team mailing list