blob: c2b308cda6ffa0ca6967827b092b8ec7593ebd81 [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) 2012
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 * L1audio_idma.c
41 *
42 * Project:
43 * --------
44 * MAUI
45 *
46 * Description:
47 * ------------
48 * transfer data by IDMA
49 * address-mode and short-mode could be predefined switched.
50 *
51 * Author:
52 * -------
53 * -------
54 *
55 *===========================================================
56 * HISTORY
57 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
58 *----------------------------------------------------------------------------
59 * removed!
60 * removed!
61 * removed!
62 *
63 * removed!
64 * removed!
65 * removed!
66 *
67 * removed!
68 * removed!
69 * removed!
70 *
71 * removed!
72 * removed!
73 * removed!
74 *
75 * removed!
76 * removed!
77 * removed!
78 *
79 * removed!
80 * removed!
81 * removed!
82 *
83 * removed!
84 * removed!
85 * removed!
86 *
87 * removed!
88 * removed!
89 * removed!
90 *
91 *
92 *----------------------------------------------------------------------------
93 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
94 *===========================================================
95*****************************************************************************/
96
97#include "reg_base.h"
98#include "sync_data.h"
99
100// #include "audio_def.h"
101#include "l1aud_common_def.h"
102
103/*void IDMA_WriteToDSP_Duplicate(volatile kal_uint16 *dst, kal_uint16 *src, kal_uint32 length)
104{
105 kal_int32 i;
106#ifdef L1AUDIO_IDMA_ALL_ADDRESS_MODE
107
108 for(i=length; i>0;i-=2)
109 {
110 *dst++ = *src;
111 *dst++ = *src++;
112 }
113#else
114
115 *dst = *src;
116 *IDMA_SHORT_ADDR = *src++;
117 for(i=length-2; i>0;i-=2)
118 {
119 *IDMA_SHORT_ADDR=*src;
120 *IDMA_SHORT_ADDR=*src++;
121 }
122#endif
123
124 Data_Sync_Barrier();
125}*/
126
127void EMI_WriteToDSP(kal_uint16 *dst, kal_uint16 *src, kal_uint32 length)
128{
129 //kal_int32 i;
130#ifdef L1AUDIO_IDMA_ALL_ADDRESS_MODE
131
132 //for(i=length; i>0;i--)
133 // *dst++ = *src++;
134 kal_mem_cpy(dst, (const void *)src, length<<1);
135#else
136
137 *dst = *src++;
138 for(i=length-1; i>0;i--)
139 *IDMA_SHORT_ADDR=*src++;
140
141#endif
142
143 Data_Sync_Barrier();
144}
145
146
147/*void IDMA_FillToDSP(volatile kal_uint16 *dst, kal_uint16 value, kal_uint32 length)
148{
149 kal_int32 i;
150#ifdef L1AUDIO_IDMA_ALL_ADDRESS_MODE
151
152 for(i=length; i>0;i--)
153 *dst++ = value;
154
155#else
156
157 *dst = value;
158 for(i=length-1; i>0;i--)
159 *IDMA_SHORT_ADDR=value;
160
161#endif
162
163 Data_Sync_Barrier();
164}*/
165
166void EMI_ReadFromDSP(kal_uint16 *dst, kal_uint16 *src, kal_uint32 length)
167{
168 //kal_int32 i;
169
170#ifdef L1AUDIO_IDMA_ALL_ADDRESS_MODE
171
172 //for( i = length; i > 0; i-- )
173 // *dst++ = *src++;
174 kal_mem_cpy(dst, (const void *)src, length<<1);
175#else
176
177 *dst = *src; // dummy read
178 for(i=length; i>0;i--)
179 *dst++ = *IDMA_SHORT_ADDR;
180
181#endif
182}
183/*
184void IDMA_ReadFromDSP_Skip_1(kal_uint16 *dst, volatile kal_uint16 *src, kal_uint32 length)
185{
186 kal_int32 i;
187
188#ifdef L1AUDIO_IDMA_ALL_ADDRESS_MODE
189
190 for( i = length; i > 0; i-- )
191 {
192 *dst++ = *src++;
193 dst++;
194 }
195
196#else
197
198 *dst = *src; // dummy read
199 for(i=length; i>0;i--)
200 {
201 *dst++ = *IDMA_SHORT_ADDR;
202 dst++;
203 }
204
205#endif
206}*/
207