Skip to content

Commit

Permalink
ALSA: hda - Don't create unneeded digital input source for IDT 92HD71x
Browse files Browse the repository at this point in the history
The current driver creates always the digital input source mixer
elements for IDT 92HD71x codecs no matter whether digital mics are
present.  This patch adds the proper check to avoid the creation of
these controls if unnecessary.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
  • Loading branch information
Takashi Iwai committed Jul 28, 2009
1 parent 9a11f1a commit 4417932
Showing 1 changed file with 10 additions and 6 deletions.
16 changes: 10 additions & 6 deletions sound/pci/hda/patch_sigmatel.c
Original file line number Diff line number Diff line change
Expand Up @@ -5355,7 +5355,6 @@ static int patch_stac92hd71bxx(struct hda_codec *codec)
/* no output amps */
spec->num_pwrs = 0;
spec->mixer = stac92hd71bxx_analog_mixer;
spec->dinput_mux = &spec->private_dimux;

/* disable VSW */
spec->init = &stac92hd71bxx_analog_core_init[HD_DISABLE_PORTF];
Expand All @@ -5366,8 +5365,11 @@ static int patch_stac92hd71bxx(struct hda_codec *codec)
spec->num_dmics = stac92hd71bxx_connected_ports(codec,
stac92hd71bxx_dmic_nids,
STAC92HD71BXX_NUM_DMICS - 1);
spec->num_dmuxes = ARRAY_SIZE(stac92hd71bxx_dmux_nids);
ndmic_nids = ARRAY_SIZE(stac92hd71bxx_dmic_nids) - 2;
if (spec->num_dmics) {
spec->num_dmuxes = ARRAY_SIZE(stac92hd71bxx_dmux_nids);
spec->dinput_mux = &spec->private_dimux;
ndmic_nids = ARRAY_SIZE(stac92hd71bxx_dmic_nids) - 2;
}
break;
case 0x111d7603: /* 6 Port with Analog Mixer */
if ((codec->revision_id & 0xf) == 1)
Expand All @@ -5379,15 +5381,17 @@ static int patch_stac92hd71bxx(struct hda_codec *codec)
default:
memcpy(&spec->private_dimux, &stac92hd71bxx_dmux_amixer,
sizeof(stac92hd71bxx_dmux_amixer));
spec->dinput_mux = &spec->private_dimux;
spec->mixer = stac92hd71bxx_analog_mixer;
spec->init = stac92hd71bxx_analog_core_init;
codec->slave_dig_outs = stac92hd71bxx_slave_dig_outs;
spec->num_dmics = stac92hd71bxx_connected_ports(codec,
stac92hd71bxx_dmic_nids,
STAC92HD71BXX_NUM_DMICS);
spec->num_dmuxes = ARRAY_SIZE(stac92hd71bxx_dmux_nids);
ndmic_nids = ARRAY_SIZE(stac92hd71bxx_dmic_nids) - 1;
if (spec->num_dmics) {
spec->num_dmuxes = ARRAY_SIZE(stac92hd71bxx_dmux_nids);
spec->dinput_mux = &spec->private_dimux;
ndmic_nids = ARRAY_SIZE(stac92hd71bxx_dmic_nids) - 1;
}
}

if (get_wcaps(codec, 0xa) & AC_WCAP_IN_AMP)
Expand Down

0 comments on commit 4417932

Please sign in to comment.