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