mirror of
https://github.com/S3NEO/android_kernel_samsung_msm8226.git
synced 2024-11-07 03:47:13 +00:00
ALSA: hda - Introduce snd_hda_get_pin_label()
Create a new helper function snd_hda_get_pin_label() for getting a label string for both input and output pins. hda_get_input_pin_label() is obsoleted by this function, and the callers are replaced appropriately now by this patch. Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
8b940fc457
commit
04f5ade6af
5 changed files with 66 additions and 9 deletions
|
@ -5004,8 +5004,8 @@ EXPORT_SYMBOL_HDA(snd_hda_get_input_pin_attr);
|
||||||
* "Rear", "Internal".
|
* "Rear", "Internal".
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const char *hda_get_input_pin_label(struct hda_codec *codec, hda_nid_t pin,
|
static const char *hda_get_input_pin_label(struct hda_codec *codec,
|
||||||
int check_location)
|
hda_nid_t pin, bool check_location)
|
||||||
{
|
{
|
||||||
unsigned int def_conf;
|
unsigned int def_conf;
|
||||||
static const char * const mic_names[] = {
|
static const char * const mic_names[] = {
|
||||||
|
@ -5044,7 +5044,6 @@ const char *hda_get_input_pin_label(struct hda_codec *codec, hda_nid_t pin,
|
||||||
return "Misc";
|
return "Misc";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_HDA(hda_get_input_pin_label);
|
|
||||||
|
|
||||||
/* Check whether the location prefix needs to be added to the label.
|
/* Check whether the location prefix needs to be added to the label.
|
||||||
* If all mic-jacks are in the same location (e.g. rear panel), we don't
|
* If all mic-jacks are in the same location (e.g. rear panel), we don't
|
||||||
|
@ -5101,6 +5100,64 @@ const char *hda_get_autocfg_input_label(struct hda_codec *codec,
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_HDA(hda_get_autocfg_input_label);
|
EXPORT_SYMBOL_HDA(hda_get_autocfg_input_label);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* snd_hda_get_pin_label - Get a label for the given I/O pin
|
||||||
|
*
|
||||||
|
* Get a label for the given pin. This function works for both input and
|
||||||
|
* output pins. When @cfg is given as non-NULL, the function tries to get
|
||||||
|
* an optimized label using hda_get_autocfg_input_label().
|
||||||
|
*/
|
||||||
|
const char *snd_hda_get_pin_label(struct hda_codec *codec, hda_nid_t nid,
|
||||||
|
const struct auto_pin_cfg *cfg)
|
||||||
|
{
|
||||||
|
unsigned int def_conf = snd_hda_codec_get_pincfg(codec, nid);
|
||||||
|
int attr;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (get_defcfg_connect(def_conf) == AC_JACK_PORT_NONE)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
attr = snd_hda_get_input_pin_attr(def_conf);
|
||||||
|
switch (get_defcfg_device(def_conf)) {
|
||||||
|
case AC_JACK_LINE_OUT:
|
||||||
|
switch (attr) {
|
||||||
|
case INPUT_PIN_ATTR_INT:
|
||||||
|
return "Speaker";
|
||||||
|
case INPUT_PIN_ATTR_DOCK:
|
||||||
|
return "Dock Line-Out";
|
||||||
|
case INPUT_PIN_ATTR_FRONT:
|
||||||
|
return "Front Line-Out";
|
||||||
|
default:
|
||||||
|
return "Line-Out";
|
||||||
|
}
|
||||||
|
case AC_JACK_SPEAKER:
|
||||||
|
return "Speaker";
|
||||||
|
case AC_JACK_HP_OUT:
|
||||||
|
switch (attr) {
|
||||||
|
case INPUT_PIN_ATTR_DOCK:
|
||||||
|
return "Dock Headphone";
|
||||||
|
case INPUT_PIN_ATTR_FRONT:
|
||||||
|
return "Front Headphone";
|
||||||
|
default:
|
||||||
|
return "Headphone";
|
||||||
|
}
|
||||||
|
case AC_JACK_SPDIF_OUT:
|
||||||
|
case AC_JACK_DIG_OTHER_OUT:
|
||||||
|
if (get_defcfg_location(def_conf) == AC_JACK_LOC_HDMI)
|
||||||
|
return "HDMI";
|
||||||
|
else
|
||||||
|
return "SPDIF";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cfg) {
|
||||||
|
for (i = 0; i < cfg->num_inputs; i++)
|
||||||
|
if (cfg->inputs[i].pin == nid)
|
||||||
|
return hda_get_autocfg_input_label(codec, cfg, i);
|
||||||
|
}
|
||||||
|
return hda_get_input_pin_label(codec, nid, true);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_HDA(snd_hda_get_pin_label);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* snd_hda_add_imux_item - Add an item to input_mux
|
* snd_hda_add_imux_item - Add an item to input_mux
|
||||||
*
|
*
|
||||||
|
|
|
@ -394,11 +394,11 @@ struct auto_pin_cfg_item {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct auto_pin_cfg;
|
struct auto_pin_cfg;
|
||||||
const char *hda_get_input_pin_label(struct hda_codec *codec, hda_nid_t pin,
|
|
||||||
int check_location);
|
|
||||||
const char *hda_get_autocfg_input_label(struct hda_codec *codec,
|
const char *hda_get_autocfg_input_label(struct hda_codec *codec,
|
||||||
const struct auto_pin_cfg *cfg,
|
const struct auto_pin_cfg *cfg,
|
||||||
int input);
|
int input);
|
||||||
|
const char *snd_hda_get_pin_label(struct hda_codec *codec, hda_nid_t nid,
|
||||||
|
const struct auto_pin_cfg *cfg);
|
||||||
int snd_hda_add_imux_item(struct hda_input_mux *imux, const char *label,
|
int snd_hda_add_imux_item(struct hda_input_mux *imux, const char *label,
|
||||||
int index, int *type_index_ret);
|
int index, int *type_index_ret);
|
||||||
|
|
||||||
|
|
|
@ -476,7 +476,7 @@ static void parse_input(struct hda_codec *codec)
|
||||||
if (j >= cfg->num_inputs)
|
if (j >= cfg->num_inputs)
|
||||||
continue;
|
continue;
|
||||||
spec->input_pins[n] = pin;
|
spec->input_pins[n] = pin;
|
||||||
spec->input_labels[n] = hda_get_input_pin_label(codec, pin, 1);
|
spec->input_labels[n] = snd_hda_get_pin_label(codec, pin, NULL);
|
||||||
spec->adcs[n] = nid;
|
spec->adcs[n] = nid;
|
||||||
n++;
|
n++;
|
||||||
}
|
}
|
||||||
|
|
|
@ -711,7 +711,7 @@ static int cs_capture_source_info(struct snd_kcontrol *kcontrol,
|
||||||
uinfo->value.enumerated.item = spec->num_inputs - 1;
|
uinfo->value.enumerated.item = spec->num_inputs - 1;
|
||||||
idx = spec->input_idx[uinfo->value.enumerated.item];
|
idx = spec->input_idx[uinfo->value.enumerated.item];
|
||||||
strcpy(uinfo->value.enumerated.name,
|
strcpy(uinfo->value.enumerated.name,
|
||||||
hda_get_input_pin_label(codec, cfg->inputs[idx].pin, 1));
|
snd_hda_get_pin_label(codec, cfg->inputs[idx].pin, NULL));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2872,7 +2872,7 @@ static inline int stac92xx_add_jack_mode_control(struct hda_codec *codec,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (control) {
|
if (control) {
|
||||||
strcpy(name, hda_get_input_pin_label(codec, nid, 1));
|
strcpy(name, snd_hda_get_pin_label(codec, nid, NULL));
|
||||||
return stac92xx_add_control(codec->spec, control,
|
return stac92xx_add_control(codec->spec, control,
|
||||||
strcat(name, " Jack Mode"), nid);
|
strcat(name, " Jack Mode"), nid);
|
||||||
}
|
}
|
||||||
|
@ -3563,7 +3563,7 @@ static int stac92xx_auto_create_dmic_input_ctls(struct hda_codec *codec,
|
||||||
if (index < 0)
|
if (index < 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
label = hda_get_input_pin_label(codec, nid, 1);
|
label = snd_hda_get_pin_label(codec, nid, NULL);
|
||||||
snd_hda_add_imux_item(dimux, label, index, &type_idx);
|
snd_hda_add_imux_item(dimux, label, index, &type_idx);
|
||||||
if (snd_hda_get_bool_hint(codec, "separate_dmux") != 1)
|
if (snd_hda_get_bool_hint(codec, "separate_dmux") != 1)
|
||||||
snd_hda_add_imux_item(imux, label, index, &type_idx);
|
snd_hda_add_imux_item(imux, label, index, &type_idx);
|
||||||
|
|
Loading…
Reference in a new issue