mirror of
https://github.com/torvalds/linux.git
synced 2024-11-11 22:51:42 +00:00
[ALSA] hda: STAC92xx Line In/Mic as output check
This patch checks to see the Line In/Mic port have the ability to do output before creating the the control switches. The 92hd71bxx series of codecs has this issue with the port 0xe, which only allows input. Signed-off-by: Matthew Ranostay <mranostay@embededalley.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
parent
628ed1333a
commit
b5895dc8b4
@ -2226,7 +2226,7 @@ static int stac92xx_auto_create_multi_out_ctls(struct hda_codec *codec,
|
||||
int i, err;
|
||||
|
||||
struct sigmatel_spec *spec = codec->spec;
|
||||
unsigned int wid_caps;
|
||||
unsigned int wid_caps, pincap;
|
||||
|
||||
|
||||
for (i = 0; i < cfg->line_outs; i++) {
|
||||
@ -2262,13 +2262,31 @@ static int stac92xx_auto_create_multi_out_ctls(struct hda_codec *codec,
|
||||
}
|
||||
}
|
||||
|
||||
if (spec->line_switch)
|
||||
if ((err = stac92xx_add_control(spec, STAC_CTL_WIDGET_IO_SWITCH, "Line In as Output Switch", cfg->input_pins[AUTO_PIN_LINE] << 8)) < 0)
|
||||
return err;
|
||||
if (spec->line_switch) {
|
||||
nid = cfg->input_pins[AUTO_PIN_LINE];
|
||||
pincap = snd_hda_param_read(codec, nid,
|
||||
AC_PAR_PIN_CAP);
|
||||
if (pincap & AC_PINCAP_OUT) {
|
||||
err = stac92xx_add_control(spec,
|
||||
STAC_CTL_WIDGET_IO_SWITCH,
|
||||
"Line In as Output Switch", nid << 8);
|
||||
if (err < 0)
|
||||
return err;
|
||||
}
|
||||
}
|
||||
|
||||
if (spec->mic_switch)
|
||||
if ((err = stac92xx_add_control(spec, STAC_CTL_WIDGET_IO_SWITCH, "Mic as Output Switch", (cfg->input_pins[AUTO_PIN_MIC] << 8) | 1)) < 0)
|
||||
return err;
|
||||
if (spec->mic_switch) {
|
||||
nid = cfg->input_pins[AUTO_PIN_MIC];
|
||||
pincap = snd_hda_param_read(codec, nid,
|
||||
AC_PAR_PIN_CAP);
|
||||
if (pincap & AC_PINCAP_OUT) {
|
||||
err = stac92xx_add_control(spec,
|
||||
STAC_CTL_WIDGET_IO_SWITCH,
|
||||
"Mic as Output Switch", (nid << 8) | 1);
|
||||
if (err < 0)
|
||||
return err;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user