1
/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\
3
File: oct6100_chip_open_inst.h
5
Copyright (c) 2001-2007 Octasic Inc.
9
File containing all defines, macros, and structures pertaining to the file
10
oct6100_chip_open.c. All elements defined in this file are for public
11
usage of the API. All private elements are defined in the
12
oct6100_chip_open_priv.h file.
14
This file is part of the Octasic OCT6100 GPL API . The OCT6100 GPL API is
15
free software; you can redistribute it and/or modify it under the terms of
16
the GNU General Public License as published by the Free Software Foundation;
17
either version 2 of the License, or (at your option) any later version.
19
The OCT6100 GPL API is distributed in the hope that it will be useful, but
20
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
21
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
24
You should have received a copy of the GNU General Public License
25
along with the OCT6100 GPL API; if not, write to the Free Software
26
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
28
$Octasic_Release: OCT612xAPI-01.00-PR49 $
30
$Octasic_Revision: 122 $
32
\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
34
#ifndef __OCT6100_CHIP_OPEN_INST_H__
35
#define __OCT6100_CHIP_OPEN_INST_H__
37
/***************************** INCLUDE FILES *******************************/
39
/***************************** DEFINES *************************************/
41
/***************************** TYPES ***************************************/
43
typedef struct _OCT6100_API_CHIP_CONFIG_
46
PVOID pProcessContext;
48
unsigned char const *pbyImageFile; /* Byte pointer to the image file to be uploaded into the chip. */
49
UINT32 ulImageSize; /* Size of the image file (in bytes). */
52
UINT32 ulUpclkFreq; /* 33.33 or 66.66 MHz. */
53
UINT8 fEnableMemClkOut; /* TRUE/FALSE */
55
UINT8 fMultiProcessSystem;
57
UINT8 byMemoryType; /* SDRAM or DDR */
58
UINT8 byNumMemoryChips; /* Number of memory chips present. */
59
UINT32 ulMemoryChipSize; /* The size of the memory chips. */
61
UINT16 usMaxRwAccesses;
62
UINT16 usTailDisplacement;
64
/* Resource allocation parameters. */
66
UINT16 usMaxBiDirChannels;
68
UINT32 aulTdmStreamFreqs[ cOCT6100_TDM_STREAM_MAX_GROUPS ];
70
UINT8 byMaxTdmStreams;
73
UINT8 fEnableFastH100Mode;
74
UINT8 fEnableAcousticEcho; /* Acoustic echo enabled. */
76
UINT16 ausTimestampTimeslots[ 4 ];
77
UINT16 ausTimestampStreams[ 4 ];
79
UINT8 fUseSynchTimestamp;
81
/* Debug feature used to record stream information from a channel.*/
82
UINT8 fEnableChannelRecording;
84
UINT16 usMaxRemoteDebugSessions;
86
UINT8 byInterruptPolarity;
90
UINT8 fEnableExtToneDetection;
91
UINT8 fEnable2100StopEvent;
94
UINT16 usMaxConfBridges;
95
UINT16 usMaxFlexibleConfParticipants;
96
UINT16 usMaxPlayoutBuffers;
98
/* Playout event software buffer size. */
99
UINT32 ulSoftBufPlayoutEventsBufSize;
101
/* Soft buffer size. */
102
UINT32 ulSoftToneEventsBufSize;
104
UINT16 usMaxPhasingTssts;
105
UINT16 usMaxAdpcmChannels;
111
UINT8 fEnableProductionBist;
112
UINT32 ulProductionBistMode;
113
UINT32 ulNumProductionBistLoops;
115
} tOCT6100_API_CHIP_CONFIG, *tPOCT6100_API_CHIP_CONFIG;
118
typedef struct _OCT6100_API_MISCELLANEOUS_
120
/* Total size of external memories. */
121
UINT32 ulTotalMemSize;
123
UINT32 ulH100SlaveMode;
125
/* Mclk frequency generated by the chip. */
128
/* Array of UINT32s used to perform a burst of writes (avoids having to
129
allocate on the stack. The size of this array MUST NOT CHANGE (it's
131
UINT16 ausSuperArray[ cOCT6100_INTERNAL_SUPER_ARRAY_SIZE ];
133
/* Chip ID and revision.*/
135
UINT16 usChipRevision;
137
/* Lsu CPU access variables.*/
138
UINT16 usCpuLsuWritePtr;
141
/* Max number of channel supported.*/
142
UINT16 usMaxNumberOfChannels;
143
UINT16 usMaxH100Speed;
144
UINT16 usTdmClkBoundary;
146
UINT16 usNumBridgesOpened;
147
UINT16 usFirstBridge;
153
} tOCT6100_API_MISCELLANEOUS, *tPOCT6100_API_MISCELLANEOUS;
155
typedef struct _OCT6100_API_MEMORY_MAP_
157
/*-----------------------------------------------------------------------------*/
158
/* Structure contained in external memory. */
160
/* Memory mapping filled using TLV information from the chip. */
162
/* Main channel memory. */
163
UINT32 ulChanMainMemBase;
164
UINT32 ulChanMainMemSize;
166
UINT32 ulChanMainIoMemOfst;
168
UINT32 ulChanMainRinCBMemOfst;
169
UINT32 ulChanMainRinCBMemSize;
170
UINT32 ulChanMainSinCBMemOfst;
171
UINT32 ulChanMainSinCBMemSize;
172
UINT32 ulChanMainSoutCBMemOfst;
173
UINT32 ulChanMainSoutCBMemSize;
175
/* Free memory base address. */
176
UINT32 ulFreeMemBaseAddress;
178
/* Root channel config offset. */
179
UINT32 ulChanRootConfOfst;
181
/* Playout buffer info. */
182
UINT32 ulChanMainRinPlayoutMemOfst;
183
UINT32 ulChanMainRinPlayoutMemSize;
184
UINT32 ulChanMainSoutPlayoutMemOfst;
185
UINT32 ulChanMainSoutPlayoutMemSize;
187
/* Channel Stats location */
188
UINT32 ulChanMainIoStatsOfst;
189
UINT32 ulChanMainIoStatsSize;
191
/* Buffer playout fields. */
192
tOCT6100_TLV_OFFSET PlayoutRinWritePtrOfst;
193
tOCT6100_TLV_OFFSET PlayoutRinIgnoreSkipCleanOfst;
194
tOCT6100_TLV_OFFSET PlayoutRinSkipPtrOfst;
195
tOCT6100_TLV_OFFSET PlayoutSoutWritePtrOfst;
196
tOCT6100_TLV_OFFSET PlayoutSoutIgnoreSkipCleanOfst;
197
tOCT6100_TLV_OFFSET PlayoutSoutSkipPtrOfst;
198
tOCT6100_TLV_OFFSET PlayoutRinReadPtrOfst;
199
tOCT6100_TLV_OFFSET PlayoutSoutReadPtrOfst;
200
tOCT6100_TLV_OFFSET PlayoutRinHardSkipOfst;
201
tOCT6100_TLV_OFFSET PlayoutSoutHardSkipOfst;
203
/* Adaptive noise reduction. */
204
tOCT6100_TLV_OFFSET AdaptiveNoiseReductionOfst;
206
/* DC offset removal. */
207
tOCT6100_TLV_OFFSET RinDcOffsetRemovalOfst;
208
tOCT6100_TLV_OFFSET SinDcOffsetRemovalOfst;
211
tOCT6100_TLV_OFFSET RinLevelControlOfst;
212
tOCT6100_TLV_OFFSET SoutLevelControlOfst;
214
/* Auto level control. */
215
tOCT6100_TLV_OFFSET RinAutoLevelControlTargetOfst;
216
tOCT6100_TLV_OFFSET SoutAutoLevelControlTargetOfst;
218
/* High level compensation. */
219
tOCT6100_TLV_OFFSET RinHighLevelCompensationThresholdOfst;
220
tOCT6100_TLV_OFFSET SoutHighLevelCompensationThresholdOfst;
222
/* Auto level control and high level compensation status. */
223
tOCT6100_TLV_OFFSET AlcHlcStatusOfst;
225
/* Confort Noise Mode. */
226
tOCT6100_TLV_OFFSET ComfortNoiseModeOfst;
228
/* NLP control field. */
229
tOCT6100_TLV_OFFSET NlpControlFieldOfst;
231
/* VAD control field offset.*/
232
tOCT6100_TLV_OFFSET VadControlFieldOfst;
234
/* NLP Trivial field offset. */
235
tOCT6100_TLV_OFFSET NlpTrivialFieldOfst;
237
/* Acoustic echo field offset. */
238
tOCT6100_TLV_OFFSET AecFieldOfst;
240
/* Acoustic echo default ERL field offset. */
241
tOCT6100_TLV_OFFSET AecDefaultErlFieldOfst;
243
/* Non-linearity behavior A and B field offset. */
244
tOCT6100_TLV_OFFSET PcmLeakFieldOfst;
245
tOCT6100_TLV_OFFSET NlpConvCapFieldOfst;
247
/* Default ERL field offset. */
248
tOCT6100_TLV_OFFSET DefaultErlFieldOfst;
250
/* Tone Removal field offset.*/
251
tOCT6100_TLV_OFFSET ToneRemovalFieldOfst;
255
/* Channel config fields offset. */
256
tOCT6100_TLV_OFFSET ChanMainIoMaxEchoPointOfst;
257
tOCT6100_TLV_OFFSET TailDisplEnableOfst;
259
/* Pouch fields offset. */
260
tOCT6100_TLV_OFFSET PouchBootInstructionOfst;
261
tOCT6100_TLV_OFFSET PouchBootResultOfst;
262
tOCT6100_TLV_OFFSET PouchTailDisplOfst;
264
/* 2100 Hz Auto disabling fields offset. */
265
tOCT6100_TLV_OFFSET ToneDisablerControlOfst;
267
/* Conferencing dominant speaker field offset. */
268
tOCT6100_TLV_OFFSET DominantSpeakerFieldOfst;
270
/* Conferencing noise reduction field offset. */
271
tOCT6100_TLV_OFFSET ConferencingNoiseReductionOfst;
273
/* Per channel tail displacement field offset. */
274
tOCT6100_TLV_OFFSET PerChanTailDisplacementFieldOfst;
276
/* Per channel tail length field offset. */
277
tOCT6100_TLV_OFFSET PerChanTailLengthFieldOfst;
279
/* AF control/echo cancellation bypass. */
280
tOCT6100_TLV_OFFSET AftControlOfst;
282
/* Voice detected stat field offset. */
283
tOCT6100_TLV_OFFSET SinVoiceDetectedStatOfst;
285
/* Rin currently applied gain field offset. */
286
tOCT6100_TLV_OFFSET RinAppliedGainStatOfst;
288
/* Sout currently applied gain field offset. */
289
tOCT6100_TLV_OFFSET SoutAppliedGainStatOfst;
291
/* Adaptive listener enhancement field offset. */
292
tOCT6100_TLV_OFFSET AdaptiveAleOfst;
294
/* Rin NR field offset. */
295
tOCT6100_TLV_OFFSET RinAnrOfst;
297
/* Rin NR value field offset. */
298
tOCT6100_TLV_OFFSET RinAnrValOfst;
300
/* Sin Mute field offset. */
301
tOCT6100_TLV_OFFSET SinMuteOfst;
303
/* Rin Mute field offset. */
304
tOCT6100_TLV_OFFSET RinMuteOfst;
306
/* Sout ANR SNR enhancement offset. */
307
tOCT6100_TLV_OFFSET AnrSnrEnhancementOfst;
309
/* Sout ANR voice-noise segregation offset. */
310
tOCT6100_TLV_OFFSET AnrVoiceNoiseSegregationOfst;
312
/* Tone disabler VQE activation delay offset. */
313
tOCT6100_TLV_OFFSET ToneDisablerVqeActivationDelayOfst;
315
/* AF tail displacement value configuration offset. */
316
tOCT6100_TLV_OFFSET AfTailDisplacementFieldOfst;
318
/* Pouch counter field offset. */
319
tOCT6100_TLV_OFFSET PouchCounterFieldOfst;
321
/* Acoustic echo tail length. */
322
tOCT6100_TLV_OFFSET AecTailLengthFieldOfst;
324
/* Is ISR called field offset. */
325
tOCT6100_TLV_OFFSET IsIsrCalledFieldOfst;
327
/* Music protection enable field offset. */
328
tOCT6100_TLV_OFFSET MusicProtectionFieldOfst;
330
/* Rin port energy level statistics field offset. */
331
tOCT6100_TLV_OFFSET RinEnergyStatFieldOfst;
333
/* Sout port energy level statistics field offset. */
334
tOCT6100_TLV_OFFSET SoutEnergyStatFieldOfst;
336
/* Double talk behavior field offset. */
337
tOCT6100_TLV_OFFSET DoubleTalkBehaviorFieldOfst;
339
/* Idle code detection field offset. */
340
tOCT6100_TLV_OFFSET IdleCodeDetectionFieldOfst;
342
/* TSI memory mapping information.*/
343
UINT32 ulNumTsiEntries;
345
/*-----------------------------------------------------------------------------*/
347
} tOCT6100_API_MEMORY_MAP, *tPOCT6100_API_MEMORY_MAP;
349
typedef struct _OCT6100_API_SOFT_BUFS_
351
/* To avoid compilation errors. */
352
UINT32 ulDummyVariable;
354
/* Tone events buffer pointers. */
355
UINT32 ulToneEventBufferWritePtr;
356
UINT32 ulToneEventBufferReadPtr;
357
UINT32 ulToneEventBufferSize;
358
UINT32 ulToneEventBufferMemOfst;
359
UINT32 ulToneEventBufferOverflowCnt;
361
/* Playout events buffer pointers. */
362
UINT32 ulBufPlayoutEventBufferWritePtr;
363
UINT32 ulBufPlayoutEventBufferReadPtr;
364
UINT32 ulBufPlayoutEventBufferSize;
365
UINT32 ulBufPlayoutEventBufferMemOfst;
366
UINT32 ulBufPlayoutEventBufferOverflowCnt;
368
} tOCT6100_API_SOFT_BUFS, *tPOCT6100_API_SOFT_BUFS;
370
typedef struct _OCT6100_API_IMAGE_REGION_
378
UINT32 ulPart1BaseAddress;
379
UINT32 ulPart2BaseAddress;
381
} tOCT6100_API_IMAGE_REGION, *tPOCT6100_API_IMAGE_REGION;
383
typedef struct _OCT6100_API_IMAGE_INFO_
385
UINT8 fBufferPlayout;
386
UINT8 fAdaptiveNoiseReduction;
387
UINT8 fRinDcOffsetRemoval;
388
UINT8 fSinDcOffsetRemoval;
390
UINT8 fRinAutoLevelControl;
391
UINT8 fSoutAutoLevelControl;
392
UINT8 fRinHighLevelCompensation;
393
UINT8 fSoutHighLevelCompensation;
398
UINT8 fSilenceSuppression;
401
UINT8 fTailDisplacement;
402
UINT8 fPerChannelTailDisplacement;
410
UINT8 fNonLinearityBehaviorA;
411
UINT8 fNonLinearityBehaviorB;
412
UINT8 fAecDefaultErl;
416
UINT8 fConferencingNoiseReduction;
417
UINT8 fMusicProtection;
418
UINT8 fDominantSpeakerEnabled;
421
UINT8 fSinVoiceDetectedStat;
422
UINT8 fRinAppliedGainStat;
423
UINT8 fSoutAppliedGainStat;
425
UINT8 fListenerEnhancement;
426
UINT8 fRoutNoiseReduction;
427
UINT8 fRoutNoiseReductionLevel;
431
UINT8 fAnrSnrEnhancement;
432
UINT8 fAnrVoiceNoiseSegregation;
433
UINT8 fRinBufferPlayoutHardSkip;
434
UINT8 fSoutBufferPlayoutHardSkip;
436
UINT16 usMaxNumberOfChannels;
437
UINT8 fPerChannelTailLength;
438
UINT8 fToneDisablerVqeActivationDelay;
440
UINT32 ulToneProfileNumber;
442
UINT16 usMaxTailDisplacement;
443
UINT16 usMaxTailLength;
445
UINT8 byNumToneDetectors;
446
UINT8 byMaxNumberPlayoutEvents;
448
UINT8 fAfTailDisplacement;
449
UINT8 fAecTailLength;
451
UINT8 fMusicProtectionConfiguration;
454
UINT8 fBufferPlayoutSkipInEvents;
455
UINT8 fSoutNoiseBleaching;
457
UINT8 fRinEnergyStat;
458
UINT8 fSoutEnergyStat;
460
UINT8 fDoubleTalkBehavior;
461
UINT8 fDoubleTalkBehaviorFieldOfst;
463
UINT8 fIdleCodeDetection;
464
UINT8 fIdleCodeDetectionConfiguration;
470
UINT8 szVersionNumber[ cOCT6100_VERSION_NUMBER_MAX_SIZE ];
473
tOCT6100_TLV_TONE_INFO aToneInfo[ cOCT6100_MAX_TONE_EVENT ];
475
} tOCT6100_API_IMAGE_INFO, *tPOCT6100_API_IMAGE_INFO;
477
typedef struct _OCT6100_API_MIXER_
479
/* Pointer to the various event region. */
480
UINT16 usFirstSoutCopyEventPtr;
481
UINT16 usLastSoutCopyEventPtr;
483
UINT16 usFirstBridgeEventPtr;
484
UINT16 usLastBridgeEventPtr;
486
UINT16 usFirstSinCopyEventPtr;
487
UINT16 usLastSinCopyEventPtr;
489
/* Recording event info. */
490
UINT16 usRecordCopyEventIndex;
491
UINT16 usRecordSinEventIndex;
493
} tOCT6100_API_MIXER, tPOCT6100_API_MIXER;
496
typedef struct _OCT6100_API_BUFFER_PLAYOUT_MALLOC_INFO_
498
/* Next node to be checked for free memory. */
501
/* First unused node in the unused list. */
502
UINT32 ulFirstUnusedNode;
504
/* Last unused node in the unused list. */
505
UINT32 ulLastUnusedNode;
507
/* Count of unused nodes. */
508
UINT32 ulUnusedNodeCnt;
510
} tOCT6100_API_BUFFER_PLAYOUT_MALLOC_INFO, *tPOCT6100_API_BUFFER_PLAYOUT_MALLOC_INFO;
515
#endif /* __OCT6100_CHIP_OPEN_INST_H__ */