All of lore.kernel.org
 help / color / mirror / Atom feed
* Patch to enable IR on Audigy 2 Drive
@ 2003-03-10 22:31 Andrew de Quincey
  2003-03-10 23:22 ` Andrew de Quincey
  2003-03-11 16:43 ` Takashi Iwai
  0 siblings, 2 replies; 3+ messages in thread
From: Andrew de Quincey @ 2003-03-10 22:31 UTC (permalink / raw)
  To: alsa-devel


Hi, I've been having a frustrating couple of days getting IR to work on my 
brand new Audigy2 drive... Lots of people seem to have it working, but for 
me, it refused. Enabling it under windows showed that the IR _did_ work, and 
if I rebooted immediately into linux, IR worked there too (although not after 
a power cycle).

It turns out the Audigy2 (and maybe the Audigy as well? I don't know) has a 
different port (A_IOCFG instead of A_HCFG) for accessing the GPIO 
registers... This is actually in the OSS driver, but hadn't made it across to 
ALSA. I assume the people who had this working were all using the OSS driver.

I'd like to point out that I've only done this for the IR.. it might be an 
idea to check the ALSA emu101k source for other occurences of this for the 
Audigy2.. 

Here's a patch against CVS to the IR enabling code.

--- CUT HERE ---
Index: include/emu10k1.h
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/include/emu10k1.h,v
retrieving revision 1.23
diff -r1.23 emu10k1.h
236a237,238
> #define A_IOCFG_GPOUT1		0x0002    /* IR */
> #define A_IOCFG_GPOUT2		0x0001		/* IR */
Index: pci/emu10k1/emu10k1_main.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/pci/emu10k1/emu10k1_main.c,v
retrieving revision 1.22
diff -r1.22 emu10k1_main.c
224,230c224,239
< 	if (enable_ir) {	/* enable IR for SB Live */
< 		unsigned int reg = inl(emu->port + HCFG);
< 		outl(reg | HCFG_GPOUT2, emu->port + HCFG);
< 		udelay(500);
< 		outl(reg | HCFG_GPOUT1 | HCFG_GPOUT2, emu->port + HCFG);
< 		udelay(100);
< 		outl(reg, emu->port + HCFG);
---
> 	if (enable_ir) {	/* enable IR for SB Live/Audigy */
> 		if (emu->audigy) {
> 			unsigned int reg = inl(emu->port + A_IOCFG);
> 			outl(reg | A_IOCFG_GPOUT2, emu->port + A_IOCFG);
> 			udelay(500);
> 			outl(reg | A_IOCFG_GPOUT1 | A_IOCFG_GPOUT2, emu->port + A_IOCFG);
> 			udelay(100);
> 			outl(reg, emu->port + A_IOCFG);
> 		} else {
> 			unsigned int reg = inl(emu->port + HCFG);
> 			outl(reg | HCFG_GPOUT2, emu->port + HCFG);
> 			udelay(500);
> 			outl(reg | HCFG_GPOUT1 | HCFG_GPOUT2, emu->port + HCFG);
> 			udelay(100);
> 			outl(reg, emu->port + HCFG);
> 		}
--- CUT HERE ---

-- 
adq


-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2003-03-11 16:43 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-03-10 22:31 Patch to enable IR on Audigy 2 Drive Andrew de Quincey
2003-03-10 23:22 ` Andrew de Quincey
2003-03-11 16:43 ` Takashi Iwai

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.