patch to support Samsung NC10 mini notebook

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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/
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@xxxxxxxxx*/
 	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,
+	},
 };

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

[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux