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 38typedef struct { 39 u32 parm0; /* this_1E4 */ 40 u32 parm1; /* this_1E8 */ 41 u32 parm2; /* this_1EC */ 42 u32 parm3; /* this_1F0 */ 43 u32 this_1D0; 44} wt_voice_t; 45 46#endif /* _AU88X0_WT_H */ 47 48/* End of file */ 49