Commit 1c55d521 authored by Takashi Iwai's avatar Takashi Iwai

ALSA: hda - Check widget types while parsing capture source in patch_via.c

Check the widget type and don't take invalid widgets while parsing
the capture source in patch_via.c.

Also, fixed some compile warnings introduced in the previous commit.
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 337b9d02
...@@ -392,7 +392,6 @@ static int via_mux_enum_put(struct snd_kcontrol *kcontrol, ...@@ -392,7 +392,6 @@ static int via_mux_enum_put(struct snd_kcontrol *kcontrol,
struct hda_codec *codec = snd_kcontrol_chip(kcontrol); struct hda_codec *codec = snd_kcontrol_chip(kcontrol);
struct via_spec *spec = codec->spec; struct via_spec *spec = codec->spec;
unsigned int adc_idx = snd_ctl_get_ioffidx(kcontrol, &ucontrol->id); unsigned int adc_idx = snd_ctl_get_ioffidx(kcontrol, &ucontrol->id);
unsigned int vendor_id = codec->vendor_id;
if (!spec->mux_nids[adc_idx]) if (!spec->mux_nids[adc_idx])
return -EINVAL; return -EINVAL;
...@@ -1340,6 +1339,10 @@ static int get_mux_nids(struct hda_codec *codec) ...@@ -1340,6 +1339,10 @@ static int get_mux_nids(struct hda_codec *codec)
for (i = 0; i < spec->num_adc_nids; i++) { for (i = 0; i < spec->num_adc_nids; i++) {
nid = spec->adc_nids[i]; nid = spec->adc_nids[i];
while (nid) { while (nid) {
type = (get_wcaps(codec, nid) & AC_WCAP_TYPE)
>> AC_WCAP_TYPE_SHIFT;
if (type == AC_WID_PIN)
break;
n = snd_hda_get_connections(codec, nid, conn, n = snd_hda_get_connections(codec, nid, conn,
ARRAY_SIZE(conn)); ARRAY_SIZE(conn));
if (n <= 0) if (n <= 0)
...@@ -1351,6 +1354,7 @@ static int get_mux_nids(struct hda_codec *codec) ...@@ -1351,6 +1354,7 @@ static int get_mux_nids(struct hda_codec *codec)
nid = conn[0]; nid = conn[0];
} }
} }
return 0;
} }
static int patch_vt1708(struct hda_codec *codec) static int patch_vt1708(struct hda_codec *codec)
......
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