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