[PATCH] EMU10K1 joystick bug

Brian Gerst
2001-05-30T02:08:40Z

[-- Attachment #1: Type: text/plain, Size: 187 bytes --]

The EMU10K1 driver currently disables the joystick port on module load
and unload. This patch preserves the HCFG_JOYENABLE bit when the HCFG
register is modified.

--

Brian Gerst

[-- Attachment #2: diff-emu10k1joy --]
[-- Type: text/plain, Size: 1277 bytes --]

diff -urN linux-2.4.5/drivers/sound/emu10k1/main.c linux/drivers/sound/emu10k1/main.c
--- linux-2.4.5/drivers/sound/emu10k1/main.c Sat May 26 09:41:32 2001
+++ linux/drivers/sound/emu10k1/main.c Tue May 29 21:17:06 2001
@@ -363,10 +363,11 @@
static int __devinit hw_init(struct emu10k1_card *card)
{
int nCh;
- u32 pagecount; /* tmp */
+ u32 pagecount, tmp;

/* Disable audio and lock cache */
- emu10k1_writefn0(card, HCFG, HCFG_LOCKSOUNDCACHE | HCFG_LOCKTANKCACHE_MASK | HCFG_MUTEBUTTONENABLE);
+ tmp = emu10k1_readfn0(card, HCFG) & HCFG_JOYENABLE;
+ emu10k1_writefn0(card, HCFG, tmp | HCFG_LOCKSOUNDCACHE | HCFG_LOCKTANKCACHE_MASK | HCFG_MUTEBUTTONENABLE);

/* Reset recording buffers */
sblive_writeptr_tag(card, 0,
@@ -557,6 +558,7 @@
static void __devinit emu10k1_exit(struct emu10k1_card *card)
{
int ch;
+ u32 tmp;

emu10k1_writefn0(card, INTE, 0);

@@ -574,7 +576,8 @@
}

/* Disable audio and lock cache */
- emu10k1_writefn0(card, HCFG, HCFG_LOCKSOUNDCACHE | HCFG_LOCKTANKCACHE_MASK | HCFG_MUTEBUTTONENABLE);
+ tmp = emu10k1_readfn0(card, HCFG) & HCFG_JOYENABLE;
+ emu10k1_writefn0(card, HCFG, tmp | HCFG_LOCKSOUNDCACHE | HCFG_LOCKTANKCACHE_MASK | HCFG_MUTEBUTTONENABLE);

sblive_writeptr_tag(card, 0,
PTB, 0,