[alsa-devel] [PATCH 3/3] ALSA: hda - Disable DigEn bit before stream-id change
Takashi Iwai
tiwai at suse.de
Mon Aug 13 09:32:10 CEST 2012
At Mon, 13 Aug 2012 14:11:11 +0800,
Wang Xingchao wrote:
>
> Follow the protection way in nvhdmi_8ch_7x_pcm_prepare().
Could you clarify why this is needed?
I don't mean an objection, but just need to know if there is any other
devices that need this fix. If there really is, better to put a bit
more details in changelog or comment.
thanks,
Takashi
>
> Signed-off-by: Wang Xingchao <xingchao.wang at intel.com>
> ---
> sound/pci/hda/patch_hdmi.c | 15 +++++++++++++++
> 1 file changed, 15 insertions(+)
>
> diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
> index 641408d..aa414b9 100644
> --- a/sound/pci/hda/patch_hdmi.c
> +++ b/sound/pci/hda/patch_hdmi.c
> @@ -831,6 +831,7 @@ static int hdmi_setup_stream(struct hda_codec *codec, hda_nid_t cvt_nid,
> {
> int pinctl;
> int new_pinctl = 0;
> + struct hda_spdif_out *spdif = snd_hda_spdif_out_of_nid(codec, cvt_nid);
>
> if (snd_hda_query_pin_caps(codec, pin_nid) & AC_PINCAP_HBR) {
> pinctl = snd_hda_codec_read(codec, pin_nid, 0,
> @@ -859,7 +860,21 @@ static int hdmi_setup_stream(struct hda_codec *codec, hda_nid_t cvt_nid,
> return -EINVAL;
> }
>
> + /* turn off SPDIF once; otherwise the IEC958 bits won't be updated */
> + if (codec->spdif_status_reset && (spdif->ctls & AC_DIG1_ENABLE))
> + snd_hda_codec_write(codec,
> + cvt_nid,
> + 0,
> + AC_VERB_SET_DIGI_CONVERT_1,
> + spdif->ctls & ~AC_DIG1_ENABLE & 0xff);
> snd_hda_codec_setup_stream(codec, cvt_nid, stream_tag, 0, format);
> + /* turn on again (if needed) */
> + if (codec->spdif_status_reset && (spdif->ctls & AC_DIG1_ENABLE))
> + snd_hda_codec_write(codec,
> + cvt_nid,
> + 0,
> + AC_VERB_SET_DIGI_CONVERT_1,
> + spdif->ctls & 0xff);
> return 0;
> }
>
> --
> 1.7.9.5
>
More information about the Alsa-devel
mailing list