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

David Henningsson david.henningsson at canonical.com
Fri Nov 8 06:55:06 CET 2013


Hi Kailang,

It does not matter. Choose what works best for you and I'll sort it out
before sending to Takashi.

// David

On 11/08/2013 06:48 AM, Kailang wrote:
> 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. 
> 



-- 
David Henningsson, Canonical Ltd.
https://launchpad.net/~diwic


More information about the Alsa-devel mailing list