[alsa-devel] [PATCH] ALSA: hda - Add multifunction jack support for ALC255

Kailang kailang at realtek.com
Fri Nov 8 06:48:56 CET 2013


Hi David,

Could I add commemts for belowing context?
Or I create new patch for it.

BR,
Kailang

> Hi,
>
> I can certainly rewrite coef_idx to use coefef_idx (I think that's a
> good idea), but for the comments, I know as little as you do about these
> verbs.
>
> Kailang, is it possible for you to add more comments to your patch so it
> can be applied upstream?
>
> Thanks,
>  David
>
> On 11/07/2013 02:22 PM, Takashi Iwai wrote:
>> At Thu,  7 Nov 2013 14:08:41 +0100,
>> David Henningsson wrote:
>>>
>>> From: Kailang Yang <kailang at 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.wu at canonical.com>
>>> Signed-off-by: David Henningsson <david.henningsson at 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
>>
>
>
>
> -- 
> David Henningsson, Canonical Ltd.
> https://launchpad.net/~diwic
>
> ------Please consider the environment before printing this e-mail. 



More information about the Alsa-devel mailing list