ChangeSet 1.2181.25.42, 2005/03/24 11:52:53+01:00, [EMAIL PROTECTED]
[ALSA] Fixes AC3 output on Audigy2 sound cards
EMU10K1/EMU10K2 driver
This patch adds a DSP patch to fix an spdif_bug on some Audigy2 cards.
Signed-off-by: James Courtier-Dutton
Signed-off-by: Takashi Iwai <[EMAIL PROTECTED]>
emufx.c | 10 +++++++++-
1 files changed, 9 insertions(+), 1 deletion(-)
diff -Nru a/sound/pci/emu10k1/emufx.c b/sound/pci/emu10k1/emufx.c
--- a/sound/pci/emu10k1/emufx.c 2005-03-30 16:19:07 -08:00
+++ b/sound/pci/emu10k1/emufx.c 2005-03-30 16:19:07 -08:00
@@ -1367,6 +1367,7 @@
/* A_PUT_STEREO_OUTPUT(A_EXTOUT_FRONT_L, A_EXTOUT_FRONT_R, playback +
SND_EMU10K1_PLAYBACK_CHANNELS); */
/* IEC958 Optical Raw Playback Switch */
+ gpr_map[gpr++] = 0;
gpr_map[gpr++] = 0x1008;
gpr_map[gpr++] = 0xffff0000;
for (z = 0; z < 2; z++) {
@@ -1377,7 +1378,14 @@
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);
+ if ((z==1) && (emu->card_capabilities->spdif_bug)) {
+ /* Due to a SPDIF output bug on some Audigy cards, this
code delays the Right channel by 1 sample */
+ snd_printk("Installing spdif_bug patch: %s\n",
emu->card_capabilities->name);
+ A_OP(icode, &ptr, iACC3, A_EXTOUT(A_EXTOUT_FRONT_L +
z), A_GPR(gpr - 3), A_C_00000000, A_C_00000000);
+ A_OP(icode, &ptr, iACC3, A_GPR(gpr - 3), A_GPR(tmp +
0), A_GPR(tmp + 1), A_C_00000000);
+ } else {
+ 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;
-
To unsubscribe from this list: send the line "unsubscribe bk-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html