[alsa-devel] Support MCP89 hdmi audio

Stephen Warren swarren at nvidia.com
Fri Jul 30 19:36:37 CEST 2010


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



More information about the Alsa-devel mailing list