All of lore.kernel.org
 help / color / mirror / Atom feed
* patch to support Samsung NC10 mini notebook
@ 2009-05-10 19:21 Chris Pockele
  2009-05-11  8:38 ` Takashi Iwai
  0 siblings, 1 reply; 5+ messages in thread
From: Chris Pockele @ 2009-05-10 19:21 UTC (permalink / raw)
  To: alsa-devel

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

Hello,

The attached file is a patch to support the sound hardware in the
Samsung NC10 mini notebook.
The Samsung NC10 is and Intel Atom-based notebook with Realtek ALC272
HDA codecs.
Sound is supported partly in Linux depending on ALSA version, but
there were always some issues (wrong mixer behaviour, PC beep always
muted, ...). This patch tries to solve most of these issues.
I updated the patch so it would work using the alsa-driver-20090509
snapshot from ftp.kernel.org/pub/linux/kernel/people/tiwai/snapshot/
(originally developed from alsa-driver-20090416 snapshot).

Fixes:
 - mute internal speaker / microphone when plugging in external
headphone / microphone
 - stereo capture from external microphone
 - separate volume controls for headphone and internal speakers +
"Master" for both
 - "PC Beep" mixer control
 - "Mic boost" and "External mic boost" controls
 - ...

A few issues remaining:
 - Recording PCM output does not work yet. It works on the version of
Windows that comes with the NC10.
 - When choosing recording source "Internal Mic" while an external
microphone is plugged in, the internal microphone will be used instead
of the external one, as it should. However, when plugging in the
external microphone after choosing the recording source setting, it
WILL override the internal microphone.

When replying, please note I am not on list.

Regards,
Chris
http://users.skynet.be/chrisp/linux/

[-- Attachment #2: alsa20090509-add-nc10-support.patch --]
[-- Type: text/x-patch, Size: 3481 bytes --]

diff -ru alsa-driver/alsa-kernel/pci/hda/patch_realtek.c alsa-driver-20090509-MOD/alsa-kernel/pci/hda/patch_realtek.c
--- alsa-driver/alsa-kernel/pci/hda/patch_realtek.c	2009-05-09 00:05:02.000000000 +0200
+++ alsa-driver-20090509-MOD/alsa-kernel/pci/hda/patch_realtek.c	2009-05-10 13:07:22.000000000 +0200
@@ -190,6 +190,7 @@
 	ALC663_ASUS_MODE6,
 	ALC272_DELL,
 	ALC272_DELL_ZM1,
+	ALC272_SAMSUNG_NC10,	/*20090509 Samsung NC10 support - chris.pockele.f1@gmail.com*/
 	ALC662_AUTO,
 	ALC662_MODEL_LAST,
 };
@@ -15120,6 +15121,38 @@
 	},
 };
 
+#ifndef CONFIG_SND_DEBUG
+static struct hda_input_mux alc272_nc10_capture_source = {
+	.num_items = 2,
+	.items = {
+		{ "Autoselect Mic", 0x0 },
+		{ "Internal Mic", 0x1 },
+	},
+};
+#else
+static struct hda_input_mux alc272_nc10_capture_source = {
+	.num_items = 16,
+	.items = {
+		{ "Autoselect Mic", 0x0 },
+		{ "Internal Mic", 0x1 },
+		{ "In-0x02", 0x2 },
+		{ "In-0x03", 0x3 },
+		{ "In-0x04", 0x4 },
+		{ "In-0x05", 0x5 },
+		{ "In-0x06", 0x6 },
+		{ "In-0x07", 0x7 },
+		{ "In-0x08", 0x8 },
+		{ "In-0x09", 0x9 },
+		{ "In-0x0a", 0x0a },
+		{ "In-0x0b", 0x0b },
+		{ "In-0x0c", 0x0c },
+		{ "In-0x0d", 0x0d },
+		{ "In-0x0e", 0x0e },
+		{ "In-0x0f", 0x0f },
+	},
+};
+#endif
+
 /*
  * 2ch mode
  */
@@ -16151,6 +16184,23 @@
 	{ } /* end */
 };
 
+static struct snd_kcontrol_new alc272_nc10_mixer[] = {
+	/* Master Playback automatically created from Speaker and Headphone */
+	HDA_CODEC_VOLUME("Speaker Playback Volume", 0x02, 0x0, HDA_OUTPUT),
+	HDA_CODEC_MUTE("Speaker Playback Switch", 0x14, 0x0, HDA_OUTPUT),
+	HDA_CODEC_VOLUME("Headphone Playback Volume", 0x03, 0x0, HDA_OUTPUT),
+	HDA_CODEC_MUTE("Headphone Playback Switch", 0x21, 0x0, HDA_OUTPUT),
+
+	HDA_CODEC_VOLUME("Ext Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
+	HDA_CODEC_MUTE("Ext Mic Playback Switch", 0x0b, 0x0, HDA_INPUT),
+	HDA_CODEC_VOLUME("Ext Mic Boost Playback Volume", 0x18, 0, HDA_INPUT),
+
+	HDA_CODEC_VOLUME("Int Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
+	HDA_CODEC_MUTE("Int Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
+	HDA_CODEC_VOLUME("Int Mic Boost Playback Volume", 0x19, 0, HDA_INPUT),
+	{ } /* end */
+};
+
 #ifdef CONFIG_SND_HDA_POWER_SAVE
 #define alc662_loopbacks	alc880_loopbacks
 #endif
@@ -16184,6 +16234,9 @@
 	[ALC663_ASUS_MODE4] = "asus-mode4",
 	[ALC663_ASUS_MODE5] = "asus-mode5",
 	[ALC663_ASUS_MODE6] = "asus-mode6",
+	[ALC272_DELL] = "dell272",
+	[ALC272_DELL_ZM1] = "dell-zm1",
+	[ALC272_SAMSUNG_NC10] = "samsung-nc10",
 	[ALC662_AUTO]		= "auto",
 };
 
@@ -16241,6 +16294,7 @@
 	SND_PCI_QUIRK(0x105b, 0x0cd6, "Foxconn", ALC662_ECS),
 	SND_PCI_QUIRK(0x105b, 0x0d47, "Foxconn 45CMX/45GMX/45CMX-K",
 		      ALC662_3ST_6ch_DIG),
+	SND_PCI_QUIRK(0x144d, 0xca00, "Samsung NC10", ALC272_SAMSUNG_NC10),
 	SND_PCI_QUIRK(0x1458, 0xa002, "Gigabyte 945GCM-S2L",
 		      ALC662_3ST_6ch_DIG),
 	SND_PCI_QUIRK(0x1565, 0x820f, "Biostar TA780G M2+", ALC662_3ST_6ch_DIG),
@@ -16512,6 +16566,18 @@
 		.unsol_event = alc663_m51va_unsol_event,
 		.init_hook = alc663_m51va_inithook,
 	},
+	[ALC272_SAMSUNG_NC10] = {
+		.mixers = { alc272_nc10_mixer },
+		.init_verbs = { alc662_init_verbs,
+				alc663_21jd_amic_init_verbs },
+		.num_dacs = ARRAY_SIZE(alc272_dac_nids),
+		.dac_nids = alc272_dac_nids,
+		.num_channel_mode = ARRAY_SIZE(alc662_3ST_2ch_modes),
+		.channel_mode = alc662_3ST_2ch_modes,
+		.input_mux = &alc272_nc10_capture_source,
+		.unsol_event = alc663_mode4_unsol_event,
+		.init_hook = alc663_mode4_inithook,
+	},
 };


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

_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2009-05-13  7:01 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-05-10 19:21 patch to support Samsung NC10 mini notebook Chris Pockele
2009-05-11  8:38 ` Takashi Iwai
2009-05-11 20:25   ` Chris Pockele
2009-05-12  6:13     ` Takashi Iwai
2009-05-13  7:01       ` Takashi Iwai

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.