Commit 03284c8f authored by Wu Fengguang's avatar Wu Fengguang Committed by Takashi Iwai

ALSA: hda - make HDMI messages more user friendly

- make some messages more user friendly
- add message prefix "HDMI:" to indicate the problem's domain
  (also easier to do `dmesg | grep HDMI` ;-)
Signed-off-by: default avatarWu Fengguang <wfg@linux.intel.com>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent cc02b83c
...@@ -168,11 +168,11 @@ static unsigned char hdmi_get_eld_byte(struct hda_codec *codec, hda_nid_t nid, ...@@ -168,11 +168,11 @@ static unsigned char hdmi_get_eld_byte(struct hda_codec *codec, hda_nid_t nid,
AC_VERB_GET_HDMI_ELDD, byte_index); AC_VERB_GET_HDMI_ELDD, byte_index);
#ifdef BE_PARANOID #ifdef BE_PARANOID
printk(KERN_INFO "ELD data byte %d: 0x%x\n", byte_index, val); printk(KERN_INFO "HDMI: ELD data byte %d: 0x%x\n", byte_index, val);
#endif #endif
if ((val & AC_ELDD_ELD_VALID) == 0) { if ((val & AC_ELDD_ELD_VALID) == 0) {
snd_printd(KERN_INFO "Invalid ELD data byte %d\n", snd_printd(KERN_INFO "HDMI: invalid ELD data byte %d\n",
byte_index); byte_index);
val = 0; val = 0;
} }
...@@ -208,7 +208,7 @@ static void hdmi_update_short_audio_desc(struct cea_sad *a, ...@@ -208,7 +208,7 @@ static void hdmi_update_short_audio_desc(struct cea_sad *a,
switch (a->format) { switch (a->format) {
case AUDIO_CODING_TYPE_REF_STREAM_HEADER: case AUDIO_CODING_TYPE_REF_STREAM_HEADER:
snd_printd(KERN_INFO snd_printd(KERN_INFO
"audio coding type 0 not expected in ELD\n"); "HDMI: audio coding type 0 not expected\n");
break; break;
case AUDIO_CODING_TYPE_LPCM: case AUDIO_CODING_TYPE_LPCM:
...@@ -254,7 +254,7 @@ static void hdmi_update_short_audio_desc(struct cea_sad *a, ...@@ -254,7 +254,7 @@ static void hdmi_update_short_audio_desc(struct cea_sad *a,
if (a->format == AUDIO_CODING_XTYPE_HE_REF_CT || if (a->format == AUDIO_CODING_XTYPE_HE_REF_CT ||
a->format >= AUDIO_CODING_XTYPE_FIRST_RESERVED) { a->format >= AUDIO_CODING_XTYPE_FIRST_RESERVED) {
snd_printd(KERN_INFO snd_printd(KERN_INFO
"audio coding xtype %d not expected in ELD\n", "HDMI: audio coding xtype %d not expected\n",
a->format); a->format);
a->format = 0; a->format = 0;
} else } else
...@@ -276,7 +276,8 @@ static int hdmi_update_eld(struct hdmi_eld *e, ...@@ -276,7 +276,8 @@ static int hdmi_update_eld(struct hdmi_eld *e,
e->eld_ver = GRAB_BITS(buf, 0, 3, 5); e->eld_ver = GRAB_BITS(buf, 0, 3, 5);
if (e->eld_ver != ELD_VER_CEA_861D && if (e->eld_ver != ELD_VER_CEA_861D &&
e->eld_ver != ELD_VER_PARTIAL) { e->eld_ver != ELD_VER_PARTIAL) {
snd_printd(KERN_INFO "Unknown ELD version %d\n", e->eld_ver); snd_printd(KERN_INFO "HDMI: Unknown ELD version %d\n",
e->eld_ver);
goto out_fail; goto out_fail;
} }
...@@ -300,17 +301,17 @@ static int hdmi_update_eld(struct hdmi_eld *e, ...@@ -300,17 +301,17 @@ static int hdmi_update_eld(struct hdmi_eld *e,
e->product_id = get_unaligned_le16(buf + 18); e->product_id = get_unaligned_le16(buf + 18);
if (mnl > ELD_MAX_MNL) { if (mnl > ELD_MAX_MNL) {
snd_printd(KERN_INFO "MNL is reserved value %d\n", mnl); snd_printd(KERN_INFO "HDMI: MNL is reserved value %d\n", mnl);
goto out_fail; goto out_fail;
} else if (ELD_FIXED_BYTES + mnl > size) { } else if (ELD_FIXED_BYTES + mnl > size) {
snd_printd(KERN_INFO "out of range MNL %d\n", mnl); snd_printd(KERN_INFO "HDMI: out of range MNL %d\n", mnl);
goto out_fail; goto out_fail;
} else } else
strlcpy(e->monitor_name, buf + ELD_FIXED_BYTES, mnl); strlcpy(e->monitor_name, buf + ELD_FIXED_BYTES, mnl);
for (i = 0; i < e->sad_count; i++) { for (i = 0; i < e->sad_count; i++) {
if (ELD_FIXED_BYTES + mnl + 3 * (i + 1) > size) { if (ELD_FIXED_BYTES + mnl + 3 * (i + 1) > size) {
snd_printd(KERN_INFO "out of range SAD %d\n", i); snd_printd(KERN_INFO "HDMI: out of range SAD %d\n", i);
goto out_fail; goto out_fail;
} }
hdmi_update_short_audio_desc(e->sad + i, hdmi_update_short_audio_desc(e->sad + i,
...@@ -339,7 +340,8 @@ static int hdmi_eld_valid(struct hda_codec *codec, hda_nid_t nid) ...@@ -339,7 +340,8 @@ static int hdmi_eld_valid(struct hda_codec *codec, hda_nid_t nid)
present = (present & AC_PINSENSE_PRESENCE); present = (present & AC_PINSENSE_PRESENCE);
#ifdef CONFIG_SND_DEBUG_VERBOSE #ifdef CONFIG_SND_DEBUG_VERBOSE
printk(KERN_INFO "pinp = %d, eldv = %d\n", !!present, !!eldv); printk(KERN_INFO "HDMI: sink_present = %d, eld_valid = %d\n",
!!present, !!eldv);
#endif #endif
return eldv && present; return eldv && present;
...@@ -365,11 +367,11 @@ int snd_hdmi_get_eld(struct hdmi_eld *eld, ...@@ -365,11 +367,11 @@ int snd_hdmi_get_eld(struct hdmi_eld *eld,
size = snd_hdmi_get_eld_size(codec, nid); size = snd_hdmi_get_eld_size(codec, nid);
if (size == 0) { if (size == 0) {
/* wfg: workaround for ASUS P5E-VM HDMI board */ /* wfg: workaround for ASUS P5E-VM HDMI board */
snd_printd(KERN_INFO "ELD buf size is 0, force 128\n"); snd_printd(KERN_INFO "HDMI: ELD buf size is 0, force 128\n");
size = 128; size = 128;
} }
if (size < ELD_FIXED_BYTES || size > PAGE_SIZE) { if (size < ELD_FIXED_BYTES || size > PAGE_SIZE) {
snd_printd(KERN_INFO "Invalid ELD buf size %d\n", size); snd_printd(KERN_INFO "HDMI: invalid ELD buf size %d\n", size);
return -ERANGE; return -ERANGE;
} }
...@@ -404,7 +406,7 @@ static void hdmi_show_short_audio_desc(struct cea_sad *a) ...@@ -404,7 +406,7 @@ static void hdmi_show_short_audio_desc(struct cea_sad *a)
else else
buf2[0] = '\0'; buf2[0] = '\0';
printk(KERN_INFO "supports coding type %s:" printk(KERN_INFO "HDMI: supports coding type %s:"
" channels = %d, rates =%s%s\n", " channels = %d, rates =%s%s\n",
cea_audio_coding_type_names[a->format], cea_audio_coding_type_names[a->format],
a->channels, a->channels,
...@@ -428,14 +430,14 @@ void snd_hdmi_show_eld(struct hdmi_eld *e) ...@@ -428,14 +430,14 @@ void snd_hdmi_show_eld(struct hdmi_eld *e)
{ {
int i; int i;
printk(KERN_INFO "detected monitor %s at connection type %s\n", printk(KERN_INFO "HDMI: detected monitor %s at connection type %s\n",
e->monitor_name, e->monitor_name,
eld_connection_type_names[e->conn_type]); eld_connection_type_names[e->conn_type]);
if (e->spk_alloc) { if (e->spk_alloc) {
char buf[SND_PRINT_CHANNEL_ALLOCATION_ADVISED_BUFSIZE]; char buf[SND_PRINT_CHANNEL_ALLOCATION_ADVISED_BUFSIZE];
snd_print_channel_allocation(e->spk_alloc, buf, sizeof(buf)); snd_print_channel_allocation(e->spk_alloc, buf, sizeof(buf));
printk(KERN_INFO "available speakers:%s\n", buf); printk(KERN_INFO "HDMI: available speakers:%s\n", buf);
} }
for (i = 0; i < e->sad_count; i++) for (i = 0; i < e->sad_count; i++)
......
...@@ -286,7 +286,7 @@ static void hdmi_set_channel_count(struct hda_codec *codec, int chs) ...@@ -286,7 +286,7 @@ static void hdmi_set_channel_count(struct hda_codec *codec, int chs)
AC_VERB_SET_CVT_CHAN_COUNT, chs - 1); AC_VERB_SET_CVT_CHAN_COUNT, chs - 1);
if (chs != hdmi_get_channel_count(codec)) if (chs != hdmi_get_channel_count(codec))
snd_printd(KERN_INFO "Channel count expect=%d, real=%d\n", snd_printd(KERN_INFO "HDMI channel count: expect %d, get %d\n",
chs, hdmi_get_channel_count(codec)); chs, hdmi_get_channel_count(codec));
} }
...@@ -299,7 +299,7 @@ static void hdmi_debug_channel_mapping(struct hda_codec *codec) ...@@ -299,7 +299,7 @@ static void hdmi_debug_channel_mapping(struct hda_codec *codec)
for (i = 0; i < 8; i++) { for (i = 0; i < 8; i++) {
slot = snd_hda_codec_read(codec, CVT_NID, 0, slot = snd_hda_codec_read(codec, CVT_NID, 0,
AC_VERB_GET_HDMI_CHAN_SLOT, i); AC_VERB_GET_HDMI_CHAN_SLOT, i);
printk(KERN_DEBUG "ASP channel %d => slot %d\n", printk(KERN_DEBUG "HDMI: ASP channel %d => slot %d\n",
slot >> 4, slot & 0x7); slot >> 4, slot & 0x7);
} }
#endif #endif
...@@ -326,12 +326,12 @@ static void hdmi_debug_dip_size(struct hda_codec *codec) ...@@ -326,12 +326,12 @@ static void hdmi_debug_dip_size(struct hda_codec *codec)
int size; int size;
size = snd_hdmi_get_eld_size(codec, PIN_NID); size = snd_hdmi_get_eld_size(codec, PIN_NID);
printk(KERN_DEBUG "ELD buf size is %d\n", size); printk(KERN_DEBUG "HDMI: ELD buf size is %d\n", size);
for (i = 0; i < 8; i++) { for (i = 0; i < 8; i++) {
size = snd_hda_codec_read(codec, PIN_NID, 0, size = snd_hda_codec_read(codec, PIN_NID, 0,
AC_VERB_GET_HDMI_DIP_SIZE, i); AC_VERB_GET_HDMI_DIP_SIZE, i);
printk(KERN_DEBUG "DIP GP[%d] buf size is %d\n", i, size); printk(KERN_DEBUG "HDMI: DIP GP[%d] buf size is %d\n", i, size);
} }
#endif #endif
} }
...@@ -359,7 +359,7 @@ static void hdmi_clear_dip_buffers(struct hda_codec *codec) ...@@ -359,7 +359,7 @@ static void hdmi_clear_dip_buffers(struct hda_codec *codec)
break; break;
} }
snd_printd(KERN_INFO snd_printd(KERN_INFO
"DIP GP[%d] buf reported size=%d, written=%d\n", "HDMI: DIP GP[%d] buf reported size=%d, written=%d\n",
i, size, j); i, size, j);
} }
#endif #endif
...@@ -498,7 +498,9 @@ static void hdmi_intrinsic_event(struct hda_codec *codec, unsigned int res) ...@@ -498,7 +498,9 @@ static void hdmi_intrinsic_event(struct hda_codec *codec, unsigned int res)
int pind = !!(res & AC_UNSOL_RES_PD); int pind = !!(res & AC_UNSOL_RES_PD);
int eldv = !!(res & AC_UNSOL_RES_ELDV); int eldv = !!(res & AC_UNSOL_RES_ELDV);
printk(KERN_INFO "HDMI intrinsic event: PD=%d ELDV=%d\n", pind, eldv); printk(KERN_INFO
"HDMI hot plug event: Presence_Detect=%d ELD_Valid=%d\n",
pind, eldv);
if (pind && eldv) { if (pind && eldv) {
hdmi_parse_eld(codec); hdmi_parse_eld(codec);
...@@ -512,13 +514,13 @@ static void hdmi_non_intrinsic_event(struct hda_codec *codec, unsigned int res) ...@@ -512,13 +514,13 @@ static void hdmi_non_intrinsic_event(struct hda_codec *codec, unsigned int res)
int cp_state = !!(res & AC_UNSOL_RES_CP_STATE); int cp_state = !!(res & AC_UNSOL_RES_CP_STATE);
int cp_ready = !!(res & AC_UNSOL_RES_CP_READY); int cp_ready = !!(res & AC_UNSOL_RES_CP_READY);
printk(KERN_INFO "HDMI non-intrinsic event: " printk(KERN_INFO
"SUBTAG=0x%x CP_STATE=%d CP_READY=%d\n", "HDMI content protection event: SUBTAG=0x%x CP_STATE=%d CP_READY=%d\n",
subtag, subtag,
cp_state, cp_state,
cp_ready); cp_ready);
/* who cares? */ /* TODO */
if (cp_state) if (cp_state)
; ;
if (cp_ready) if (cp_ready)
...@@ -532,9 +534,7 @@ static void intel_hdmi_unsol_event(struct hda_codec *codec, unsigned int res) ...@@ -532,9 +534,7 @@ static void intel_hdmi_unsol_event(struct hda_codec *codec, unsigned int res)
int subtag = (res & AC_UNSOL_RES_SUBTAG) >> AC_UNSOL_RES_SUBTAG_SHIFT; int subtag = (res & AC_UNSOL_RES_SUBTAG) >> AC_UNSOL_RES_SUBTAG_SHIFT;
if (tag != INTEL_HDMI_EVENT_TAG) { if (tag != INTEL_HDMI_EVENT_TAG) {
snd_printd(KERN_INFO snd_printd(KERN_INFO "Unexpected HDMI event tag 0x%x\n", tag);
"Unexpected HDMI unsolicited event tag 0x%x\n",
tag);
return; return;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment