Commit daead538 authored by Takashi Iwai's avatar Takashi Iwai

ALSA: hda - Add codec-specific proc hook

Added a hook for proc outputs of codec-specific stuff.

Moved realtek-specific coeff output into patch_realtek.c as well.
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 11cd41b8
...@@ -784,6 +784,10 @@ struct hda_codec { ...@@ -784,6 +784,10 @@ struct hda_codec {
int power_count; /* current (global) power refcount */ int power_count; /* current (global) power refcount */
struct delayed_work power_work; /* delayed task for powerdown */ struct delayed_work power_work; /* delayed task for powerdown */
#endif #endif
/* codec-specific additional proc output */
void (*proc_widget_hook)(struct snd_info_buffer *buffer,
struct hda_codec *codec, hda_nid_t nid);
}; };
/* direction */ /* direction */
......
...@@ -414,17 +414,6 @@ static void print_conn_list(struct snd_info_buffer *buffer, ...@@ -414,17 +414,6 @@ static void print_conn_list(struct snd_info_buffer *buffer,
} }
} }
static void print_realtek_coef(struct snd_info_buffer *buffer,
struct hda_codec *codec, hda_nid_t nid)
{
int coeff = snd_hda_codec_read(codec, nid, 0,
AC_VERB_GET_PROC_COEF, 0);
snd_iprintf(buffer, " Processing Coefficient: 0x%02x\n", coeff);
coeff = snd_hda_codec_read(codec, nid, 0,
AC_VERB_GET_COEF_INDEX, 0);
snd_iprintf(buffer, " Coefficient Index: 0x%02x\n", coeff);
}
static void print_gpio(struct snd_info_buffer *buffer, static void print_gpio(struct snd_info_buffer *buffer,
struct hda_codec *codec, hda_nid_t nid) struct hda_codec *codec, hda_nid_t nid)
{ {
...@@ -606,9 +595,8 @@ static void print_codec_info(struct snd_info_entry *entry, ...@@ -606,9 +595,8 @@ static void print_codec_info(struct snd_info_entry *entry,
if (wid_caps & AC_WCAP_PROC_WID) if (wid_caps & AC_WCAP_PROC_WID)
print_proc_caps(buffer, codec, nid); print_proc_caps(buffer, codec, nid);
/* NID 0x20 == Realtek Define Registers */ if (codec->proc_widget_hook)
if (codec->vendor_id == 0x10ec && nid == 0x20) codec->proc_widget_hook(buffer, codec, nid);
print_realtek_coef(buffer, codec, nid);
} }
snd_hda_power_down(codec); snd_hda_power_down(codec);
} }
......
...@@ -766,6 +766,27 @@ static void add_verb(struct alc_spec *spec, const struct hda_verb *verb) ...@@ -766,6 +766,27 @@ static void add_verb(struct alc_spec *spec, const struct hda_verb *verb)
spec->init_verbs[spec->num_init_verbs++] = verb; spec->init_verbs[spec->num_init_verbs++] = verb;
} }
#ifdef CONFIG_PROC_FS
/*
* hook for proc
*/
static void print_realtek_coef(struct snd_info_buffer *buffer,
struct hda_codec *codec, hda_nid_t nid)
{
int coeff;
if (nid != 0x20)
return;
coeff = snd_hda_codec_read(codec, nid, 0, AC_VERB_GET_PROC_COEF, 0);
snd_iprintf(buffer, " Processing Coefficient: 0x%02x\n", coeff);
coeff = snd_hda_codec_read(codec, nid, 0,
AC_VERB_GET_COEF_INDEX, 0);
snd_iprintf(buffer, " Coefficient Index: 0x%02x\n", coeff);
}
#else
#define print_realtek_coef NULL
#endif
/* /*
* set up from the preset table * set up from the preset table
*/ */
...@@ -4344,6 +4365,7 @@ static int patch_alc880(struct hda_codec *codec) ...@@ -4344,6 +4365,7 @@ static int patch_alc880(struct hda_codec *codec)
if (!spec->loopback.amplist) if (!spec->loopback.amplist)
spec->loopback.amplist = alc880_loopbacks; spec->loopback.amplist = alc880_loopbacks;
#endif #endif
codec->proc_widget_hook = print_realtek_coef;
return 0; return 0;
} }
...@@ -5869,6 +5891,7 @@ static int patch_alc260(struct hda_codec *codec) ...@@ -5869,6 +5891,7 @@ static int patch_alc260(struct hda_codec *codec)
if (!spec->loopback.amplist) if (!spec->loopback.amplist)
spec->loopback.amplist = alc260_loopbacks; spec->loopback.amplist = alc260_loopbacks;
#endif #endif
codec->proc_widget_hook = print_realtek_coef;
return 0; return 0;
} }
...@@ -7074,6 +7097,7 @@ static int patch_alc882(struct hda_codec *codec) ...@@ -7074,6 +7097,7 @@ static int patch_alc882(struct hda_codec *codec)
if (!spec->loopback.amplist) if (!spec->loopback.amplist)
spec->loopback.amplist = alc882_loopbacks; spec->loopback.amplist = alc882_loopbacks;
#endif #endif
codec->proc_widget_hook = print_realtek_coef;
return 0; return 0;
} }
...@@ -9042,6 +9066,7 @@ static int patch_alc883(struct hda_codec *codec) ...@@ -9042,6 +9066,7 @@ static int patch_alc883(struct hda_codec *codec)
if (!spec->loopback.amplist) if (!spec->loopback.amplist)
spec->loopback.amplist = alc883_loopbacks; spec->loopback.amplist = alc883_loopbacks;
#endif #endif
codec->proc_widget_hook = print_realtek_coef;
return 0; return 0;
} }
...@@ -10848,6 +10873,7 @@ static int patch_alc262(struct hda_codec *codec) ...@@ -10848,6 +10873,7 @@ static int patch_alc262(struct hda_codec *codec)
if (!spec->loopback.amplist) if (!spec->loopback.amplist)
spec->loopback.amplist = alc262_loopbacks; spec->loopback.amplist = alc262_loopbacks;
#endif #endif
codec->proc_widget_hook = print_realtek_coef;
return 0; return 0;
} }
...@@ -11913,6 +11939,8 @@ static int patch_alc268(struct hda_codec *codec) ...@@ -11913,6 +11939,8 @@ static int patch_alc268(struct hda_codec *codec)
if (board_config == ALC268_AUTO) if (board_config == ALC268_AUTO)
spec->init_hook = alc268_auto_init; spec->init_hook = alc268_auto_init;
codec->proc_widget_hook = print_realtek_coef;
return 0; return 0;
} }
...@@ -12714,6 +12742,7 @@ static int patch_alc269(struct hda_codec *codec) ...@@ -12714,6 +12742,7 @@ static int patch_alc269(struct hda_codec *codec)
if (!spec->loopback.amplist) if (!spec->loopback.amplist)
spec->loopback.amplist = alc269_loopbacks; spec->loopback.amplist = alc269_loopbacks;
#endif #endif
codec->proc_widget_hook = print_realtek_coef;
return 0; return 0;
} }
...@@ -13802,6 +13831,7 @@ static int patch_alc861(struct hda_codec *codec) ...@@ -13802,6 +13831,7 @@ static int patch_alc861(struct hda_codec *codec)
if (!spec->loopback.amplist) if (!spec->loopback.amplist)
spec->loopback.amplist = alc861_loopbacks; spec->loopback.amplist = alc861_loopbacks;
#endif #endif
codec->proc_widget_hook = print_realtek_coef;
return 0; return 0;
} }
...@@ -14763,6 +14793,7 @@ static int patch_alc861vd(struct hda_codec *codec) ...@@ -14763,6 +14793,7 @@ static int patch_alc861vd(struct hda_codec *codec)
if (!spec->loopback.amplist) if (!spec->loopback.amplist)
spec->loopback.amplist = alc861vd_loopbacks; spec->loopback.amplist = alc861vd_loopbacks;
#endif #endif
codec->proc_widget_hook = print_realtek_coef;
return 0; return 0;
} }
...@@ -16572,6 +16603,7 @@ static int patch_alc662(struct hda_codec *codec) ...@@ -16572,6 +16603,7 @@ static int patch_alc662(struct hda_codec *codec)
if (!spec->loopback.amplist) if (!spec->loopback.amplist)
spec->loopback.amplist = alc662_loopbacks; spec->loopback.amplist = alc662_loopbacks;
#endif #endif
codec->proc_widget_hook = print_realtek_coef;
return 0; return 0;
} }
......
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