⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 8010.h

📁 linux-2.6.15.6
💻 H
📖 第 1 页 / 共 3 页
字号:
/* ********************************************************************** *     8010.h *     Copyright 1999-2001 Creative Labs, Inc. * ********************************************************************** * *     Date		    Author	    Summary of changes *     ----		    ------	    ------------------ *     October 20, 1999     Bertrand Lee    base code release *     November 2, 1999     Alan Cox	    Cleaned of 8bit chars, DOS *					    line endings *     December 8, 1999     Jon Taylor	    Added lots of new register info *     May 16, 2001         Daniel Bertrand Added unofficial DBG register info *     Oct-Nov 2001         D.B.            Added unofficial Audigy registers  * ********************************************************************** * *     This program is free software; you can redistribute it and/or *     modify it under the terms of the GNU General Public License as *     published by the Free Software Foundation; either version 2 of *     the License, or (at your option) any later version. * *     This program is distributed in the hope that it will be useful, *     but WITHOUT ANY WARRANTY; without even the implied warranty of *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *     GNU General Public License for more details. * *     You should have received a copy of the GNU General Public *     License along with this program; if not, write to the Free *     Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, *     USA. * * ********************************************************************** */#ifndef _8010_H#define _8010_H#include <linux/types.h>// Driver version:#define MAJOR_VER 0#define MINOR_VER 20#define DRIVER_VERSION "0.20a"// Audigy specify registers are prefixed with 'A_'/************************************************************************************************//* PCI function 0 registers, address = <val> + PCIBASE0						*//************************************************************************************************/#define PTR			0x00		/* Indexed register set pointer register	*/						/* NOTE: The CHANNELNUM and ADDRESS words can	*/						/* be modified independently of each other.	*/#define PTR_CHANNELNUM_MASK	0x0000003f	/* For each per-channel register, indicates the	*/						/* channel number of the register to be		*/						/* accessed.  For non per-channel registers the	*/						/* value should be set to zero.			*/#define PTR_ADDRESS_MASK	0x07ff0000	/* Register index				*/#define DATA			0x04		/* Indexed register set data register		*/#define IPR			0x08		/* Global interrupt pending register		*/						/* Clear pending interrupts by writing a 1 to	*/						/* the relevant bits and zero to the other bits	*//* The next two interrupts are for the midi port on the Audigy Drive (A_MPU1)			*/#define A_IPR_MIDITRANSBUFEMPTY2	0x10000000	/* MIDI UART transmit buffer empty		*/#define A_IPR_MIDIRECVBUFEMPTY2	0x08000000	/* MIDI UART receive buffer empty		*/#define IPR_SAMPLERATETRACKER	0x01000000	/* Sample rate tracker lock status change	*/#define IPR_FXDSP		0x00800000	/* Enable FX DSP interrupts			*/#define IPR_FORCEINT		0x00400000	/* Force Sound Blaster interrupt		*/#define IPR_PCIERROR		0x00200000	/* PCI bus error				*/#define IPR_VOLINCR		0x00100000	/* Volume increment button pressed		*/#define IPR_VOLDECR		0x00080000	/* Volume decrement button pressed		*/#define IPR_MUTE		0x00040000	/* Mute button pressed				*/#define IPR_MICBUFFULL		0x00020000	/* Microphone buffer full			*/#define IPR_MICBUFHALFFULL	0x00010000	/* Microphone buffer half full			*/#define IPR_ADCBUFFULL		0x00008000	/* ADC buffer full				*/#define IPR_ADCBUFHALFFULL	0x00004000	/* ADC buffer half full				*/#define IPR_EFXBUFFULL		0x00002000	/* Effects buffer full				*/#define IPR_EFXBUFHALFFULL	0x00001000	/* Effects buffer half full			*/#define IPR_GPSPDIFSTATUSCHANGE	0x00000800	/* GPSPDIF channel status change		*/#define IPR_CDROMSTATUSCHANGE	0x00000400	/* CD-ROM channel status change			*/#define IPR_INTERVALTIMER	0x00000200	/* Interval timer terminal count		*/#define IPR_MIDITRANSBUFEMPTY	0x00000100	/* MIDI UART transmit buffer empty		*/#define IPR_MIDIRECVBUFEMPTY	0x00000080	/* MIDI UART receive buffer empty		*/#define IPR_CHANNELLOOP		0x00000040	/* One or more channel loop interrupts pending	*/#define IPR_CHANNELNUMBERMASK	0x0000003f	/* When IPR_CHANNELLOOP is set, indicates the	*/						/* Highest set channel in CLIPL or CLIPH.  When	*/						/* IP is written with CL set, the bit in CLIPL	*/						/* or CLIPH corresponding to the CIN value 	*/						/* written will be cleared.			*/#define A_IPR_MIDITRANSBUFEMPTY1	IPR_MIDITRANSBUFEMPTY	/* MIDI UART transmit buffer empty		*/#define A_IPR_MIDIRECVBUFEMPTY1	IPR_MIDIRECVBUFEMPTY	/* MIDI UART receive buffer empty		*/#define INTE			0x0c		/* Interrupt enable register			*/#define INTE_VIRTUALSB_MASK	0xc0000000	/* Virtual Soundblaster I/O port capture	*/#define INTE_VIRTUALSB_220	0x00000000	/* Capture at I/O base address 0x220-0x22f	*/#define INTE_VIRTUALSB_240	0x40000000	/* Capture at I/O base address 0x240		*/#define INTE_VIRTUALSB_260	0x80000000	/* Capture at I/O base address 0x260		*/#define INTE_VIRTUALSB_280	0xc0000000	/* Capture at I/O base address 0x280		*/#define INTE_VIRTUALMPU_MASK	0x30000000	/* Virtual MPU I/O port capture			*/#define INTE_VIRTUALMPU_300	0x00000000	/* Capture at I/O base address 0x300-0x301	*/#define INTE_VIRTUALMPU_310	0x10000000	/* Capture at I/O base address 0x310		*/#define INTE_VIRTUALMPU_320	0x20000000	/* Capture at I/O base address 0x320		*/#define INTE_VIRTUALMPU_330	0x30000000	/* Capture at I/O base address 0x330		*/#define INTE_MASTERDMAENABLE	0x08000000	/* Master DMA emulation at 0x000-0x00f		*/#define INTE_SLAVEDMAENABLE	0x04000000	/* Slave DMA emulation at 0x0c0-0x0df		*/#define INTE_MASTERPICENABLE	0x02000000	/* Master PIC emulation at 0x020-0x021		*/#define INTE_SLAVEPICENABLE	0x01000000	/* Slave PIC emulation at 0x0a0-0x0a1		*/#define INTE_VSBENABLE		0x00800000	/* Enable virtual Soundblaster			*/#define INTE_ADLIBENABLE	0x00400000	/* Enable AdLib emulation at 0x388-0x38b	*/#define INTE_MPUENABLE		0x00200000	/* Enable virtual MPU				*/#define INTE_FORCEINT		0x00100000	/* Continuously assert INTAN			*/#define INTE_MRHANDENABLE	0x00080000	/* Enable the "Mr. Hand" logic			*/						/* NOTE: There is no reason to use this under	*/						/* Linux, and it will cause odd hardware 	*/						/* behavior and possibly random segfaults and	*/						/* lockups if enabled.				*//* The next two interrupts are for the midi port on the Audigy Drive (A_MPU1)			*/#define A_INTE_MIDITXENABLE2	0x00020000	/* Enable MIDI transmit-buffer-empty interrupts	*/#define A_INTE_MIDIRXENABLE2	0x00010000	/* Enable MIDI receive-buffer-empty interrupts	*/#define INTE_SAMPLERATETRACKER	0x00002000	/* Enable sample rate tracker interrupts	*/						/* NOTE: This bit must always be enabled       	*/#define INTE_FXDSPENABLE	0x00001000	/* Enable FX DSP interrupts			*/#define INTE_PCIERRORENABLE	0x00000800	/* Enable PCI bus error interrupts		*/#define INTE_VOLINCRENABLE	0x00000400	/* Enable volume increment button interrupts	*/#define INTE_VOLDECRENABLE	0x00000200	/* Enable volume decrement button interrupts	*/#define INTE_MUTEENABLE		0x00000100	/* Enable mute button interrupts		*/#define INTE_MICBUFENABLE	0x00000080	/* Enable microphone buffer interrupts		*/#define INTE_ADCBUFENABLE	0x00000040	/* Enable ADC buffer interrupts			*/#define INTE_EFXBUFENABLE	0x00000020	/* Enable Effects buffer interrupts		*/#define INTE_GPSPDIFENABLE	0x00000010	/* Enable GPSPDIF status interrupts		*/#define INTE_CDSPDIFENABLE	0x00000008	/* Enable CDSPDIF status interrupts		*/#define INTE_INTERVALTIMERENB	0x00000004	/* Enable interval timer interrupts		*/#define INTE_MIDITXENABLE	0x00000002	/* Enable MIDI transmit-buffer-empty interrupts	*/#define INTE_MIDIRXENABLE	0x00000001	/* Enable MIDI receive-buffer-empty interrupts	*//* The next two interrupts are for the midi port on the Audigy (A_MPU2)	*/#define A_INTE_MIDITXENABLE1  	INTE_MIDITXENABLE#define A_INTE_MIDIRXENABLE1	INTE_MIDIRXENABLE#define WC			0x10		/* Wall Clock register				*/#define WC_SAMPLECOUNTER_MASK	0x03FFFFC0	/* Sample periods elapsed since reset		*/#define WC_SAMPLECOUNTER	0x14060010#define WC_CURRENTCHANNEL	0x0000003F	/* Channel [0..63] currently being serviced	*/						/* NOTE: Each channel takes 1/64th of a sample	*/						/* period to be serviced.			*/#define HCFG			0x14		/* Hardware config register			*/						/* NOTE: There is no reason to use the legacy	*/						/* SoundBlaster emulation stuff described below	*/						/* under Linux, and all kinds of weird hardware	*/						/* behavior can result if you try.  Don't.	*/#define HCFG_LEGACYFUNC_MASK	0xe0000000	/* Legacy function number 			*/#define HCFG_LEGACYFUNC_MPU	0x00000000	/* Legacy MPU	 				*/#define HCFG_LEGACYFUNC_SB	0x40000000	/* Legacy SB					*/#define HCFG_LEGACYFUNC_AD	0x60000000	/* Legacy AD					*/#define HCFG_LEGACYFUNC_MPIC	0x80000000	/* Legacy MPIC					*/#define HCFG_LEGACYFUNC_MDMA	0xa0000000	/* Legacy MDMA					*/#define HCFG_LEGACYFUNC_SPCI	0xc0000000	/* Legacy SPCI					*/#define HCFG_LEGACYFUNC_SDMA	0xe0000000	/* Legacy SDMA					*/#define HCFG_IOCAPTUREADDR	0x1f000000	/* The 4 LSBs of the captured I/O address.	*/#define HCFG_LEGACYWRITE	0x00800000	/* 1 = write, 0 = read 				*/#define HCFG_LEGACYWORD		0x00400000	/* 1 = word, 0 = byte 				*/#define HCFG_LEGACYINT		0x00200000	/* 1 = legacy event captured. Write 1 to clear.	*/						/* NOTE: The rest of the bits in this register	*/						/* _are_ relevant under Linux.			*/#define HCFG_CODECFORMAT_MASK	0x00070000	/* CODEC format					*/#define HCFG_CODECFORMAT_AC97	0x00000000	/* AC97 CODEC format -- Primary Output		*/#define HCFG_CODECFORMAT_I2S	0x00010000	/* I2S CODEC format -- Secondary (Rear) Output	*/#define HCFG_GPINPUT0		0x00004000	/* External pin112				*/#define HCFG_GPINPUT1		0x00002000	/* External pin110				*/#define HCFG_GPOUTPUT_MASK	0x00001c00	/* External pins which may be controlled	*/#define HCFG_GPOUT0		0x00001000	/* set to enable digital out on 5.1 cards	*/#define HCFG_JOYENABLE      	0x00000200	/* Internal joystick enable    			*/#define HCFG_PHASETRACKENABLE	0x00000100	/* Phase tracking enable			*/						/* 1 = Force all 3 async digital inputs to use	*/						/* the same async sample rate tracker (ZVIDEO)	*/#define HCFG_AC3ENABLE_MASK	0x0x0000e0	/* AC3 async input control - Not implemented	*/#define HCFG_AC3ENABLE_ZVIDEO	0x00000080	/* Channels 0 and 1 replace ZVIDEO		*/#define HCFG_AC3ENABLE_CDSPDIF	0x00000040	/* Channels 0 and 1 replace CDSPDIF		*/#define HCFG_AC3ENABLE_GPSPDIF  0x00000020      /* Channels 0 and 1 replace GPSPDIF             */#define HCFG_AUTOMUTE		0x00000010	/* When set, the async sample rate convertors	*/						/* will automatically mute their output when	*/						/* they are not rate-locked to the external	*/						/* async audio source  				*/#define HCFG_LOCKSOUNDCACHE	0x00000008	/* 1 = Cancel bustmaster accesses to soundcache */						/* NOTE: This should generally never be used.  	*/#define HCFG_LOCKTANKCACHE_MASK	0x00000004	/* 1 = Cancel bustmaster accesses to tankcache	*/						/* NOTE: This should generally never be used.  	*/#define HCFG_LOCKTANKCACHE	0x01020014#define HCFG_MUTEBUTTONENABLE	0x00000002	/* 1 = Master mute button sets AUDIOENABLE = 0.	*/						/* NOTE: This is a 'cheap' way to implement a	*/						/* master mute function on the mute button, and	*/						/* in general should not be used unless a more	*/						/* sophisticated master mute function has not	*/						/* been written.       				*/#define HCFG_AUDIOENABLE	0x00000001	/* 0 = CODECs transmit zero-valued samples	*/						/* Should be set to 1 when the EMU10K1 is	*/						/* completely initialized.			*///For Audigy, MPU port move to 0x70-0x74 ptr register#define MUDATA			0x18		/* MPU401 data register (8 bits)       		*/#define MUCMD			0x19		/* MPU401 command register (8 bits)    		*/#define MUCMD_RESET		0xff		/* RESET command				*/#define MUCMD_ENTERUARTMODE	0x3f		/* Enter_UART_mode command			*/						/* NOTE: All other commands are ignored		*/#define MUSTAT			MUCMD		/* MPU401 status register (8 bits)     		*/#define MUSTAT_IRDYN		0x80		/* 0 = MIDI data or command ACK			*/#define MUSTAT_ORDYN		0x40		/* 0 = MUDATA can accept a command or data	*/#define A_IOCFG			0x18		/* GPIO on Audigy card (16bits)			*/#define A_GPINPUT_MASK		0xff00#define A_GPOUTPUT_MASK		0x00ff#define TIMER			0x1a		/* Timer terminal count register (16-bit)	*/						/* NOTE: After the rate is changed, a maximum	*/						/* of 1024 sample periods should be allowed	*/						/* before the new rate is guaranteed accurate.	*/#define TIMER_RATE_MASK		0x03ff		/* Timer interrupt rate in sample periods	*/						/* 0 == 1024 periods, [1..4] are not useful	*/#define AC97DATA		0x1c		/* AC97 register set data register (16 bit)	*/#define AC97ADDRESS		0x1e		/* AC97 register set address register (8 bit)	*/#define AC97ADDRESS_READY	0x80		/* Read-only bit, reflects CODEC READY signal	*/#define AC97ADDRESS_ADDRESS	0x7f		/* Address of indexed AC97 register		*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -