All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] emu10k1 SB Live: Front channels independent of default pcm
@ 2005-02-23 14:58 Mikael Magnusson
  0 siblings, 0 replies; only message in thread
From: Mikael Magnusson @ 2005-02-23 14:58 UTC (permalink / raw)
  To: alsa-devel

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

These patches add front channels that are independent of the default pcm
output. It will also reduce the difference between the SB Live and
Audigy drivers. One potential problem is that the changed configuration
file can't be used with an unpatched driver. Then you won't get any
  front output during multichannel playback.

front_fx_v2.patch:

Adds left and right front channel inputs using fxbus 8 and 9 and "Front"
playback and capture controls.

Signed-Off-By: Mikael Magnusson <mikma@users.sourceforge.net>

front_config_v2.patch:

Routes front channels via fxbus 8 and 9 instead of fxbus 0 and 1. This
makes the front and default pcm outputs independent of each other, as in 
the Audigy driver.

Signed-Off-By: Mikael Magnusson <mikma@users.sourceforge.net>


[-- Attachment #2: front_config_v2.patch --]
[-- Type: text/x-patch, Size: 1310 bytes --]

--- alsa-lib/src/conf/cards/EMU10K1.conf	16 Feb 2005 11:47:05 -0000	1.14
+++ alsa-lib/src/conf/cards/EMU10K1.conf	23 Feb 2005 10:32:19 -0000
@@ -9,9 +9,29 @@
 	@args.CARD {
 		type string
 	}
-	type hw
-	card $CARD
-	device 0
+	type hooks
+	slave.pcm {
+		type hw
+		card $CARD
+		device 0
+	}
+	hooks.0 {
+		type ctl_elems
+		hook_args [
+			{
+				name "EMU10K1 PCM Send Volume"
+				index { @func private_pcm_subdevice }
+				lock true
+				value [ 255 255 0 0 255 0 0 0 0 255 0 0 ]
+			}
+			{
+				name "EMU10K1 PCM Send Routing"
+				index { @func private_pcm_subdevice }
+				lock true
+				value [ 8 9 0 0 8 9 0 0 8 9 0 0 ]
+			}
+		]
+	}
 }	
 
 <confdir:pcm/rear.conf>
@@ -31,13 +51,6 @@
 		type ctl_elems
 		hook_args [
 			{
-				name "Wave Surround Playback Volume"
-				preserve true
-				# don't lock a global control
-				# lock true
-				value [ 0 0 ]
-			}
-			{
 				name "EMU10K1 PCM Send Volume"
 				index { @func private_pcm_subdevice }
 				lock true
@@ -64,18 +77,6 @@
 		type ctl_elems
 		hook_args [
 			{
-				name "Wave Center Playback Volume"
-				preserve true
- 				# lock true
-				value 0
-			}
-			{
-				name "Wave LFE Playback Volume"
-				preserve true
-				# lock true
-				value 0
-			}
-			{
 				name "Headphone Center Playback Switch"
 				index 1
 				preserve true


[-- Attachment #3: front_fx_v2.patch --]
[-- Type: text/x-patch, Size: 2019 bytes --]

--- alsa-kernel/pci/emu10k1/emufx.c	17 Feb 2005 14:51:52 -0000	1.69
+++ alsa-kernel/pci/emu10k1/emufx.c	23 Feb 2005 10:31:40 -0000
@@ -934,8 +934,8 @@
 	return err;
 }
 
-#define SND_EMU10K1_GPR_CONTROLS	41
-#define SND_EMU10K1_INPUTS		10
+#define SND_EMU10K1_GPR_CONTROLS	44
+#define SND_EMU10K1_INPUTS		12
 #define SND_EMU10K1_PLAYBACK_CHANNELS	8
 #define SND_EMU10K1_CAPTURE_CHANNELS	4
 
@@ -1489,7 +1489,7 @@
 
 	strcpy(icode->name, "SB Live! FX8010 code for ALSA v1.2 by Jaroslav Kysela");
 	ptr = 0; i = 0;
-	/* we have 10 inputs */
+	/* we have 12 inputs */
 	playback = SND_EMU10K1_INPUTS;
 	/* we have 6 playback channels and tone control doubles */
 	capture = playback + (SND_EMU10K1_PLAYBACK_CHANNELS * 2);
@@ -1513,6 +1513,8 @@
 	OP(icode, &ptr, iMACINT0, GPR(7), C_00000000, FXBUS(FXBUS_PCM_LFE), C_00000004);
 	OP(icode, &ptr, iMACINT0, GPR(8), C_00000000, C_00000000, C_00000000);	/* S/PDIF left */
 	OP(icode, &ptr, iMACINT0, GPR(9), C_00000000, C_00000000, C_00000000);	/* S/PDIF right */
+	OP(icode, &ptr, iMACINT0, GPR(10), C_00000000, FXBUS(FXBUS_PCM_LEFT_FRONT), C_00000004);
+	OP(icode, &ptr, iMACINT0, GPR(11), C_00000000, FXBUS(FXBUS_PCM_RIGHT_FRONT), C_00000004);
 
 	/* Raw S/PDIF PCM */
 	ipcm->substream = 0;
@@ -1659,6 +1661,21 @@
 	VOLUME_ADD(icode, &ptr, playback + 5, 7, gpr);
 	snd_emu10k1_init_mono_control(controls + i++, "LFE Digital Playback Volume", gpr++, 100);
 
+	/* Front Playback Volume */
+	for (z = 0; z < 2; z++)
+		VOLUME_ADD(icode, &ptr, playback + z, 10 + z, gpr + z);
+	snd_emu10k1_init_stereo_control(controls + i++, "Front Playback Volume", gpr, 100);
+	gpr += 2;
+
+	/* Front Capture Volume + Switch */
+	for (z = 0; z < 2; z++) {
+		SWITCH(icode, &ptr, tmp + 0, 10 + z, gpr + 2);
+		VOLUME_ADD(icode, &ptr, capture + z, tmp + 0, gpr + z);
+	}
+	snd_emu10k1_init_stereo_control(controls + i++, "Front Capture Volume", gpr, 0);
+	snd_emu10k1_init_mono_onoff_control(controls + i++, "Front Capture Switch", gpr + 2, 0);
+	gpr += 3;
+
 	/*
 	 *  Process inputs
 	 */


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2005-02-23 14:58 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-02-23 14:58 [PATCH] emu10k1 SB Live: Front channels independent of default pcm Mikael Magnusson

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.