At Tue, 10 Dec 2013 22:46:34 +0200, Anssi Hannula wrote: > > In case a single HDA card has both HDMI and S/PDIF outputs, the S/PDIF > outputs will have their IEC958 controls created starting from index 16 > and the HDMI controls will be created starting from index 0. > > However, HDMI simple_playback_build_controls() as used by old VIA and > NVIDIA codecs incorrectly requests the IEC958 controls to be created > with an S/PDIF type instead of HDMI. > In case the card has other codecs that have HDMI outputs, the controls > will be created with wrong index=16, causing them to e.g. be unreachable > by the ALSA "hdmi" alias. > > Fix that by making simple_playback_build_controls() request controls > with HDMI indexes. > > Not many cards have an affected configuration, but e.g. ASUS M3N78-VM > contains an integrated NVIDIA HDA "card" with: > - a VIA codec that has, among others, an S/PDIF pin incorrectly > labelled as an HDMI pin, and > - an NVIDIA MCP7x HDMI codec. > > Reported-by: MysterX on #openelec > Tested-by: MysterX on #openelec > Signed-off-by: Anssi Hannula <anssi.hannula@xxxxxx> > Cc: <stable@xxxxxxxxxxxxxxx> # 3.8+ Thanks, nice catch. Applied it now. Takashi > --- > sound/pci/hda/patch_hdmi.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c > index 556d47231f11..f5060fc7c303 100644 > --- a/sound/pci/hda/patch_hdmi.c > +++ b/sound/pci/hda/patch_hdmi.c > @@ -2326,8 +2326,9 @@ static int simple_playback_build_controls(struct hda_codec *codec) > int err; > > per_cvt = get_cvt(spec, 0); > - err = snd_hda_create_spdif_out_ctls(codec, per_cvt->cvt_nid, > - per_cvt->cvt_nid); > + err = snd_hda_create_dig_out_ctls(codec, per_cvt->cvt_nid, > + per_cvt->cvt_nid, > + HDA_PCM_TYPE_HDMI); > if (err < 0) > return err; > return simple_hdmi_build_jack(codec, 0); > -- > 1.8.1.5 > -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html