
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:
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;