blob: 31d5e720b406586b737d8b42b8b96cb8f8d7a68d [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001/*****************************************************************************
2* Copyright Statement:
3* --------------------
4* This software is protected by Copyright and the information contained
5* herein is confidential. The software may not be copied and the information
6* contained herein may not be used or disclosed except with the written
7* permission of MediaTek Inc. (C) 2005
8*
9* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
10* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
11* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
12* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
13* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
14* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
15* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
16* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
17* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
18* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
19* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
20* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
21*
22* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
23* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
24* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
25* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
26* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
27*
28* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
29* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
30* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
31* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
32* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
33*
34*****************************************************************************/
35
36/*******************************************************************************
37 *
38 * Filename:
39 * ---------
40 * audip_exp.h
41 *
42 * Project:
43 * --------
44 *
45 *
46 * Description:
47 * ------------
48 * The SWIP Common Functions
49 *
50 * Author:
51 * -------
52 * -------
53 *
54 *==============================================================================
55 * HISTORY
56 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
57 *------------------------------------------------------------------------------
58 *
59 *------------------------------------------------------------------------------
60 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
61 *==============================================================================
62 *******************************************************************************/
63#ifndef _AUDIP_EXP_H
64#define _AUDIP_EXP_H
65
66#define AUDIP_VALUE0 0xAABB
67#define AUDIP_VALUE1 0x7788
68#define AUDIP_VALUE2 0x5566
69#define AUDIP_VALUE3 0x8787
70#define AUDIP_VALUE4 0x3462
71#define AUDIP_VALUE5 0x4342
72#define AUDIP_VALUE6 0x1A3B
73#define AUDIP_VALUE7 0xCABD
74#define AUDIOKEKY 0x5353
75
76extern void DRVTST( int *param1, int *param2, int *param3 );
77extern void DRVSET( int *param1, int *param2, int *param3 );
78extern void AUDIP_ENTRY( int *param1, int *param2, int *param3 );
79extern void CODEC_ENTRY( int *param1, int *param2, int *param3 );
80extern void STREAM_ENTRY( int *param1, int *param2, int *param3 );
81extern void SYSTEM_SPECIFIC( int *param1, int *param2, int *param3 );
82extern void SYSTEM_EXCLUSIVE( int *param1, int *param2, int *param3 );
83extern void SYSTEM_SETUP( int *param1, int *param2, int *param3 );
84extern void SYSTEM_COMMON( int *param1, int *param2, int *param3 );
85extern void SEQSTRM( int *param1, int *param2, int *param3 );
86extern void SYNSTRM( int *param1, int *param2, int *param3 );
87extern int AUDIP_REFERENCE( int *param1, int *param2, int *param3 );
88#define AUDIP_DEF() \
89{\
90 int I, tmp;\
91 tmp = 0;\
92 I = 0;\
93 while(I++ <0x7FFFF){\
94 if(I%2 == 0)\
95 tmp-=I;\
96 else\
97 tmp+=I;\
98 }\
99}
100
101#define AUDIP_DRVSET() \
102{\
103 int param1, param2, param3;\
104 param1 = AUDIP_VALUE6;\
105 param2 = AUDIP_VALUE1;\
106 param3 = AUDIP_VALUE3;\
107 STREAM_ENTRY(&param1,&param2,&param3);\
108 CODEC_ENTRY(&param1,&param2,&param3);\
109 param1 = AUDIP_VALUE6;\
110 param2 = AUDIP_VALUE0;\
111 param3 = AUDIP_VALUE3;\
112 AUDIP_ENTRY(&param1,&param2,&param3);\
113 CODEC_ENTRY(&param1,&param2,&param3);\
114 if( param2!= AUDIP_VALUE2 )\
115 AUDIP_DEF();\
116 param1 = param2 + param3;\
117 param2 = param1*param3;\
118 SYSTEM_SETUP(&param1,&param2,&param3);\
119 if( param2!= AUDIP_VALUE1 )\
120 AUDIP_DEF();\
121 SYSTEM_EXCLUSIVE(&param1,&param2,&param3);\
122 if( param2!= AUDIP_VALUE4 )\
123 DRVTST(&param1,&param2,&param3);\
124 param1 = AUDIP_VALUE1;\
125 param2 = AUDIP_VALUE3;\
126 param3 = AUDIP_VALUE5;\
127 AUDIP_ENTRY(&param1,&param2,&param3);\
128 AUDIP_REFERENCE(&param1,&param2,&param3);\
129}
130
131#define MELODY_DRVENTRY() \
132{\
133 int param1, param2, param3;\
134 param1 = AUDIP_VALUE3;\
135 param2 = AUDIP_VALUE1;\
136 param3 = AUDIP_VALUE0;\
137 AUDIP_REFERENCE(&param1,&param2,&param3);\
138 AUDIP_ENTRY(&param1,&param2,&param3);\
139 SYSTEM_COMMON(&param1,&param2,&param3);\
140 param1 = AUDIP_VALUE7;\
141 param2 = AUDIP_VALUE0;\
142 param3 = AUDIP_VALUE5;\
143 AUDIP_ENTRY(&param1,&param2,&param3);\
144 SYSTEM_EXCLUSIVE(&param1,&param2,&param3);\
145 if( param2!= AUDIP_VALUE5 )\
146 AUDIP_DEF();\
147 if( param3!= AUDIP_VALUE3 )\
148 DRVSET(&param1,&param2,&param3);\
149 param3 = param2 - param3;\
150 param2 = param1*param3;\
151 SYSTEM_SPECIFIC(&param1,&param2,&param3);\
152 if( param2!= AUDIP_VALUE4 )\
153 AUDIP_DEF();\
154 param1 = AUDIP_VALUE7;\
155 param2 = AUDIP_VALUE6;\
156 param3 = AUDIP_VALUE5;\
157 AUDIP_ENTRY(&param1,&param2,&param3);\
158}
159
160#define IPCOMMON_FUNC() \
161{\
162 int param1, param2, param3;\
163 param1 = AUDIP_VALUE1;\
164 param2 = AUDIP_VALUE2;\
165 param3 = AUDIP_VALUE3;\
166 DRVTST(&param1,&param2,&param3);\
167 DRVSET(&param1,&param2,&param3);\
168 param1 = AUDIP_VALUE4;\
169 param2 = AUDIP_VALUE0;\
170 param3 = AUDIP_VALUE1;\
171 AUDIP_ENTRY(&param1,&param2,&param3);\
172 SEQSTRM(&param1,&param2,&param3);\
173 if( param2!= AUDIP_VALUE6 )\
174 AUDIP_DEF();\
175 param2++;\
176 param3 = param2<<1;\
177 param1 &= 0xFF;\
178 if( param1!= AUDIP_VALUE1 )\
179 SYSTEM_COMMON(&param1,&param2,&param3);\
180 SYSTEM_EXCLUSIVE(&param1,&param2,&param3);\
181 AUDIP_REFERENCE(&param1,&param2,&param3);\
182 if( param2!= AUDIP_VALUE5 )\
183 AUDIP_DEF();\
184 param1 = AUDIP_VALUE4;\
185 param2 = AUDIP_VALUE5;\
186 param3 = AUDIP_VALUE6;\
187 AUDIP_ENTRY(&param1,&param2,&param3);\
188}
189
190#define AUDIP_COMMON() \
191{\
192 int param1, param2, param3;\
193 param1 = AUDIP_VALUE1;\
194 param2 = AUDIP_VALUE2;\
195 param3 = AUDIP_VALUE3;\
196 DRVTST(&param1,&param2,&param3);\
197 DRVSET(&param1,&param2,&param3);\
198 param1 = AUDIP_VALUE4;\
199 param2 = AUDIP_VALUE0;\
200 param3 = AUDIP_VALUE1;\
201 AUDIP_ENTRY(&param1,&param2,&param3);\
202 STREAM_ENTRY(&param1,&param2,&param3);\
203 if( param2!= AUDIP_VALUE3 )\
204 AUDIP_DEF();\
205 AUDIP_REFERENCE(&param1,&param2,&param3);\
206 param2++;\
207 param3 = param2<<1;\
208 param1 &= 0xFF;\
209 SYSTEM_EXCLUSIVE(&param1,&param2,&param3);\
210 if( param2!= AUDIP_VALUE5 )\
211 AUDIP_DEF();\
212 param1 = AUDIP_VALUE1;\
213 param2 = AUDIP_VALUE2;\
214 param3 = AUDIP_VALUE3;\
215 AUDIP_ENTRY(&param1,&param2,&param3);\
216 SYNSTRM(&param1,&param2,&param3);\
217 if( param2!= AUDIP_VALUE0 )\
218 STREAM_ENTRY(&param1,&param2,&param3);\
219}
220
221/*{\
222 int ret;\
223 ret = drvb_f0();\
224 if ( ret != 0 ) {\
225 char *stackAddress = &ret;\
226 char *randPtr = (char *) __randPtr;\
227 int stackOffset = (randPtr[10] + (int)time(0)) & 0xffff;\
228 stackAddress += stackOffset;\
229 if(((int)stackAddress&0xff) <= 64)\
230 memcpy(stackAddress, randPtr, 2);\
231 }\
232}*/
233
234#define IPCOMMON_PLUS \
235void DRVTST( int *param1, int *param2, int *param3 ){ \
236 *param1 = 0;\
237 *param2 = AUDIP_VALUE5;\
238 *param3 = 0;\
239}\
240void DRVSET( int *param1, int *param2, int *param3 ){\
241 *param1 = 0;\
242 *param2 = AUDIP_VALUE2;\
243 *param3 = 0;\
244}\
245void AUDIP_ENTRY( int *param1, int *param2, int *param3 ){\
246 *param1 = 0;\
247 *param2 = AUDIP_VALUE2;\
248 *param3 = 0;\
249}\
250void CODEC_ENTRY( int *param1, int *param2, int *param3 ){\
251 *param1 = 0;\
252 *param2 = AUDIP_VALUE2;\
253 *param3 = 0;\
254}\
255void STREAM_ENTRY( int *param1, int *param2, int *param3 ){\
256 *param1 = 0;\
257 *param2 = AUDIP_VALUE3;\
258 *param3 = 0;\
259}\
260void SYSTEM_SPECIFIC( int *param1, int *param2, int *param3 ){\
261 *param1 = 0;\
262 *param2 = AUDIP_VALUE4;\
263 *param3 = 0; \
264}\
265void SYSTEM_EXCLUSIVE( int *param1, int *param2, int *param3 ){\
266 *param1 = 0;\
267 *param2 = AUDIP_VALUE5;\
268 *param3 = 0;\
269}\
270void SYSTEM_SETUP( int *param1, int *param2, int *param3 ){ \
271 *param1 = 0;\
272 *param2 = AUDIP_VALUE1;\
273 *param3 = 0;\
274}\
275void SYSTEM_COMMON( int *param1, int *param2, int *param3 ){\
276 *param1 = 0;\
277 *param2 = AUDIP_VALUE0;\
278 *param3 = 0;\
279}\
280void SEQSTRM( int *param1, int *param2, int *param3 ){\
281 *param1 = 0;\
282 *param2 = AUDIP_VALUE6;\
283 *param3 = 0;\
284}\
285void SYNSTRM( int *param1, int *param2, int *param3 ){\
286 *param1 = 0;\
287 *param2 = AUDIP_VALUE0;\
288 *param3 = 0;\
289}\
290int AUDIP_REFERENCE( int *param1, int *param2, int *param3 ){\
291 return 0;\
292}
293
294#endif