Takashi, I also work for NVIDIA and am starting to work on some audio-related issues. I'd like to get familiar with the flow of patches; where things get applied first and how they flow to public ALSA and kernel repositories, so: I see the patch below has shown up in the snapshots at: ftp://ftp.kernel.org/pub/linux/kernel/people/tiwai/alsa/alsa-driver/ What repository is that a snapshot of; a private repository of yours? However, I can't find the patch anywhere at: http://git.alsa-project.org/ I'm mainly asking, because I want to work with distro kernel maintainers to get this patch into distros, rather than waiting for new distro versions to ship, which even then might not pick up a kernel with this patch the first time around. However, before I do that, I need to find a sane public upstream location that shows the patch is acceptable upstream. Thanks for any pointers. Apologies if this is already documented somewhere, although I couldn't see anything obvious on alsa-project.org. Wei Ni wrote: > Sent: Wednesday, July 28, 2010 5:30 AM > Subject: RE: Support MCP89 hdmi audio > > Hi, Takashi > Sorry, it's later to reply. > Yes, this patch is fine, I think it could be checked in. > ... > Takashi Iwai wrote: > > Sent: Wednesday, July 21, 2010 8:53 PM > > Subject: Re: Support MCP89 hdmi audio > > ... > > Yes. The patch below does similar thing. > > Could you give it a try? > > > > --- > > diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c > > index 86067ee..2fc5396 100644 > > --- a/sound/pci/hda/patch_hdmi.c > > +++ b/sound/pci/hda/patch_hdmi.c > > @@ -52,6 +52,10 @@ struct hdmi_spec { > > */ > > struct hda_multi_out multiout; > > unsigned int codec_type; > > + > > + /* misc flags */ > > + /* PD bit indicates only the update, not the current state */ > > + unsigned int old_pin_detect:1; > > }; > > > > > > @@ -616,6 +620,9 @@ static void hdmi_setup_audio_infoframe(struct hda_codec *codec, hda_nid_t nid, > > * Unsolicited events > > */ > > > > +static void hdmi_present_sense(struct hda_codec *codec, hda_nid_t pin_nid, > > + struct hdmi_eld *eld); > > + > > static void hdmi_intrinsic_event(struct hda_codec *codec, unsigned int res) > > { > > struct hdmi_spec *spec = codec->spec; > > @@ -632,6 +639,12 @@ static void hdmi_intrinsic_event(struct hda_codec *codec, unsigned int res) > > if (index < 0) > > return; > > > > + if (spec->old_pin_detect) { > > + if (pind) > > + hdmi_present_sense(codec, tag, &spec->sink_eld[index]); > > + pind = spec->sink_eld[index].monitor_present; > > + } > > + > > spec->sink_eld[index].monitor_present = pind; > > spec->sink_eld[index].eld_valid = eldv; > > > > diff --git a/sound/pci/hda/patch_nvhdmi.c b/sound/pci/hda/patch_nvhdmi.c > > index 3c10c0b..b0652ac 100644 > > --- a/sound/pci/hda/patch_nvhdmi.c > > +++ b/sound/pci/hda/patch_nvhdmi.c > > @@ -478,6 +478,7 @@ static int patch_nvhdmi_8ch_89(struct hda_codec *codec) > > > > codec->spec = spec; > > spec->codec_type = HDA_CODEC_NVIDIA_MCP89; > > + spec->old_pin_detect = 1; > > > > if (hdmi_parse_codec(codec) < 0) { > > codec->spec = NULL; > > @@ -508,6 +509,7 @@ static int patch_nvhdmi_8ch_7x(struct hda_codec *codec) > > spec->multiout.max_channels = 8; > > spec->multiout.dig_out_nid = nvhdmi_master_con_nid_7x; > > spec->codec_type = HDA_CODEC_NVIDIA_MCP7X; > > + spec->old_pin_detect = 1; > > > > codec->patch_ops = nvhdmi_patch_ops_8ch_7x; > > > > @@ -528,6 +530,7 @@ static int patch_nvhdmi_2ch(struct hda_codec *codec) > > spec->multiout.max_channels = 2; > > spec->multiout.dig_out_nid = nvhdmi_master_con_nid_7x; > > spec->codec_type = HDA_CODEC_NVIDIA_MCP7X; > > + spec->old_pin_detect = 1; > > > > codec->patch_ops = nvhdmi_patch_ops_2ch; -- nvpublic _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel