summaryrefslogtreecommitdiff
path: root/attic/drv/oss_allegro/hckernel.h
blob: fe7a2e7c7739c671f1e2762ba016b63f9478f1ef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
/*
 *      ESS Technology allegro audio driver.
 *
 *      Copyright (C) 1992-2000  Don Kim (don.kim@esstech.com)
 */
#ifndef _HCKERNEL_H_
#define _HCKERNEL_H_




#define  IIS_APU56     0x38
#define  IIS_APU57     0x39

#define  DSP_4_CHANNEL  0x08000000	/*AY specify DSP 4 channel */
#define  DSP_6_CHANNEL  0x04000000	/*AY specify DSP 6 channel */

#define DSP_MEMORY_INDEX  0x80
#define DSP_MEMORY_TYPE   0x82
#define DSP_DATA_MEMORY   0x0003
#define DSP_CODE_MEMORY   0x0002
#define DSP_MEMORY_VALUE  0x84

#define NOT_READY       0
#define RUNNING         1
#define PAUSE           2
#define STOP            3

/*DSPAPU */
#define DSPAPU_IN_BUF_SIZE    96	/* 32 * 3 BUFFERS */
#define DSPAPU_OUT_BUF_SIZE   96	/* 32 * 3 BUFFERS */

/****************** SRC3 Begin ********************** */
/* max # of playback/record clients */

#define MAXSRCPLAYCLIENT   1	/* ASSUME NO MULTIPLE STREAMS */
#define MAXSRCRECCLIENT    1
#define MAXSVCLIENT        1	/* assume 1 for speaker virtualization */


/* value for bDirection */
#define SRCPLAYBACK        TRUE
#define SRCRECORD          FALSE

/*/dwMode */
#define SRC_PCM_16BIT           0x01
#define SRC_PCM_8BIT            0x02
#define SRC_PCM_STEREO          0x04
#define SRC_PCM_MONO            0x08


/* khs 0302 */
#define SRC3_PLAYBACK            0
#define SRC3_RECORD              1

#define SRC3_STEREO              0
#define SRC3_MONO                1

#define SRC3_16BIT               0
#define SRC3_8BIT                1

#define SRC3_SR_44100            0
#define SRC3_SR_32000            1
#define SRC3_SR_22050            2
#define SRC3_SR_11025            3
#define SRC3_SR_8000             4

#define DSP_PROGRAM_SIZE                0x15c	/* maximum program size */
#define SRC_PB_FILTER_SIZE              666	/* maximum playback filter size */

#define SRC3_DIRECTION_OFFSET           CDATA_HEADER_LEN
#define SRC3_MODE_OFFSET                CDATA_HEADER_LEN + 1
#define SRC3_WORD_LENGTH_OFFSET         CDATA_HEADER_LEN + 2
#define SRC3_PARAMETER_OFFSET           CDATA_HEADER_LEN + 3
#define SRC3_COEFF_ADDR_OFFSET          CDATA_HEADER_LEN + 8
#define SRC3_FILTAP_ADDR_OFFSET         CDATA_HEADER_LEN + 10
#define SRC3_TEMP_INBUF_ADDR_OFFSET     CDATA_HEADER_LEN + 16
#define SRC3_TEMP_OUTBUF_ADDR_OFFSET    CDATA_HEADER_LEN + 17
#define FOR_FUTURE_USE                  10	/* for storing temporary variable in future */

/****************** SRC3 End ********************** */


/****************** Speaker Virtualization Begin ********************** */

 /* specify the sample rate flag = 1 for 44.1K ; 0 for 48K */
 /* default is 0 so it is for 48K */
#define SPKRVIRT_SR_FLAG             CDATA_HEADER_LEN  + 1
#define SPKRVIRT_44K                 0X0001
#define SPKRVIRT_48K                 0X0000


/*VMAx Speaker Virtualization */
#define SPKRVIRT_VARIABLE_LEN        81	/* IN WORD */
#define SPKRVIRT_IN_BUFFER_OFFSET    CDATA_HEADER_LEN  + SPKRVIRT_VARIABLE_LEN
#define SPKRVIRT_IN_BUFFER_SIZE      (384 * 2)	/* BYTE */

#define SPKRVIRT_OUT_BUFFER_OFFSET   SPKRVIRT_IN_BUFFER_OFFSET + (SPKRVIRT_IN_BUFFER_SIZE / 2)
#define SPKRVIRT_OUT_BUFFER_SIZE     (192 * 2)	/* BYTE */

#define SPKRVIRT_OWN_DATA_SIZE       SPKRVIRT_OUT_BUFFER_OFFSET + (SPKRVIRT_OUT_BUFFER_SIZE / 2)

/*CRL Sensaura */

#define CRL_SPKRVIRT_VARIABLE_LEN        237	/* IN WORD */

#define CRL_SPKRVIRT_IN_BUFFER_OFFSET    CDATA_HEADER_LEN  + CRL_SPKRVIRT_VARIABLE_LEN
/*#define CRL_SPKRVIRT_IN_BUFFER_SIZE      (384 * 2)  // BYTE */
#define CRL_SPKRVIRT_IN_BUFFER_SIZE      (256 * 2)	/* BYTE */

#define CRL_SPKRVIRT_OUT_BUFFER_OFFSET   CRL_SPKRVIRT_IN_BUFFER_OFFSET + (CRL_SPKRVIRT_IN_BUFFER_SIZE / 2)
/*#define CRL_SPKRVIRT_OUT_BUFFER_SIZE     (192 * 2)  // BYTE */
#define CRL_SPKRVIRT_OUT_BUFFER_SIZE     (128 * 2)	/* BYTE */

#define CRL_SPKRVIRT_OWN_DATA_SIZE       CRL_SPKRVIRT_OUT_BUFFER_OFFSET + (CRL_SPKRVIRT_OUT_BUFFER_SIZE / 2)

/****************** Speaker Virtualization End ********************** */

/* WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! */
/* */
/* Do NOT change DSP_STARTTRANSFER_INFO structure without updating hckernel.inc */
/* */
/* WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! */


typedef struct sTRANSFER_INFO
{
  PCLIENT_INST pClient_Inst;
  DWORD dwAutoRepeat;
  DWORD dwHostSrcBufferAddr;
  DWORD dwHostSrcBufferLen;
  DWORD dwHostDstBufferAddr;
  DWORD dwHostDstBufferLen;
  DWORD dwDSPInBufferAddr;
  DWORD dwDSPInBufferLen;
  DWORD dwDSPOutBufferAddr;
  DWORD dwDSPOutBufferLen;
  DWORD dwDSPInConnection;
  DWORD dwDSPOutConnection;

}
TRANSFER_INFO, *PTRANSFER_INFO;


/*similar to kOpenInstance */
extern WORD __cdecl DSPxxxOpen (DWORD, DWORD, DWORD, PCLIENT_INST *);
/*similar to kCloseInstance */
extern WORD __cdecl DSPxxxClose (PCLIENT_INST, DWORD);
/*similar to kStartTransfer */
extern WORD __cdecl DSPStartXfer (PTRANSFER_INFO);
/*similar to kStopTransfer */
extern WORD __cdecl DSPStopXfer (PCLIENT_INST);
/*similar to kQueryPosition */
extern WORD __cdecl DSPQueryPosition (PCLIENT_INST, DWORD, PDWORD);
/*similar to kSetInstanceReady */
extern WORD __cdecl DSPSetInstanceReady (PCLIENT_INST);
/*similar to kSetInstanceNotReady */
extern WORD __cdecl DSPSetInstanceNotReady (PCLIENT_INST);
/*similar to kPIOInterruptHandler */
extern WORD __cdecl DSPPIOInterruptHandler (PCLIENT_INST);
extern WORD __cdecl DSPSetTimer (DWORD);
/*similar to kAlterTransfer */
extern WORD __cdecl DSPAlterTransfer (PCLIENT_INST, DWORD, DWORD, DWORD);

extern WORD __cdecl DSPUnmaskInt (void);
extern WORD __cdecl DSPMaskInt (void);

extern WORD __cdecl DSPReadWord (DWORD, DWORD, DWORD);
extern VOID __cdecl DSPWriteWord (DWORD, DWORD, DWORD, WORD);
/*similar to kI2SInterruptHandler */
extern WORD __cdecl DSPI2SInterruptHandler (PDWORD);

extern WORD __cdecl DSPOpenPassThru (PPASSTHRU *, DWORD, DWORD);
extern WORD __cdecl DSPClosePassThru (PPASSTHRU);

extern WORD gwDisable_DSP;
extern DWORD gwDisable_VMAx;
#define VMAX_MAGIC    0x564D4158
#define CRL_MAGIC     0x43524C

extern WORD gwDSPConnectIn;	/* tell DSP where to grab data from */
extern WORD gwDSPConnectOut;	/* tell DSP where to send data to */
#endif