At Wed, 27 May 2009 14:14:08 +0000, Nickolas Lloyd wrote: > > Takashi Iwai wrote: > > Well, a goto loop is old-fashioned as a code in 21st century :) > > > > Also, it might be better to use auto_pin_cfg_labels[] to each unique > > control name instead of index. > > It's often more intuitive. > > > > > > Takashi > > > > > Thanks for the suggestions. Indeed, using the labels array does make it > much more intuitive. > > +static inline int stac92xx_add_jack_mode_control(struct hda_codec *codec, > + hda_nid_t nid, int idx) > +{ > + int def_conf = snd_hda_codec_get_pincfg(codec, nid); > + int control = 0; > + struct sigmatel_spec *spec = codec->spec; > + char name[22]; > + > + if (!((get_defcfg_connect(def_conf)) & AC_JACK_PORT_FIXED)) { > + if (stac92xx_get_vref(codec, nid) == AC_PINCTL_VREF_GRD > + && nid == spec->line_switch) > + control = STAC_CTL_WIDGET_IO_SWITCH; > + else if (snd_hda_query_pin_caps(codec, nid) > + & (AC_PINCAP_VREF_GRD << AC_PINCAP_VREF_SHIFT)) > + control = STAC_CTL_WIDGET_DC_BIAS; > + else if (nid == spec->mic_switch) > + control = STAC_CTL_WIDGET_IO_SWITCH; > + } > + > + if (control) { > + strcpy(name, auto_pin_cfg_labels[idx]); > + return stac92xx_add_control(codec->spec, control, > + strcat(name, " Jack Mode"), nid); > + } > + > + return 0; > +} > + > > One question here is if it's possible for a Line In jack to act as a Mic > Jack via the use of a DC bias. It could be certainly a use-case. I thought you can select it on Windows, too? > @@ -3269,20 +3336,13 @@ static int stac92xx_auto_create_multi_ou > return err; > } > > - if (spec->line_switch) { > - err = stac92xx_add_control(spec, STAC_CTL_WIDGET_IO_SWITCH, > - "Line In as Output Switch", > - spec->line_switch << 8); > - if (err < 0) > - return err; > - } > - > - if (spec->mic_switch) { > - err = stac92xx_add_control(spec, STAC_CTL_WIDGET_DC_BIAS, > - "Mic Jack Mode", > - spec->mic_switch); > - if (err < 0) > - return err; > + for (idx = AUTO_PIN_MIC; idx <= AUTO_PIN_FRONT_LINE; idx++) { > + nid = cfg->input_pins[idx]; > + if (nid) { > + err = stac92xx_add_jack_mode_control(codec, nid, idx); > + if (err < 0) > + return err; > + } > > Do these sections look alright? And if so, should I re-up the whole > thing? Also, is there anything else you think I should change, or any > other suggestions you have? That looks good. Could you complete the patch, then let's merge first? We can tune up later after the merge (if any). thanks, Takashi _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel