Takashi Iwai wrote: > At Fri, 25 Jan 2008 08:43:55 -0500, > Matthew Ranostay wrote: >> 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@xxxxxxxxxxxxxxxx> > > Looks good (but it has a garbage (`) in the patch) > You certainly have a eagle-eye there :) > Anyway, applied to HG tree now. Thanks. > > > Takashi > > >> --- >> diff -r 303f894ac2a8 pci/hda/patch_sigmatel.c >> --- a/pci/hda/patch_sigmatel.c Thu Jan 24 18:46:42 2008 +0100 >> +++ b/pci/hda/patch_sigmatel.c Thu Jan 24 22:41:27 2008 -0500 >> @@ -2226,7 +2226,7 @@ static int stac92xx_auto_create_multi_ou >> 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_ou >> } >> } >> >> - 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->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->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) { >> + 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; >> } >> > _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel