[alsa-devel] [PATCH] hda: STAC92xx Line In/Mic as output check
Takashi Iwai
tiwai at suse.de
Fri Jan 25 15:25:22 CET 2008
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 at embededalley.com>
Looks good (but it has a garbage (`) in the patch)
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;
> }
>
More information about the Alsa-devel
mailing list