Commit d025febc authored by Takashi Iwai's avatar Takashi Iwai

ALSA: hda - Rename to snd_hda_parse_pin_defcfg()

... and add a new bit-flags argument to specify the behavior of the
function.  The older function is kept as is (as a wrapper).
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 8cd0775d
...@@ -4695,9 +4695,10 @@ static void sort_autocfg_input_pins(struct auto_pin_cfg *cfg) ...@@ -4695,9 +4695,10 @@ static void sort_autocfg_input_pins(struct auto_pin_cfg *cfg)
* The digital input/output pins are assigned to dig_in_pin and dig_out_pin, * The digital input/output pins are assigned to dig_in_pin and dig_out_pin,
* respectively. * respectively.
*/ */
int snd_hda_parse_pin_def_config(struct hda_codec *codec, int snd_hda_parse_pin_defcfg(struct hda_codec *codec,
struct auto_pin_cfg *cfg, struct auto_pin_cfg *cfg,
const hda_nid_t *ignore_nids) const hda_nid_t *ignore_nids,
unsigned int cond_flags)
{ {
hda_nid_t nid, end_nid; hda_nid_t nid, end_nid;
short seq, assoc_line_out; short seq, assoc_line_out;
...@@ -4815,7 +4816,8 @@ int snd_hda_parse_pin_def_config(struct hda_codec *codec, ...@@ -4815,7 +4816,8 @@ int snd_hda_parse_pin_def_config(struct hda_codec *codec,
* If no line-out is defined but multiple HPs are found, * If no line-out is defined but multiple HPs are found,
* some of them might be the real line-outs. * some of them might be the real line-outs.
*/ */
if (!cfg->line_outs && cfg->hp_outs > 1) { if (!cfg->line_outs && cfg->hp_outs > 1 &&
!(cond_flags & HDA_PINCFG_NO_HP_FIXUP)) {
int i = 0; int i = 0;
while (i < cfg->hp_outs) { while (i < cfg->hp_outs) {
/* The real HPs should have the sequence 0x0f */ /* The real HPs should have the sequence 0x0f */
...@@ -4852,7 +4854,8 @@ int snd_hda_parse_pin_def_config(struct hda_codec *codec, ...@@ -4852,7 +4854,8 @@ int snd_hda_parse_pin_def_config(struct hda_codec *codec,
* FIX-UP: if no line-outs are detected, try to use speaker or HP pin * FIX-UP: if no line-outs are detected, try to use speaker or HP pin
* as a primary output * as a primary output
*/ */
if (!cfg->line_outs) { if (!cfg->line_outs &&
!(cond_flags & HDA_PINCFG_NO_LO_FIXUP)) {
if (cfg->speaker_outs) { if (cfg->speaker_outs) {
cfg->line_outs = cfg->speaker_outs; cfg->line_outs = cfg->speaker_outs;
memcpy(cfg->line_out_pins, cfg->speaker_pins, memcpy(cfg->line_out_pins, cfg->speaker_pins,
...@@ -4922,7 +4925,7 @@ int snd_hda_parse_pin_def_config(struct hda_codec *codec, ...@@ -4922,7 +4925,7 @@ int snd_hda_parse_pin_def_config(struct hda_codec *codec,
return 0; return 0;
} }
EXPORT_SYMBOL_HDA(snd_hda_parse_pin_def_config); EXPORT_SYMBOL_HDA(snd_hda_parse_pin_defcfg);
int snd_hda_get_input_pin_attr(unsigned int def_conf) int snd_hda_get_input_pin_attr(unsigned int def_conf)
{ {
......
...@@ -443,9 +443,18 @@ struct auto_pin_cfg { ...@@ -443,9 +443,18 @@ struct auto_pin_cfg {
#define get_defcfg_device(cfg) \ #define get_defcfg_device(cfg) \
((cfg & AC_DEFCFG_DEVICE) >> AC_DEFCFG_DEVICE_SHIFT) ((cfg & AC_DEFCFG_DEVICE) >> AC_DEFCFG_DEVICE_SHIFT)
int snd_hda_parse_pin_def_config(struct hda_codec *codec, /* bit-flags for snd_hda_parse_pin_def_config() behavior */
struct auto_pin_cfg *cfg, #define HDA_PINCFG_NO_HP_FIXUP (1 << 0) /* no HP-split */
const hda_nid_t *ignore_nids); #define HDA_PINCFG_NO_LO_FIXUP (1 << 1) /* don't take other outs as LO */
int snd_hda_parse_pin_defcfg(struct hda_codec *codec,
struct auto_pin_cfg *cfg,
const hda_nid_t *ignore_nids,
unsigned int cond_flags);
/* older function */
#define snd_hda_parse_pin_def_config(codec, cfg, ignore) \
snd_hda_parse_pin_defcfg(codec, cfg, ignore, 0)
/* amp values */ /* amp values */
#define AMP_IN_MUTE(idx) (0x7080 | ((idx)<<8)) #define AMP_IN_MUTE(idx) (0x7080 | ((idx)<<8))
......
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