[alsa-devel] Realtek model parser problem with the new jack detection
Takashi Iwai
tiwai at suse.de
Thu Jan 19 12:56:34 CET 2012
At Thu, 19 Jan 2012 12:39:28 +0100,
David Henningsson wrote:
>
> On 01/19/2012 12:17 PM, Takashi Iwai wrote:
> > At Thu, 19 Jan 2012 11:35:23 +0100,
> > Takashi Iwai wrote:
> >>
> >> At Wed, 18 Jan 2012 17:28:32 +0100,
> >> David Henningsson wrote:
> >>>
> >>> Hi Takashi,
> >>>
> >>> I'm troubleshooting a problem with the Realtek quirk/model parsers. The
> >>> problem is basically that add_jack_kctls call
> >>> snd_hda_jack_detect_enable, which in turn overwrites the current unsol tag.
> >>>
> >>> E g, first the model parser sets a pin to AC_USRSP_EN | ALC_HP_EVENT,
> >>> then comes snd_hda_jack_detect_enable and does AC_USRSP_EN | jack->tag.
> >>>
> >>> I'm not sure of the best way to resolve this; either keep the current
> >>> tag (and mark all jacks as dirty on an unsol event), or read back the
> >>> current tag and set it as jack->action (and then always use the jack
> >>> table). What do you think?
> >>
> >> I think a safer way is to avoid calling snd_hda_jack_add_kctls()
> >> for non-auto-parser, and let quirks use its own unsol_event handler
> >> instead of alc_sku_unsol_event(). snd_hda_jack_detect() itself works
> >> both with or without jack-kctls.
> >>
> >> I'll fix up the upstream tree.
> >
> > The patch below.
>
> Thanks for quick handling. This will mean no jack kctls for model
> parsers, which is a bit sad, but hopefully its an incentive for people
> to move to auto-parsers.
>
> One review comment below:
>
> > @@ -645,6 +638,19 @@ static void alc_sku_unsol_event(struct hda_codec *codec, unsigned int res)
> > snd_hda_jack_report_sync(codec);
> > }
> >
> > +/* unsolicited event for HP jack sensing */
> > +static void alc_sku_unsol_event(struct hda_codec *codec, unsigned int res)
> > +{
> > + struct alc_spec *spec = codec->spec;
> > + if (codec->vendor_id == 0x10ec0880)
> > + res>>= 28;
> > + else
> > + res>>= 26;
> > + if (spec->use_jack_tbl)
> > + res = snd_hda_jack_get_action(codec, res);
>
> Can the check for spec->use_jack_tbl can be removed here?
Hm, good point. Actually, the whole changes for creating own
unsol_event() weren't necessary.
OTOH, separating the handlers makes cleaner, i.e. eventually
we can drop spec->use_jack_tbl field completely. Let's do it in
another patch.
thanks,
Takashi
More information about the Alsa-devel
mailing list