[ALSA] emu10k1: Front channels via fxbus 8 and 9
authorMikael Magnusson <mikma@users.sourceforge.net>
Tue, 13 Sep 2005 09:32:58 +0000 (11:32 +0200)
committerJaroslav Kysela <perex@suse.cz>
Fri, 4 Nov 2005 12:15:36 +0000 (13:15 +0100)
Modules: EMU10K1/EMU10K2 driver

Adds left and right front channel outputs using fxbus 8 and 9 and 'Front'
playback and capture volume controls.

Signed-off-by: Mikael Magnusson <mikma@users.sourceforge.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/emu10k1/emufx.c

index 646b5d972e6f3b8cb0281eb6f6266395a750670e..20db3ac6cd6188fe268664d60bff7fd649f4b436 100644 (file)
@@ -964,8 +964,8 @@ static int snd_emu10k1_ipcm_peek(emu10k1_t *emu, emu10k1_fx8010_pcm_t *ipcm)
        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
 
@@ -1527,7 +1527,7 @@ static int __devinit _snd_emu10k1_init_efx(emu10k1_t *emu)
 
        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);
@@ -1551,6 +1551,8 @@ static int __devinit _snd_emu10k1_init_efx(emu10k1_t *emu)
        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;
@@ -1697,6 +1699,21 @@ static int __devinit _snd_emu10k1_init_efx(emu10k1_t *emu)
        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
         */