[alsa-devel] Possible fix for snd-hda-intel model=no-jd failing since ~linux-3.9-rc1
Takashi Iwai
tiwai at suse.de
Thu Sep 11 12:55:33 CEST 2014
At Thu, 11 Sep 2014 12:07:43 +0200,
Takashi Iwai wrote:
>
> Looking at the alsa-info.sh output, the problem is that IDT codec
> parser creates jack detection for the power-control before the generic
> parser. There is also a wrong logic in stac_init_power_map()...
>
> An untested fix is below.
BTW, a part of the messes is the restriction of hda_jack stuff:
currently it supports only one callback per jack. If we can add
multiple callbacks and actions to a jack, the code in patch_sigmatel.c
would be come much easier. But this is a step after fixing the bug
quickly.
Takashi
>
>
> Takashi
>
> --
> diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
> index f26ec04a29b5..526b5d39a2cb 100644
> --- a/sound/pci/hda/patch_sigmatel.c
> +++ b/sound/pci/hda/patch_sigmatel.c
> @@ -565,8 +565,8 @@ static void stac_init_power_map(struct hda_codec *codec)
> if (snd_hda_jack_tbl_get(codec, nid))
> continue;
> if (def_conf == AC_JACK_PORT_COMPLEX &&
> - !(spec->vref_mute_led_nid == nid ||
> - is_jack_detectable(codec, nid))) {
> + spec->vref_mute_led_nid != nid &&
> + is_jack_detectable(codec, nid)) {
> snd_hda_jack_detect_enable_callback(codec, nid,
> STAC_PWR_EVENT,
> jack_update_power);
> @@ -4272,11 +4272,17 @@ static int stac_parse_auto_config(struct hda_codec *codec)
> return err;
> }
>
> - stac_init_power_map(codec);
> -
> return 0;
> }
>
> +static int stac_build_controls(struct hda_codec *codec)
> +{
> + int err = snd_hda_gen_build_controls(codec);
> + if (err < 0)
> + return err;
> + stac_init_power_map(codec);
> + return 0;
> +}
>
> static int stac_init(struct hda_codec *codec)
> {
> @@ -4388,7 +4394,7 @@ static int stac_suspend(struct hda_codec *codec)
> #endif /* CONFIG_PM */
>
> static const struct hda_codec_ops stac_patch_ops = {
> - .build_controls = snd_hda_gen_build_controls,
> + .build_controls = stac_build_controls,
> .build_pcms = snd_hda_gen_build_pcms,
> .init = stac_init,
> .free = stac_free,
More information about the Alsa-devel
mailing list