[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