}
}
-static void alc880_auto_init_input_src(struct hda_codec *codec)
-{
- struct alc_spec *spec = codec->spec;
- int c;
-
- for (c = 0; c < spec->num_adc_nids; c++) {
- unsigned int mux_idx;
- const struct hda_input_mux *imux;
- mux_idx = c >= spec->num_mux_defs ? 0 : c;
- imux = &spec->input_mux[mux_idx];
- if (!imux->num_items && mux_idx > 0)
- imux = &spec->input_mux[0];
- if (imux)
- snd_hda_codec_write(codec, spec->adc_nids[c], 0,
- AC_VERB_SET_CONNECT_SEL,
- imux->items[0].index);
- snd_hda_codec_write(codec, spec->adc_nids[c], 0,
- AC_VERB_SET_AMP_GAIN_MUTE,
- AMP_IN_MUTE(0));
- }
-}
-
static int alc_auto_add_multi_channel_mode(struct hda_codec *codec,
int (*fill_dac)(struct hda_codec *));
static void alc_remove_invalid_adc_nids(struct hda_codec *codec);
+static void alc_auto_init_input_src(struct hda_codec *codec);
/* parse the BIOS configuration and set up the alc_spec */
/* return 1 if successful, 0 if the proper config is not found,
alc_auto_init_multi_out(codec);
alc_auto_init_extra_out(codec);
alc_auto_init_analog_input(codec);
- alc880_auto_init_input_src(codec);
+ alc_auto_init_input_src(codec);
alc_auto_init_digital(codec);
if (spec->unsol_event)
alc_inithook(codec);
alc260_auto_set_output_and_unmute(codec, nid, PIN_HP, 0);
}
-#define alc260_auto_init_input_src alc880_auto_init_input_src
-
static int alc260_parse_auto_config(struct hda_codec *codec)
{
struct alc_spec *spec = codec->spec;
struct alc_spec *spec = codec->spec;
alc260_auto_init_multi_out(codec);
alc_auto_init_analog_input(codec);
- alc260_auto_init_input_src(codec);
+ alc_auto_init_input_src(codec);
alc_auto_init_digital(codec);
if (spec->unsol_event)
alc_inithook(codec);
/*
* BIOS auto configuration
*/
-static void alc882_auto_init_input_src(struct hda_codec *codec)
+static void alc_auto_init_input_src(struct hda_codec *codec)
{
struct alc_spec *spec = codec->spec;
int c;
+ if (spec->dual_adc_switch)
+ return;
+
for (c = 0; c < spec->num_adc_nids; c++) {
- hda_nid_t nid = spec->capsrc_nids[c];
+ hda_nid_t nid;
unsigned int mux_idx;
const struct hda_input_mux *imux;
int conns, mute, idx, item;
unsigned int wid_type;
+ nid = spec->capsrc_nids ?
+ spec->capsrc_nids[c] : spec->adc_nids[c];
/* mute ADC */
if (query_amp_caps(codec, spec->adc_nids[c], HDA_INPUT) &
AC_AMPCAP_MUTE)
alc_auto_init_multi_out(codec);
alc_auto_init_extra_out(codec);
alc_auto_init_analog_input(codec);
- alc882_auto_init_input_src(codec);
+ alc_auto_init_input_src(codec);
alc_auto_init_digital(codec);
if (spec->unsol_event)
alc_inithook(codec);
return 1;
}
-#define alc262_auto_init_input_src alc882_auto_init_input_src
-
/* init callback for auto-configuration model -- overriding the default init */
static void alc262_auto_init(struct hda_codec *codec)
alc_auto_init_multi_out(codec);
alc_auto_init_extra_out(codec);
alc_auto_init_analog_input(codec);
- alc262_auto_init_input_src(codec);
+ alc_auto_init_input_src(codec);
alc_auto_init_digital(codec);
if (spec->unsol_event)
alc_inithook(codec);
add_verb(spec, alc268_beep_init_verbs);
}
- spec->num_mux_defs = 2;
+ spec->num_mux_defs = 1;
spec->input_mux = &spec->private_imux[0];
if (!spec->dual_adc_switch)
return 1;
}
-#define alc268_auto_init_input_src alc882_auto_init_input_src
-
/* init callback for auto-configuration model -- overriding the default init */
static void alc268_auto_init(struct hda_codec *codec)
{
alc268_auto_init_hp_out(codec);
alc268_auto_init_mono_speaker_out(codec);
alc_auto_init_analog_input(codec);
- alc268_auto_init_input_src(codec);
+ alc_auto_init_input_src(codec);
alc_auto_init_digital(codec);
if (spec->unsol_event)
alc_inithook(codec);
#define alc269_auto_init_multi_out alc268_auto_init_multi_out
#define alc269_auto_init_hp_out alc268_auto_init_hp_out
-#define alc269_auto_init_input_src alc882_auto_init_input_src
/* init callback for auto-configuration model -- overriding the default init */
alc269_auto_init_multi_out(codec);
alc269_auto_init_hp_out(codec);
alc_auto_init_analog_input(codec);
- if (!spec->dual_adc_switch)
- alc269_auto_init_input_src(codec);
+ alc_auto_init_input_src(codec);
alc_auto_init_digital(codec);
if (spec->unsol_event)
alc_inithook(codec);
/*
* BIOS auto configuration
*/
-#define alc861vd_auto_init_input_src alc882_auto_init_input_src
-
#define alc861vd_idx_to_mixer_vol(nid) ((nid) + 0x02)
#define alc861vd_idx_to_mixer_switch(nid) ((nid) + 0x0c)
alc_auto_init_multi_out(codec);
alc_auto_init_extra_out(codec);
alc_auto_init_analog_input(codec);
- alc861vd_auto_init_input_src(codec);
+ alc_auto_init_input_src(codec);
alc_auto_init_digital(codec);
if (spec->unsol_event)
alc_inithook(codec);
spec->multiout.extra_out_nid[0]);
}
-#define alc662_auto_init_input_src alc882_auto_init_input_src
-
/*
* multi-io helper
*/
alc_auto_init_multi_out(codec);
alc_auto_init_extra_out(codec);
alc_auto_init_analog_input(codec);
- alc662_auto_init_input_src(codec);
+ alc_auto_init_input_src(codec);
alc_auto_init_digital(codec);
if (spec->unsol_event)
alc_inithook(codec);