On Fri, 29 Jan 2016 06:59:47 +0100, Yang, Libin wrote: > > Hi Takashi, > > This patch is for DP MST audio, and for hda-mst branch. OK, applied now. Also, I rebased topic/hda-mst branch on top of 4.5-rc1 (so that it's now building cleanly). thanks, Takashi > > Regards, > Libin > > > > -----Original Message----- > > From: libin.yang@xxxxxxxxxxxxxxx [mailto:libin.yang@xxxxxxxxxxxxxxx] > > Sent: Friday, January 29, 2016 1:53 PM > > To: alsa-devel@xxxxxxxxxxxxxxxx; tiwai@xxxxxxx > > Cc: Lin, Mengdong; Yang, Libin; Libin Yang > > Subject: [PATCH] ALSA: hda - hdmi create spdif ctl based on pcm > > > > From: Libin Yang <libin.yang@xxxxxxxxxxxxxxx> > > > > SPDIF ctl should be based on pcm. Each spdif ctl controls > > one pcm state. > > > > This patch creates spdif based on pcm and no longer > > based on pin. > > > > Signed-off-by: Libin Yang <libin.yang@xxxxxxxxxxxxxxx> > > --- > > sound/pci/hda/patch_hdmi.c | 27 ++++++++++++++++++--------- > > 1 file changed, 18 insertions(+), 9 deletions(-) > > > > diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c > > index dfb7c26..2f949fb 100644 > > --- a/sound/pci/hda/patch_hdmi.c > > +++ b/sound/pci/hda/patch_hdmi.c > > @@ -2255,6 +2255,7 @@ static int hdmi_pcm_close(struct > > hda_pcm_stream *hinfo, > > hinfo->nid = 0; > > > > mutex_lock(&spec->pcm_lock); > > + snd_hda_spdif_ctls_unassign(codec, pcm_idx); > > clear_bit(pcm_idx, &spec->pcm_in_use); > > pin_idx = hinfo_to_pin_index(codec, hinfo); > > if (spec->dyn_pcm_assign && pin_idx < 0) { > > @@ -2276,8 +2277,6 @@ static int hdmi_pcm_close(struct > > hda_pcm_stream *hinfo, > > pinctl & ~PIN_OUT); > > } > > > > - snd_hda_spdif_ctls_unassign(codec, pcm_idx); > > - > > mutex_lock(&per_pin->lock); > > per_pin->chmap_set = false; > > memset(per_pin->chmap, 0, sizeof(per_pin->chmap)); > > @@ -2560,19 +2559,29 @@ static int > > generic_hdmi_build_controls(struct hda_codec *codec) > > err = generic_hdmi_build_jack(codec, pcm_idx); > > if (err < 0) > > return err; > > - } > > > > - for (pin_idx = 0; pin_idx < spec->num_pins; pin_idx++) { > > - struct hdmi_spec_per_pin *per_pin = get_pin(spec, > > pin_idx); > > - > > - err = snd_hda_create_dig_out_ctls(codec, > > + /* create the spdif for each pcm > > + * pin will be bound when monitor is connected > > + */ > > + if (spec->dyn_pcm_assign) > > + err = snd_hda_create_dig_out_ctls(codec, > > + 0, spec->cvt_nids[0], > > + HDA_PCM_TYPE_HDMI); > > + else { > > + struct hdmi_spec_per_pin *per_pin = > > + get_pin(spec, pcm_idx); > > + err = snd_hda_create_dig_out_ctls(codec, > > per_pin->pin_nid, > > per_pin->mux_nids[0], > > > > HDA_PCM_TYPE_HDMI); > > + } > > if (err < 0) > > return err; > > - /* pin number is the same with pcm number so far */ > > - snd_hda_spdif_ctls_unassign(codec, pin_idx); > > + snd_hda_spdif_ctls_unassign(codec, pcm_idx); > > + } > > + > > + for (pin_idx = 0; pin_idx < spec->num_pins; pin_idx++) { > > + struct hdmi_spec_per_pin *per_pin = get_pin(spec, > > pin_idx); > > > > /* add control for ELD Bytes */ > > err = hdmi_create_eld_ctl(codec, pin_idx, > > -- > > 1.9.1 > _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel