From: Vincent Petry <PVince81@yahoo.fr>
To: Takashi Iwai <tiwai@suse.de>
Cc: alsa-devel@alsa-project.org
Subject: Re: [Bulk] Re: [PATCH] Added Realtek ALC888 model entry for the Acer Aspire 4930G laptop
Date: Tue, 18 Nov 2008 21:13:53 +0800 [thread overview]
Message-ID: <4922BF91.2030704@yahoo.fr> (raw)
In-Reply-To: <s5h8wrhfehv.wl%tiwai@suse.de>
Hello Takashi,
I have updated the patch to make it work with your changes and tested
it. I also updated the code style.
diff -Nur alsa-kernel//pci/hda/patch_realtek.c
alsa-kernel-new//pci/hda/patch_realtek.c
--- alsa-kernel//pci/hda/patch_realtek.c 2008-11-18 19:39:33.000000000 +0800
+++ alsa-kernel-new//pci/hda/patch_realtek.c 2008-11-18
20:50:47.000000000 +0800
@@ -216,6 +216,7 @@
ALC883_TARGA_2ch_DIG,
ALC883_ACER,
ALC883_ACER_ASPIRE,
+ ALC888_ACER_ASPIRE_4930G,
ALC883_MEDION,
ALC883_MEDION_MD2,
ALC883_LAPTOP_EAPD,
@@ -1155,6 +1156,90 @@
}
/*
+ * ALC888 Acer Aspire 4930G model
+ */
+
+static struct hda_verb alc888_acer_aspire_4930g_verbs[] = {
+/* Front Mic: set to PIN_IN (empty by default) */
+ {0x12, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN},
+/* Unselect Front Mic by default in input mixer 3 */
+ {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0xb)},
+/* enable unsolicited event fpr HP jack */
+ {0x15, AC_VERB_SET_UNSOLICITED_ENABLE, ALC880_HP_EVENT | AC_USRSP_EN},
+/* Connect Internal HP to front */
+ {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
+ {0x14, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
+ {0x14, AC_VERB_SET_CONNECT_SEL, 0x00},
+/* Connect HP out to front */
+ {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
+ {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
+ {0x15, AC_VERB_SET_CONNECT_SEL, 0x00},
+ { }
+};
+
+static struct hda_input_mux alc888_acer_aspire_4930g_capture_source[2] = {
+ {
+ .num_items = 3,
+ .items = {
+ { "Mic", 0x0 },
+ { "Line", 0x2 },
+ { "CD", 0x4 },
+ },
+ },
+ /* Front mic only available on second ADC */
+ {
+ .num_items = 4,
+ .items = {
+ { "Mic", 0x0 },
+ { "Line", 0x2 },
+ { "CD", 0x4 },
+ { "Front Mic", 0xb },
+ },
+ },
+};
+
+static struct snd_kcontrol_new alc888_acer_aspire_4930g_mixer[] = {
+ HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT),
+ HDA_BIND_MUTE("Front Playback Switch", 0x0c, 2, HDA_INPUT),
+ HDA_CODEC_VOLUME("Surround Playback Volume", 0x0d, 0x0, HDA_OUTPUT),
+ HDA_BIND_MUTE("Surround Playback Switch", 0x0d, 2, HDA_INPUT),
+ HDA_CODEC_VOLUME_MONO("Center Playback Volume", 0x0e, 1, 0x0,
+ HDA_OUTPUT),
+ HDA_CODEC_VOLUME_MONO("LFE Playback Volume", 0x0e, 2, 0x0, HDA_OUTPUT),
+ HDA_BIND_MUTE_MONO("Center Playback Switch", 0x0e, 1, 2, HDA_INPUT),
+ HDA_BIND_MUTE_MONO("LFE Playback Switch", 0x0e, 2, 2, HDA_INPUT),
+ HDA_CODEC_VOLUME("Side Playback Volume", 0x0f, 0x0, HDA_OUTPUT),
+ HDA_BIND_MUTE("Side Playback Switch", 0x0f, 2, HDA_INPUT),
+ HDA_CODEC_VOLUME("CD Playback Volume", 0x0b, 0x04, HDA_INPUT),
+ HDA_CODEC_MUTE("CD Playback Switch", 0x0b, 0x04, HDA_INPUT),
+ HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x02, HDA_INPUT),
+ HDA_CODEC_MUTE("Line Playback Switch", 0x0b, 0x02, HDA_INPUT),
+ HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
+ HDA_CODEC_VOLUME("Mic Boost", 0x18, 0, HDA_INPUT),
+ HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
+ HDA_CODEC_VOLUME("PC Speaker Playback Volume", 0x0b, 0x05, HDA_INPUT),
+ HDA_CODEC_MUTE("PC Speaker Playback Switch", 0x0b, 0x05, HDA_INPUT),
+ { } /* end */
+};
+
+static void alc888_acer_aspire_4930g_automute(struct hda_codec *codec)
+{
+ unsigned int present;
+ present = snd_hda_codec_read(codec, 0x15, 0,
+ AC_VERB_GET_PIN_SENSE, 0) & 0x80000000;
+ /* Toggle the internal HP PIN (regular muting doesn't work) */
+ snd_hda_codec_write(codec, 0x14, 0, AC_VERB_SET_PIN_WIDGET_CONTROL,
+ (present ? 0x0 : PIN_OUT));
+}
+
+static void alc888_acer_aspire_4930g_unsol_event(struct hda_codec *codec,
+ unsigned int res)
+{
+ if (res >> 26 == ALC880_HP_EVENT)
+ alc888_acer_aspire_4930g_automute(codec);
+}
+
+/*
* ALC880 3-stack model
*
* DAC: Front = 0x02 (0x0c), Surr = 0x05 (0x0f), CLFE = 0x04 (0x0e)
@@ -8180,6 +8265,7 @@
[ALC883_TARGA_2ch_DIG] = "targa-2ch-dig",
[ALC883_ACER] = "acer",
[ALC883_ACER_ASPIRE] = "acer-aspire",
+ [ALC888_ACER_ASPIRE_4930G] = "acer-aspire-4930g",
[ALC883_MEDION] = "medion",
[ALC883_MEDION_MD2] = "medion-md2",
[ALC883_LAPTOP_EAPD] = "laptop-eapd",
@@ -8205,6 +8291,8 @@
SND_PCI_QUIRK(0x1025, 0x0110, "Acer Aspire", ALC883_ACER_ASPIRE),
SND_PCI_QUIRK(0x1025, 0x0112, "Acer Aspire 9303", ALC883_ACER_ASPIRE),
SND_PCI_QUIRK(0x1025, 0x0121, "Acer Aspire 5920G", ALC883_ACER_ASPIRE),
+ SND_PCI_QUIRK(0x1025, 0x013e, "Acer Aspire 4930G",
+ ALC888_ACER_ASPIRE_4930G),
SND_PCI_QUIRK(0x1025, 0, "Acer laptop", ALC883_ACER), /* default Acer */
SND_PCI_QUIRK(0x1028, 0x020d, "Dell Inspiron 530", ALC888_6ST_DELL),
SND_PCI_QUIRK(0x103c, 0x2a3d, "HP Pavillion", ALC883_6ST_DIG),
@@ -8376,6 +8464,23 @@
.unsol_event = alc883_acer_aspire_unsol_event,
.init_hook = alc883_acer_aspire_automute,
},
+ [ALC888_ACER_ASPIRE_4930G] = {
+ .mixers = { alc888_acer_aspire_4930g_mixer,
+ alc883_chmode_mixer },
+ .init_verbs = { alc883_init_verbs, alc880_gpio1_init_verbs,
+ alc888_acer_aspire_4930g_verbs },
+ .num_dacs = ARRAY_SIZE(alc883_dac_nids),
+ .dac_nids = alc883_dac_nids,
+ .dig_out_nid = ALC883_DIGOUT_NID,
+ .num_channel_mode = ARRAY_SIZE(alc883_3ST_6ch_modes),
+ .channel_mode = alc883_3ST_6ch_modes,
+ .need_dac_fix = 1,
+ .num_mux_defs =
+ ARRAY_SIZE(alc888_acer_aspire_4930g_capture_source),
+ .input_mux = alc888_acer_aspire_4930g_capture_source,
+ .unsol_event = alc888_acer_aspire_4930g_unsol_event,
+ .init_hook = alc888_acer_aspire_4930g_automute,
+ },
[ALC883_MEDION] = {
.mixers = { alc883_fivestack_mixer,
alc883_chmode_mixer },
Signed-off-by: Vincent Petry <PVince81@yahoo.fr>
Takashi Iwai a écrit :
> At Tue, 18 Nov 2008 19:21:45 +0800,
> Petry Vincent wrote:
>> Hello,
>>
>> I would like to contribute a patch that adds a model entry for the Acer
>> Aspire 4930G laptop. Its chipset is a Realtek ALC888S-VC.
>> The new model is based on the "acer" model and fixes the following bugs
>> missing features:
>> - https://bugtrack.alsa-project.org/alsa-bug/view.php?id=4223 Reversed
>> stereo (invalid report, please close it)
>> - https://bugtrack.alsa-project.org/alsa-bug/view.php?id=4224 Headphone
>> jack sense
>> - https://bugtrack.alsa-project.org/alsa-bug/view.php?id=4225 Internal mic
>> - channel mode (it was missing from the base acer model)
>>
>> The model name is "acer-aspire-4930g" but could be renamed to something
>> more general, if necessary.
>>
>> See attached patch file. It has been made against alsa-driver-1.0.18a.
>
> Thanks for the patch.
>
> You need a patch only for the kernel tree, i.e. at best, create a diff
> against my sound git tree:
> git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6.git
>
> Or you can get a snapshot of alsa-driver in
> ftp://ftp.kernel.org/pub/linux/kernel/people/tiwai/snapshot/alsa-driver-snapshot.tar.gz
> and create a patch against alsa-kernel directory only.
>
> Regarding your changes: please run checkpatch.pl in $LINUX/scripts once.
> You'll see some coding-style issues there. Please fix them.
>
> Also, you don't need to change the mux_enum_put function. I applied
> the patch below right now to my git tree.
>
>
> thanks,
>
> Takashi
>
>
>>From cd896c331dd442c43cd9e23de3f1a4f3c111c292 Mon Sep 17 00:00:00 2001
> From: Takashi Iwai <tiwai@suse.de>
> Date: Tue, 18 Nov 2008 12:36:33 +0100
> Subject: [PATCH] ALSA: hda - Allow multiple imux for matrix-type mixers of ALC codecs
>
> Allow the multiple imux instances for matrix-type mixers like ALC882.
> So far, only ALC260 used this feature, but other codecs may need a
> similar stuff.
>
> Signed-off-by: Takashi Iwai <tiwai@suse.de>
> ---
> sound/pci/hda/patch_realtek.c | 11 ++++++-----
> 1 files changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
> index 04e153a..b7d3439 100644
> --- a/sound/pci/hda/patch_realtek.c
> +++ b/sound/pci/hda/patch_realtek.c
> @@ -382,11 +382,15 @@ static int alc_mux_enum_put(struct snd_kcontrol *kcontrol,
> {
> struct hda_codec *codec = snd_kcontrol_chip(kcontrol);
> struct alc_spec *spec = codec->spec;
> - const struct hda_input_mux *imux = spec->input_mux;
> + const struct hda_input_mux *imux;
> unsigned int adc_idx = snd_ctl_get_ioffidx(kcontrol, &ucontrol->id);
> + unsigned int mux_idx;
> hda_nid_t nid = spec->capsrc_nids ?
> spec->capsrc_nids[adc_idx] : spec->adc_nids[adc_idx];
>
> + mux_idx = adc_idx >= spec->num_mux_defs ? 0 : adc_idx;
> + imux = &spec->input_mux[mux_idx];
> +
> if (spec->is_mix_capture) {
> /* Matrix-mixer style (e.g. ALC882) */
> unsigned int *cur_val = &spec->cur_mux[adc_idx];
> @@ -407,10 +411,7 @@ static int alc_mux_enum_put(struct snd_kcontrol *kcontrol,
> return 1;
> } else {
> /* MUX style (e.g. ALC880) */
> - unsigned int mux_idx;
> - mux_idx = adc_idx >= spec->num_mux_defs ? 0 : adc_idx;
> - return snd_hda_input_mux_put(codec, &spec->input_mux[mux_idx],
> - ucontrol, nid,
> + return snd_hda_input_mux_put(codec, imux, ucontrol, nid,
> &spec->cur_mux[adc_idx]);
> }
> }
next prev parent reply other threads:[~2008-11-18 13:13 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-18 11:21 [PATCH] Added Realtek ALC888 model entry for the Acer Aspire 4930G laptop Petry Vincent
2008-11-18 11:41 ` Takashi Iwai
2008-11-18 13:13 ` Vincent Petry [this message]
2008-11-18 13:19 ` [Bulk] " Takashi Iwai
2008-11-18 13:55 ` Vincent Petry
2008-11-18 14:06 ` Takashi Iwai
2008-11-18 14:06 ` Vincent Petry
2008-11-18 14:21 ` [PATCH] hda: " Vincent Petry
2008-11-18 15:09 ` Takashi Iwai
2008-11-23 3:31 ` [PATCH] hda: Added an ALC888 model entry for Fujitsu-Siemens Amilo Xa3530 Vincent Petry
2008-11-24 7:13 ` Takashi Iwai
2008-11-23 5:27 ` [PATCH] [resend] " Vincent Petry
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=4922BF91.2030704@yahoo.fr \
--to=pvince81@yahoo.fr \
--cc=alsa-devel@alsa-project.org \
--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.