From 8be20029e4d395f926ae35ed36f083629721f86e Mon Sep 17 00:00:00 2001
From: Raymond Yau <superquad.vortex2@gmail.com>
Date: Fri, 13 May 2011 10:40:28 +0800
Subject: [[PATCH] alsa-lib EMU101k.conf 1/1] Add asym to front, rear and center_lfe to prevent route change after removed the lock

After removed the lock, When application using "hw", "front" , "rear" , "surround40" and "surround51",  the route of the front channel is changed (lost right channel or both channels) when other application using "front", "rear" or "center_lfe" to record


Signed-off-by: Raymond Yau <superquad.vortex2@gmail.com>

diff --git a/src/conf/cards/EMU10K1.conf b/src/conf/cards/EMU10K1.conf
index b537864..f36d0fd 100644
--- a/src/conf/cards/EMU10K1.conf
+++ b/src/conf/cards/EMU10K1.conf
@@ -9,48 +9,55 @@ EMU10K1.pcm.front.0 {
 	@args.CARD {
 		type string
 	}
-	type hooks
-	slave.pcm {
+	type asym
+	playback.pcm {
+		type hooks
+		slave.pcm {
+			type hw
+			card $CARD
+		}
+		hooks.0 {
+			type ctl_elems
+			hook_args [
+				{
+					interface PCM
+					name "EMU10K1 PCM Send Volume"
+					index { @func private_pcm_subdevice }
+					# lock true
+					optional true
+					value [ 255 255 0 0 255 0 0 0 0 255 0 0 ]
+				}
+				{
+					# for compatibility with older drivers
+					name "EMU10K1 PCM Send Volume"
+					index { @func private_pcm_subdevice }
+					# lock true
+					optional true
+					value [ 255 255 0 0 255 0 0 0 0 255 0 0 ]
+				}
+				{
+					interface PCM
+					name "EMU10K1 PCM Send Routing"
+					index { @func private_pcm_subdevice }
+					# lock true
+					optional true
+					value [ 8 9 0 0 8 9 0 0 8 9 0 0 ]
+				}
+				{
+					# for compatibility with older drivers
+					name "EMU10K1 PCM Send Routing"
+					index { @func private_pcm_subdevice }
+					# lock true
+					optional true
+					value [ 8 9 0 0 8 9 0 0 8 9 0 0 ]
+				}
+			]
+		}
+	}
+	capture.pcm {
 		type hw
 		card $CARD
 	}
-	hooks.0 {
-		type ctl_elems
-		hook_args [
-			{
-				interface PCM
-				name "EMU10K1 PCM Send Volume"
-				index { @func private_pcm_subdevice }
-				# lock true
-				optional true
-				value [ 255 255 0 0 255 0 0 0 0 255 0 0 ]
-			}
-			{
-				# for compatibility with older drivers
-				name "EMU10K1 PCM Send Volume"
-				index { @func private_pcm_subdevice }
-				# lock true
-				optional true
-				value [ 255 255 0 0 255 0 0 0 0 255 0 0 ]
-			}
-			{
-				interface PCM
-				name "EMU10K1 PCM Send Routing"
-				index { @func private_pcm_subdevice }
-				# lock true
-				optional true
-				value [ 8 9 0 0 8 9 0 0 8 9 0 0 ]
-			}
-			{
-				# for compatibility with older drivers
-				name "EMU10K1 PCM Send Routing"
-				index { @func private_pcm_subdevice }
-				# lock true
-				optional true
-				value [ 8 9 0 0 8 9 0 0 8 9 0 0 ]
-			}
-		]
-	}
 }	
 
 <confdir:pcm/rear.conf>
@@ -60,33 +67,36 @@ EMU10K1.pcm.rear.0 {
 	@args.CARD {
 		type string
 	}
-	type hooks
-	slave.pcm {
-		type hw
-		card $CARD
-	}
-	hooks.0 {
-		type ctl_elems
-		hook_args [
-			{
-				interface PCM
-				name "EMU10K1 PCM Send Volume"
-				index { @func private_pcm_subdevice }
-				# lock true
-				optional true
-				value [ 0 0 255 255 0 0 255 0 0 0 0 255 ]
-			}
-			{
-				# for compatibility with older drivers
-				name "EMU10K1 PCM Send Volume"
-				index { @func private_pcm_subdevice }
-				# lock true
-				optional true
-				value [ 0 0 255 255 0 0 255 0 0 0 0 255 ]
-			}
-		]
+	type asym
+	playback.pcm {
+		type hooks
+		slave.pcm {
+			type hw
+			card $CARD
+		}
+		hooks.0 {
+			type ctl_elems
+			hook_args [
+				{
+					interface PCM
+					name "EMU10K1 PCM Send Volume"
+					index { @func private_pcm_subdevice }
+					# lock true
+					optional true
+					value [ 0 0 255 255 0 0 255 0 0 0 0 255 ]
+				}
+				{
+					# for compatibility with older drivers
+					name "EMU10K1 PCM Send Volume"
+					index { @func private_pcm_subdevice }
+					# lock true
+					optional true
+					value [ 0 0 255 255 0 0 255 0 0 0 0 255 ]
+				}
+			]
+		}
 	}
-}
+}		
 
 <confdir:pcm/center_lfe.conf>
 
@@ -95,73 +105,76 @@ EMU10K1.pcm.center_lfe.0 {
 	@args.CARD {
 		type string
 	}
-	type hooks
-	slave.pcm {
-		type hw
-		card $CARD
-	}
-	hooks.0 {
-		type ctl_elems
-		hook_args [
-			{
-				name "Headphone Center Playback Switch"
-				index 1
-				preserve true
-				# lock true
-				optional true
-				value true
-			}
-			{
-				name "Headphone LFE Playback Switch"
-				index 1
-				preserve true
-				# lock true
-				optional true
-				value true
-			}
+	type asym
+	playback.pcm {
+		type hooks
+		slave.pcm {
+			type hw
+			card $CARD
+		}
+		hooks.0 {
+			type ctl_elems
+			hook_args [
+				{
+					name "Headphone Center Playback Switch"
+					index 1
+					preserve true
+					# lock true
+					optional true
+					value true
+				}
+				{
+					name "Headphone LFE Playback Switch"
+					index 1
+					preserve true
+					# lock true
+					optional true
+					value true
+				}
 # if you have a creative's digital receiver, you can get surround/center/lfe
 # output through the digital jack.  so, the following is commented out.
 # pay attention in case of analog output from the shared center/digital
 # jack!
-#			{
-#				name "SB Live Analog/Digital Output Jack"
-#				preserve true
-#				lock true
-#				value 0
-#			}
-			{
-				interface PCM
-				name "EMU10K1 PCM Send Volume"
-				index { @func private_pcm_subdevice }
-				# lock true
-				optional true
-				value [ 255 255 0 0 255 0 0 0 0 255 0 0 ]
-			}
-			{
-				# for compatibility with older drivers
-				name "EMU10K1 PCM Send Volume"
-				index { @func private_pcm_subdevice }
-				# lock true
-				optional true
-				value [ 255 255 0 0 255 0 0 0 0 255 0 0 ]
-			}
-			{
-				interface PCM
-				name "EMU10K1 PCM Send Routing"
-				index { @func private_pcm_subdevice }
-				# lock true
-				optional true
-				value [ 6 7 0 0 6 7 0 0 6 7 0 0 ]
-			}
-			{
-				# for compatibility with older drivers
-				name "EMU10K1 PCM Send Routing"
-				index { @func private_pcm_subdevice }
-				# lock true
-				optional true
-				value [ 6 7 0 0 6 7 0 0 6 7 0 0 ]
-			}
-		]
+#				{
+#					name "SB Live Analog/Digital Output Jack"
+#					preserve true
+#					lock true
+#					value 0
+#				}
+				{
+					interface PCM
+					name "EMU10K1 PCM Send Volume"
+					index { @func private_pcm_subdevice }
+					# lock true
+					optional true
+					value [ 255 255 0 0 255 0 0 0 0 255 0 0 ]
+				}
+				{
+					# for compatibility with older drivers
+					name "EMU10K1 PCM Send Volume"
+					index { @func private_pcm_subdevice }
+					# lock true
+					optional true
+					value [ 255 255 0 0 255 0 0 0 0 255 0 0 ]
+				}
+				{
+					interface PCM
+					name "EMU10K1 PCM Send Routing"
+					index { @func private_pcm_subdevice }
+					# lock true
+					optional true
+					value [ 6 7 0 0 6 7 0 0 6 7 0 0 ]
+				}
+				{
+					# for compatibility with older drivers
+					name "EMU10K1 PCM Send Routing"
+					index { @func private_pcm_subdevice }
+					# lock true
+					optional true
+					value [ 6 7 0 0 6 7 0 0 6 7 0 0 ]
+				}
+			]
+		}
 	}
 }
 
-- 
1.6.0.6

