kernel-packages team mailing list archive
-
kernel-packages team
-
Mailing list archive
-
Message #27195
[Bug 1248949] Re: [PATCH] ALSA: hda - Add multifunction jack support for ALC255
At Thu, 7 Nov 2013 14:08:41 +0100,
David Henningsson wrote:
>
> From: Kailang Yang <kailang@xxxxxxxxxxx>
>
> 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@xxxxxxxxxxxxx>
> Signed-off-by: David Henningsson <david.henningsson@xxxxxxxxxxxxx>
> ---
> 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
Follow ups
References