[alsa-devel] [PATCH 2/2] ALSA: ca0106: Fix mixer and dac channel assignments.

andy-alsa at ultra-premium.com andy-alsa at ultra-premium.com
Tue Sep 21 15:51:19 CEST 2010


From: Andy Owen <andy-alsa at ultra-premium.com>

---
 sound/pci/ca0106/ca0106_main.c  |   14 +++++++-------
 sound/pci/ca0106/ca0106_mixer.c |    6 +++---
 2 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/sound/pci/ca0106/ca0106_main.c b/sound/pci/ca0106/ca0106_main.c
index 6dc9a5d..a98df19 100644
--- a/sound/pci/ca0106/ca0106_main.c
+++ b/sound/pci/ca0106/ca0106_main.c
@@ -493,16 +493,16 @@ static void snd_ca0106_pcm_free_substream(struct snd_pcm_runtime *runtime)
 }
 
 static const int spi_dacd_reg[] = {
-	[PCM_FRONT_CHANNEL]	= SPI_DACD4_REG,
-	[PCM_REAR_CHANNEL]	= SPI_DACD0_REG,
+	[PCM_FRONT_CHANNEL]	= SPI_DACD0_REG,
+	[PCM_REAR_CHANNEL]	= SPI_DACD1_REG,
 	[PCM_CENTER_LFE_CHANNEL]= SPI_DACD2_REG,
-	[PCM_UNKNOWN_CHANNEL]	= SPI_DACD1_REG,
+	[PCM_UNKNOWN_CHANNEL]	= SPI_DACD4_REG,
 };
 static const int spi_dacd_bit[] = {
-	[PCM_FRONT_CHANNEL]	= SPI_DACD4_BIT,
-	[PCM_REAR_CHANNEL]	= SPI_DACD0_BIT,
+	[PCM_FRONT_CHANNEL]	= SPI_DACD0_BIT,
+	[PCM_REAR_CHANNEL]	= SPI_DACD1_BIT,
 	[PCM_CENTER_LFE_CHANNEL]= SPI_DACD2_BIT,
-	[PCM_UNKNOWN_CHANNEL]	= SPI_DACD1_BIT,
+	[PCM_UNKNOWN_CHANNEL]	= SPI_DACD4_BIT,
 };
 
 static void restore_spdif_bits(struct snd_ca0106 *chip, int idx)
@@ -553,7 +553,7 @@ static int snd_ca0106_pcm_open_playback_channel(struct snd_pcm_substream *substr
                 return err;
 	snd_pcm_set_sync(substream);
 
-	if (chip->details->spi_dac && channel_id != PCM_FRONT_CHANNEL) {
+	if (chip->details->spi_dac) {
 		const int reg = spi_dacd_reg[channel_id];
 
 		/* Power up dac */
diff --git a/sound/pci/ca0106/ca0106_mixer.c b/sound/pci/ca0106/ca0106_mixer.c
index 85fd315..bafb9c8 100644
--- a/sound/pci/ca0106/ca0106_mixer.c
+++ b/sound/pci/ca0106/ca0106_mixer.c
@@ -689,13 +689,13 @@ static struct snd_kcontrol_new snd_ca0106_volume_i2c_adc_ctls[] __devinitdata =
 static struct snd_kcontrol_new snd_ca0106_volume_spi_dac_ctls[]
 __devinitdata = {
 	SPI_SWITCH("Analog Front Playback Switch",
-		   SPI_DMUTE4_REG, SPI_DMUTE4_BIT),
-	SPI_SWITCH("Analog Rear Playback Switch",
 		   SPI_DMUTE0_REG, SPI_DMUTE0_BIT),
+	SPI_SWITCH("Analog Rear Playback Switch",
+		   SPI_DMUTE1_REG, SPI_DMUTE1_BIT),
 	SPI_SWITCH("Analog Center/LFE Playback Switch",
 		   SPI_DMUTE2_REG, SPI_DMUTE2_BIT),
 	SPI_SWITCH("Analog Side Playback Switch",
-		   SPI_DMUTE1_REG, SPI_DMUTE1_BIT),
+		   SPI_DMUTE4_REG, SPI_DMUTE4_BIT),
 };
 
 static int __devinit remove_ctl(struct snd_card *card, const char *name)
-- 
1.7.0.4



More information about the Alsa-devel mailing list