[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