At Thu,  7 Nov 2013 14:08:41 +0100,
David Henningsson wrote:
> 
> From: Kailang Yang <kail...@realtek.com>
> 
> The new codec ALC255 needs its own set of verbs to enable
> multifunction jacks.
> 
> (Context and whitespace adjustments by David Henningsson)
> 
> BugLink: https://bugs.launchpad.net/bugs/1248949
> Tested-by: Doro Wu <doro...@canonical.com>
> Signed-off-by: David Henningsson <david.hennings...@canonical.com>
> ---
>  sound/pci/hda/patch_realtek.c |   91 
> +++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 91 insertions(+)
> 
> diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
> index daf7205..ceadd65 100644
> --- a/sound/pci/hda/patch_realtek.c
> +++ b/sound/pci/hda/patch_realtek.c
> @@ -588,6 +588,18 @@ static int alc_read_coef_idx(struct hda_codec *codec,
>       return val;
>  }
>  
> +static int alc_read_coefex_idx(struct hda_codec *codec,
> +                                     hda_nid_t nid,
> +                                     unsigned int coef_idx)
> +{
> +     unsigned int val;
> +     snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_COEF_INDEX,
> +                         coef_idx);
> +     val = snd_hda_codec_read(codec, nid, 0,
> +                              AC_VERB_GET_PROC_COEF, 0);
> +     return val;
> +}

Rewrite alc_read_coef_idx() using this new function, too, e.g.

#define alc_write_coef_idx(codec, idx, val) \
        alc_read_coefex_idx(codec, 0x20, idx, val)

>  static void alc_write_coef_idx(struct hda_codec *codec, unsigned int 
> coef_idx,
>                                                       unsigned int coef_val)
>  {
> @@ -597,6 +609,15 @@ static void alc_write_coef_idx(struct hda_codec *codec, 
> unsigned int coef_idx,
>                           coef_val);
>  }
>  
> +static void alc_write_coefex_idx(struct hda_codec *codec, hda_nid_t nid,
> +                              unsigned int coef_idx, unsigned int coef_val)
> +{
> +     snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_COEF_INDEX,
> +                         coef_idx);
> +     snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_PROC_COEF,
> +                         coef_val);
> +}

Ditto.

> +
>  /* a special bypass for COEF 0; read the cached value at the second time */
>  static unsigned int alc_get_coef0(struct hda_codec *codec)
>  {
> @@ -3109,6 +3130,14 @@ static void alc_headset_mode_unplugged(struct 
> hda_codec *codec)
>       int val;
>  
>       switch (codec->vendor_id) {
> +     case 0x10ec0255:
> +             alc_write_coef_idx(codec, 0x1b, 0x0c0b);
> +             alc_write_coef_idx(codec, 0x45, 0xd089);
> +             val = alc_read_coefex_idx(codec, 0x57, 0x05);
> +             alc_write_coefex_idx(codec, 0x57, 0x05, val & ~(1<<14));
> +             alc_write_coef_idx(codec, 0x06, 0x6104);
> +             alc_write_coefex_idx(codec, 0x57, 0x03, 0x8aa6);

Try to comment what these actually do.  Not necessarily too detailed,
but we need to have some ideas.

I regret to have merged the former Realtek headset patches that have
lots of such verbs without certain comments.


thanks,

Takashi

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1248949

Title:
  Headset jack support for ALC255

Status in “linux” package in Ubuntu:
  In Progress

Bug description:
  This bug is for tracking purposes, please do not triage.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1248949/+subscriptions

-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to