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