Update of /cvsroot/alsa/alsa-kernel/pci/emu10k1
In directory sc8-pr-cvs1:/tmp/cvs-serv1290/pci/emu10k1

Modified Files:
        emu10k1.c emufx.c emupcm.c 
Log Message:
Peter Zubaj <[EMAIL PROTECTED]>:
- Added the support of AC3 passthrough on Audigy.

James Courtier-Dutton <[EMAIL PROTECTED]>:
- Use different driver name for Audigy2.



Index: emu10k1.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/emu10k1/emu10k1.c,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- emu10k1.c   12 Aug 2003 14:10:15 -0000      1.20
+++ emu10k1.c   29 Aug 2003 09:22:27 -0000      1.21
@@ -170,7 +170,10 @@
        }
 #endif
  
-       if (emu->audigy) {
+       if (emu->audigy && (emu->revision == 4) ) {
+               strcpy(card->driver, "Audigy2");
+               strcpy(card->shortname, "Sound Blaster Audigy2");
+       } else if (emu->audigy) {
                strcpy(card->driver, "Audigy");
                strcpy(card->shortname, "Sound Blaster Audigy");
        } else if (emu->APS) {

Index: emufx.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/emu10k1/emufx.c,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -r1.37 -r1.38
--- emufx.c     5 Aug 2003 12:42:23 -0000       1.37
+++ emufx.c     29 Aug 2003 09:22:27 -0000      1.38
@@ -1235,6 +1235,7 @@
  */
 
 #define A_GPR_ACCU 0xd6
+#define A_GPR_COND 0xd7
 
 static int __devinit _snd_emu10k1_audigy_init_efx(emu10k1_t *emu)
 {
@@ -1502,13 +1503,7 @@
                A_OP(icode, &ptr, iMAC0, 
A_GPR(playback+1+SND_EMU10K1_PLAYBACK_CHANNELS), A_C_00000000, A_GPR(gpr+1), 
A_GPR(playback+1+SND_EMU10K1_PLAYBACK_CHANNELS));
                snd_emu10k1_init_stereo_control(&controls[nctl++], "Wave Master 
Playback Volume", gpr, 0);
                gpr += 2;
-       }
-
-       /* digital outputs */
-       A_PUT_STEREO_OUTPUT(A_EXTOUT_FRONT_L, A_EXTOUT_FRONT_R, playback + 
SND_EMU10K1_PLAYBACK_CHANNELS);
-       A_PUT_STEREO_OUTPUT(A_EXTOUT_REAR_L, A_EXTOUT_REAR_R, playback+2 + 
SND_EMU10K1_PLAYBACK_CHANNELS);
-       A_PUT_OUTPUT(A_EXTOUT_CENTER, playback+4 + SND_EMU10K1_PLAYBACK_CHANNELS);
-       A_PUT_OUTPUT(A_EXTOUT_LFE, playback+5 + SND_EMU10K1_PLAYBACK_CHANNELS);
+       }       
 
        /* analog speakers */
        if (emu->revision == 4) { /* audigy2 */
@@ -1522,6 +1517,29 @@
 
        /* headphone */
        A_PUT_STEREO_OUTPUT(A_EXTOUT_HEADPHONE_L, A_EXTOUT_HEADPHONE_R, playback + 
SND_EMU10K1_PLAYBACK_CHANNELS);
+
+       /* digital outputs */
+//     A_PUT_STEREO_OUTPUT(A_EXTOUT_FRONT_L, A_EXTOUT_FRONT_R, playback + 
SND_EMU10K1_PLAYBACK_CHANNELS);
+
+       /* IEC958 Optical Raw Playback Switch */ 
+       icode->gpr_map[gpr++] = 0x1008;
+       icode->gpr_map[gpr++] = 0xffff0000;
+       for (z = 0; z < 2; z++) {
+               A_OP(icode, &ptr, iMAC0, A_GPR(tmp + 2), A_FXBUS(FXBUS_PT_LEFT + z), 
A_C_00000000, A_C_00000000);
+               A_OP(icode, &ptr, iSKIP, A_GPR_COND, A_GPR_COND, A_GPR(gpr - 2), 
A_C_00000001);
+               A_OP(icode, &ptr, iACC3, A_GPR(tmp + 2), A_C_00000000, A_C_00010000, 
A_GPR(tmp + 2));
+               A_OP(icode, &ptr, iANDXOR, A_GPR(tmp + 2), A_GPR(tmp + 2), A_GPR(gpr - 
1), A_C_00000000);
+               A_SWITCH(icode, &ptr, tmp + 0, tmp + 2, gpr + z);
+               A_SWITCH_NEG(icode, &ptr, tmp + 1, gpr + z);
+               A_SWITCH(icode, &ptr, tmp + 1, playback + 
SND_EMU10K1_PLAYBACK_CHANNELS + z, tmp + 1);
+               A_OP(icode, &ptr, iACC3, A_EXTOUT(A_EXTOUT_FRONT_L + z), A_GPR(tmp + 
0), A_GPR(tmp + 1), A_C_00000000);
+       }
+       snd_emu10k1_init_stereo_onoff_control(controls + nctl++, "IEC958 Optical Raw 
Playback Switch", gpr, 0);
+       gpr += 2;
+       
+       A_PUT_STEREO_OUTPUT(A_EXTOUT_REAR_L, A_EXTOUT_REAR_R, playback+2 + 
SND_EMU10K1_PLAYBACK_CHANNELS);
+       A_PUT_OUTPUT(A_EXTOUT_CENTER, playback+4 + SND_EMU10K1_PLAYBACK_CHANNELS);
+       A_PUT_OUTPUT(A_EXTOUT_LFE, playback+5 + SND_EMU10K1_PLAYBACK_CHANNELS);
 
        /* ADC buffer */
        A_PUT_OUTPUT(A_EXTOUT_ADC_CAP_L, capture);

Index: emupcm.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/emu10k1/emupcm.c,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- emupcm.c    9 Apr 2003 15:00:06 -0000       1.21
+++ emupcm.c    29 Aug 2003 09:22:27 -0000      1.22
@@ -666,8 +666,11 @@
 #else  /* EMU10K1 Open Source code from Creative */
        if (ptr < epcm->ccca_start_addr)
                ptr += runtime->buffer_size - epcm->ccca_start_addr;
-       else
+       else {
                ptr -= epcm->ccca_start_addr;
+               if (ptr >= runtime->buffer_size)
+                       ptr -= runtime->buffer_size;
+       }
 #endif
        // printk("ptr = 0x%x, buffer_size = 0x%x, period_size = 0x%x\n", ptr, 
runtime->buffer_size, runtime->period_size);
        return ptr;



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Alsa-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-cvslog

Reply via email to