Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 170345
b: refs/heads/master
c: 3f54aa5
h: refs/heads/master
i:
  170343: 90094cf
v: v3
  • Loading branch information
Wu Fengguang authored and Takashi Iwai committed Nov 18, 2009
1 parent aa6d5b2 commit 97fb982
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 11 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 864f92be7e8d4a0ba11d912e3f03d1a92a031dee
refs/heads/master: 3f54aa5091f48e9d8ce6e99b248449d08acccb26
32 changes: 22 additions & 10 deletions trunk/sound/pci/hda/patch_intelhdmi.c
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,25 @@ static int intel_hdmi_read_pin_conn(struct hda_codec *codec, hda_nid_t pin_nid)
return 0;
}

static void hdmi_get_show_eld(struct hda_codec *codec, hda_nid_t pin_nid,
struct hdmi_eld *eld)
{
if (!snd_hdmi_get_eld(eld, codec, pin_nid))
snd_hdmi_show_eld(eld);
}

static void hdmi_present_sense(struct hda_codec *codec, hda_nid_t pin_nid,
struct hdmi_eld *eld)
{
int present = snd_hda_pin_sense(codec, pin_nid);

eld->monitor_present = !!(present & AC_PINSENSE_PRESENCE);
eld->eld_valid = !!(present & AC_PINSENSE_ELDV);

if (present & AC_PINSENSE_ELDV)
hdmi_get_show_eld(codec, pin_nid, eld);
}

static int intel_hdmi_add_pin(struct hda_codec *codec, hda_nid_t pin_nid)
{
struct intel_hdmi_spec *spec = codec->spec;
Expand All @@ -269,6 +288,8 @@ static int intel_hdmi_add_pin(struct hda_codec *codec, hda_nid_t pin_nid)
return -EINVAL;
}

hdmi_present_sense(codec, pin_nid, &spec->sink_eld[spec->num_pins]);

spec->pin[spec->num_pins] = pin_nid;
spec->num_pins++;

Expand Down Expand Up @@ -436,15 +457,6 @@ static void hdmi_debug_channel_mapping(struct hda_codec *codec, hda_nid_t nid)
#endif
}

static void hdmi_parse_eld(struct hda_codec *codec, int index)
{
struct intel_hdmi_spec *spec = codec->spec;
struct hdmi_eld *eld = &spec->sink_eld[index];

if (!snd_hdmi_get_eld(eld, codec, spec->pin[index]))
snd_hdmi_show_eld(eld);
}


/*
* Audio InfoFrame routines
Expand Down Expand Up @@ -677,7 +689,7 @@ static void hdmi_intrinsic_event(struct hda_codec *codec, unsigned int res)
spec->sink_eld[index].eld_valid = eldv;

if (pind && eldv) {
hdmi_parse_eld(codec, index);
hdmi_get_show_eld(codec, spec->pin[index], &spec->sink_eld[index]);
/* TODO: do real things about ELD */
}
}
Expand Down

0 comments on commit 97fb982

Please sign in to comment.