All of lore.kernel.org
 help / color / mirror / Atom feed
From: "joey.jiaojg" <joey.jiaojg@gmail.com>
To: Takashi Iwai <tiwai@suse.de>
Cc: Raymond Yau <superquad.vortex2@gmail.com>,
	pshou@realtek.com.tw,
	ALSA Development Mailing List <alsa-devel@alsa-project.org>,
	kailang@realtek.com.tw
Subject: Re: Bug report - patch_realtek.c - Laptop HP COMPAQ B1900 Series
Date: Wed, 15 Feb 2012 17:31:44 +0800	[thread overview]
Message-ID: <4F3B7B80.5030102@gmail.com> (raw)
In-Reply-To: <s5h8vk4wivv.wl%tiwai@suse.de>

[-- Attachment #1: Type: text/plain, Size: 720 bytes --]

Here is the diff file.

On 2012年02月15日 17:22, Takashi Iwai wrote:
> At Wed, 15 Feb 2012 17:08:45 +0800,
> joey.jiaojg wrote:
>> Well, now I have fully fixed the speaker/headphone issue for HP COMPAQ
>> B1900 by adding a new model=b1900 into patch_realtek.c which also can
>> automute by detect HP state.
> That's great.
>
>> As I cannot compile alsa-driver-1.0.25 on my ubuntu 11.10, so I modified
>> based on kernel-3.0.13 (alsa version 1.0.24) from ubuntu src.
>> Attached with stocked source and my updated one, please consider adding
>> into next alsa-driver.
> Could you simply give a patch file (with "diff -up")?
> Then I can check your changes more easily.
>
>
> thanks,
>
> Takashi


[-- Attachment #2: patch_realtek_diff.c --]
[-- Type: text/x-csrc, Size: 3752 bytes --]

--- patch_realtek.c.bk	2012-02-15 17:29:44.851620661 +0800
+++ patch_realtek.c	2012-02-15 17:29:40.887601285 +0800
@@ -80,6 +80,7 @@ enum {
 	ALC260_WILL,
 	ALC260_REPLACER_672V,
 	ALC260_FAVORIT100,
+	ALC260_B1900,
 #ifdef CONFIG_SND_DEBUG
 	ALC260_TEST,
 #endif
@@ -1323,6 +1324,34 @@ static void alc_inithook(struct hda_code
 	alc_mic_automute(codec);
 }
 
+/* toggle speaker-output according to the hp-jack state */
+static void alc260_b1900_automute(struct hda_codec *codec)
+{
+        unsigned int present;
+
+	present = snd_hda_jack_detect(codec, 0x0f);
+	if (present) {
+		snd_hda_codec_write_cache(codec, 0x01, 0,
+					  AC_VERB_SET_GPIO_MASK, 0);
+		snd_hda_codec_write_cache(codec, 0x01, 0,
+					  AC_VERB_SET_GPIO_DIRECTION,
+					  0);
+		snd_hda_codec_write_cache(codec, 0x0f, 0,
+					  AC_VERB_SET_PIN_WIDGET_CONTROL,
+					  PIN_HP);
+	} else {
+		snd_hda_codec_write_cache(codec, 0x01, 0,
+					  AC_VERB_SET_GPIO_MASK, 1);
+		snd_hda_codec_write_cache(codec, 0x01, 0,
+					  AC_VERB_SET_GPIO_DIRECTION,
+					  1);
+		snd_hda_codec_write_cache(codec, 0x0f, 0,
+					  AC_VERB_SET_PIN_WIDGET_CONTROL,
+					  PIN_OUT);
+	}
+}
+
+
 /* additional initialization for ALC888 variants */
 static void alc888_coef_init(struct hda_codec *codec)
 {
@@ -6899,6 +6928,18 @@ static const struct hda_verb alc260_will
 	{}
 };
 
+static const struct hda_verb alc260_b1900_verbs[] = {
+	{0x0f, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP},
+	{0x0b, AC_VERB_SET_CONNECT_SEL, 0x00},
+	{0x0d, AC_VERB_SET_CONNECT_SEL, 0x00},
+	{0x0f, AC_VERB_SET_EAPD_BTLENABLE, 0x02},
+	{0x1a, AC_VERB_SET_COEF_INDEX, 0x07},
+	{0x1a, AC_VERB_SET_PROC_COEF, 0x3040},
+	{0x0f, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_HP_EVENT},
+	{}
+};
+
+
 static const struct hda_verb alc260_replacer_672v_verbs[] = {
 	{0x0f, AC_VERB_SET_EAPD_BTLENABLE, 0x02},
 	{0x1a, AC_VERB_SET_COEF_INDEX, 0x07},
@@ -6941,6 +6982,12 @@ static void alc260_replacer_672v_unsol_e
                 alc260_replacer_672v_automute(codec);
 }
 
+static void alc260_b1900_unsol_event(struct hda_codec *codec,
+                                       unsigned int res)
+{
+        if ((res >> 26) == ALC880_HP_EVENT)
+                alc260_b1900_automute(codec);
+}
 static const struct hda_verb alc260_hp_dc7600_verbs[] = {
 	{0x05, AC_VERB_SET_CONNECT_SEL, 0x01},
 	{0x15, AC_VERB_SET_CONNECT_SEL, 0x01},
@@ -7431,6 +7478,7 @@ static const char * const alc260_models[
 	[ALC260_WILL]		= "will",
 	[ALC260_REPLACER_672V]	= "replacer",
 	[ALC260_FAVORIT100]	= "favorit100",
+	[ALC260_B1900]  	= "b1900",
 #ifdef CONFIG_SND_DEBUG
 	[ALC260_TEST]		= "test",
 #endif
@@ -7458,6 +7506,7 @@ static const struct snd_pci_quirk alc260
 	SND_PCI_QUIRK(0x152d, 0x0729, "CTL U553W", ALC260_BASIC),
 	SND_PCI_QUIRK(0x161f, 0x2057, "Replacer 672V", ALC260_REPLACER_672V),
 	SND_PCI_QUIRK(0x1631, 0xc017, "PB V7900", ALC260_WILL),
+	SND_PCI_QUIRK(0x103c, 0x007f, "HP COMPAQ", ALC260_B1900),
 	{}
 };
 
@@ -7570,6 +7619,20 @@ static const struct alc_config_preset al
 		.channel_mode = alc260_modes,
 		.input_mux = &alc260_capture_source,
 	},
+	[ALC260_B1900] = {
+		.mixers = { alc260_will_mixer },
+		.init_verbs = { alc260_init_verbs, alc260_b1900_verbs },
+		.num_dacs = ARRAY_SIZE(alc260_dac_nids),
+		.dac_nids = alc260_dac_nids,
+		.num_adc_nids = ARRAY_SIZE(alc260_adc_nids),
+		.adc_nids = alc260_adc_nids,
+		.dig_out_nid = ALC260_DIGOUT_NID,
+		.num_channel_mode = ARRAY_SIZE(alc260_modes),
+		.channel_mode = alc260_modes,
+		.input_mux = &alc260_capture_source,
+		.unsol_event = alc260_b1900_unsol_event,
+		.init_hook = alc260_b1900_automute,
+	},
 	[ALC260_REPLACER_672V] = {
 		.mixers = { alc260_replacer_672v_mixer },
 		.init_verbs = { alc260_init_verbs, alc260_replacer_672v_verbs },

[-- Attachment #3: Type: text/plain, Size: 0 bytes --]



  reply	other threads:[~2012-02-15  9:31 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <4F35C191.9080401@gmail.com>
2012-02-11  2:05 ` Bug report - patch_realtek.c - Laptop HP COMPAQ B1900 Series Jonathan Woithe
2012-02-15  0:50   ` Raymond Yau
     [not found]     ` <CAKOmCvoS+tgvyPZJey4gfFFq=Uz01pnZY7YvGbxgQPpAzQ7KCA@mail.gmail.com>
2012-02-15  1:29       ` Joey Jiao
2012-02-15  2:49         ` Raymond Yau
     [not found]           ` <4F3B761D.4060306@gmail.com>
2012-02-15  9:22             ` Takashi Iwai
2012-02-15  9:31               ` joey.jiaojg [this message]
2012-02-15  9:40                 ` Takashi Iwai
2012-02-15  9:45                   ` joey.jiaojg
2012-02-15  9:58                     ` Takashi Iwai
2012-02-15 10:06                       ` joey.jiaojg
2012-02-15 10:11                         ` Takashi Iwai
2012-02-15 13:14                           ` joey.jiaojg
2012-02-15 13:21                             ` Takashi Iwai
2012-02-15 14:45                               ` joey.jiaojg
2012-02-15 15:04                                 ` Takashi Iwai
2012-02-16  2:04                                   ` Joey Jiao
2012-02-16  3:41                                     ` joey.jiaojg
2012-02-16  9:36                                       ` Takashi Iwai
2012-02-16  9:35                                     ` Takashi Iwai
2012-02-16  9:38                                       ` joey.jiaojg
2012-02-16  9:41                                         ` Takashi Iwai
2012-02-16  9:42                                           ` Takashi Iwai
2012-02-16  9:52                                             ` joey.jiaojg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4F3B7B80.5030102@gmail.com \
    --to=joey.jiaojg@gmail.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=kailang@realtek.com.tw \
    --cc=pshou@realtek.com.tw \
    --cc=superquad.vortex2@gmail.com \
    --cc=tiwai@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.