| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | /*************************************************************************** | 
 | 2 |  *           WT register offsets. | 
 | 3 |  * | 
 | 4 |  *  Wed Oct 22 13:50:20 2003 | 
 | 5 |  *  Copyright  2003  mjander | 
 | 6 |  *  mjander@users.sourceforge.org | 
 | 7 |  ****************************************************************************/ | 
 | 8 | #ifndef _AU88X0_WT_H | 
 | 9 | #define _AU88X0_WT_H | 
 | 10 |  | 
 | 11 | /* WT channels are grouped in banks. Each bank has 0x20 channels. */ | 
 | 12 | /* Bank register address boundary is 0x8000 */ | 
 | 13 |  | 
 | 14 | #define NR_WT_PB 0x20 | 
 | 15 |  | 
 | 16 | /* WT bank base register (as dword address). */ | 
 | 17 | #define WT_BAR(x) (((x)&0xffe0)<<0x8) | 
 | 18 | #define WT_BANK(x) (x>>5) | 
 | 19 | /* WT Bank registers */ | 
 | 20 | #define WT_CTRL(bank)	(((((bank)&1)<<0xd) + 0x00)<<2)	/* 0x0000 */ | 
 | 21 | #define WT_SRAMP(bank)	(((((bank)&1)<<0xd) + 0x01)<<2)	/* 0x0004 */ | 
 | 22 | #define WT_DSREG(bank)	(((((bank)&1)<<0xd) + 0x02)<<2)	/* 0x0008 */ | 
 | 23 | #define WT_MRAMP(bank)	(((((bank)&1)<<0xd) + 0x03)<<2)	/* 0x000c */ | 
 | 24 | #define WT_GMODE(bank)	(((((bank)&1)<<0xd) + 0x04)<<2)	/* 0x0010 */ | 
 | 25 | #define WT_ARAMP(bank)	(((((bank)&1)<<0xd) + 0x05)<<2)	/* 0x0014 */ | 
 | 26 | /* WT Voice registers */ | 
 | 27 | #define WT_STEREO(voice)	((WT_BAR(voice)+ 0x20 +(((voice)&0x1f)>>1))<<2)	/* 0x0080 */ | 
 | 28 | #define WT_MUTE(voice)		((WT_BAR(voice)+ 0x40 +((voice)&0x1f))<<2)	/* 0x0100 */ | 
 | 29 | #define WT_RUN(voice)		((WT_BAR(voice)+ 0x60 +((voice)&0x1f))<<2)	/* 0x0180 */ | 
 | 30 | /* Some kind of parameters. */ | 
 | 31 | /* PARM0, PARM1 : Filter (0xFF000000), SampleRate (0x0000FFFF) */ | 
 | 32 | /* PARM2, PARM3 : Still unknown */ | 
 | 33 | #define WT_PARM(x,y)	(((WT_BAR(x))+ 0x80 +(((x)&0x1f)<<2)+(y))<<2)	/* 0x0200 */ | 
 | 34 | #define WT_DELAY(x,y)	(((WT_BAR(x))+ 0x100 +(((x)&0x1f)<<2)+(y))<<2)	/* 0x0400 */ | 
 | 35 |  | 
 | 36 | /* Numeric indexes used by SetReg() and GetReg() */ | 
 | 37 | #if 0 | 
 | 38 | enum { | 
 | 39 | 	run = 0,		/* 0  W 1:run 0:stop */ | 
 | 40 | 	parm0,			/* 1  W filter, samplerate */ | 
 | 41 | 	parm1,			/* 2  W filter, samplerate */ | 
 | 42 | 	parm2,			/* 3  W  */ | 
 | 43 | 	parm3,			/* 4  RW volume. This value is calculated using floating point ops. */ | 
 | 44 | 	sramp,			/* 5  W */ | 
 | 45 | 	mute,			/* 6  W 1:mute, 0:unmute */ | 
 | 46 | 	gmode,			/* 7  RO Looks like only bit0 is used. */ | 
 | 47 | 	aramp,			/* 8  W */ | 
 | 48 | 	mramp,			/* 9  W */ | 
 | 49 | 	ctrl,			/* a  W */ | 
 | 50 | 	delay,			/* b  W All 4 values are written at once with same value. */ | 
 | 51 | 	dsreg,			/* c  (R)W */ | 
 | 52 | } wt_reg; | 
 | 53 | #endif | 
 | 54 |  | 
 | 55 | typedef struct { | 
| Takashi Iwai | 97c67b6 | 2006-01-13 17:16:29 +0100 | [diff] [blame^] | 56 | 	u32 parm0;	/* this_1E4 */ | 
 | 57 | 	u32 parm1;	/* this_1E8 */ | 
 | 58 | 	u32 parm2;	/* this_1EC */ | 
 | 59 | 	u32 parm3;	/* this_1F0 */ | 
 | 60 | 	u32 this_1D0; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 61 | } wt_voice_t; | 
 | 62 |  | 
 | 63 | #endif				/* _AU88X0_WT_H */ | 
 | 64 |  | 
 | 65 | /* End of file */ |