xref: /utopia/UTPA2-700.0.x/modules/audio/hal/kano/audio/audio_comm2.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi //<MStar Software>
2*53ee8cc1Swenshuai.xi //******************************************************************************
3*53ee8cc1Swenshuai.xi // MStar Software
4*53ee8cc1Swenshuai.xi // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved.
5*53ee8cc1Swenshuai.xi // All software, firmware and related documentation herein ("MStar Software") are
6*53ee8cc1Swenshuai.xi // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by
7*53ee8cc1Swenshuai.xi // law, including, but not limited to, copyright law and international treaties.
8*53ee8cc1Swenshuai.xi // Any use, modification, reproduction, retransmission, or republication of all
9*53ee8cc1Swenshuai.xi // or part of MStar Software is expressly prohibited, unless prior written
10*53ee8cc1Swenshuai.xi // permission has been granted by MStar.
11*53ee8cc1Swenshuai.xi //
12*53ee8cc1Swenshuai.xi // By accessing, browsing and/or using MStar Software, you acknowledge that you
13*53ee8cc1Swenshuai.xi // have read, understood, and agree, to be bound by below terms ("Terms") and to
14*53ee8cc1Swenshuai.xi // comply with all applicable laws and regulations:
15*53ee8cc1Swenshuai.xi //
16*53ee8cc1Swenshuai.xi // 1. MStar shall retain any and all right, ownership and interest to MStar
17*53ee8cc1Swenshuai.xi //    Software and any modification/derivatives thereof.
18*53ee8cc1Swenshuai.xi //    No right, ownership, or interest to MStar Software and any
19*53ee8cc1Swenshuai.xi //    modification/derivatives thereof is transferred to you under Terms.
20*53ee8cc1Swenshuai.xi //
21*53ee8cc1Swenshuai.xi // 2. You understand that MStar Software might include, incorporate or be
22*53ee8cc1Swenshuai.xi //    supplied together with third party`s software and the use of MStar
23*53ee8cc1Swenshuai.xi //    Software may require additional licenses from third parties.
24*53ee8cc1Swenshuai.xi //    Therefore, you hereby agree it is your sole responsibility to separately
25*53ee8cc1Swenshuai.xi //    obtain any and all third party right and license necessary for your use of
26*53ee8cc1Swenshuai.xi //    such third party`s software.
27*53ee8cc1Swenshuai.xi //
28*53ee8cc1Swenshuai.xi // 3. MStar Software and any modification/derivatives thereof shall be deemed as
29*53ee8cc1Swenshuai.xi //    MStar`s confidential information and you agree to keep MStar`s
30*53ee8cc1Swenshuai.xi //    confidential information in strictest confidence and not disclose to any
31*53ee8cc1Swenshuai.xi //    third party.
32*53ee8cc1Swenshuai.xi //
33*53ee8cc1Swenshuai.xi // 4. MStar Software is provided on an "AS IS" basis without warranties of any
34*53ee8cc1Swenshuai.xi //    kind. Any warranties are hereby expressly disclaimed by MStar, including
35*53ee8cc1Swenshuai.xi //    without limitation, any warranties of merchantability, non-infringement of
36*53ee8cc1Swenshuai.xi //    intellectual property rights, fitness for a particular purpose, error free
37*53ee8cc1Swenshuai.xi //    and in conformity with any international standard.  You agree to waive any
38*53ee8cc1Swenshuai.xi //    claim against MStar for any loss, damage, cost or expense that you may
39*53ee8cc1Swenshuai.xi //    incur related to your use of MStar Software.
40*53ee8cc1Swenshuai.xi //    In no event shall MStar be liable for any direct, indirect, incidental or
41*53ee8cc1Swenshuai.xi //    consequential damages, including without limitation, lost of profit or
42*53ee8cc1Swenshuai.xi //    revenues, lost or damage of data, and unauthorized system use.
43*53ee8cc1Swenshuai.xi //    You agree that this Section 4 shall still apply without being affected
44*53ee8cc1Swenshuai.xi //    even if MStar Software has been modified by MStar in accordance with your
45*53ee8cc1Swenshuai.xi //    request or instruction for your use, except otherwise agreed by both
46*53ee8cc1Swenshuai.xi //    parties in writing.
47*53ee8cc1Swenshuai.xi //
48*53ee8cc1Swenshuai.xi // 5. If requested, MStar may from time to time provide technical supports or
49*53ee8cc1Swenshuai.xi //    services in relation with MStar Software to you for your use of
50*53ee8cc1Swenshuai.xi //    MStar Software in conjunction with your or your customer`s product
51*53ee8cc1Swenshuai.xi //    ("Services").
52*53ee8cc1Swenshuai.xi //    You understand and agree that, except otherwise agreed by both parties in
53*53ee8cc1Swenshuai.xi //    writing, Services are provided on an "AS IS" basis and the warranty
54*53ee8cc1Swenshuai.xi //    disclaimer set forth in Section 4 above shall apply.
55*53ee8cc1Swenshuai.xi //
56*53ee8cc1Swenshuai.xi // 6. Nothing contained herein shall be construed as by implication, estoppels
57*53ee8cc1Swenshuai.xi //    or otherwise:
58*53ee8cc1Swenshuai.xi //    (a) conferring any license or right to use MStar name, trademark, service
59*53ee8cc1Swenshuai.xi //        mark, symbol or any other identification;
60*53ee8cc1Swenshuai.xi //    (b) obligating MStar or any of its affiliates to furnish any person,
61*53ee8cc1Swenshuai.xi //        including without limitation, you and your customers, any assistance
62*53ee8cc1Swenshuai.xi //        of any kind whatsoever, or any information; or
63*53ee8cc1Swenshuai.xi //    (c) conferring any license or right under any intellectual property right.
64*53ee8cc1Swenshuai.xi //
65*53ee8cc1Swenshuai.xi // 7. These terms shall be governed by and construed in accordance with the laws
66*53ee8cc1Swenshuai.xi //    of Taiwan, R.O.C., excluding its conflict of law rules.
67*53ee8cc1Swenshuai.xi //    Any and all dispute arising out hereof or related hereto shall be finally
68*53ee8cc1Swenshuai.xi //    settled by arbitration referred to the Chinese Arbitration Association,
69*53ee8cc1Swenshuai.xi //    Taipei in accordance with the ROC Arbitration Law and the Arbitration
70*53ee8cc1Swenshuai.xi //    Rules of the Association by three (3) arbitrators appointed in accordance
71*53ee8cc1Swenshuai.xi //    with the said Rules.
72*53ee8cc1Swenshuai.xi //    The place of arbitration shall be in Taipei, Taiwan and the language shall
73*53ee8cc1Swenshuai.xi //    be English.
74*53ee8cc1Swenshuai.xi //    The arbitration award shall be final and binding to both parties.
75*53ee8cc1Swenshuai.xi //
76*53ee8cc1Swenshuai.xi //******************************************************************************
77*53ee8cc1Swenshuai.xi //<MStar Software>
78*53ee8cc1Swenshuai.xi #ifndef _AUDIO_COMM2_H_
79*53ee8cc1Swenshuai.xi #define _AUDIO_COMM2_H_
80*53ee8cc1Swenshuai.xi 
81*53ee8cc1Swenshuai.xi 
82*53ee8cc1Swenshuai.xi #include "audio_mbox2.h"
83*53ee8cc1Swenshuai.xi #include "ddr_config.h"
84*53ee8cc1Swenshuai.xi 
85*53ee8cc1Swenshuai.xi #ifdef _COMPILE_DSP_
86*53ee8cc1Swenshuai.xi     #include "Sys_def.h"
87*53ee8cc1Swenshuai.xi #endif
88*53ee8cc1Swenshuai.xi 
89*53ee8cc1Swenshuai.xi /************************************************
90*53ee8cc1Swenshuai.xi *  �ЫO�� Utopia �M DSP �̪��o���ɮפ@�P
91*53ee8cc1Swenshuai.xi *
92*53ee8cc1Swenshuai.xi *  1. ���Ѥ��n�� !
93*53ee8cc1Swenshuai.xi *  2. �ŧi���n�� .const xxxx = ????;
94*53ee8cc1Swenshuai.xi ************************************************/
95*53ee8cc1Swenshuai.xi 
96*53ee8cc1Swenshuai.xi 
97*53ee8cc1Swenshuai.xi /*********************************************************
98*53ee8cc1Swenshuai.xi *   Version Control
99*53ee8cc1Swenshuai.xi *********************************************************/
100*53ee8cc1Swenshuai.xi #define  system_version_num              0x000B6D
101*53ee8cc1Swenshuai.xi #define  dde_version_num                 0xD20053
102*53ee8cc1Swenshuai.xi #define  ms10_dde_version_num            0xD800C9
103*53ee8cc1Swenshuai.xi #define  btscEnc_version_num             0xEF0127
104*53ee8cc1Swenshuai.xi #define  fmTx_version_num                0xED010D
105*53ee8cc1Swenshuai.xi 
106*53ee8cc1Swenshuai.xi #define  AUDIO_DSP2_VERSION    (system_version_num + dde_version_num + ms10_dde_version_num + btscEnc_version_num + fmTx_version_num)
107*53ee8cc1Swenshuai.xi 
108*53ee8cc1Swenshuai.xi 
109*53ee8cc1Swenshuai.xi /*********************************************************
110*53ee8cc1Swenshuai.xi *   system define
111*53ee8cc1Swenshuai.xi *********************************************************/
112*53ee8cc1Swenshuai.xi     #define DSP2_DDP_HDMI_BYPASS_EN                 0
113*53ee8cc1Swenshuai.xi 
114*53ee8cc1Swenshuai.xi     /* Software Feature List */
115*53ee8cc1Swenshuai.xi     #define SW_DMA_RDR_EN                           0               // SW_DMA_READER1, output by "decoder 5 = 0x8C", disable when HW_DMA_READER2_SUPPORT
116*53ee8cc1Swenshuai.xi     #define PCM_CAPTURE1_EN                         1               // PCM_CAPTURE1
117*53ee8cc1Swenshuai.xi     #define PCM_CAPTURE2_EN                         1               // PCM_CAPTURE2
118*53ee8cc1Swenshuai.xi     #define PCM_CAPTURE3_EN                         0               // PCM_CAPTURE3
119*53ee8cc1Swenshuai.xi     #define HW_DMA_WRITER1_EN                       0
120*53ee8cc1Swenshuai.xi 
121*53ee8cc1Swenshuai.xi     /* ASND System Channels */
122*53ee8cc1Swenshuai.xi         #define SE_PROCESS_FETCH_CHANNELS           14              // SE_Buffer input channels
123*53ee8cc1Swenshuai.xi         #define SE_PROCESS_STORE_CHANNELS           8               // SE_Buffer output channels
124*53ee8cc1Swenshuai.xi         #define SPDIF_DELAY_STORE_CHANNELS          2               // SPDIF Buffer channels
125*53ee8cc1Swenshuai.xi         #define HDMI_DELAY_STORE_CHANNELS           8               // HDMI Buffer channels, 8:_deciFs4x_
126*53ee8cc1Swenshuai.xi         #define DELAY_FUNCTION_STORE_CHANNELS       2               // Delay function Buffer channels
127*53ee8cc1Swenshuai.xi         #define MULTI_CH_INPUT_DELAY_STORE_CHANNELS 6               // multi-channel input delay function Buffer channels
128*53ee8cc1Swenshuai.xi 
129*53ee8cc1Swenshuai.xi     /* DSP Audio Delay Setting */
130*53ee8cc1Swenshuai.xi         #define AUDIO_DELAY_FS                      48              // fs = 48kHz
131*53ee8cc1Swenshuai.xi         #define SPDIF_DELAY_FS                      48
132*53ee8cc1Swenshuai.xi         #define HDMI_DELAY_FS                       48
133*53ee8cc1Swenshuai.xi         #define DMA24BIT_BYTES_IN_WORDS             3
134*53ee8cc1Swenshuai.xi         #define DMA16BIT_BYTES_IN_WORDS             2
135*53ee8cc1Swenshuai.xi 
136*53ee8cc1Swenshuai.xi         #define AUDIO_DELAY_LOWER_BOUND             0x20            // min main audio delay , 0x20 = 32 ms
137*53ee8cc1Swenshuai.xi         #define SPDIF_DELAY_LOWER_BOUND             0x05            // min spdif audio delay, 0x05 =  5 ms
138*53ee8cc1Swenshuai.xi         #define HDMI_DELAY_LOWER_BOUND              0x05            // min hdmi audio delay , 0x05 =  5 ms
139*53ee8cc1Swenshuai.xi         #define KTV_DELAY_LOWER_BOUND               0x14            // min ktv audio delay  , 0x14 = 20 ms
140*53ee8cc1Swenshuai.xi         #define AUDIO_DELAY_UPPER_BOUND             ((SE_MAIN_IN_DRAM_SIZE/SE_PROCESS_FETCH_CHANNELS + SE_MAIN_OUT_DRAM_SIZE/SE_PROCESS_STORE_CHANNELS)/DMA24BIT_BYTES_IN_WORDS/AUDIO_DELAY_FS) //unit : ms
141*53ee8cc1Swenshuai.xi         #define SPDIF_DELAY_UPPER_BOUND             ((SPDIF_DLY_DRAM_SIZE/SPDIF_DELAY_STORE_CHANNELS)/DMA16BIT_BYTES_IN_WORDS/SPDIF_DELAY_FS) //unit : ms
142*53ee8cc1Swenshuai.xi         #define HDMI_DELAY_UPPER_BOUND              ((SE_HDMI_DLY_DRAM_SIZE/2)/DMA16BIT_BYTES_IN_WORDS/HDMI_DELAY_FS) //unit : ms
143*53ee8cc1Swenshuai.xi 
144*53ee8cc1Swenshuai.xi         #define CH5_INPUT_DLY_UPPER_BOUND           ((CH5_INPUT_DLY_DRAM_SIZE/DELAY_FUNCTION_STORE_CHANNELS)/DMA24BIT_BYTES_IN_WORDS/AUDIO_DELAY_FS) //unit : ms
145*53ee8cc1Swenshuai.xi         #define CH6_INPUT_DLY_UPPER_BOUND           ((CH6_INPUT_DLY_DRAM_SIZE/DELAY_FUNCTION_STORE_CHANNELS)/DMA24BIT_BYTES_IN_WORDS/AUDIO_DELAY_FS) //unit : ms
146*53ee8cc1Swenshuai.xi         #define MULTI_CH_INPUT_DLY_UPPER_BOUND      ((MULTI_CH_INPUT_DLY_DRAM_SIZE/MULTI_CH_INPUT_DELAY_STORE_CHANNELS)/DMA24BIT_BYTES_IN_WORDS/AUDIO_DELAY_FS) //unit : ms
147*53ee8cc1Swenshuai.xi 
148*53ee8cc1Swenshuai.xi     /* Audio Ease */
149*53ee8cc1Swenshuai.xi         #define AUDIO_EASE_TYPE_LINEAR              0
150*53ee8cc1Swenshuai.xi         #define AUDIO_EASE_TYPE_INCUBIC             1
151*53ee8cc1Swenshuai.xi         #define AUDIO_EASE_TYPE_OUTCUBIC            2
152*53ee8cc1Swenshuai.xi         #define AUDIO_EASE_TYPE_INOUTCUBIC          3
153*53ee8cc1Swenshuai.xi 
154*53ee8cc1Swenshuai.xi         #define AUDIO_EASE_CH_NONE                  0
155*53ee8cc1Swenshuai.xi         #define AUDIO_EASE_CH_A                     1
156*53ee8cc1Swenshuai.xi         #define AUDIO_EASE_CH_B                     2
157*53ee8cc1Swenshuai.xi 
158*53ee8cc1Swenshuai.xi     /* Sine Tone */
159*53ee8cc1Swenshuai.xi         #define SINE_GEN_PARAM_FREQ_48k             137     // (3.1415926*2/8) * 8388608 / 48000
160*53ee8cc1Swenshuai.xi         #define SINE_GEN_PARAM_FREQ_32k             205     // (3.1415926*2/8) * 8388608 / 32000
161*53ee8cc1Swenshuai.xi         #define SINE_GEN_PARAM_STEPS                1024    // 1024 steps
162*53ee8cc1Swenshuai.xi 
163*53ee8cc1Swenshuai.xi /************************************************
164*53ee8cc1Swenshuai.xi * DSP sram address mapping
165*53ee8cc1Swenshuai.xi ************************************************/
166*53ee8cc1Swenshuai.xi     /* DSP SRAM Segment */
167*53ee8cc1Swenshuai.xi         /* CM */
168*53ee8cc1Swenshuai.xi         #define DSP2_CM_MAIN_ADDR                   0x0
169*53ee8cc1Swenshuai.xi         #define DSP2_CM_MAIN_SIZE                   0x2000
170*53ee8cc1Swenshuai.xi         #define DSP2_CM_CODE1_ADDR                  0x2000
171*53ee8cc1Swenshuai.xi         #define DSP2_CM_CODE1_SIZE                  0x0100
172*53ee8cc1Swenshuai.xi         #define DSP2_CM_CODE2_ADDR                  0x2100
173*53ee8cc1Swenshuai.xi         #define DSP2_CM_CODE2_SIZE                  0x0000
174*53ee8cc1Swenshuai.xi 
175*53ee8cc1Swenshuai.xi         /* PM */
176*53ee8cc1Swenshuai.xi         #define DSP2_PM_MAIN_ADDR                   0x2100
177*53ee8cc1Swenshuai.xi         #define DSP2_PM_MAIN_SIZE                   0x02FF
178*53ee8cc1Swenshuai.xi         #define DSP2_PM_SEG1_ADDR                   0x23FF
179*53ee8cc1Swenshuai.xi         #define DSP2_PM_SEG1_SIZE                   0x2401
180*53ee8cc1Swenshuai.xi         #define DSP2_PM_SEG2_ADDR                   0x4800
181*53ee8cc1Swenshuai.xi         #define DSP2_PM_SEG2_SIZE                   0x0000
182*53ee8cc1Swenshuai.xi 
183*53ee8cc1Swenshuai.xi         /* Prefetch */
184*53ee8cc1Swenshuai.xi         #define DSP2_PM_PREFETCH_DSPADDR            0x10000                // check "arch.sys"
185*53ee8cc1Swenshuai.xi         #define DSP2_PM_PREFETCH_DDRADDR            DSP2_PM_PREFETCH_DSPADDR*3/BYTES_IN_MIU_LINE
186*53ee8cc1Swenshuai.xi         #define DSP2_PM_PREFETCH2_DSPADDR           0x12000                // check "arch.sys"
187*53ee8cc1Swenshuai.xi         #define DSP2_PM_PREFETCH2_DDRADDR           DSP2_PM_PREFETCH2_DSPADDR*3/BYTES_IN_MIU_LINE
188*53ee8cc1Swenshuai.xi 
189*53ee8cc1Swenshuai.xi         /* DM */
190*53ee8cc1Swenshuai.xi         #define DSP2_DM_MAIN_ADDR                   0x2F00
191*53ee8cc1Swenshuai.xi         #define DSP2_DM_MAIN_SIZE                   0x1100
192*53ee8cc1Swenshuai.xi         #define DSP2_DM_SEG1A_ADDR                  0x0
193*53ee8cc1Swenshuai.xi         #define DSP2_DM_SEG1A_SIZE                  0x2F00
194*53ee8cc1Swenshuai.xi         #define DSP2_DM_SEG1B_ADDR                  0x2F00
195*53ee8cc1Swenshuai.xi         #define DSP2_DM_SEG1B_SIZE                  0x0
196*53ee8cc1Swenshuai.xi         #define DSP2_DM_SEG2_ADDR                   0x2F00
197*53ee8cc1Swenshuai.xi         #define DSP2_DM_SEG2_SIZE                   0x0
198*53ee8cc1Swenshuai.xi 
199*53ee8cc1Swenshuai.xi         /* XBox */
200*53ee8cc1Swenshuai.xi         #define DSP2_XBOX_MAIN_ADDR                 0xB800
201*53ee8cc1Swenshuai.xi         #define DSP2_XBOX_MAIN_SIZE                 0x200
202*53ee8cc1Swenshuai.xi 
203*53ee8cc1Swenshuai.xi             #define ENC_INIT_ADDR           DSP2_CM_CODE1_ADDR
204*53ee8cc1Swenshuai.xi             #define ENC_CM_SEG              _cm_code1
205*53ee8cc1Swenshuai.xi             #define ENC_PM_SEG              _pm_ovly1
206*53ee8cc1Swenshuai.xi             #define ENC_CACHE_SEG           _ext_code05
207*53ee8cc1Swenshuai.xi             #define ENC_FETCH_SEG           _ext_fetch1
208*53ee8cc1Swenshuai.xi             #define ENC_DM_SEG              _dm_ovly1a
209*53ee8cc1Swenshuai.xi             #define ENC_PM_SEG_ADDR         DSP2_PM_SEG1_ADDR
210*53ee8cc1Swenshuai.xi             #define ENC_DM_SEG_ADDR         DSP2_DM_SEG1A_ADDR
211*53ee8cc1Swenshuai.xi 
212*53ee8cc1Swenshuai.xi     /* SND DSP PM vars */
213*53ee8cc1Swenshuai.xi         /* common */
214*53ee8cc1Swenshuai.xi             #define DSP2PmAddr_mainVer              (DSP2_PM_MAIN_ADDR)         //0x1900
215*53ee8cc1Swenshuai.xi             #define DSP2PmAddr_alg1Ver              (DSP2_PM_SEG1_ADDR)         //0x1BFF      // decoder 2 version
216*53ee8cc1Swenshuai.xi             #define DSP2PmAddr_alg2Ver              (DSP2_PM_MAIN_ADDR-1)
217*53ee8cc1Swenshuai.xi 
218*53ee8cc1Swenshuai.xi             #define DSP2PmAddr_peq48KCoeffAddr      (DSP2PmAddr_mainVer     + 1)
219*53ee8cc1Swenshuai.xi             #define DSP2PmAddr_peq32KCoeffAddr      (DSP2PmAddr_peq48KCoeffAddr)
220*53ee8cc1Swenshuai.xi             #define DSP2PmAddr_peqscale48KAddr      (DSP2PmAddr_peq48KCoeffAddr     + 40 )
221*53ee8cc1Swenshuai.xi             #define DSP2PmAddr_peqbandEnAddr        (DSP2PmAddr_peqscale48KAddr     + 8  )
222*53ee8cc1Swenshuai.xi             #define DSP2PmAddr_peqbandDoubleAddr    (DSP2PmAddr_peqbandEnAddr       + 1  )
223*53ee8cc1Swenshuai.xi             #define DSP2PmAddr_hpf48KCoeffAddr      (DSP2PmAddr_peqbandDoubleAddr   + 1  )
224*53ee8cc1Swenshuai.xi             #define DSP2PmAddr_toneSelectAddr       (DSP2PmAddr_hpf48KCoeffAddr     + 5  )
225*53ee8cc1Swenshuai.xi             #define DSP2PmAddr_bass48KCoeffAddr     (DSP2PmAddr_toneSelectAddr      + 1  )
226*53ee8cc1Swenshuai.xi             #define DSP2PmAddr_bassscale48KAddr     (DSP2PmAddr_bass48KCoeffAddr    + 5  )
227*53ee8cc1Swenshuai.xi             #define DSP2PmAddr_treble48KCoeffAddr   (DSP2PmAddr_bassscale48KAddr    + 1  )
228*53ee8cc1Swenshuai.xi             #define DSP2PmAddr_treblescale48KAddr   (DSP2PmAddr_treble48KCoeffAddr  + 5  )
229*53ee8cc1Swenshuai.xi             #define DSP2PmAddr_VolEaseAddr          (DSP2PmAddr_treblescale48KAddr  + 1  )
230*53ee8cc1Swenshuai.xi 
231*53ee8cc1Swenshuai.xi         /* ATV_Enc */
232*53ee8cc1Swenshuai.xi             #define DSP2_PM_ATV_Enc_input_attenuation_ADDR   (DSP2PmAddr_alg1Ver+1)
233*53ee8cc1Swenshuai.xi             #define DSP2_PM_ATV_Enc_output_scaling_ADDR      (DSP2PmAddr_alg1Ver+2)
234*53ee8cc1Swenshuai.xi             #define DSP2_PM_BTSC_Enc_output_M_gain_ADDR      (DSP2PmAddr_alg1Ver+3)
235*53ee8cc1Swenshuai.xi             #define DSP2_PM_BTSC_Enc_output_D_gain_ADDR      (DSP2PmAddr_alg1Ver+4)
236*53ee8cc1Swenshuai.xi             #define DSP2_PM_BTSC_Enc_output_SAP_gain_ADDR    (DSP2PmAddr_alg1Ver+5)
237*53ee8cc1Swenshuai.xi 
238*53ee8cc1Swenshuai.xi     /* SND DSP DM vars */
239*53ee8cc1Swenshuai.xi 
240*53ee8cc1Swenshuai.xi         /* Extra Box Address */
241*53ee8cc1Swenshuai.xi 
242*53ee8cc1Swenshuai.xi             /* sys_param */
243*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_mainVer              0xB800
244*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_mainAudioDelay       (DSP2XboxAddr_mainVer +   0x01)
245*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_spdifDelay           (DSP2XboxAddr_mainVer +   0x02)
246*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_hpDelay              (DSP2XboxAddr_mainVer +   0x03)
247*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_hdmiNonPcmSts        (DSP2XboxAddr_mainVer +   0x04)
248*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_btFrameSize          (DSP2XboxAddr_mainVer +   0x05)
249*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_ipSecurity           (DSP2XboxAddr_mainVer +   0x06)
250*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_hdmiDelay            (DSP2XboxAddr_mainVer +   0x07)
251*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_ch5InputDelay        (DSP2XboxAddr_mainVer +   0x08)
252*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_ch6InputDelay        (DSP2XboxAddr_mainVer +   0x09)
253*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_multiChInputDelay    (DSP2XboxAddr_mainVer +   0x0A)
254*53ee8cc1Swenshuai.xi 
255*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_peq48KCoeffAddr      (DSP2XboxAddr_mainVer +   0x10)   // len 40
256*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_peq32KCoeffAddr      (DSP2XboxAddr_peq48KCoeffAddr)
257*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_peqscale48KAddr      (DSP2XboxAddr_mainVer +   0x38)   // len 8
258*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_peqbandEnAddr        (DSP2XboxAddr_mainVer +   0x40)   // len 1
259*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_peqbandDoubleAddr    (DSP2XboxAddr_mainVer +   0x41)   // len 1
260*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_hpf48KCoeffAddr      (DSP2XboxAddr_mainVer +   0x42)   // len 5
261*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_toneSelectAddr       (DSP2XboxAddr_mainVer +   0x47)   // len 1
262*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_bass48KCoeffAddr     (DSP2XboxAddr_mainVer +   0x48)   // len 5
263*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_bassscale48KAddr     (DSP2XboxAddr_mainVer +   0x4D)   // len 1
264*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_treble48KCoeffAddr   (DSP2XboxAddr_mainVer +   0x4E)   // len 5
265*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_treblescale48KAddr   (DSP2XboxAddr_mainVer +   0x53)   // len 1
266*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_VolEaseAddr          (DSP2XboxAddr_mainVer +   0x54)   // len 9
267*53ee8cc1Swenshuai.xi 
268*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_peqUpdateFlag        (DSP2XboxAddr_mainVer +   0x5D)   // len 1
269*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_hpUpdateFlag         (DSP2XboxAddr_mainVer +   0x5E)   // len 1
270*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_bassUpdateFlag       (DSP2XboxAddr_mainVer +   0x5F)   // len 1
271*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_trebleUpdateFlag     (DSP2XboxAddr_mainVer +   0x60)   // len 1
272*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_toneUpdateFlag       (DSP2XboxAddr_mainVer +   0x61)   // len 1
273*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_easeAUpdateFlag      (DSP2XboxAddr_mainVer +   0x62)   // len 1
274*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_easeBUpdateFlag      (DSP2XboxAddr_mainVer +   0x63)   // len 1
275*53ee8cc1Swenshuai.xi 
276*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_ATVEnc_input_attenuation_ADDR   (DSP2XboxAddr_mainVer +   0x64)    // len 1
277*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_ATVEnc_output_scaling_ADDR      (DSP2XboxAddr_ATVEnc_input_attenuation_ADDR + 1)
278*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_BTSCEnc_output_M_gain_ADDR      (DSP2XboxAddr_ATVEnc_output_scaling_ADDR + 1)
279*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_BTSCEnc_output_D_gain_ADDR      (DSP2XboxAddr_BTSCEnc_output_M_gain_ADDR + 1)
280*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_BTSCEnc_output_SAP_gain_ADDR    (DSP2XboxAddr_BTSCEnc_output_D_gain_ADDR + 1)
281*53ee8cc1Swenshuai.xi 
282*53ee8cc1Swenshuai.xi             /* sys_info */
283*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_IO_Info1                        0xB900
284*53ee8cc1Swenshuai.xi                 #define IO_INFO1_DAC1_OUT                        0x0000
285*53ee8cc1Swenshuai.xi                 #define IO_INFO1_DAC2_OUT                        0x0002
286*53ee8cc1Swenshuai.xi                 #define IO_INFO1_DAC3_OUT                        0x0004
287*53ee8cc1Swenshuai.xi                 #define IO_INFO1_DAC4_OUT                        0x0006
288*53ee8cc1Swenshuai.xi                 #define IO_INFO1_IIS1_OUT                        0x0008
289*53ee8cc1Swenshuai.xi                 #define IO_INFO1_SPDIF_OUT                       0x000A
290*53ee8cc1Swenshuai.xi                 #define IO_INFO1_HDMI_OUT                        0x000C
291*53ee8cc1Swenshuai.xi 
292*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_IO_Info2                        DSP2XboxAddr_IO_Info1 + 0x000E
293*53ee8cc1Swenshuai.xi                 #define IO_INFO2_MUL_CH1                         0x0000
294*53ee8cc1Swenshuai.xi                 #define IO_INFO2_MUL_CH2                         0x0002
295*53ee8cc1Swenshuai.xi                 #define IO_INFO2_MUL_CH3                         0x0004
296*53ee8cc1Swenshuai.xi                 #define IO_INFO2_MUL_CH4                         0x0006
297*53ee8cc1Swenshuai.xi                 #define IO_INFO2_RAW                             0x0008
298*53ee8cc1Swenshuai.xi                 #define IO_INFO2_RAW_DELAY                       0x000A
299*53ee8cc1Swenshuai.xi                 #define IO_INFO2_RAW_DELAY_SE                    0x000C
300*53ee8cc1Swenshuai.xi                 #define IO_INFO2_SCART                           0x000E
301*53ee8cc1Swenshuai.xi                 #define IO_INFO2_KTV                             0x0010
302*53ee8cc1Swenshuai.xi                 #define IO_INFO2_MUL_CH6                         0x0012
303*53ee8cc1Swenshuai.xi                 #define IO_INFO2_SPDIF_DATA                      0x0014
304*53ee8cc1Swenshuai.xi                 #define IO_INFO2_RESERVED4                       0x0016
305*53ee8cc1Swenshuai.xi                 #define IO_INFO2_SINTONE                         0x0018
306*53ee8cc1Swenshuai.xi                 #define IO_INFO2_MUL_CH8                         0x001A
307*53ee8cc1Swenshuai.xi                 #define IO_INFO2_GPA_FS                          0x001C
308*53ee8cc1Swenshuai.xi                 #define IO_INFO2_GPB_FS                          0x001D
309*53ee8cc1Swenshuai.xi                 #define IO_INFO2_GPC_FS                          0x001E
310*53ee8cc1Swenshuai.xi                 #define IO_INFO2_ALSA_MODE                       0x001F
311*53ee8cc1Swenshuai.xi 
312*53ee8cc1Swenshuai.xi 
313*53ee8cc1Swenshuai.xi         /* common */
314*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_dec1_signal_energy              (DSP2XboxAddr_IO_Info2 + 0x0020)   // len 1
315*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_pcmCapture_overflow             (DSP2XboxAddr_IO_Info2 + 0x0021)   // len 1
316*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_pcmCapture_underflow            (DSP2XboxAddr_IO_Info2 + 0x0022)   // len 1
317*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_pcmCapture_volume               (DSP2XboxAddr_IO_Info2 + 0x0023)   // len 1
318*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_pcmCapture2_overflow            (DSP2XboxAddr_IO_Info2 + 0x0024)   // len 1
319*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_pcmCapture2_underflow           (DSP2XboxAddr_IO_Info2 + 0x0025)   // len 1
320*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_pcmCapture2_volume              (DSP2XboxAddr_IO_Info2 + 0x0026)   // len 1
321*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_pcmCapture3_overflow            (DSP2XboxAddr_IO_Info2 + 0x0027)   // len 1
322*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_pcmCapture3_underflow           (DSP2XboxAddr_IO_Info2 + 0x0028)   // len 1
323*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_pcmCapture3_volume              (DSP2XboxAddr_IO_Info2 + 0x0029)   // len 1
324*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_swDmaRdr_ctrlBase               (DSP2XboxAddr_IO_Info2 + 0x002A)   // len 11
325*53ee8cc1Swenshuai.xi 
326*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_hdmi_npcm_lock                  (DSP2XboxAddr_IO_Info2 + 0x0035)   // len 1
327*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_hdmi_unstable_protect           (DSP2XboxAddr_IO_Info2 + 0x0036)   // len 1
328*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_hdmi_unstable_threshold         (DSP2XboxAddr_IO_Info2 + 0x0037)   // len 1
329*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_hdmi_decimation_mode_flag       (DSP2XboxAddr_IO_Info2 + 0x0038)   // len 2
330*53ee8cc1Swenshuai.xi 
331*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_mips_crisis_flag                (DSP2XboxAddr_IO_Info2 + 0x003A)   // len 1
332*53ee8cc1Swenshuai.xi 
333*53ee8cc1Swenshuai.xi             /* basic sound effect */
334*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_AvcSOffsetAddr                  (DSP2XboxAddr_IO_Info2 + 0x003B)   // len 1
335*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_KTV_XAGain                      (DSP2XboxAddr_IO_Info2 + 0x003C)   // len 1
336*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_KTV_XBGain                      (DSP2XboxAddr_IO_Info2 + 0x003D)   // len 1
337*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_Multi_Channel_VOL               (DSP2XboxAddr_IO_Info2 + 0x003E)   // len 1
338*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_MixerGroup1_Ctrl_addr           (DSP2XboxAddr_IO_Info2 + 0x003F)   // len 1
339*53ee8cc1Swenshuai.xi             #define DSP2Xboxaddr_MixerGroup2_Ctrl_addr           (DSP2XboxAddr_IO_Info2 + 0x0040)   // len 1
340*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_sinetone_StartFreq_Addr         (DSP2XboxAddr_IO_Info2 + 0x0041)   // len 1
341*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_sinetone_EndFreq_Addr           (DSP2XboxAddr_IO_Info2 + 0x0042)   // len 1
342*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_sinetone_SweepStep_Addr         (DSP2XboxAddr_IO_Info2 + 0x0043)   // len 1
343*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_sinetone_Duration_Addr          (DSP2XboxAddr_IO_Info2 + 0x0044)   // len 1
344*53ee8cc1Swenshuai.xi 
345*53ee8cc1Swenshuai.xi /********************************************************************
346*53ee8cc1Swenshuai.xi *  Decoder default setting
347*53ee8cc1Swenshuai.xi ********************************************************************/
348*53ee8cc1Swenshuai.xi     /* SIF DSP PM vars */
349*53ee8cc1Swenshuai.xi     /*
350*53ee8cc1Swenshuai.xi             #define ADDR_gain_base_2                  0x2521   //B860
351*53ee8cc1Swenshuai.xi             #define ADDR_thr_base_2                   0x2620
352*53ee8cc1Swenshuai.xi             #define ADDR_pfir_base_2                  0x2690
353*53ee8cc1Swenshuai.xi             //  for SIF BTSC DSP PM vars //
354*53ee8cc1Swenshuai.xi             #define BTSC_COMPILE_OPTION_Addr_2        0x25F1   // len 1
355*53ee8cc1Swenshuai.xi             #define BTSC_OUTPUT_GAIN_Addr_2           0x2621   // len 2
356*53ee8cc1Swenshuai.xi             #define BTSC_THRESHOLD_Addr_2             0x2623   // len 10
357*53ee8cc1Swenshuai.xi             #define MTS_OUTPUT_GAIN_Addr_2            0x2634   //len 6
358*53ee8cc1Swenshuai.xi             #define SIF_AGC_THRESHOLD_Addr_2          0x252D   //len 3
359*53ee8cc1Swenshuai.xi 
360*53ee8cc1Swenshuai.xi             /// PAL gain setting address
361*53ee8cc1Swenshuai.xi             #define ADDR_fm_stdM_gain_2               ADDR_gain_base_2           // len = 4
362*53ee8cc1Swenshuai.xi             #define ADDR_fm_stdX_gain_2               ADDR_fm_stdM_gain_2+4      // len = 4
363*53ee8cc1Swenshuai.xi             #define ADDR_nicam_gain_2                 ADDR_fm_stdX_gain_2+4      // len = 2
364*53ee8cc1Swenshuai.xi             #define ADDR_am_gain_2                    ADDR_nicam_gain_2+2        // len = 2
365*53ee8cc1Swenshuai.xi             #define ADDR_agc_gain_2                   ADDR_am_gain_2+2           // len = 24
366*53ee8cc1Swenshuai.xi 
367*53ee8cc1Swenshuai.xi             // PAL threshold setting address
368*53ee8cc1Swenshuai.xi             #define ADDR_a2_stdM_thr_2                ADDR_thr_base_2            // len = 15
369*53ee8cc1Swenshuai.xi             #define ADDR_a2_stdBG_thr_2               ADDR_a2_stdM_thr_2+15      // len = 15
370*53ee8cc1Swenshuai.xi             #define ADDR_a2_stdDK_thr_2               ADDR_a2_stdBG_thr_2+15         // len = 15
371*53ee8cc1Swenshuai.xi             #define ADDR_a2_stdI_thr_2                ADDR_a2_stdDK_thr_2+15     // len = 4
372*53ee8cc1Swenshuai.xi             #define ADDR_am_thr_2                     ADDR_a2_stdI_thr_2+4       // len = 3
373*53ee8cc1Swenshuai.xi             #define ADDR_hidev_stdM_thr_2             ADDR_am_thr_2+3            // len = 4
374*53ee8cc1Swenshuai.xi             #define ADDR_hidev_stdBG_thr_2            ADDR_hidev_stdM_thr_2+4    // len = 4
375*53ee8cc1Swenshuai.xi             #define ADDR_hidev_stdDK_thr_2            ADDR_hidev_stdBG_thr_2+4   // len = 4
376*53ee8cc1Swenshuai.xi             #define ADDR_hidev_stdI_thr_2             ADDR_hidev_stdDK_thr_2+4   // len = 4
377*53ee8cc1Swenshuai.xi             #define ADDR_nicam_stdBG_pherr_thr_2      ADDR_hidev_stdI_thr_2+4    //len = 3
378*53ee8cc1Swenshuai.xi             #define ADDR_nicam_stdI_pherr_thr_2       ADDR_nicam_stdBG_pherr_thr_2+3  // len = 3
379*53ee8cc1Swenshuai.xi             #define ADDR_a2_bg_nicam_fm_nsr_thr_2     0x246F     // len = 1
380*53ee8cc1Swenshuai.xi             #define ADDR_a2_dk_nicam_fm_nsr_thr_2     0x2470     // len = 1
381*53ee8cc1Swenshuai.xi 
382*53ee8cc1Swenshuai.xi             // pfir setting address
383*53ee8cc1Swenshuai.xi             #define ADDR_hidev_demfir_2               ADDR_pfir_base_2             // len = 15
384*53ee8cc1Swenshuai.xi             #define ADDR_fm_ch1_pfir_2                ADDR_hidev_demfir_2+16       // len = 30
385*53ee8cc1Swenshuai.xi             #define ADDR_fm_ch2_pfir_2                ADDR_fm_ch1_pfir_2+30        // len = 30
386*53ee8cc1Swenshuai.xi             #define ADDR_hidev_lv1_pfir_2             ADDR_fm_ch2_pfir_2+30        // len = 20
387*53ee8cc1Swenshuai.xi             #define ADDR_hidev_lv2_pfir_2             ADDR_hidev_lv1_pfir_2+20     // len = 20
388*53ee8cc1Swenshuai.xi             #define ADDR_hidev_lv3_pfir_2             ADDR_hidev_lv2_pfir_2+20     // len = 20
389*53ee8cc1Swenshuai.xi 
390*53ee8cc1Swenshuai.xi             // BTSC threshold setting address
391*53ee8cc1Swenshuai.xi             #define HIDEV_NSR_THRESHOLD_Addr_2        BTSC_THRESHOLD_Addr_2+10            // len 2
392*53ee8cc1Swenshuai.xi             #define BTSC_MONO_AMP_THRESHOLD_Addr_2    HIDEV_NSR_THRESHOLD_Addr_2+2        // len 2
393*53ee8cc1Swenshuai.xi             #define HIDEV_AMP_THRESHOLD_Addr_2        BTSC_MONO_AMP_THRESHOLD_Addr_2+2    // len 2
394*53ee8cc1Swenshuai.xi 
395*53ee8cc1Swenshuai.xi             #define BTSC_SAP_PHASE_DIFF_CLIP_THR_Addr_2    HIDEV_AMP_THRESHOLD_Addr_2+2   // len 1
396*53ee8cc1Swenshuai.xi             #define BTSC_PILOT_DEBOUNCE_THRESHOLD_Addr_2   MTS_OUTPUT_GAIN_Addr_2+6       // len 3
397*53ee8cc1Swenshuai.xi             #define BTSC_SAP_ON_DETECTION_DEBOUNCE_THRESHOLD_Addr_2 BTSC_PILOT_DEBOUNCE_THRESHOLD_Addr_2+3 // len 1
398*53ee8cc1Swenshuai.xi     */
399*53ee8cc1Swenshuai.xi 
400*53ee8cc1Swenshuai.xi /************************************************
401*53ee8cc1Swenshuai.xi *   Below is MailBox config
402*53ee8cc1Swenshuai.xi *************************************************/
403*53ee8cc1Swenshuai.xi 
404*53ee8cc1Swenshuai.xi     /************************************************
405*53ee8cc1Swenshuai.xi     *   MCU to DSP mailbox
406*53ee8cc1Swenshuai.xi     ************************************************/
407*53ee8cc1Swenshuai.xi     /* SIF */
408*53ee8cc1Swenshuai.xi     #define M2S_MBOX_SIF_CMD_STANDARD           MB_2DC0
409*53ee8cc1Swenshuai.xi     #define M2S_MBOX_SIF_CMD_PFIRBANDWIDTH      MB_2DC2
410*53ee8cc1Swenshuai.xi     #define M2S_MBOX_SIF_CMD_MODE1              MB_2DC4
411*53ee8cc1Swenshuai.xi     #define M2S_MBOX_SIF_CMD_MODE2              MB_2DC6
412*53ee8cc1Swenshuai.xi 
413*53ee8cc1Swenshuai.xi     /* ATV Encoder */
414*53ee8cc1Swenshuai.xi     #define M2S_MBOX_ATVEnc_MODE_CTRL                    MB_2DC0
415*53ee8cc1Swenshuai.xi 
416*53ee8cc1Swenshuai.xi     /* SPDIF */
417*53ee8cc1Swenshuai.xi     #define M2S_MBOX_SPDIF_SETTING                  MB_2D8E
418*53ee8cc1Swenshuai.xi     #define M2S_MBOX_HDMI_SETTING                   MB_2D8E
419*53ee8cc1Swenshuai.xi         #define MBOX_SPDIF_SETTING_BIT_MUTE             MBOX_BIT0
420*53ee8cc1Swenshuai.xi         #define MBOX_SPDIF_SETTING_BIT_NPCMSEL          MBOX_BIT1
421*53ee8cc1Swenshuai.xi         #define MBOX_SPDIF_SETTING_R2_NPCM_SELBIT       MBOX_BIT2
422*53ee8cc1Swenshuai.xi         #define MBOX_SPDIF_SETTING_DVB2_NPCM_SELBIT     MBOX_BIT3
423*53ee8cc1Swenshuai.xi         #define MBOX_SPDIF_SETTING_MINUS_11DB_BIT       MBOX_BIT5
424*53ee8cc1Swenshuai.xi         #define MBOX_HDMI_SETTING_BIT_NPCMSEL           MBOX_BIT13
425*53ee8cc1Swenshuai.xi         #define MBOX_HDMI_SETTING_BIT_HDMI_OUTPATH      MBOX_BIT14
426*53ee8cc1Swenshuai.xi         #define MBOX_HDMI_SETTING_BIT_MUTE              MBOX_BIT15
427*53ee8cc1Swenshuai.xi 
428*53ee8cc1Swenshuai.xi     #define M2S_MBOX_DOLBY_LOUDNESS_INFO            MB_2D98
429*53ee8cc1Swenshuai.xi         #define MBOX_DOLBY_LOUDNESS_ENABLE_BIT          MBOX_BIT15
430*53ee8cc1Swenshuai.xi         #define MBOX_DOLBY_LOUDNESS_ATSC_MODE           MBOX_BIT14
431*53ee8cc1Swenshuai.xi         #define MBOX_DOLBY_LOUDNESS_OTHER_MODE          MBOX_BIT13
432*53ee8cc1Swenshuai.xi 
433*53ee8cc1Swenshuai.xi     /* Sound effect */
434*53ee8cc1Swenshuai.xi     #define M2S_MBOX_AUOUT0_VOL                 MB_2D00
435*53ee8cc1Swenshuai.xi     #define M2S_MBOX_AUOUT1_VOL                 MB_2D02
436*53ee8cc1Swenshuai.xi     #define M2S_MBOX_AUOUT2_VOL                 MB_2D04
437*53ee8cc1Swenshuai.xi     #define M2S_MBOX_AUOUT3_VOL                 MB_2D06
438*53ee8cc1Swenshuai.xi     #define M2S_MBOX_I2S_VOL                    MB_2D08
439*53ee8cc1Swenshuai.xi     #define M2S_MBOX_SPDIF_VOL                  MB_2D0A
440*53ee8cc1Swenshuai.xi     #define M2S_MBOX_SRC_VOL                    MB_2D0C
441*53ee8cc1Swenshuai.xi     #define M2S_MBOX_HDMI_VOL                   MB_2D0E    //STB only
442*53ee8cc1Swenshuai.xi     #define M2S_MBOX_I2S2_VOL                   MB_2D0E
443*53ee8cc1Swenshuai.xi     #define M2S_MBOX_PRESCALE                   MB_2D10
444*53ee8cc1Swenshuai.xi 
445*53ee8cc1Swenshuai.xi     #define M2S_MBOX_EQ1_GAIN                   MB_2D14             //[15:8]
446*53ee8cc1Swenshuai.xi     #define M2S_MBOX_BASS_CTRL                  MB_2D14             //[7:0]
447*53ee8cc1Swenshuai.xi     #define M2S_MBOX_EQ2_GAIN                   MB_2D16             //[15:8]
448*53ee8cc1Swenshuai.xi     #define M2S_MBOX_TREBLE_CTRL                MB_2D16             //[7:0]
449*53ee8cc1Swenshuai.xi     #define M2S_MBOX_EQ3_GAIN                   MB_2D18             //[15:8]
450*53ee8cc1Swenshuai.xi     #define M2S_MBOX_SUPBASS_CTRL               MB_2D18             //[7:0]
451*53ee8cc1Swenshuai.xi     #define M2S_MBOX_EQ4_GAIN                   MB_2D1A             //[15:8]
452*53ee8cc1Swenshuai.xi     #define M2S_MBOX_EQ5_GAIN                   MB_2D1C             //[15:8]
453*53ee8cc1Swenshuai.xi     #define M2S_MBOX_BAL_CTRL                   MB_2D1E
454*53ee8cc1Swenshuai.xi 
455*53ee8cc1Swenshuai.xi     #define M2S_MBOX_SNDEFF_EN                  MB_2D20
456*53ee8cc1Swenshuai.xi         #define M2S_MBOX_STEREO_EN_BIT              MBOX_BIT15
457*53ee8cc1Swenshuai.xi         #define M2S_MBOX_DRC_EN_BIT                 MBOX_BIT13
458*53ee8cc1Swenshuai.xi         #define M2S_MBOX_AVC_EN_BIT                 MBOX_BIT12
459*53ee8cc1Swenshuai.xi         #define M2S_MBOX_TONE_EN_BIT                MBOX_BIT11
460*53ee8cc1Swenshuai.xi         #define M2S_MBOX_SPATIAL_EN_BIT             MBOX_BIT10
461*53ee8cc1Swenshuai.xi         #define M2S_MBOX_VOLBAL_EN_BIT              MBOX_BIT9
462*53ee8cc1Swenshuai.xi         #define M2S_MBOX_GEQ_EN_BIT                 MBOX_BIT7
463*53ee8cc1Swenshuai.xi         #define M2S_MBOX_EASE_EN_BIT                MBOX_BIT6
464*53ee8cc1Swenshuai.xi         #define M2S_MBOX_BASSBOOST_EN_BIT           MBOX_BIT5
465*53ee8cc1Swenshuai.xi         #define M2S_MBOX_ECHO_EN_BIT                MBOX_BIT4
466*53ee8cc1Swenshuai.xi         #define M2S_MBOX_DC_REMOVE_EN_BIT           MBOX_BIT3
467*53ee8cc1Swenshuai.xi         #define M2S_MBOX_HPF_EN_BIT                 MBOX_BIT2
468*53ee8cc1Swenshuai.xi         #define M2S_MBOX_COEFFUPDATE_EN_BIT         MBOX_BIT1
469*53ee8cc1Swenshuai.xi         #define M2S_MBOX_PEQ_EN_BIT                 MBOX_BIT0
470*53ee8cc1Swenshuai.xi 
471*53ee8cc1Swenshuai.xi     #define M2S_MBOX_VOLUME_EN                  MB_2D22
472*53ee8cc1Swenshuai.xi         #define M2S_MBOX_VOL_DAC0_EN_BIT            MBOX_BIT0
473*53ee8cc1Swenshuai.xi         #define M2S_MBOX_VOL_DAC1_EN_BIT            MBOX_BIT1
474*53ee8cc1Swenshuai.xi         #define M2S_MBOX_VOL_DAC2_EN_BIT            MBOX_BIT2
475*53ee8cc1Swenshuai.xi         #define M2S_MBOX_VOL_DAC3_EN_BIT            MBOX_BIT3
476*53ee8cc1Swenshuai.xi         #define M2S_MBOX_VOL_I2S0_EN_BIT            MBOX_BIT4
477*53ee8cc1Swenshuai.xi         #define M2S_MBOX_VOL_I2S1_EN_BIT            MBOX_BIT5
478*53ee8cc1Swenshuai.xi         #define M2S_MBOX_VOL_I2S2_EN_BIT            MBOX_BIT6
479*53ee8cc1Swenshuai.xi         #define M2S_MBOX_VOL_I2S3_EN_BIT            MBOX_BIT7
480*53ee8cc1Swenshuai.xi         #define M2S_MBOX_VOL_SPDIF_EN_BIT           MBOX_BIT8
481*53ee8cc1Swenshuai.xi         #define M2S_MBOX_VOL_SRC_EN_BIT             MBOX_BIT9
482*53ee8cc1Swenshuai.xi 
483*53ee8cc1Swenshuai.xi     #define M2S_MBOX_AVC_CTRL                   MB_2D24         //[15:13] AT, [12:10] RT, [9:8] AVC_Mode, [7:0] AVC Threshold
484*53ee8cc1Swenshuai.xi     #define M2S_MBOX_SURR_CTRL                  MB_2D26
485*53ee8cc1Swenshuai.xi 
486*53ee8cc1Swenshuai.xi     #define M2S_MBOX_SINE_GEN                   MB_2D28
487*53ee8cc1Swenshuai.xi         #define M2S_MBOX_SINE_GEN_CTRL_MASK         0x7F
488*53ee8cc1Swenshuai.xi         #define M2S_MBOX_SINE_GEN_EN_BIT            MBOX_BIT7
489*53ee8cc1Swenshuai.xi         #define M2S_MBOX_MENUSOUND_MODE_SEL_MASK    0xF0        // [7:4] MENUSOUND Mode_Select, 0: Sine tone (default 1khz), 1: Sweep, 2: Sweep_300_800_5sec, 3: Sweep_800_300_5sec
490*53ee8cc1Swenshuai.xi         #define M2S_MBOX_MENUSOUND_MUTE_RIGHT_BIT   MBOX_BIT3   // [3]   MENUSOUND RIGHT_CHANNEL_MUTE, 1->mute, 0->un-mute
491*53ee8cc1Swenshuai.xi         #define M2S_MBOX_MENUSOUND_MUTE_LEFT_BIT    MBOX_BIT2   // [2]   MENUSOUND LEFT_CHANNEL_MUTE , 1->mute, 0->un-mute
492*53ee8cc1Swenshuai.xi         #define M2S_MBOX_MENUSOUND_PAUSE_BIT        MBOX_BIT1   // [1]   MENUSOUND PAUSE
493*53ee8cc1Swenshuai.xi         #define M2S_MBOX_MENUSOUND_PLAY_BIT         MBOX_BIT0   // [0]   MENUSOUND PLAY Trigger bit when change (from 0 to 1)
494*53ee8cc1Swenshuai.xi 
495*53ee8cc1Swenshuai.xi     #define M2S_MBOX_BALANCE_EN                 MB_2D2A
496*53ee8cc1Swenshuai.xi         #define M2S_MBOX_BAL_DAC0_EN_BIT            MBOX_BIT0
497*53ee8cc1Swenshuai.xi         #define M2S_MBOX_BAL_DAC1_EN_BIT            MBOX_BIT1
498*53ee8cc1Swenshuai.xi         #define M2S_MBOX_BAL_DAC2_EN_BIT            MBOX_BIT2
499*53ee8cc1Swenshuai.xi         #define M2S_MBOX_BAL_DAC3_EN_BIT            MBOX_BIT3
500*53ee8cc1Swenshuai.xi         #define M2S_MBOX_BAL_I2S0_EN_BIT            MBOX_BIT4
501*53ee8cc1Swenshuai.xi         #define M2S_MBOX_BAL_I2S1_EN_BIT            MBOX_BIT5
502*53ee8cc1Swenshuai.xi         #define M2S_MBOX_BAL_I2S2_EN_BIT            MBOX_BIT6
503*53ee8cc1Swenshuai.xi         #define M2S_MBOX_BAL_I2S3_EN_BIT            MBOX_BIT7
504*53ee8cc1Swenshuai.xi         #define M2S_MBOX_BAL_SPDIF_EN_BIT           MBOX_BIT8
505*53ee8cc1Swenshuai.xi         #define M2S_MBOX_BAL_SRC_EN_BIT             MBOX_BIT9
506*53ee8cc1Swenshuai.xi         #define M2S_MBOX_BAL_HDMI_EN_BIT            MBOX_BIT10
507*53ee8cc1Swenshuai.xi 
508*53ee8cc1Swenshuai.xi     #define M2S_MBOX_DRC_CTRL                   MB_2D2E             //[7:0] DRC1 Threshold
509*53ee8cc1Swenshuai.xi     #define M2S_MBOX_SOUND_MODE_SEL             MB_2D30             //[1:0] : LR / LL / RR
510*53ee8cc1Swenshuai.xi     #define M2S_MBOX_POWER_DOWN                 MB_2D30             //[8:9]
511*53ee8cc1Swenshuai.xi     #define M2S_MBOX_NR_CTRL                    MB_2D32
512*53ee8cc1Swenshuai.xi 
513*53ee8cc1Swenshuai.xi     #define M2S_MBOX_ADVSND_EN                  MB_2D40
514*53ee8cc1Swenshuai.xi     	#define M2S_MBOX_ADVSND_SUMMARY_EN_BIT      MBOX_BIT15
515*53ee8cc1Swenshuai.xi 
516*53ee8cc1Swenshuai.xi     #define M2S_MBOX_KTV_CTRL                   MB_2D46
517*53ee8cc1Swenshuai.xi     #define M2S_MBOX_KTV_EN_BIT                 MBOX_BIT15
518*53ee8cc1Swenshuai.xi 
519*53ee8cc1Swenshuai.xi     #define M2S_MBOX_INPUT_MUX_SEL1             MB_2D50
520*53ee8cc1Swenshuai.xi     #define M2S_MBOX_INPUT_MUX_SEL2             MB_2D52
521*53ee8cc1Swenshuai.xi     #define M2S_MBOX_INPUT_MUX_SEL3             MB_2D54
522*53ee8cc1Swenshuai.xi 
523*53ee8cc1Swenshuai.xi     #define M2S_MBOX_KTV8_VOL                   MB_2D5A
524*53ee8cc1Swenshuai.xi     #define M2S_MBOX_KTV5_VOL                   MB_2D5C
525*53ee8cc1Swenshuai.xi     #define M2S_MBOX_KTV6_VOL                   MB_2D5E
526*53ee8cc1Swenshuai.xi     #define M2S_MBOX_CH7_VOL                    MB_2D58
527*53ee8cc1Swenshuai.xi 
528*53ee8cc1Swenshuai.xi     #define M2S_MBOX_AD_CONTROL                 MB_2DD8
529*53ee8cc1Swenshuai.xi         #define M2S_MBOX_MIX_MODE_BSTART            MBOX_BITS_SHIFT-11
530*53ee8cc1Swenshuai.xi         #define M2S_MBOX_MIX_MODE_BMASK             0x7
531*53ee8cc1Swenshuai.xi 
532*53ee8cc1Swenshuai.xi         /* M2S_MBOX_MIX_MODE */
533*53ee8cc1Swenshuai.xi         #define GPA_MIX_MODE_IS_FORWARD         0
534*53ee8cc1Swenshuai.xi         #define GPA_MIX_MODE_IS_BACKWARD        1
535*53ee8cc1Swenshuai.xi         #define GPA_MIX_MODE_IS_NULL            2      ! 2 & 3: NULL_Mixer_Mode
536*53ee8cc1Swenshuai.xi 
537*53ee8cc1Swenshuai.xi     #define M2S_MBOX_DBG_CMD1                   MB_2DDC
538*53ee8cc1Swenshuai.xi         #define MBOX_DBGCMD_SET_ADDR                0x0200
539*53ee8cc1Swenshuai.xi         #define MBOX_DBGCMD_WRITE_DM                0x0300
540*53ee8cc1Swenshuai.xi         #define MBOX_DBGCMD_WRITE_PM                0x0400
541*53ee8cc1Swenshuai.xi         #define MBOX_DBGCMD_READ_DM                 0x0500
542*53ee8cc1Swenshuai.xi         #define MBOX_DBGCMD_READ_PM                 0x0600
543*53ee8cc1Swenshuai.xi         #define MBOX_DBGCMD_READ_PMASK              0x0700
544*53ee8cc1Swenshuai.xi         #define MBOX_DBGCMD_READ_IMASK              0x0800
545*53ee8cc1Swenshuai.xi 
546*53ee8cc1Swenshuai.xi         #define MBOX_DBGCMD_READ_MAIN_VER           0x9000
547*53ee8cc1Swenshuai.xi         #define MBOX_DBGCMD_READ_ALG1_VER           0x9100
548*53ee8cc1Swenshuai.xi         #define MBOX_DBGCMD_READ_ALG2_VER           0x9200
549*53ee8cc1Swenshuai.xi 
550*53ee8cc1Swenshuai.xi         //#define MBOX_DBGCMD_MIP_INT                 0xE000
551*53ee8cc1Swenshuai.xi         //#define MBOX_DBGCMD_ENC_INT                 0xE100
552*53ee8cc1Swenshuai.xi         //#define MBOX_DBGCMD_FILE_PTS_INT            0xEA00
553*53ee8cc1Swenshuai.xi 
554*53ee8cc1Swenshuai.xi         #define MBOX_DBGCMD_RELOAD_SIF_BEG          0xF000
555*53ee8cc1Swenshuai.xi         #define MBOX_DBGCMD_RELOAD_SIF_END          0xF100
556*53ee8cc1Swenshuai.xi         #define MBOX_DBGCMD_WAIT_MCU_START          0xF300
557*53ee8cc1Swenshuai.xi         #define MBOX_DBGCMD_RELOAD_ADVSND_BEG       0xF400
558*53ee8cc1Swenshuai.xi         #define MBOX_DBGCMD_RELOAD_ADVSND_END       0xF500
559*53ee8cc1Swenshuai.xi 
560*53ee8cc1Swenshuai.xi     #define M2S_MBOX_DBG_CMD2                       MB_2DDE
561*53ee8cc1Swenshuai.xi 
562*53ee8cc1Swenshuai.xi     /* MISC */
563*53ee8cc1Swenshuai.xi     #define M2S_MBOX_SW_DMA_READER_DDR_WtPtr        MB_2D34
564*53ee8cc1Swenshuai.xi     #define M2S_MBOX_SW_DMA_READER_DDR_Ctrl         MB_2D36
565*53ee8cc1Swenshuai.xi     #define M2S_MBOX_SW_DMA_READER_DDR_SynthFreq    MB_2D56
566*53ee8cc1Swenshuai.xi     #define M2S_MBOX_SW_DMA_READER_DDR_SynthFreq_L  0     //Reserved
567*53ee8cc1Swenshuai.xi 
568*53ee8cc1Swenshuai.xi     #define M2S_MBOX_CAPTURE_CTRL               MB_2D4A   //[7:0] PCM_capture1  [15:8] PCM_capture2
569*53ee8cc1Swenshuai.xi     //#define M2S_MBOX_CAPTURE3_CTRL              //MB_2D4C   //[7:0] PCM_capture3  //RESERVED
570*53ee8cc1Swenshuai.xi         #define M2S_MBOX_GET_CH5                    1
571*53ee8cc1Swenshuai.xi         #define M2S_MBOX_GET_CH6                    2
572*53ee8cc1Swenshuai.xi         #define M2S_MBOX_GET_CH7                    3
573*53ee8cc1Swenshuai.xi         #define M2S_MBOX_GET_CH8                    4
574*53ee8cc1Swenshuai.xi         #define M2S_MBOX_GET_ADC1                   5
575*53ee8cc1Swenshuai.xi         #define M2S_MBOX_GET_ADC2                   6
576*53ee8cc1Swenshuai.xi         #define M2S_MBOX_GET_Raw_Delay_SE           7
577*53ee8cc1Swenshuai.xi         #define M2S_MBOX_GET_MIXER                  8
578*53ee8cc1Swenshuai.xi         #define M2S_MBOX_GET_Raw                    9
579*53ee8cc1Swenshuai.xi         #define M2S_MBOX_GET_DEBUG                  128
580*53ee8cc1Swenshuai.xi 
581*53ee8cc1Swenshuai.xi     #define M2S_MBOX_PCM_CAPTURE_DDR_RdPtr          MB_2DD4
582*53ee8cc1Swenshuai.xi     #define M2S_MBOX_PCM_CAPTURE_DDR_Size           MB_2DD6
583*53ee8cc1Swenshuai.xi 
584*53ee8cc1Swenshuai.xi     #define M2S_MBOX_PCM_CAPTURE2_DDR_RdPtr         MB_2D38
585*53ee8cc1Swenshuai.xi     #define M2S_MBOX_PCM_CAPTURE2_DDR_Size          MB_2D3A
586*53ee8cc1Swenshuai.xi 
587*53ee8cc1Swenshuai.xi     //#define M2S_MBOX_PCM_CAPTURE3_DDR_RdPtr         //MB_2D94   //RESERVED
588*53ee8cc1Swenshuai.xi     //#define M2S_MBOX_PCM_CAPTURE3_DDR_Size          //MB_2D96   //RESERVED
589*53ee8cc1Swenshuai.xi 
590*53ee8cc1Swenshuai.xi     /************************************************
591*53ee8cc1Swenshuai.xi     *   DSP to MCU mailbox
592*53ee8cc1Swenshuai.xi     ************************************************/
593*53ee8cc1Swenshuai.xi     #define S2M_MBOX_ES_MEMCNT                  MB_2D70
594*53ee8cc1Swenshuai.xi     #define S2M_MBOX_PCM_MEMCNT                 MB_2D72
595*53ee8cc1Swenshuai.xi     #define S2M_MBOX_MM_BROWSE_TIME             MB_2D74
596*53ee8cc1Swenshuai.xi     #define S2M_MBOX_MM_PTS_IN_SEC              MB_2D76
597*53ee8cc1Swenshuai.xi     #define S2M_MBOX_MM_PTS_IN_MSEC             MB_2D78
598*53ee8cc1Swenshuai.xi     #define S2M_MBOX_MM_PTS_HI                  MB_2D7A
599*53ee8cc1Swenshuai.xi     #define S2M_MBOX_MM_PTS_ME                  MB_2D7C
600*53ee8cc1Swenshuai.xi     #define S2M_MBOX_MM_PTS_LO                  MB_2D7E
601*53ee8cc1Swenshuai.xi 
602*53ee8cc1Swenshuai.xi     #define S2M_MBOX_DEC_STATUS                 MB_2DFA
603*53ee8cc1Swenshuai.xi 
604*53ee8cc1Swenshuai.xi     #define S2M_MBOX_SIF_DETECTION_RESULT       MB_2DE0
605*53ee8cc1Swenshuai.xi     #define S2M_MBOX_SIF_STATUS_INFO            MB_2DE2
606*53ee8cc1Swenshuai.xi     #define S2M_MBOX_SIF_STATUS_MODE1           MB_2DE4
607*53ee8cc1Swenshuai.xi     #define S2M_MBOX_SIF_STATUS_MODE2           MB_2DE6
608*53ee8cc1Swenshuai.xi     #define S2M_MBOX_SIF_STATUS_NICAM_INFO      MB_2DE8
609*53ee8cc1Swenshuai.xi     #define S2M_MBOX_SIF_STATUS_NICAM_PARITY_ERR_CNT    MB_2DEA
610*53ee8cc1Swenshuai.xi 
611*53ee8cc1Swenshuai.xi     #define S2M_MBOX_NR_STATUS                  MB_2DEE
612*53ee8cc1Swenshuai.xi     #define S2M_MBOX_BSND_STATUS                MB_2DEE
613*53ee8cc1Swenshuai.xi         #define MBOX_NR_WORKING_NOW                 MBOX_BIT0           // 1: NR working now            , 0 NR not working
614*53ee8cc1Swenshuai.xi         #define MBOX_TONE_FUNC_SELECT               MBOX_BIT1           // 0: EQ_Bass_Treble            , 1: Bass_Treble_old
615*53ee8cc1Swenshuai.xi         #define MBOX_PEQ_FUNC_SELECT                MBOX_BIT2           // 0: PEQ: single precision     , 1: double precision
616*53ee8cc1Swenshuai.xi 
617*53ee8cc1Swenshuai.xi     #define S2M_MBOX_MAIN_OVERFLOW_CNT          MB_2DF2                 //[15:8], full cnt of input SRAM buff2
618*53ee8cc1Swenshuai.xi     #define S2M_MBOX_MAIN_UNDERFLOW_CNT         MB_2DF2                 //[ 7:0], empty cnt of output SRAM buff1
619*53ee8cc1Swenshuai.xi 
620*53ee8cc1Swenshuai.xi     #define S2M_MBOX_ISR_CNTR                   MB_2DF6                 //[15:8]
621*53ee8cc1Swenshuai.xi     #define S2M_MBOX_INTR_CMDTYPE               MB_2DF6                 //[ 7:0]
622*53ee8cc1Swenshuai.xi         #define SE_DSP_INTR_CMD_MMES_NEED_DATA      0x0300
623*53ee8cc1Swenshuai.xi         #define SE_DSP_INTR_CMD_REPORT_PTS          0x0500
624*53ee8cc1Swenshuai.xi         #define SE_DSP_INTR_CMD_MMUNI_NEED_DATA     0x0600
625*53ee8cc1Swenshuai.xi         #define SE_DSP_INTR_CMD_VOIP                0x0900
626*53ee8cc1Swenshuai.xi         #define DSP_INTR_CMD_PCM_UPLOAD             0x3300
627*53ee8cc1Swenshuai.xi         #define DSP_INTR_CMD_PCM_DOWNLOAD           0xC000
628*53ee8cc1Swenshuai.xi 
629*53ee8cc1Swenshuai.xi     #define S2M_MBOX_WHILE1_CNTR                MB_2DF8                 //[ 7:0] Always in Low  Byte
630*53ee8cc1Swenshuai.xi     #define S2M_MBOX_TIMER_CNTR                 MB_2DF8                 //[15:8] Always in High Byte
631*53ee8cc1Swenshuai.xi 
632*53ee8cc1Swenshuai.xi     #define S2M_MBOX_DBG_RESULT1                MB_2DFC                 //
633*53ee8cc1Swenshuai.xi     #define S2M_MBOX_DSP_INIT_ACK               0x00E3
634*53ee8cc1Swenshuai.xi 
635*53ee8cc1Swenshuai.xi     #define S2M_MBOX_DBG_RESULT2                MB_2DFE                 //
636*53ee8cc1Swenshuai.xi     #define MBOX_DSP_RELOAD_ACK1                0x0033
637*53ee8cc1Swenshuai.xi     #define MBOX_DSP_RELOAD_ACK2                0x0077
638*53ee8cc1Swenshuai.xi 
639*53ee8cc1Swenshuai.xi     #define S2M_MBOX_SW_DMA_READER_DDR_Level    MB_2DE0
640*53ee8cc1Swenshuai.xi 
641*53ee8cc1Swenshuai.xi     #define S2M_MBOX_PCM_CAPTURE_DDR_WrPtr      MB_2DF0
642*53ee8cc1Swenshuai.xi     #define S2M_MBOX_PCM_CAPTURE2_DDR_WrPtr     MB_2DF4
643*53ee8cc1Swenshuai.xi     //#define S2M_MBOX_PCM_CAPTURE3_DDR_WrPtr     //MB_2D7E //RESERVED
644*53ee8cc1Swenshuai.xi 
645*53ee8cc1Swenshuai.xi #ifdef _COMPILE_DSP_
646*53ee8cc1Swenshuai.xi /************************************************
647*53ee8cc1Swenshuai.xi *   DSP ddr address mapping
648*53ee8cc1Swenshuai.xi *************************************************/
649*53ee8cc1Swenshuai.xi     /* DRAM Config */
650*53ee8cc1Swenshuai.xi         .const DSP2_TO_COMMON_DRAM_OFFSET           = (ASND_DSP_DDR_SIZE / BYTES_IN_MIU_LINE);
651*53ee8cc1Swenshuai.xi 
652*53ee8cc1Swenshuai.xi     /* SPDIF delay (GP C Bffer) */
653*53ee8cc1Swenshuai.xi         .const DSP2_SPDIF_DLY_DRAM_BASE             = (OFFSET_SPDIF_DLY_DRAM_BASE / BYTES_IN_MIU_LINE);
654*53ee8cc1Swenshuai.xi         .const DSP2_SPDIF_DLY_DRAM_SIZE             = ((SPDIF_DLY_DRAM_SIZE / BYTES_IN_MIU_LINE) - 1);
655*53ee8cc1Swenshuai.xi 
656*53ee8cc1Swenshuai.xi     /* HDMI delay (GP C Bffer) */
657*53ee8cc1Swenshuai.xi         .const HDMI_DLY_DRAM_BASE                   = (SE_HDMI_DLY_DRAM_BASE / BYTES_IN_MIU_LINE);
658*53ee8cc1Swenshuai.xi         .const HDMI_DLY_DRAM_SIZE                   = (SE_HDMI_DLY_DRAM_SIZE / BYTES_IN_MIU_LINE) - 1;
659*53ee8cc1Swenshuai.xi 
660*53ee8cc1Swenshuai.xi     /* sound system */
661*53ee8cc1Swenshuai.xi         .const DSP2_DMA_START_DRAM_BASE1            = (OFFSET_SE_MAIN_IN_DRAM_ADDR / BYTES_IN_MIU_LINE);
662*53ee8cc1Swenshuai.xi         .const DSP2_DMA_START_DRAM_SIZE1            = (SE_MAIN_IN_DRAM_SIZE / BYTES_IN_MIU_LINE);
663*53ee8cc1Swenshuai.xi         .const DSP2_DMA_START_DRAM_BASE2            = (OFFSET_SE_MAIN_OUT_DRAM_ADDR / BYTES_IN_MIU_LINE);
664*53ee8cc1Swenshuai.xi         .const DSP2_DMA_START_DRAM_SIZE2            = (SE_MAIN_OUT_DRAM_SIZE / BYTES_IN_MIU_LINE);
665*53ee8cc1Swenshuai.xi 
666*53ee8cc1Swenshuai.xi     /* Surround */
667*53ee8cc1Swenshuai.xi         #if(MSTAR_SURROUND_DRAM_SIZE>0)
668*53ee8cc1Swenshuai.xi         #define SUR_DRAM_BASEADDR                   (OFFSET_MSTAR_SURROUND_DRAM_ADDR / BYTES_IN_MIU_LINE)                               // Line Address
669*53ee8cc1Swenshuai.xi         #define SUR_DRAM_ENDADDR                    ((OFFSET_MSTAR_SURROUND_DRAM_ADDR + 0x0007E00) / BYTES_IN_MIU_LINE) // ((OFFSET_MSTAR_SURROUND_DRAM_ADDR + MSTAR_SURROUND_DRAM_SIZE) / BYTES_IN_MIU_LINE)  // Line Address
670*53ee8cc1Swenshuai.xi         #endif
671*53ee8cc1Swenshuai.xi 
672*53ee8cc1Swenshuai.xi     /* HE-AAC Metadata Buffer on DEC */
673*53ee8cc1Swenshuai.xi         .const DSP2_HEAAC_METADATA_DRAM_BASE        = (OFFSET_DDENC_METADATA_DRAM_ADDR / BYTES_IN_MIU_LINE);
674*53ee8cc1Swenshuai.xi         .const DSP2_HEAAC_METADATA_DRAM_SIZE        = (DDENC_METADATA_DRAM_SIZE / BYTES_IN_MIU_LINE);        // 8KB
675*53ee8cc1Swenshuai.xi 
676*53ee8cc1Swenshuai.xi     /* KTV */
677*53ee8cc1Swenshuai.xi         #if(KTV_SURROUND_DRAM_SIZE>0)
678*53ee8cc1Swenshuai.xi         #define SUR_DRAM_KTV_BASEADDR               (OFFSET_KTV_SURROUND_DRAM_ADDR / BYTES_IN_MIU_LINE)                             // Line address, Only in KTV mode, MS surround -> echo
679*53ee8cc1Swenshuai.xi         #define SUR_DARM_KTV_ENDADDR                ((OFFSET_KTV_SURROUND_DRAM_ADDR + 0x0001FE00) / BYTES_IN_MIU_LINE) //((OFFSET_KTV_SURROUND_DRAM_ADDR + KTV_SURROUND_DRAM_SIZE) / BYTES_IN_MIU_LINE)  // Line address, Overlay with DM prefetch
680*53ee8cc1Swenshuai.xi         #endif
681*53ee8cc1Swenshuai.xi 
682*53ee8cc1Swenshuai.xi     /* DSP DM Prefetch */
683*53ee8cc1Swenshuai.xi         #define DSP2_DM_PREFETCH_DRAM_BASE          (OFFSET_DM_PREFETCH_DRAM_ADDR / BYTES_IN_MIU_LINE)
684*53ee8cc1Swenshuai.xi         #define DSP2_DM_PREFETCH_DRAM_SIZE          (DM_PREFETCH_DRAM_SIZE / BYTES_IN_MIU_LINE)        // 64KB
685*53ee8cc1Swenshuai.xi 
686*53ee8cc1Swenshuai.xi     /* standalone DDCO PCM Buffer */
687*53ee8cc1Swenshuai.xi         //#define DSP2_DDE_PCM_DRAM_BASE              (DSP2_DM_PREFETCH_DRAM_BASE+0x400)      // AC3 Encode base address
688*53ee8cc1Swenshuai.xi         //#define DSP2_DDE_PCM_DRAM_SIZE              (0xBFF)           // 48KB
689*53ee8cc1Swenshuai.xi         .const DSP2_DDE_PCM_DRAM_BASE                = (OFFSET_SER2_DDENC_MCHOUT_DRAM_ADDR / BYTES_IN_MIU_LINE);      // AC3 Encode base address
690*53ee8cc1Swenshuai.xi         .const DSP2_DDE_PCM_DRAM_SIZE                = ((SER2_DDENC_MCHOUT_DRAM_SIZE / BYTES_IN_MIU_LINE) - 1);       // 54kB
691*53ee8cc1Swenshuai.xi 
692*53ee8cc1Swenshuai.xi     /* HEAD PHONE delay */
693*53ee8cc1Swenshuai.xi         #if(HEAD_PHONE_DLY_DRAM_SIZE>0)
694*53ee8cc1Swenshuai.xi         .const DSP2_HEAD_PHONE_DLY_DRAM_BASE        = (OFFSET_HEAD_PHONE_DLY_DRAM_BASE / BYTES_IN_MIU_LINE); // Line address
695*53ee8cc1Swenshuai.xi         .const DSP2_HEAD_PHONE_DLY_DRAM_SIZE        = ((HEAD_PHONE_DLY_DRAM_SIZE / BYTES_IN_MIU_LINE) - 1);
696*53ee8cc1Swenshuai.xi         #endif
697*53ee8cc1Swenshuai.xi 
698*53ee8cc1Swenshuai.xi     /* CH5 input delay */
699*53ee8cc1Swenshuai.xi         #if(CH5_INPUT_DLY_DRAM_SIZE>0)
700*53ee8cc1Swenshuai.xi         .const DSP2_CH5_INPUT_DLY_DRAM_BASE         = (OFFSET_CH5_INPUT_DLY_DRAM_BASE / BYTES_IN_MIU_LINE);  // Line address
701*53ee8cc1Swenshuai.xi         .const DSP2_CH5_INPUT_DLY_DRAM_SIZE         = ((CH5_INPUT_DLY_DRAM_SIZE / BYTES_IN_MIU_LINE) - 1);
702*53ee8cc1Swenshuai.xi         #endif
703*53ee8cc1Swenshuai.xi 
704*53ee8cc1Swenshuai.xi     /* CH6 input delay */
705*53ee8cc1Swenshuai.xi         #if(CH6_INPUT_DLY_DRAM_SIZE>0)
706*53ee8cc1Swenshuai.xi         .const DSP2_CH6_INPUT_DLY_DRAM_BASE         = (OFFSET_CH6_INPUT_DLY_DRAM_BASE / BYTES_IN_MIU_LINE);  // Line address
707*53ee8cc1Swenshuai.xi         .const DSP2_CH6_INPUT_DLY_DRAM_SIZE         = ((CH6_INPUT_DLY_DRAM_SIZE / BYTES_IN_MIU_LINE) - 1);
708*53ee8cc1Swenshuai.xi         #endif
709*53ee8cc1Swenshuai.xi 
710*53ee8cc1Swenshuai.xi     /* multiChInput audio delay */
711*53ee8cc1Swenshuai.xi         #if(MULTI_CH_INPUT_DLY_DRAM_SIZE>0)
712*53ee8cc1Swenshuai.xi         .const DSP2_MULTI_CH_INPUT_DLY_DRAM_BASE    = (OFFSET_MULTI_CH_INPUT_DLY_DRAM_BASE / BYTES_IN_MIU_LINE); // Line address
713*53ee8cc1Swenshuai.xi         .const DSP2_MULTI_CH_INPUT_DLY_DRAM_SIZE    = ((MULTI_CH_INPUT_DLY_DRAM_SIZE / BYTES_IN_MIU_LINE) - 1);
714*53ee8cc1Swenshuai.xi         #endif
715*53ee8cc1Swenshuai.xi 
716*53ee8cc1Swenshuai.xi     /* SPDIF Non-PCM */
717*53ee8cc1Swenshuai.xi         .const DSP2_SPDIF_DRAM_BASE                 = OFFSET_SPDIF_NONPCM_DRAM_BASE / BYTES_IN_MIU_LINE;
718*53ee8cc1Swenshuai.xi         .const DSP2_SPDIF_DRAM_SIZE                 = (SPDIF_NONPCM_DRAM_SIZE / BYTES_IN_MIU_LINE) - 1;
719*53ee8cc1Swenshuai.xi 
720*53ee8cc1Swenshuai.xi     /* HDMI Non-PCM */
721*53ee8cc1Swenshuai.xi         .const DSP2_HDMI_DRAM_BASE                  = OFFSET_HDMI_NONPCM_DRAM_BASE / BYTES_IN_MIU_LINE;
722*53ee8cc1Swenshuai.xi         .const DSP2_HDMI_DRAM_SIZE                  = (HDMI_NONPCM_DRAM_SIZE / BYTES_IN_MIU_LINE) - 1;
723*53ee8cc1Swenshuai.xi 
724*53ee8cc1Swenshuai.xi     /* pcmR_dmxPcm from preAsndR2 */
725*53ee8cc1Swenshuai.xi         .const DSP2_PCMR_DMXPCM_DRAM_BASE           = (OFFSET_SER2_OUTPCM_DMX_DRAM_ADDR / BYTES_IN_MIU_LINE);
726*53ee8cc1Swenshuai.xi         .const DSP2_PCMR_DMXPCM_DRAM_SIZE           = ((SER2_OUTPCM_DMX_DRAM_SIZE / BYTES_IN_MIU_LINE) - 1);
727*53ee8cc1Swenshuai.xi 
728*53ee8cc1Swenshuai.xi     /* COMMON DRAM */
729*53ee8cc1Swenshuai.xi 
730*53ee8cc1Swenshuai.xi         /* PCM 1 / 2 */
731*53ee8cc1Swenshuai.xi             .const DSP2_PCM1_DRAM_BASE              = (DSP2_TO_COMMON_DRAM_OFFSET + (OFFSET_PCM1_DRAM_ADDR / BYTES_IN_MIU_LINE));
732*53ee8cc1Swenshuai.xi             .const DSP2_PCM1_DRAM_SIZE              = (PCM1_DRAM_SIZE / BYTES_IN_MIU_LINE) - 1;
733*53ee8cc1Swenshuai.xi 
734*53ee8cc1Swenshuai.xi             .const DSP2_PCM2_DRAM_BASE              = (DSP2_TO_COMMON_DRAM_OFFSET + (OFFSET_PCM2_DRAM_ADDR / BYTES_IN_MIU_LINE));
735*53ee8cc1Swenshuai.xi             .const DSP2_PCM2_DRAM_SIZE              = (PCM2_DRAM_SIZE / BYTES_IN_MIU_LINE) - 1;
736*53ee8cc1Swenshuai.xi 
737*53ee8cc1Swenshuai.xi         /* Software DMA */
738*53ee8cc1Swenshuai.xi             #if(SW_DMA_READER_DRAM_SIZE>0)
739*53ee8cc1Swenshuai.xi             .const DSP2_SW_DMA_READER_DRAM_BASE     = (DSP2_TO_COMMON_DRAM_OFFSET + (OFFSET_SW_DMA_READER_DRAM_BASE / BYTES_IN_MIU_LINE));
740*53ee8cc1Swenshuai.xi             .const DSP2_SW_DMA_READER_DRAM_SIZE     = ((SW_DMA_READER_DRAM_SIZE / BYTES_IN_MIU_LINE) - 1);
741*53ee8cc1Swenshuai.xi             #endif
742*53ee8cc1Swenshuai.xi         /* PCM capture buffer */
743*53ee8cc1Swenshuai.xi             #if(PCM_CAPTURE_BUFFER_DRAM_SIZE>0)
744*53ee8cc1Swenshuai.xi             .const DSP2_PCM_CAPTURE_BUFFER_DRAM_BASE    = DSP2_TO_COMMON_DRAM_OFFSET + (OFFSET_PCM_CAPTURE1_BUFFER_DRAM_BASE / BYTES_IN_MIU_LINE);
745*53ee8cc1Swenshuai.xi             .const DSP2_PCM_CAPTURE_BUFFER_DRAM_SIZE    = (PCM_CAPTURE_BUFFER_DRAM_SIZE/ BYTES_IN_MIU_LINE);
746*53ee8cc1Swenshuai.xi             #endif
747*53ee8cc1Swenshuai.xi             #if(PCM_CAPTURE2_BUFFER_DRAM_SIZE>0)
748*53ee8cc1Swenshuai.xi             .const DSP2_PCM_CAPTURE2_BUFFER_DRAM_BASE   = DSP2_TO_COMMON_DRAM_OFFSET + (OFFSET_PCM_CAPTURE2_BUFFER_DRAM_BASE / BYTES_IN_MIU_LINE);
749*53ee8cc1Swenshuai.xi             .const DSP2_PCM_CAPTURE2_BUFFER_DRAM_SIZE   = (PCM_CAPTURE2_BUFFER_DRAM_SIZE/ BYTES_IN_MIU_LINE);
750*53ee8cc1Swenshuai.xi             #endif
751*53ee8cc1Swenshuai.xi             #if(PCM_CAPTURE3_BUFFER_DRAM_SIZE>0)
752*53ee8cc1Swenshuai.xi             .const DSP2_PCM_CAPTURE3_BUFFER_DRAM_BASE   = DSP2_TO_COMMON_DRAM_OFFSET + (OFFSET_PCM_CAPTURE3_BUFFER_DRAM_BASE / BYTES_IN_MIU_LINE);
753*53ee8cc1Swenshuai.xi             .const DSP2_PCM_CAPTURE3_BUFFER_DRAM_SIZE   = (PCM_CAPTURE3_BUFFER_DRAM_SIZE/ BYTES_IN_MIU_LINE);
754*53ee8cc1Swenshuai.xi             #endif
755*53ee8cc1Swenshuai.xi             #define DSP2_PCM_CAPTURE_COPY_WORDSIZE      32
756*53ee8cc1Swenshuai.xi             #define DSP2_PCM_CAPTURE_COPY_LINESIZE      4
757*53ee8cc1Swenshuai.xi 
758*53ee8cc1Swenshuai.xi /************************************************
759*53ee8cc1Swenshuai.xi *  DSP TSCALE & TCOUNT setting
760*53ee8cc1Swenshuai.xi ************************************************/
761*53ee8cc1Swenshuai.xi #define DSP_SYSTEM_FREQUENCY        368
762*53ee8cc1Swenshuai.xi #define TSCALE_CONSTANT             0xF9
763*53ee8cc1Swenshuai.xi #define DSP_TIME_CONSTANT           (DSP_SYSTEM_FREQUENCY/2 -1)
764*53ee8cc1Swenshuai.xi #define DSP_TIMER_SETTING           DSP_TIME_CONSTANT
765*53ee8cc1Swenshuai.xi 
766*53ee8cc1Swenshuai.xi /************************************************
767*53ee8cc1Swenshuai.xi *   Below is DMA config
768*53ee8cc1Swenshuai.xi *************************************************/
769*53ee8cc1Swenshuai.xi     #define DMAITF_DSPCMD_ALIGNMENT_BIT         7           // 1/0 : msb / lsb alignment
770*53ee8cc1Swenshuai.xi     #define DMAITF_DSPCMD_BYTESWAP_BIT          6           // set 1 to byte swap
771*53ee8cc1Swenshuai.xi     #define DMAITF_DSPCMD_READY_BIT             5           // set 1 to trigger, will be 0 when dma is finished
772*53ee8cc1Swenshuai.xi     #define DMAITF_DSPCMD_CLRCNTR_BIT           4           // set 1 to clear
773*53ee8cc1Swenshuai.xi     #define DMAITF_DSPCMD_PRIORITY_BIT          3           // 1/0 : high / low
774*53ee8cc1Swenshuai.xi     #define DMAITF_DSPCMD_24BITS_BIT            2           // 1/0 : 24bits / 16bits
775*53ee8cc1Swenshuai.xi 
776*53ee8cc1Swenshuai.xi     #define DMAITF_DSPCMD_ALIGNMENT_MASK        0x80
777*53ee8cc1Swenshuai.xi     #define DMAITF_DSPCMD_BYTESWAP_MASK         0x40
778*53ee8cc1Swenshuai.xi     #define DMAITF_DSPCMD_READY_MASK            0x20
779*53ee8cc1Swenshuai.xi     #define DMAITF_DSPCMD_CLRCNTR_MASK          0x10
780*53ee8cc1Swenshuai.xi     #define DMAITF_DSPCMD_PRIORITY_MASK         0x08
781*53ee8cc1Swenshuai.xi     #define DMAITF_DSPCMD_24BITS_MASK           0x04
782*53ee8cc1Swenshuai.xi     #define DMAITF_DSPCMD_BURST_6               0x03
783*53ee8cc1Swenshuai.xi     #define DMAITF_DSPCMD_BURST_3               0x02
784*53ee8cc1Swenshuai.xi     #define DMAITF_DSPCMD_BURST_2               0x01
785*53ee8cc1Swenshuai.xi     #define DMAITF_DSPCMD_BURST_1               0x00
786*53ee8cc1Swenshuai.xi 
787*53ee8cc1Swenshuai.xi     #if (MIU_128 == 1)
788*53ee8cc1Swenshuai.xi         /* 1 MIU Line = 128bit (16 bytes) */
789*53ee8cc1Swenshuai.xi         #define DMAITF_DSPWORDS_IN_1_LINE           8
790*53ee8cc1Swenshuai.xi         #define DMAITF_DSPWORDS_IN_1LINE_LOG2       3
791*53ee8cc1Swenshuai.xi         #define DMAITF_DSPWORDS_IN_3LINE_LOG2       4
792*53ee8cc1Swenshuai.xi         #define DMAITF_WR_BIT                       16
793*53ee8cc1Swenshuai.xi         #define DMAITF_DM_BIT                       15
794*53ee8cc1Swenshuai.xi         #define DMAITF_BYTES_IN_1MIU_LINE           BYTES_IN_MIU_LINE
795*53ee8cc1Swenshuai.xi 
796*53ee8cc1Swenshuai.xi         #define DMAITF_RD_PM_MASK                   0x000000
797*53ee8cc1Swenshuai.xi         #define DMAITF_WR_PM_MASK                   0x010000
798*53ee8cc1Swenshuai.xi         #define DMAITF_RD_DM_MASK                   0x008000
799*53ee8cc1Swenshuai.xi         #define DMAITF_WR_DM_MASK                   0x018000
800*53ee8cc1Swenshuai.xi 
801*53ee8cc1Swenshuai.xi         #define DMAITF_16BITS_B1_DMA_CMD            0xA8                // 16 Bits Burst 1, high alignment
802*53ee8cc1Swenshuai.xi         #define DMAITF_16BITS_B2_DMA_CMD            0xA8                //no Burst 2 cmd, use B1 instead
803*53ee8cc1Swenshuai.xi         #define DMAITF_16BITS_B1_SWAP_DMA_CMD       0xE8                // 16 Bits Burst 1, high alignment
804*53ee8cc1Swenshuai.xi         #define DMAITF_16BITS_B2_SWAP_DMA_CMD       0xE8                //no Burst 2 cmd, use B1 instead
805*53ee8cc1Swenshuai.xi 
806*53ee8cc1Swenshuai.xi         #define DMAITF_24BITS_B3_DMA_CMD            0x2E                // 24 Bits Burst 3
807*53ee8cc1Swenshuai.xi         #define DMAITF_24BITS_B6_DMA_CMD            0x2E                //no Burst 6 cmd, use B3 instead
808*53ee8cc1Swenshuai.xi 
809*53ee8cc1Swenshuai.xi         #define DMAITF_16BITS_LowAlign_B1_DMA_CMD   0x28                //16 Bits Burst 1, low alignment
810*53ee8cc1Swenshuai.xi         #define DMAITF_16BITS_LowAlign_B1_SWAP_DMA_CMD   0x68                //16 Bits Burst 1, low alignment
811*53ee8cc1Swenshuai.xi     #else
812*53ee8cc1Swenshuai.xi         /* 1 MIU Line = 64bit (8 bytes) */
813*53ee8cc1Swenshuai.xi         #define DMAITF_DSPWORDS_IN_1_LINE           4
814*53ee8cc1Swenshuai.xi         #define DMAITF_DSPWORDS_IN_1LINE_LOG2       2
815*53ee8cc1Swenshuai.xi         #define DMAITF_DSPWORDS_IN_3LINE_LOG2       3
816*53ee8cc1Swenshuai.xi         #define DMAITF_WR_BIT                       15
817*53ee8cc1Swenshuai.xi         #define DMAITF_DM_BIT                       14
818*53ee8cc1Swenshuai.xi         #define DMAITF_BYTES_IN_1MIU_LINE           BYTES_IN_MIU_LINE
819*53ee8cc1Swenshuai.xi 
820*53ee8cc1Swenshuai.xi         #define DMAITF_RD_PM_MASK                   0x000000
821*53ee8cc1Swenshuai.xi         #define DMAITF_WR_PM_MASK                   0x008000
822*53ee8cc1Swenshuai.xi         #define DMAITF_RD_DM_MASK                   0x004000
823*53ee8cc1Swenshuai.xi         #define DMAITF_WR_DM_MASK                   0x00C000
824*53ee8cc1Swenshuai.xi 
825*53ee8cc1Swenshuai.xi         #define DMAITF_16BITS_B1_DMA_CMD            0xA8                // 16 Bits Burst 1, high alignment
826*53ee8cc1Swenshuai.xi         #define DMAITF_16BITS_B2_DMA_CMD            0xA9
827*53ee8cc1Swenshuai.xi         #define DMAITF_16BITS_B1_SWAP_DMA_CMD       0xE8                // 16 Bits Burst 1, high alignment
828*53ee8cc1Swenshuai.xi         #define DMAITF_16BITS_B2_SWAP_DMA_CMD       0xE9
829*53ee8cc1Swenshuai.xi 
830*53ee8cc1Swenshuai.xi         #define DMAITF_24BITS_B3_DMA_CMD            0x2E                // 24 Bits Burst 3
831*53ee8cc1Swenshuai.xi         #define DMAITF_24BITS_B6_DMA_CMD            0x2F                // 24 Bits Burst 6
832*53ee8cc1Swenshuai.xi 
833*53ee8cc1Swenshuai.xi         #define DMAITF_16BITS_LowAlign_B1_DMA_CMD   0x28                //16 Bits Burst 1, low alignment
834*53ee8cc1Swenshuai.xi         #define DMAITF_16BITS_LowAlign_B1_SWAP_DMA_CMD   0x68                //16 Bits Burst 1, low alignment
835*53ee8cc1Swenshuai.xi     #endif
836*53ee8cc1Swenshuai.xi 
837*53ee8cc1Swenshuai.xi     /* DMA Mapping */
838*53ee8cc1Swenshuai.xi     #define General_DSP_IDMA_CMD_Number             15              // just info this chip nubmer of DSP_IDMA can support, (no any purpose) need sync with HW spec
839*53ee8cc1Swenshuai.xi 
840*53ee8cc1Swenshuai.xi         #define SNDISR1_DMA_CTRL                DSPDMA7_DMA_CTRL
841*53ee8cc1Swenshuai.xi         #define SNDISR2_DMA_CTRL                DSPDMA2_DMA_CTRL
842*53ee8cc1Swenshuai.xi         #define SPDIF_DMA_CTRL                  DSPDMA6_DMA_CTRL        // SPDIF npcm
843*53ee8cc1Swenshuai.xi         #define HDMI_DMA_CTRL                   DSPDMA6_DMA_CTRL        // HDMI npcm
844*53ee8cc1Swenshuai.xi         #define PCM_CAPTURE_DMA_CTRL            DSPDMA15_DMA_CTRL
845*53ee8cc1Swenshuai.xi         #define PCM_CAPTURE2_DMA_CTRL           DSPDMA14_DMA_CTRL
846*53ee8cc1Swenshuai.xi         #define PCM_CAPTURE3_DMA_CTRL           DSPDMA13_DMA_CTRL
847*53ee8cc1Swenshuai.xi         #define SW_DMARDR_DMA_CTRL              DSPDMA13_DMA_CTRL
848*53ee8cc1Swenshuai.xi         #define HP_DLY_DMA_CTRL                 DSPDMA13_DMA_CTRL
849*53ee8cc1Swenshuai.xi         #define CH5_IN_DLY_DMA_CTRL             DSPDMA12_DMA_CTRL
850*53ee8cc1Swenshuai.xi         #define CH6_IN_DLY_DMA_CTRL             DSPDMA11_DMA_CTRL
851*53ee8cc1Swenshuai.xi         #define MULTI_CH_INPUT_DLY_DMA_CTRL     DSPDMA9_DMA_CTRL
852*53ee8cc1Swenshuai.xi         #define R2_DEC_PCM1R_DMA_CTRL           PCM1R_DMA_CTRL
853*53ee8cc1Swenshuai.xi         #define DDE_ISR_PCM_DMA_CTRL            DSPDMA1_DMA_CTRL
854*53ee8cc1Swenshuai.xi         #define SPDIF_DLY_IN_DMA_CTRL           DSPDMA2_DMA_CTRL
855*53ee8cc1Swenshuai.xi         #define HDMI_DLY_IN_DMA_CTRL            DSPDMA2_DMA_CTRL
856*53ee8cc1Swenshuai.xi         #define SPDIF_DLY_OUT_DMA_CTRL          DSPDMA6_DMA_CTRL
857*53ee8cc1Swenshuai.xi         #define HDMI_DLY_OUT_DMA_CTRL           DSPDMA6_DMA_CTRL
858*53ee8cc1Swenshuai.xi         #define PCMR_DMXPCM_DMA_CTRL            PCM1R_DMA_CTRL
859*53ee8cc1Swenshuai.xi 
860*53ee8cc1Swenshuai.xi         #define SNDBG_DMA_CTRL                  DSPDMA3_DMA_CTRL        // Background sound effect
861*53ee8cc1Swenshuai.xi         #define ADEC_DMA1_CTRL                  DSPDMA3_DMA_CTRL
862*53ee8cc1Swenshuai.xi         #define ADEC_DMA2_CTRL                  DSPDMA4_DMA_CTRL
863*53ee8cc1Swenshuai.xi         #define ADEC_DMA3_CTRL                  DSPDMA3_DMA_CTRL
864*53ee8cc1Swenshuai.xi         #define ADEC_DMA4_CTRL                  DSPDMA4_DMA_CTRL
865*53ee8cc1Swenshuai.xi         #define ADEC_DMA5_CTRL                  DSPDMA5_DMA_CTRL
866*53ee8cc1Swenshuai.xi 
867*53ee8cc1Swenshuai.xi /************************************************
868*53ee8cc1Swenshuai.xi *   Below is DSP FIFO/DDR unit Setting
869*53ee8cc1Swenshuai.xi *************************************************/
870*53ee8cc1Swenshuai.xi         .const SE_R2_FRAME_SIZE                     = 256;    //256 samples for R2_SE
871*53ee8cc1Swenshuai.xi         .const SE_PROCESS_FRAME_SMP_UNIT            = 128;     //128 samples per frame
872*53ee8cc1Swenshuai.xi 
873*53ee8cc1Swenshuai.xi         .const SE_PROCESS_FETCH_FRAME_LINE_SIZE     = SE_PROCESS_FRAME_SMP_UNIT*SE_PROCESS_FETCH_CHANNELS*3/BYTES_IN_MIU_LINE;
874*53ee8cc1Swenshuai.xi         .const SE_PROCESS_STORE_FRAME_LINE_SIZE     = SE_PROCESS_FRAME_SMP_UNIT*SE_PROCESS_STORE_CHANNELS*3/BYTES_IN_MIU_LINE;
875*53ee8cc1Swenshuai.xi 
876*53ee8cc1Swenshuai.xi     /* sound effect buffer / share buffer setting */
877*53ee8cc1Swenshuai.xi         .const SE_PROCESS_FIFO_SIZE_UNIT            = 64;         //delay fifo size per channel
878*53ee8cc1Swenshuai.xi         .const SE_PROCESS_DMA_WORD_SIZE_UNIT        = 16;         //DMA_WORD_SIZE per channel
879*53ee8cc1Swenshuai.xi 
880*53ee8cc1Swenshuai.xi     /* input ISR PCM samples -> DDR1 unit setting */
881*53ee8cc1Swenshuai.xi         .const SE_BUFF2_FIFO_SIZE                   = (SE_PROCESS_FIFO_SIZE_UNIT * SE_PROCESS_FETCH_CHANNELS);
882*53ee8cc1Swenshuai.xi         .const SE_BUFF2_DMA_WORD_SIZE               = (SE_PROCESS_DMA_WORD_SIZE_UNIT * SE_PROCESS_FETCH_CHANNELS);    // (DMA_WORD_SIZE per channel) * channel number
883*53ee8cc1Swenshuai.xi         .const SE_BUFF2_DMA_24BIT_LINE_SIZE         = SE_BUFF2_DMA_WORD_SIZE*3/BYTES_IN_MIU_LINE;
884*53ee8cc1Swenshuai.xi         .const SE_BUFF2_DMA_16BIT_LINE_SIZE         = SE_BUFF2_DMA_WORD_SIZE*2/BYTES_IN_MIU_LINE;
885*53ee8cc1Swenshuai.xi 
886*53ee8cc1Swenshuai.xi     /* DDR2 --> output ISR PCM samples */
887*53ee8cc1Swenshuai.xi         .const SE_BUFF1_FIFO_SIZE                   = (SE_PROCESS_FIFO_SIZE_UNIT * SE_PROCESS_STORE_CHANNELS);
888*53ee8cc1Swenshuai.xi         .const SE_BUFF1_DMA_WORD_SIZE               = (SE_PROCESS_DMA_WORD_SIZE_UNIT * SE_PROCESS_STORE_CHANNELS);    // (DMA_WORD_SIZE per channel) * channel number
889*53ee8cc1Swenshuai.xi         .const SE_BUFF1_DMA_24BIT_LINE_SIZE         = SE_BUFF1_DMA_WORD_SIZE*3/BYTES_IN_MIU_LINE;
890*53ee8cc1Swenshuai.xi         .const SE_BUFF1_DMA_16BIT_LINE_SIZE         = SE_BUFF1_DMA_WORD_SIZE*2/BYTES_IN_MIU_LINE;
891*53ee8cc1Swenshuai.xi 
892*53ee8cc1Swenshuai.xi     /* share buffer in dm mapping */
893*53ee8cc1Swenshuai.xi         .const SE_PROCESS_BUFFER_MAIN               = 0x0;
894*53ee8cc1Swenshuai.xi         .const SE_PROCESS_BUFFER_MAIN_RAW1_LR       = SE_PROCESS_BUFFER_MAIN + SE_PROCESS_FRAME_SMP_UNIT*0;
895*53ee8cc1Swenshuai.xi         .const SE_PROCESS_BUFFER_MAIN_RAW2_LR       = SE_PROCESS_BUFFER_MAIN + SE_PROCESS_FRAME_SMP_UNIT*2;
896*53ee8cc1Swenshuai.xi         .const SE_PROCESS_BUFFER_MAIN_SE_LR         = SE_PROCESS_BUFFER_MAIN + SE_PROCESS_FRAME_SMP_UNIT*4;
897*53ee8cc1Swenshuai.xi         .const SE_PROCESS_BUFFER_MAIN_SE_LmRm       = SE_PROCESS_BUFFER_MAIN + SE_PROCESS_FRAME_SMP_UNIT*6;
898*53ee8cc1Swenshuai.xi         .const SURR_DLY_BUFFER                      = SE_PROCESS_BUFFER_MAIN + SE_PROCESS_FRAME_SMP_UNIT*8;
899*53ee8cc1Swenshuai.xi         .const NR_PARAMETER_BUFFER                  = SE_PROCESS_BUFFER_MAIN + SE_PROCESS_FRAME_SMP_UNIT*10;
900*53ee8cc1Swenshuai.xi         .const SE_PROCESS_BUFFER_MAIN_TMP           = SE_PROCESS_BUFFER_MAIN + SE_PROCESS_FRAME_SMP_UNIT*12;    //0x600
901*53ee8cc1Swenshuai.xi 
902*53ee8cc1Swenshuai.xi         #define DSP2DmAddr_system_shareBuff          0x0        //SE_PROCESS_BUFFER_MAIN
903*53ee8cc1Swenshuai.xi         #define DSP2DmAddr_system_shareBuff_size     (0x600)    //(SE_PROCESS_BUFFER_MAIN_TMP - SE_PROCESS_BUFFER_MAIN)
904*53ee8cc1Swenshuai.xi         #define DSP2DmAddr_advSnd_shareBuff_base     SE_PROCESS_BUFFER_MAIN_TMP
905*53ee8cc1Swenshuai.xi         #define DSP2DmAddr_advSnd_shareBuff_size     (0x1500)   // min size: (SE_PROCESS_FRAME_SMP_UNIT*SE_PROCESS_FETCH_CHANNELS) for system frame base SE
906*53ee8cc1Swenshuai.xi 
907*53ee8cc1Swenshuai.xi         .const SndEff_Array_TMP1                    = SE_PROCESS_BUFFER_MAIN_TMP;
908*53ee8cc1Swenshuai.xi         .const SndEff_Array_TMP2                    = SndEff_Array_TMP1 + SE_PROCESS_FRAME_SMP_UNIT*2;
909*53ee8cc1Swenshuai.xi         .const SndEff_Array_TMP3                    = SndEff_Array_TMP2 + SE_PROCESS_FRAME_SMP_UNIT*2;
910*53ee8cc1Swenshuai.xi         .const SndEff_Array_TMP4                    = SndEff_Array_TMP3 + SE_PROCESS_FRAME_SMP_UNIT*2;
911*53ee8cc1Swenshuai.xi 
912*53ee8cc1Swenshuai.xi         .const Apply_NR_Status_BUFFER               = NR_PARAMETER_BUFFER;
913*53ee8cc1Swenshuai.xi         .const Apply_NR_Gain_BUFFER                 = Apply_NR_Status_BUFFER + SE_PROCESS_FRAME_SMP_UNIT;
914*53ee8cc1Swenshuai.xi 
915*53ee8cc1Swenshuai.xi     /* General delay buffer template */
916*53ee8cc1Swenshuai.xi         .const DELAY_FIFO_SIZE                      = 128;
917*53ee8cc1Swenshuai.xi         .const DELAY_DMA_WORDSIZE                   = 32;
918*53ee8cc1Swenshuai.xi         .const DELAY_DMA_LINESIZE                   = DELAY_DMA_WORDSIZE*3/BYTES_IN_MIU_LINE;
919*53ee8cc1Swenshuai.xi 
920*53ee8cc1Swenshuai.xi         .const MULTI_CH_INPUT_DELAY_FIFO_SIZE       = (SE_PROCESS_FIFO_SIZE_UNIT * MULTI_CH_INPUT_DELAY_STORE_CHANNELS); // fifo len
921*53ee8cc1Swenshuai.xi         .const MULTI_CH_INPUT_DELAY_DMA_WORDSIZE    = (SE_PROCESS_DMA_WORD_SIZE_UNIT * MULTI_CH_INPUT_DELAY_STORE_CHANNELS);
922*53ee8cc1Swenshuai.xi         .const MULTI_CH_INPUT_DELAY_DMA_LINESIZE    = (MULTI_CH_INPUT_DELAY_DMA_WORDSIZE*3/BYTES_IN_MIU_LINE);
923*53ee8cc1Swenshuai.xi 
924*53ee8cc1Swenshuai.xi         /* Dly_status */
925*53ee8cc1Swenshuai.xi         .const DELAY_INPUT_STOP                     = 0;
926*53ee8cc1Swenshuai.xi         .const DELAY_OUTPUT_STOP                    = 1;
927*53ee8cc1Swenshuai.xi         .const DELAY_DLYIN_DMA_ASSERT               = 2;
928*53ee8cc1Swenshuai.xi         .const DELAY_DLYOUT_DMA_ASSERT              = 3;
929*53ee8cc1Swenshuai.xi 
930*53ee8cc1Swenshuai.xi     /* Mstar Surround delay buffer */
931*53ee8cc1Swenshuai.xi         .const SUR_FIFO_UNIT                        = SE_PROCESS_FRAME_SMP_UNIT*2;
932*53ee8cc1Swenshuai.xi         .const SUR_DRAM_BURSRT                      = (SUR_FIFO_UNIT*3)/BYTES_IN_MIU_LINE;
933*53ee8cc1Swenshuai.xi 
934*53ee8cc1Swenshuai.xi     /* spdif delay unit setting */
935*53ee8cc1Swenshuai.xi         .const SPDIF_DLYBUF_DMA_WORDSIZE          = 32;
936*53ee8cc1Swenshuai.xi         .const SPDIF_DLYBUF_DMA_LINESIZE          = SPDIF_DLYBUF_DMA_WORDSIZE*2/BYTES_IN_MIU_LINE;
937*53ee8cc1Swenshuai.xi         .const SPDIF_DLYFIFO_LEN                  = 64;
938*53ee8cc1Swenshuai.xi 
939*53ee8cc1Swenshuai.xi     /* spdif nonPcm unit setting */
940*53ee8cc1Swenshuai.xi         .const SPDIF_NPCM_DMA_WORDSIZE            = 32;
941*53ee8cc1Swenshuai.xi         .const SPDIF_NPCM_DMA_LINESIZE            = SPDIF_NPCM_DMA_WORDSIZE*2/BYTES_IN_MIU_LINE;
942*53ee8cc1Swenshuai.xi         .const SPDIF_NPCMFIFO_LEN                 = 64;
943*53ee8cc1Swenshuai.xi 
944*53ee8cc1Swenshuai.xi     /* pcmR_dmxPcm unit setting */
945*53ee8cc1Swenshuai.xi         .const PCMR_DMXPCM_DMA_WORDSIZE           = 32;
946*53ee8cc1Swenshuai.xi         .const PCMR_DMXPCM_DMA_LINESIZE           = PCMR_DMXPCM_DMA_WORDSIZE*2/BYTES_IN_MIU_LINE;
947*53ee8cc1Swenshuai.xi         .const PCMR_DMXPCMFIFO_LEN                = 64;
948*53ee8cc1Swenshuai.xi 
949*53ee8cc1Swenshuai.xi     /* hdmi npcm fifo unit setting */
950*53ee8cc1Swenshuai.xi         .const HDMI_NPCM_DMA_WORDSIZE             = 128;
951*53ee8cc1Swenshuai.xi         .const HDMI_NPCM_DMA_LINESIZE             = HDMI_NPCM_DMA_WORDSIZE*2/BYTES_IN_MIU_LINE;
952*53ee8cc1Swenshuai.xi         .const HDMI_NFIFO_LEN                     = 128*2;
953*53ee8cc1Swenshuai.xi 
954*53ee8cc1Swenshuai.xi     /* hdmi delay unit setting */
955*53ee8cc1Swenshuai.xi         .const HDMI_DLYBUF_DMA_WORDSIZE           = 32;
956*53ee8cc1Swenshuai.xi         .const HDMI_DLYBUF_DMA_LINESIZE           = HDMI_DLYBUF_DMA_WORDSIZE*2/BYTES_IN_MIU_LINE;
957*53ee8cc1Swenshuai.xi         .const HDMI_DLYFIFO_LEN                   = 64;
958*53ee8cc1Swenshuai.xi 
959*53ee8cc1Swenshuai.xi     /* SW DMA */
960*53ee8cc1Swenshuai.xi         .const SW_DMA_CTRL_RESET_BIT              = 0;
961*53ee8cc1Swenshuai.xi         .const SW_DMA_CTRL_START_BIT              = 1;
962*53ee8cc1Swenshuai.xi         .const SW_DMA_CTRL_CIRCL_BIT              = 2;
963*53ee8cc1Swenshuai.xi 
964*53ee8cc1Swenshuai.xi         .const SW_DMA_WORDSIZE                    = 32;
965*53ee8cc1Swenshuai.xi         .const SW_DMA_LINESIZE                    = SW_DMA_WORDSIZE*2/BYTES_IN_MIU_LINE;
966*53ee8cc1Swenshuai.xi 
967*53ee8cc1Swenshuai.xi /********************************************************************
968*53ee8cc1Swenshuai.xi * DSP ISR mapping
969*53ee8cc1Swenshuai.xi ********************************************************************/
970*53ee8cc1Swenshuai.xi     /* default 0 (no use) */
971*53ee8cc1Swenshuai.xi     #define ISR_MASK_PCM                IMASK_SP1T_IRQ1
972*53ee8cc1Swenshuai.xi     #define ISR_MASK_PCM2               IMASK_SP1R_IRQ0
973*53ee8cc1Swenshuai.xi     #define ISR_MASK_TIMER              IMASK_TM
974*53ee8cc1Swenshuai.xi 
975*53ee8cc1Swenshuai.xi     /* default -1 (no use) */
976*53ee8cc1Swenshuai.xi     #define ISR_PMASK_PCM               -1
977*53ee8cc1Swenshuai.xi     #define ISR_PMASK_PCM2              -1
978*53ee8cc1Swenshuai.xi     #define ISR_PMASK_DEC_R2_CMD        2               //from R2_0 IO  0xB000_0860
979*53ee8cc1Swenshuai.xi     #define ISR_PMASK_R2_LOAD_CODE_CMD  3               //from R2_0 IO  0xB000_0840
980*53ee8cc1Swenshuai.xi     #define ISR_PMASK_SPDIF2_ISR        0 //no use
981*53ee8cc1Swenshuai.xi     #define ISR_PMASK_HDMI_ISR          IMASK_IRQL1
982*53ee8cc1Swenshuai.xi 
983*53ee8cc1Swenshuai.xi     #define DEC_MAIN_FUNC_PTR           g_DecFunPtr
984*53ee8cc1Swenshuai.xi     #define PCMOUT_FUNC_PTR             g_IRQ1_isr_funcPtr
985*53ee8cc1Swenshuai.xi     #define SIF_PCMOUT_FUNC_PTR         g_IRQ0_isr_funcPtr
986*53ee8cc1Swenshuai.xi     #define SIF_ENC_FUNC_PTR            g_SifEncFuncPtr
987*53ee8cc1Swenshuai.xi     #define SIF_ENC_DATAOUT_FUNC_PTR    g_SifEncDataOutFuncPtr
988*53ee8cc1Swenshuai.xi 
989*53ee8cc1Swenshuai.xi /********************************************************************
990*53ee8cc1Swenshuai.xi * DSP internal mailbox mapping
991*53ee8cc1Swenshuai.xi ********************************************************************/
992*53ee8cc1Swenshuai.xi 
993*53ee8cc1Swenshuai.xi     /* SPDIF NonPCM */
994*53ee8cc1Swenshuai.xi         #define D2S_MBOX_SPDIF_CTRL             ddco_spdifNpcmCtrl      // [0:2]=Acmod for AC3/AC3+/HE-AAC, [3]=LFE flag,
995*53ee8cc1Swenshuai.xi                                                                         // [ 8:11]: HDMI  sample rate
996*53ee8cc1Swenshuai.xi                                                                         // 0: 96K, 1: 88K, 2: 64K
997*53ee8cc1Swenshuai.xi                                                                         // 3: 48K, 4: 44K, 5: 32K
998*53ee8cc1Swenshuai.xi                                                                         // 6: 24K, 7: 22K, 8: 16K
999*53ee8cc1Swenshuai.xi                                                                         // 9: 12K, a: 11K, b:  8K
1000*53ee8cc1Swenshuai.xi                                                                         // c:192K, d: 176K e: 128K
1001*53ee8cc1Swenshuai.xi                                                                         // [12:15]: SPDIF sample rate
1002*53ee8cc1Swenshuai.xi                                                                         // 0: 96K, 1: 88K, 2: 64K
1003*53ee8cc1Swenshuai.xi                                                                         // 3: 48K, 4: 44K, 5: 32K
1004*53ee8cc1Swenshuai.xi                                                                         // 6: 24K, 7: 22K, 8: 16K
1005*53ee8cc1Swenshuai.xi                                                                         // 9: 12K, a: 11K, b:  8K
1006*53ee8cc1Swenshuai.xi                                                                         // [18] info to DDCO: 1-> -4.75dB; 0-> do nothing
1007*53ee8cc1Swenshuai.xi                                                                         // [19] : 1->48KHz, 0->non-48KHz
1008*53ee8cc1Swenshuai.xi                                                                         // [20] MultiCH_EN, [21]=ADEC Stop/Play,[22]=Freeze,[23]=Start
1009*53ee8cc1Swenshuai.xi         #define D2S_MBOX_SPDIF_WRPTR            ddco_spdifNpcmWrPtr
1010*53ee8cc1Swenshuai.xi         #define S2D_MBOX_SPDIF_RDPTR            ddco_spdifNpcmRdPtr
1011*53ee8cc1Swenshuai.xi 
1012*53ee8cc1Swenshuai.xi         .const MBOX_MULTI_CHANNEL_ENABLE_BIT    = 20;
1013*53ee8cc1Swenshuai.xi         .const MBOX_SPDIF_NPCM_CTRL_BIT_PLAY    = 17;
1014*53ee8cc1Swenshuai.xi         .const MBOX_SPDIF_NPCM_CTRL_BIT_FREEZE  = 22;
1015*53ee8cc1Swenshuai.xi         .const MBOX_SPDIF_NPCM_CTRL_BIT_START   = 19;
1016*53ee8cc1Swenshuai.xi         .const MBOX_HDMI_NPCM_CTRL_BIT_PLAY    = 21;
1017*53ee8cc1Swenshuai.xi         .const MBOX_HDMI_NPCM_CTRL_BIT_START   = 23;
1018*53ee8cc1Swenshuai.xi             //[23]    HDMI nonPcm Start
1019*53ee8cc1Swenshuai.xi             //[22]
1020*53ee8cc1Swenshuai.xi             //[21]    HDMI nonPcm PlayEnable
1021*53ee8cc1Swenshuai.xi             //[20]    HDMI HBR mode
1022*53ee8cc1Swenshuai.xi             //[19]    SPDIF nonPcm Start
1023*53ee8cc1Swenshuai.xi             //[18]    inform DDEncode to attenuate 4.75dB
1024*53ee8cc1Swenshuai.xi             //[17]    SPDIF nonPcm PlayEnable
1025*53ee8cc1Swenshuai.xi             //[16]
1026*53ee8cc1Swenshuai.xi             //[15:12] SPDIF nonPcm sampleRate index
1027*53ee8cc1Swenshuai.xi                 // 0: 96K, 1: 88K, 2: 64K
1028*53ee8cc1Swenshuai.xi                 // 3: 48K, 4: 44K, 5: 32K
1029*53ee8cc1Swenshuai.xi                 // 6: 24K, 7: 22K, 8: 16K
1030*53ee8cc1Swenshuai.xi                 // 9: 12K, a: 11K, b:  8K
1031*53ee8cc1Swenshuai.xi 
1032*53ee8cc1Swenshuai.xi             //[11:8]  HDMI  nonPcm sampleRate index
1033*53ee8cc1Swenshuai.xi                 // 0: 96K, 1: 88K, 2: 64K
1034*53ee8cc1Swenshuai.xi                 // 3: 48K, 4: 44K, 5: 32K
1035*53ee8cc1Swenshuai.xi                 // 6: 24K, 7: 22K, 8: 16K
1036*53ee8cc1Swenshuai.xi                 // 9: 12K, a: 11K, b:  8K
1037*53ee8cc1Swenshuai.xi                 // c:192K, d: 176K e: 128K
1038*53ee8cc1Swenshuai.xi 
1039*53ee8cc1Swenshuai.xi             //[7]     HDMI is Pcm or nonPcm
1040*53ee8cc1Swenshuai.xi             //[6]     SPDIF is Pcm or nonPcm
1041*53ee8cc1Swenshuai.xi             //[5:4]   hdmi  nonPcm owner
1042*53ee8cc1Swenshuai.xi             //[3:2]   spdif nonPcm owner
1043*53ee8cc1Swenshuai.xi             //[0:1]   spdif/hdmi PCM attenuator index
1044*53ee8cc1Swenshuai.xi 
1045*53ee8cc1Swenshuai.xi         #define NULL_PAYLOAD_TEST               1
1046*53ee8cc1Swenshuai.xi 
1047*53ee8cc1Swenshuai.xi         #if (NULL_PAYLOAD_TEST == 1)
1048*53ee8cc1Swenshuai.xi             .const SPDIF_NPCM_MUTE_FRMCNT       =   0x8;
1049*53ee8cc1Swenshuai.xi             .const SPDIF_PCM_MUTE_SMPCNT        =   0;
1050*53ee8cc1Swenshuai.xi             .const SPDIF_NPCM_NULL_FRMCNT       =   0x0 + SPDIF_NPCM_MUTE_FRMCNT;
1051*53ee8cc1Swenshuai.xi         #else
1052*53ee8cc1Swenshuai.xi             .const SPDIF_NPCM_MUTE_FRMCNT       =   0x10;
1053*53ee8cc1Swenshuai.xi             .const SPDIF_PCM_MUTE_SMPCNT        =   0;
1054*53ee8cc1Swenshuai.xi         #endif
1055*53ee8cc1Swenshuai.xi 
1056*53ee8cc1Swenshuai.xi     /* Mailbox with DEC R2 */
1057*53ee8cc1Swenshuai.xi         #define D2S_MBOX_LOAD_CODE_CMD          DECR2M_2_DSP_MAILBOX0
1058*53ee8cc1Swenshuai.xi         #define D2S_MBOX_PCMISR_CTRL            DECR2M_2_DSP_MAILBOX1
1059*53ee8cc1Swenshuai.xi             #define MBOX_R2_PCM1ISR_PLAY_START_BIT          0           //--> �o�U�� playSmpFlag / stop / pause �M�w
1060*53ee8cc1Swenshuai.xi             #define MBOX_R2_PCM1ISR_PLAY_MUTE_BIT           1           //--> Mute
1061*53ee8cc1Swenshuai.xi             #define MBOX_R2_PCM1ISR_USING_ASINK_ISR_BIT     2
1062*53ee8cc1Swenshuai.xi             #define MBOX_R2_PCM2ISR_PLAY_START_BIT          8
1063*53ee8cc1Swenshuai.xi             #define MBOX_R2_PCM2ISR_PLAY_MUTE_BIT           9
1064*53ee8cc1Swenshuai.xi             #define MBOX_R2_PCM2ISR_USING_ASINK_ISR_BIT     10
1065*53ee8cc1Swenshuai.xi 
1066*53ee8cc1Swenshuai.xi         #define D2S_MBOX_PCM1_DRAM_WRPTR        DECR2M_2_DSP_MAILBOX2
1067*53ee8cc1Swenshuai.xi         #define D2S_MBOX_PCM1_SYNTH_H           DECR2M_2_DSP_MAILBOX3
1068*53ee8cc1Swenshuai.xi         #define D2S_MBOX_PCM1_SYNTH_L           DECR2M_2_DSP_MAILBOX4
1069*53ee8cc1Swenshuai.xi 
1070*53ee8cc1Swenshuai.xi         #define D2S_MBOX_PCM2_DRAM_WRPTR        DECR2M_2_DSP_MAILBOX5
1071*53ee8cc1Swenshuai.xi         #define D2S_MBOX_PCM2_SYNTH_H           DECR2M_2_DSP_MAILBOX6
1072*53ee8cc1Swenshuai.xi         #define D2S_MBOX_PCM2_SYNTH_L           DECR2M_2_DSP_MAILBOX7
1073*53ee8cc1Swenshuai.xi 
1074*53ee8cc1Swenshuai.xi         #define D2S_MBOX_R2_TO_DSP_COMMAND      DECR2M_2_DSP_MAILBOX8
1075*53ee8cc1Swenshuai.xi             #define D2S_CMD_UPD_PCM1_MUTECNT        0x0001      // Bit0
1076*53ee8cc1Swenshuai.xi             #define D2S_CMD_CLR_PCM1_PLAYCNT        0x0002      // Bit1
1077*53ee8cc1Swenshuai.xi             #define D2S_CMD_UPD_PCM1_PLAYCNT        0x0004      // Bit2
1078*53ee8cc1Swenshuai.xi             #define D2S_CMD_FLUSH_PCM1_SMPS         0x0008      // Bit3
1079*53ee8cc1Swenshuai.xi             #define D2S_CMD_RESET_PCM1              0x0010      // Bit4
1080*53ee8cc1Swenshuai.xi             #define D2S_CMD_UPD_PCM2_MUTECNT        0x0020      // Bit5
1081*53ee8cc1Swenshuai.xi             #define D2S_CMD_CLR_PCM2_PLAYCNT        0x0040      // Bit6
1082*53ee8cc1Swenshuai.xi             #define D2S_CMD_UPD_PCM2_PLAYCNT        0x0080      // Bit7
1083*53ee8cc1Swenshuai.xi             #define D2S_CMD_FLUSH_PCM2_SMPS         0x0100      // Bit8
1084*53ee8cc1Swenshuai.xi             #define D2S_CMD_RESET_PCM2              0x0200      // Bit9
1085*53ee8cc1Swenshuai.xi 
1086*53ee8cc1Swenshuai.xi         #define D2S_MBOX_R2_TO_DSP_PARAM        DECR2M_2_DSP_MAILBOX9
1087*53ee8cc1Swenshuai.xi         #define D2S_R2_SPDIF_WR_PTR             DECR2M_2_DSP_MAILBOXA
1088*53ee8cc1Swenshuai.xi         #define D2S_MBOX_HDMI_NPCM_WRPTR        DECR2M_2_DSP_MAILBOXB
1089*53ee8cc1Swenshuai.xi 
1090*53ee8cc1Swenshuai.xi         #define D2S_MBOX_HDMI_NPCM_CMD          DECR2M_2_DSP_MAILBOXC
1091*53ee8cc1Swenshuai.xi         #define D2S_R2_SPDIF_CTRL               DECR2M_2_DSP_MAILBOXC
1092*53ee8cc1Swenshuai.xi         #define D2S_MBOX_NPCM_CTRL              D2S_R2_SPDIF_CTRL
1093*53ee8cc1Swenshuai.xi             //#define MBOX_HDMI_NPCM_CTRL_BIT_START         MBOX_BIT23
1094*53ee8cc1Swenshuai.xi             //#define MBOX_HDMI_NPCM_CTRL_BIT_PLAY          MBOX_BIT21
1095*53ee8cc1Swenshuai.xi             //#define MBOX_MULTI_CHANNEL_ENABLE_BIT         MBOX_BIT20
1096*53ee8cc1Swenshuai.xi             //#define MBOX_SPDIF_NPCM_CTRL_BIT_START        MBOX_BIT19
1097*53ee8cc1Swenshuai.xi             #define MBOX_SPDIF_NPCM_DDE_MINUS_4_75DB      MBOX_BIT18
1098*53ee8cc1Swenshuai.xi             //#define MBOX_SPDIF_NPCM_CTRL_BIT_PLAY         MBOX_BIT17
1099*53ee8cc1Swenshuai.xi             #define MBOX_HDMI_NONPCM_FROM_ASND_DSP_BIT    MBOX_BIT5
1100*53ee8cc1Swenshuai.xi             #define MBOX_HDMI_NONPCM_FROM_ASND_R2_BIT     MBOX_BIT4
1101*53ee8cc1Swenshuai.xi             #define MBOX_SPDIF_NONPCM_FROM_ASND_DSP_BIT   MBOX_BIT3
1102*53ee8cc1Swenshuai.xi             #define MBOX_SPDIF_NONPCM_FROM_ASND_R2_BIT    MBOX_BIT2
1103*53ee8cc1Swenshuai.xi             //[23]    HDMI nonPcm Start
1104*53ee8cc1Swenshuai.xi             //[22]
1105*53ee8cc1Swenshuai.xi             //[21]    HDMI nonPcm PlayEnable
1106*53ee8cc1Swenshuai.xi             //[20]    HDMI HBR mode
1107*53ee8cc1Swenshuai.xi             //[19]    SPDIF nonPcm Start
1108*53ee8cc1Swenshuai.xi             //[18]    inform DDEncode to attenuate 4.75dB
1109*53ee8cc1Swenshuai.xi             //[17]    SPDIF nonPcm PlayEnable
1110*53ee8cc1Swenshuai.xi             //[16]
1111*53ee8cc1Swenshuai.xi             //[15:12] SPDIF nonPcm sampleRate index
1112*53ee8cc1Swenshuai.xi                 // 0: 96K, 1: 88K, 2: 64K
1113*53ee8cc1Swenshuai.xi                 // 3: 48K, 4: 44K, 5: 32K
1114*53ee8cc1Swenshuai.xi                 // 6: 24K, 7: 22K, 8: 16K
1115*53ee8cc1Swenshuai.xi                 // 9: 12K, a: 11K, b:  8K
1116*53ee8cc1Swenshuai.xi 
1117*53ee8cc1Swenshuai.xi             //[11:8]  HDMI  nonPcm sampleRate index
1118*53ee8cc1Swenshuai.xi                 // 0: 96K, 1: 88K, 2: 64K
1119*53ee8cc1Swenshuai.xi                 // 3: 48K, 4: 44K, 5: 32K
1120*53ee8cc1Swenshuai.xi                 // 6: 24K, 7: 22K, 8: 16K
1121*53ee8cc1Swenshuai.xi                 // 9: 12K, a: 11K, b:  8K
1122*53ee8cc1Swenshuai.xi                 // c:192K, d: 176K e: 128K
1123*53ee8cc1Swenshuai.xi 
1124*53ee8cc1Swenshuai.xi             //[7]     HDMI is Pcm or nonPcm
1125*53ee8cc1Swenshuai.xi             //[6]     SPDIF is Pcm or nonPcm
1126*53ee8cc1Swenshuai.xi             //[5:4]   hdmi  nonPcm owner
1127*53ee8cc1Swenshuai.xi             //[3:2]   spdif nonPcm owner
1128*53ee8cc1Swenshuai.xi             //[0:1]   spdif/hdmi PCM attenuator index   //Dolby Bulletin 11: PCM Level control, 0: 0dB,  1:-7dB(ATSC), 2:-8dB(DVB), 3:-11dB(ISDB)
1129*53ee8cc1Swenshuai.xi 
1130*53ee8cc1Swenshuai.xi         #define D2S_R2_DOLBY_META_DATA          DECR2M_2_DSP_MAILBOXD
1131*53ee8cc1Swenshuai.xi         #define D2S_DSP_ENCODE_SETTING          DECR2M_2_DSP_MAILBOXE
1132*53ee8cc1Swenshuai.xi              #define MBOX_NONPCM_DDE_ENABLE_BIT     MBOX_BIT6
1133*53ee8cc1Swenshuai.xi              #define MBOX_NONPCM_DTSE_ENABLE_BIT    MBOX_BIT5
1134*53ee8cc1Swenshuai.xi             //[6] DSP DDENC ENABLE bit
1135*53ee8cc1Swenshuai.xi             //[5] DSP DTS ENC ENABLE bit
1136*53ee8cc1Swenshuai.xi             //[4] LFE
1137*53ee8cc1Swenshuai.xi             //[3:0] AC mode
1138*53ee8cc1Swenshuai.xi 
1139*53ee8cc1Swenshuai.xi         /************************************************************/
1140*53ee8cc1Swenshuai.xi 
1141*53ee8cc1Swenshuai.xi         #define S2D_MBOX_DSP_TO_R2_COMMAND      DSP_2_DECR2M_MAILBOX0
1142*53ee8cc1Swenshuai.xi             #define S2D_CMD_RESET_PCM1_AVSYNC  0x0001
1143*53ee8cc1Swenshuai.xi             #define S2D_CMD_RESET_PCM2_AVSYNC  0x0002
1144*53ee8cc1Swenshuai.xi 
1145*53ee8cc1Swenshuai.xi         #define S2D_MBOX_DSP_TO_R2_PARAM        DSP_2_DECR2M_MAILBOX1
1146*53ee8cc1Swenshuai.xi         #define S2D_MBOX_R2CMD_RECEIVE_CNT      DSP_2_DECR2M_MAILBOX2
1147*53ee8cc1Swenshuai.xi 
1148*53ee8cc1Swenshuai.xi         #define S2D_MBOX_PCM1_PLAYCNT           DSP_2_DECR2M_MAILBOX3
1149*53ee8cc1Swenshuai.xi         #define S2D_MBOX_PCM1_FIFOCNT           DSP_2_DECR2M_MAILBOX4
1150*53ee8cc1Swenshuai.xi         #define S2D_MBOX_PCM1_DRAM_RDPTR        DSP_2_DECR2M_MAILBOX5
1151*53ee8cc1Swenshuai.xi 
1152*53ee8cc1Swenshuai.xi         #define S2D_MBOX_PCM2_PLAYCNT           DSP_2_DECR2M_MAILBOX6
1153*53ee8cc1Swenshuai.xi         #define S2D_MBOX_PCM2_FIFOCNT           DSP_2_DECR2M_MAILBOX7
1154*53ee8cc1Swenshuai.xi         #define S2D_MBOX_PCM2_DRAM_RDPTR        DSP_2_DECR2M_MAILBOX8
1155*53ee8cc1Swenshuai.xi 
1156*53ee8cc1Swenshuai.xi         #define S2D_MBOX_ENCODE_SURPPORT        DSP_2_DECR2M_MAILBOX9
1157*53ee8cc1Swenshuai.xi             #define DDE_ENCODE_SURPPORT_BIT             MBOX_BIT0
1158*53ee8cc1Swenshuai.xi             #define DTSE_ENCODE_SURPPORT_BIT            MBOX_BIT1
1159*53ee8cc1Swenshuai.xi             #define DDPE_ENCODE_SURPPORT_BIT            MBOX_BIT2
1160*53ee8cc1Swenshuai.xi 
1161*53ee8cc1Swenshuai.xi         #define S2D_R2_SPDIF_RD_PTR             DSP_2_DECR2M_MAILBOXA
1162*53ee8cc1Swenshuai.xi         #define S2D_MBOX_HDMI_NPCM_RDPTR        DSP_2_DECR2M_MAILBOXB
1163*53ee8cc1Swenshuai.xi 
1164*53ee8cc1Swenshuai.xi         #define S2D_IP_SECURITY_KEY             DSP_2_DECR2M_MAILBOXE
1165*53ee8cc1Swenshuai.xi         #define S2D_OTP_BOUNDING                DSP_2_DECR2M_MAILBOXF
1166*53ee8cc1Swenshuai.xi 
1167*53ee8cc1Swenshuai.xi         #define S2A_IP_SECURITY_KEY             DSP_2_SNDR2M_MAILBOXE
1168*53ee8cc1Swenshuai.xi         #define S2A_OTP_BOUNDING                DSP_2_SNDR2M_MAILBOXF
1169*53ee8cc1Swenshuai.xi 
1170*53ee8cc1Swenshuai.xi         !#define S2A_R2_PCMIN_WRPTR              DSP_2_DECR2M_MAILBOX7
1171*53ee8cc1Swenshuai.xi         !#define S2A_R2_PCMIN2_WRPTR             DSP_2_DECR2M_MAILBOX8
1172*53ee8cc1Swenshuai.xi         !#define S2A_R2_SPDIF_RD_PTR             DSP_2_DECR2M_MAILBOX9
1173*53ee8cc1Swenshuai.xi         !#define S2A_IP_SECURITY_KEY             DSP_2_DECR2M_MAILBOXE
1174*53ee8cc1Swenshuai.xi         !#define S2A_OTP_BOUNDING                DSP_2_DECR2M_MAILBOXF
1175*53ee8cc1Swenshuai.xi 
1176*53ee8cc1Swenshuai.xi         !#define A2S_R2_PCMOUT_WRPTR             DECR2M_2_DSP_MAILBOXD
1177*53ee8cc1Swenshuai.xi         !#define A2S_R2_PCMOUT2_WRPTR            DECR2M_2_DSP_MAILBOX0
1178*53ee8cc1Swenshuai.xi         !#define A2S_R2_SPDIF_WR_PTR             DECR2M_2_DSP_MAILBOXE
1179*53ee8cc1Swenshuai.xi         !#define A2S_R2_SPDIF_CTRL               DECR2M_2_DSP_MAILBOXF
1180*53ee8cc1Swenshuai.xi         /* Mailbox with SND R2 */
1181*53ee8cc1Swenshuai.xi         #define S2A_R2_PCMIN_WRPTR              DSP_2_SNDR2M_MAILBOX1
1182*53ee8cc1Swenshuai.xi         #define S2A_R2_PCMIN2_WRPTR             DSP_2_SNDR2M_MAILBOX2
1183*53ee8cc1Swenshuai.xi         #define S2A_R2_SPDIF_RD_PTR             DSP_2_SNDR2M_MAILBOX3
1184*53ee8cc1Swenshuai.xi         #define S2A_IP_SECURITY_KEY             DSP_2_SNDR2M_MAILBOXE
1185*53ee8cc1Swenshuai.xi         #define S2A_OTP_BOUNDING                DSP_2_SNDR2M_MAILBOXF
1186*53ee8cc1Swenshuai.xi         #define S2A_MBOX_HDMI_NPCM_RDPTR        DSP_2_SNDR2M_MAILBOX4
1187*53ee8cc1Swenshuai.xi         #define S2A_MBOX_PCMR_DMXPCM_RDPTR      DSP_2_SNDR2M_MAILBOX5  // pcmR_dmxPcm from preAsndR2 RDPTR
1188*53ee8cc1Swenshuai.xi         #define S2A_MBOX_SPEAKER_CH_VOLUME      DSP_2_SNDR2M_MAILBOXA
1189*53ee8cc1Swenshuai.xi 
1190*53ee8cc1Swenshuai.xi         #define A2S_R2_PCMOUT_WRPTR             SNDR2M_2_DSP_MAILBOX1
1191*53ee8cc1Swenshuai.xi         #define A2S_R2_PCMOUT2_WRPTR            SNDR2M_2_DSP_MAILBOX2
1192*53ee8cc1Swenshuai.xi         #define A2S_R2_SPDIF_WR_PTR             SNDR2M_2_DSP_MAILBOX3
1193*53ee8cc1Swenshuai.xi         #define A2S_MBOX_HDMI_NPCM_WRPTR        SNDR2M_2_DSP_MAILBOX4
1194*53ee8cc1Swenshuai.xi         #define A2S_R2_SPDIF_CTRL               SNDR2M_2_DSP_MAILBOX5
1195*53ee8cc1Swenshuai.xi         #define A2S_MBOX_HDMI_NPCM_CMD          SNDR2M_2_DSP_MAILBOX5
1196*53ee8cc1Swenshuai.xi         #define A2S_R2_DOLBY_META_DATA          SNDR2M_2_DSP_MAILBOX6
1197*53ee8cc1Swenshuai.xi         #define A2S_MBOX_DDENC_OUTMCH_WRPTR     SNDR2M_2_DSP_MAILBOX6
1198*53ee8cc1Swenshuai.xi 
1199*53ee8cc1Swenshuai.xi         #define A2S_MBOX_R2_TO_DSP_CTRL         SNDR2M_2_DSP_MAILBOX7
1200*53ee8cc1Swenshuai.xi             #define A2S_DDENC_ENABLE                    MBOX_BIT0
1201*53ee8cc1Swenshuai.xi             #define A2S_CMD_SOUND_MIXER_DISABLE_BIT     MBOX_BIT1       //[1] SOUND_MIXER, 0:in DSP (MS11), 1:in SND_R2 (MS12)
1202*53ee8cc1Swenshuai.xi 
1203*53ee8cc1Swenshuai.xi         #define A2S_MBOX_PCMR_DMXPCM_WRPTR      SNDR2M_2_DSP_MAILBOX9  // pcmR_dmxPcm from preAsndR2 WRPTR
1204*53ee8cc1Swenshuai.xi 
1205*53ee8cc1Swenshuai.xi         #define A2S_R2_SOUND_PROCESS_CTRL       SNDR2M_2_DSP_MAILBOXF
1206*53ee8cc1Swenshuai.xi             #define MBOX_PRE_SOUND_PROCESS_DISABLE_BIT	    MBOX_BIT0
1207*53ee8cc1Swenshuai.xi             #define MBOX_POST_SOUND_PROCESS_DISABLE_BIT	    MBOX_BIT1
1208*53ee8cc1Swenshuai.xi 
1209*53ee8cc1Swenshuai.xi /********************************************************************
1210*53ee8cc1Swenshuai.xi * DSP io mapping
1211*53ee8cc1Swenshuai.xi ********************************************************************/
1212*53ee8cc1Swenshuai.xi     #define NULL_IO                 0
1213*53ee8cc1Swenshuai.xi 
1214*53ee8cc1Swenshuai.xi     /* DSP common IO */
1215*53ee8cc1Swenshuai.xi         #define DSPIO_SPDIF_IN_FREQ        STATUS_SPDIF_FREQ
1216*53ee8cc1Swenshuai.xi         #define DSPIO_HDMI_IN_FREQ         STATUS_HDMI_FREQ
1217*53ee8cc1Swenshuai.xi         #define DSPIO_HDMI_IN_PC           STATUS_HDMI_PC
1218*53ee8cc1Swenshuai.xi 
1219*53ee8cc1Swenshuai.xi     /* DSP Bounding IO */
1220*53ee8cc1Swenshuai.xi         #define DSP_BOUND_OPTION            1
1221*53ee8cc1Swenshuai.xi         #define DSPIO_BOUND_OPTION          0xA0FF
1222*53ee8cc1Swenshuai.xi             .const BOUNDING_BIT_DD              = 0;                   //DD
1223*53ee8cc1Swenshuai.xi             .const BOUNDING_BIT_DDP             = 1;                   //DD+
1224*53ee8cc1Swenshuai.xi             .const BOUNDING_BIT_DPULSE          = 2;                   //Dolby Pulse (MS10 DDT) or DDCO
1225*53ee8cc1Swenshuai.xi             .const BOUNDING_BIT_DVOL            = 3;                   //Dolby Volume
1226*53ee8cc1Swenshuai.xi             .const BOUNDING_BIT_DTRUEHD         = 4;                   //Dolby TrueHD
1227*53ee8cc1Swenshuai.xi             .const BOUNDING_BIT_DDDCO           = 5;                   //Dolby DDCO
1228*53ee8cc1Swenshuai.xi             .const BOUNDING_BIT_DTSENVELO       = 6;                   //DTS Envelo / Symmetry
1229*53ee8cc1Swenshuai.xi             .const BOUNDING_BIT_DTSDMP          = 7;                   //DTS DMP
1230*53ee8cc1Swenshuai.xi             .const BOUNDING_BIT_DTSLBR          = 8;                   //DTS LBR
1231*53ee8cc1Swenshuai.xi             .const BOUNDING_BIT_DTSTS           = 9;                   //DTS Transcoder
1232*53ee8cc1Swenshuai.xi             .const BOUNDING_BIT_DTSCORELESS     = 10;                  //DTS Coreless
1233*53ee8cc1Swenshuai.xi             .const BOUNDING_BIT_SRS             = 11;                  //SRS / Adv Sound
1234*53ee8cc1Swenshuai.xi             .const BOUNDING_BIT_DOLBY           = 12;                  // when bit[12] = 0, all dolby ip's licenses open
1235*53ee8cc1Swenshuai.xi 
1236*53ee8cc1Swenshuai.xi         //#define AUTH_OPTION                   0x0FF2
1237*53ee8cc1Swenshuai.xi             .const AUTH_BIT_DD                  = 0;
1238*53ee8cc1Swenshuai.xi             .const AUTH_BIT_DDP                 = 1;
1239*53ee8cc1Swenshuai.xi             .const AUTH_BIT_DDE                 = 2;
1240*53ee8cc1Swenshuai.xi             .const AUTH_BIT_DTSDEC              = 3;
1241*53ee8cc1Swenshuai.xi             .const AUTH_BIT_MS10DDT             = 4;
1242*53ee8cc1Swenshuai.xi             .const AUTH_BIT_WMA                 = 5;
1243*53ee8cc1Swenshuai.xi             .const AUTH_BIT_DRA                 = 6;
1244*53ee8cc1Swenshuai.xi             .const AUTH_BIT_DTSLBR              = 7;
1245*53ee8cc1Swenshuai.xi             .const AUTH_BIT_GAAC                = 8;
1246*53ee8cc1Swenshuai.xi             .const AUTH_BIT_MS11DDT             = 9;
1247*53ee8cc1Swenshuai.xi             .const AUTH_BIT_DEMOMODE            = 12;
1248*53ee8cc1Swenshuai.xi             .const AUTH_BIT_COOK                = 16;
1249*53ee8cc1Swenshuai.xi             .const AUTH_BIT_DTS_HD              = 17;
1250*53ee8cc1Swenshuai.xi             .const AUTH_BIT_MS12_LC             = 18;
1251*53ee8cc1Swenshuai.xi             .const AUTH_BIT_MS12_D              = 19;
1252*53ee8cc1Swenshuai.xi             .const AUTH_BIT_SONICMOTION_ABS3D   = 20;
1253*53ee8cc1Swenshuai.xi             .const AUTH_BIT_MS12_B              = 21;
1254*53ee8cc1Swenshuai.xi             .const AUTH_BIT_DV258               = 22;
1255*53ee8cc1Swenshuai.xi 
1256*53ee8cc1Swenshuai.xi     /* IP AUTH */
1257*53ee8cc1Swenshuai.xi         #define D2S_MBOX_IP_AUTH                DEC2SE_MAILBOX7
1258*53ee8cc1Swenshuai.xi 
1259*53ee8cc1Swenshuai.xi     /* PCM output port */
1260*53ee8cc1Swenshuai.xi         #define SIF_DSP_MAIN_DMX_L_OUT          DEC4_PCM1_OUT
1261*53ee8cc1Swenshuai.xi         #define SIF_DSP_MAIN_DMX_R_OUT          DEC4_PCM2_OUT
1262*53ee8cc1Swenshuai.xi 
1263*53ee8cc1Swenshuai.xi         !#define R2_PCM1_DMX__L_OUT              DEC3_PCM1_OUT       // channel mapping of PCM buffer, replace R2_DMA_READER1 (R2_DECODER1_OUTPUT_BY_DSP)
1264*53ee8cc1Swenshuai.xi         !#define R2_PCM1_DMX__R_OUT              DEC3_PCM2_OUT
1265*53ee8cc1Swenshuai.xi         !#define R2_PCM1_MCH__L_OUT              DEC3_PCM3_OUT
1266*53ee8cc1Swenshuai.xi         !#define R2_PCM1_MCH__C_OUT              DEC3_PCM4_OUT
1267*53ee8cc1Swenshuai.xi         !#define R2_PCM1_MCH__R_OUT              DEC3_PCM5_OUT
1268*53ee8cc1Swenshuai.xi         !#define R2_PCM1_MCH_LS_OUT              DEC3_PCM6_OUT
1269*53ee8cc1Swenshuai.xi         !#define R2_PCM1_MCH_RS_OUT              DEC3_PCM7_OUT
1270*53ee8cc1Swenshuai.xi         !#define R2_PCM1_MCH_SW_OUT              DEC3_PCM8_OUT
1271*53ee8cc1Swenshuai.xi         !#define R2_PCM1_SYNTH_L                 DVB3_FIX_SYNTH_NF_L
1272*53ee8cc1Swenshuai.xi         !#define R2_PCM1_SYNTH_H                 DVB3_FIX_SYNTH_NF_H
1273*53ee8cc1Swenshuai.xi 
1274*53ee8cc1Swenshuai.xi         #define R2_PCM2_DMX__L_OUT              DEC4_PCM1_OUT       // channel mapping of PCM buffer, replace R2_DMA_READER2 (R2_DECODER2_OUTPUT_BY_DSP)
1275*53ee8cc1Swenshuai.xi         #define R2_PCM2_DMX__R_OUT              DEC4_PCM2_OUT
1276*53ee8cc1Swenshuai.xi         !#define R2_PCM2_MCH__L_OUT              DEC4_PCM3_OUT
1277*53ee8cc1Swenshuai.xi         !#define R2_PCM2_MCH__C_OUT              DEC4_PCM4_OUT
1278*53ee8cc1Swenshuai.xi         !#define R2_PCM2_MCH__R_OUT              DEC4_PCM5_OUT
1279*53ee8cc1Swenshuai.xi         !#define R2_PCM2_MCH_LS_OUT              DEC4_PCM6_OUT
1280*53ee8cc1Swenshuai.xi         !#define R2_PCM2_MCH_RS_OUT              DEC4_PCM7_OUT
1281*53ee8cc1Swenshuai.xi         !#define R2_PCM2_MCH_SW_OUT              DEC4_PCM8_OUT
1282*53ee8cc1Swenshuai.xi         #define R2_PCM2_SYNTH_L                 DVB4_FIX_SYNTH_NF_L
1283*53ee8cc1Swenshuai.xi         #define R2_PCM2_SYNTH_H                 DVB4_FIX_SYNTH_NF_H
1284*53ee8cc1Swenshuai.xi 
1285*53ee8cc1Swenshuai.xi         #define DSP_SW_DMA_DMX_L_OUT            DEC5_PCM1_OUT
1286*53ee8cc1Swenshuai.xi         #define DSP_SW_DMA_DMX_R_OUT            DEC5_PCM2_OUT
1287*53ee8cc1Swenshuai.xi         #define DSP_SW_DMA_RDR_SYNTH_L          DVB5_FIX_SYNTH_NF_L     // SW DMA RDR use DVB5_SYNTH, MCU control, 0x112C28: Synth_L  0x112C26: Synth_H, Toggle 0x112C24[12] to update
1288*53ee8cc1Swenshuai.xi         #define DSP_SW_DMA_RDR_SYNTH_H          DVB5_FIX_SYNTH_NF_H
1289*53ee8cc1Swenshuai.xi 
1290*53ee8cc1Swenshuai.xi /************************************************
1291*53ee8cc1Swenshuai.xi *   Below is macro for DSP code only
1292*53ee8cc1Swenshuai.xi *************************************************/
1293*53ee8cc1Swenshuai.xi         #define DSP_DMA_CHECK
1294*53ee8cc1Swenshuai.xi 
1295*53ee8cc1Swenshuai.xi         #define INC_WHILE_ONE_CNTR              ar = dm (S2M_MBOX_WHILE1_CNTR); \
1296*53ee8cc1Swenshuai.xi                                                 ay0 = 0x00FF00; \
1297*53ee8cc1Swenshuai.xi                                                 af = ar and ay0;    \
1298*53ee8cc1Swenshuai.xi                                                 ar = ar + 0x000001; \
1299*53ee8cc1Swenshuai.xi                                                 ay0 = 0x0000FF; \
1300*53ee8cc1Swenshuai.xi                                                 ar = ar and ay0;    \
1301*53ee8cc1Swenshuai.xi                                                 ar = ar or af;  \
1302*53ee8cc1Swenshuai.xi                                                 dm (S2M_MBOX_WHILE1_CNTR) = ar
1303*53ee8cc1Swenshuai.xi 
1304*53ee8cc1Swenshuai.xi         #define INC_DEBUG_CNT(x)                ar = dm(kh_debugCnt+x);     \
1305*53ee8cc1Swenshuai.xi                                                 ar = ar + 1;    \
1306*53ee8cc1Swenshuai.xi                                                 dm(kh_debugCnt+x) = ar;
1307*53ee8cc1Swenshuai.xi 
1308*53ee8cc1Swenshuai.xi         #define CONFIG_PCM_OUTPUT_PORT          ar = 0;   \
1309*53ee8cc1Swenshuai.xi                                                 dm (DEC_OUT_SEL) = ar;
1310*53ee8cc1Swenshuai.xi 
1311*53ee8cc1Swenshuai.xi         #define TRIGGER_INT_TO_MCU              ar = 0x0000; IO(PDATA) = ar;   \
1312*53ee8cc1Swenshuai.xi                                                 nop; nop; nop; nop;   \
1313*53ee8cc1Swenshuai.xi                                                 nop; nop; nop; nop;   \
1314*53ee8cc1Swenshuai.xi                                                 ar = 0x8000; IO(PDATA) = ar;   \
1315*53ee8cc1Swenshuai.xi                                                 nop; nop; nop; nop;   \
1316*53ee8cc1Swenshuai.xi                                                 nop; nop; nop; nop;   \
1317*53ee8cc1Swenshuai.xi                                                 ar = 0x0000; IO(PDATA) = ar
1318*53ee8cc1Swenshuai.xi 
1319*53ee8cc1Swenshuai.xi         /* Saft jump to i0 ~ i7 x:address, y:i0 ~ i7 */
1320*53ee8cc1Swenshuai.xi         #define I_REGISTER_JUMP(x,y)            sr = lshift x by -16(lo);   \
1321*53ee8cc1Swenshuai.xi                                                 y = x;    \
1322*53ee8cc1Swenshuai.xi                                                 CPR = sr0;  \
1323*53ee8cc1Swenshuai.xi                                                 jump (y);
1324*53ee8cc1Swenshuai.xi 
1325*53ee8cc1Swenshuai.xi         /* Saft call to i0 ~ i7 x:address, y:i0 ~ i7 */
1326*53ee8cc1Swenshuai.xi         #define I_REGISTER_CALL(x,y)            sr = lshift x by -16(lo);   \
1327*53ee8cc1Swenshuai.xi                                                 y = x;    \
1328*53ee8cc1Swenshuai.xi                                                 CPR = sr0;  \
1329*53ee8cc1Swenshuai.xi                                                 call (y);
1330*53ee8cc1Swenshuai.xi 
1331*53ee8cc1Swenshuai.xi         #define SEND_INT_TO_R2(cmd, param)      ar = param;     \
1332*53ee8cc1Swenshuai.xi                                                 dm(S2D_MBOX_DSP_TO_R2_PARAM) = ar;      \
1333*53ee8cc1Swenshuai.xi                                                 ar = cmd;   \
1334*53ee8cc1Swenshuai.xi                                                 dm(S2D_MBOX_DSP_TO_R2_COMMAND) = ar
1335*53ee8cc1Swenshuai.xi 
1336*53ee8cc1Swenshuai.xi #else
1337*53ee8cc1Swenshuai.xi 
1338*53ee8cc1Swenshuai.xi         #define DSP2_TO_COMMON_DRAM_OFFSET          (ASND_DSP_DDR_SIZE / BYTES_IN_MIU_LINE)
1339*53ee8cc1Swenshuai.xi 
1340*53ee8cc1Swenshuai.xi         /* DMA Reader Buffer */
1341*53ee8cc1Swenshuai.xi         #define DSP2_DMA_READER_DRAM_BASE           (DSP2_TO_COMMON_DRAM_OFFSET + (OFFSET_DMA_READER_DRAM_BASE / BYTES_IN_MIU_LINE))
1342*53ee8cc1Swenshuai.xi         #define DSP2_DMA_READER_DRAM_SIZE           ((DMA_READER_DRAM_SIZE / BYTES_IN_MIU_LINE) - 1)
1343*53ee8cc1Swenshuai.xi 
1344*53ee8cc1Swenshuai.xi         /* HW DMA Reader2 Buffer */
1345*53ee8cc1Swenshuai.xi         #define DSP2_HW_DMA_READER2_DRAM_BASE       (DSP2_TO_COMMON_DRAM_OFFSET + (OFFSET_HW_DMA_READER2_DRAM_BASE /BYTES_IN_MIU_LINE))
1346*53ee8cc1Swenshuai.xi         #define DSP2_HW_DMA_READER2_DRAM_SIZE       ((HW_DMA_READER2_DRAM_SIZE / BYTES_IN_MIU_LINE) - 1)
1347*53ee8cc1Swenshuai.xi 
1348*53ee8cc1Swenshuai.xi         /* Software DMA */
1349*53ee8cc1Swenshuai.xi         #define DSP2_SW_DMA_READER_DRAM_BASE        (DSP2_TO_COMMON_DRAM_OFFSET + (OFFSET_SW_DMA_READER_DRAM_BASE / BYTES_IN_MIU_LINE))
1350*53ee8cc1Swenshuai.xi         #define DSP2_SW_DMA_READER_DRAM_SIZE        ((SW_DMA_READER_DRAM_SIZE / BYTES_IN_MIU_LINE) - 1)
1351*53ee8cc1Swenshuai.xi 
1352*53ee8cc1Swenshuai.xi         /* PCM capture buffer */
1353*53ee8cc1Swenshuai.xi         #define DSP2_PCM_CAPTURE_BUFFER_DRAM_BASE   (DSP2_TO_COMMON_DRAM_OFFSET + (OFFSET_PCM_CAPTURE1_BUFFER_DRAM_BASE / BYTES_IN_MIU_LINE))
1354*53ee8cc1Swenshuai.xi         #define DSP2_PCM_CAPTURE2_BUFFER_DRAM_BASE  (DSP2_TO_COMMON_DRAM_OFFSET + (OFFSET_PCM_CAPTURE2_BUFFER_DRAM_BASE / BYTES_IN_MIU_LINE))
1355*53ee8cc1Swenshuai.xi         #define DSP2_PCM_CAPTURE3_BUFFER_DRAM_BASE  (DSP2_TO_COMMON_DRAM_OFFSET + (OFFSET_PCM_CAPTURE3_BUFFER_DRAM_BASE / BYTES_IN_MIU_LINE))
1356*53ee8cc1Swenshuai.xi         #define DSP2_PCM_CAPTURE_BUFFER_DRAM_SIZE   (PCM_CAPTURE_BUFFER_DRAM_SIZE/ BYTES_IN_MIU_LINE)
1357*53ee8cc1Swenshuai.xi         #define DSP2_PCM_CAPTURE2_BUFFER_DRAM_SIZE  (PCM_CAPTURE2_BUFFER_DRAM_SIZE/ BYTES_IN_MIU_LINE)
1358*53ee8cc1Swenshuai.xi         #define DSP2_PCM_CAPTURE3_BUFFER_DRAM_SIZE  (PCM_CAPTURE3_BUFFER_DRAM_SIZE/ BYTES_IN_MIU_LINE)
1359*53ee8cc1Swenshuai.xi         #define DSP2_PCM_CAPTURE_COPY_WORDSIZE      32
1360*53ee8cc1Swenshuai.xi         #define DSP2_PCM_CAPTURE_COPY_LINESIZE      4
1361*53ee8cc1Swenshuai.xi 
1362*53ee8cc1Swenshuai.xi #endif //_COMPILE_DSP_
1363*53ee8cc1Swenshuai.xi 
1364*53ee8cc1Swenshuai.xi         //Reseved XBox
1365*53ee8cc1Swenshuai.xi         /* srs puresound */
1366*53ee8cc1Swenshuai.xi         //reserved XBox for SRS start from XBox 0xB960
1367*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_SRS_PURESOUND_RESERVED1         0xB960
1368*53ee8cc1Swenshuai.xi 
1369*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_AeqFir_NumOfTaps_addr          DSP2XboxAddr_SRS_PURESOUND_RESERVED1+1
1370*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_AeqIir_NumOfSections_addr      DSP2XboxAddr_SRS_PURESOUND_RESERVED1+2
1371*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_AeqIir1Coefs_addr              DSP2XboxAddr_SRS_PURESOUND_RESERVED1+3
1372*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_AeqIir2Coefs_addr              DSP2XboxAddr_SRS_PURESOUND_RESERVED1+8
1373*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_AeqIir3Coefs_addr              DSP2XboxAddr_SRS_PURESOUND_RESERVED1+13
1374*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_AeqIir4Coefs_addr              DSP2XboxAddr_SRS_PURESOUND_RESERVED1+18
1375*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_AeqIir5Coefs_addr              DSP2XboxAddr_SRS_PURESOUND_RESERVED1+23
1376*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_AeqIir6Coefs_addr              DSP2XboxAddr_SRS_PURESOUND_RESERVED1+28
1377*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_AeqIir7Coefs_addr              DSP2XboxAddr_SRS_PURESOUND_RESERVED1+33
1378*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_AeqIir8Coefs_addr              DSP2XboxAddr_SRS_PURESOUND_RESERVED1+38
1379*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_AeqIir1_iwl_addr               DSP2XboxAddr_SRS_PURESOUND_RESERVED1+43
1380*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_AeqIir2_iwl_addr               DSP2XboxAddr_SRS_PURESOUND_RESERVED1+44
1381*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_AeqIir3_iwl_addr               DSP2XboxAddr_SRS_PURESOUND_RESERVED1+45
1382*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_AeqIir4_iwl_addr               DSP2XboxAddr_SRS_PURESOUND_RESERVED1+46
1383*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_AeqIir5_iwl_addr               DSP2XboxAddr_SRS_PURESOUND_RESERVED1+47
1384*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_AeqIir6_iwl_addr               DSP2XboxAddr_SRS_PURESOUND_RESERVED1+48
1385*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_AeqIir7_iwl_addr               DSP2XboxAddr_SRS_PURESOUND_RESERVED1+49
1386*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_AeqIir8_iwl_addr               DSP2XboxAddr_SRS_PURESOUND_RESERVED1+50
1387*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_AeqIir_Gain_iwl_addr           DSP2XboxAddr_SRS_PURESOUND_RESERVED1+51
1388*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_AeqIir_Gain_addr               DSP2XboxAddr_SRS_PURESOUND_RESERVED1+52
1389*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_AeqFir_iwl_addr                DSP2XboxAddr_SRS_PURESOUND_RESERVED1+53
1390*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_AeqFir_Gain_iwl_addr           DSP2XboxAddr_SRS_PURESOUND_RESERVED1+54
1391*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_AeqFir_Gain_addr               DSP2XboxAddr_SRS_PURESOUND_RESERVED1+55
1392*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_AeqFirCoefs_addr               DSP2XboxAddr_SRS_PURESOUND_RESERVED1+64
1393*53ee8cc1Swenshuai.xi 
1394*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_SRS_PURESOUND_RESERVED2         SRS_PURESOUND_AeqFirCoefs_addr+1
1395*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_mDummy_addr                    DSP2XboxAddr_SRS_PURESOUND_RESERVED2
1396*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_SRS_EN_BITS_addr               DSP2XboxAddr_SRS_PURESOUND_RESERVED2+1
1397*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_mInputGain_addr                DSP2XboxAddr_SRS_PURESOUND_RESERVED2+2
1398*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_mOutputGain_addr               DSP2XboxAddr_SRS_PURESOUND_RESERVED2+3
1399*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_mBypassGain_addr               DSP2XboxAddr_SRS_PURESOUND_RESERVED2+4
1400*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_mHPFfc_addr                    DSP2XboxAddr_SRS_PURESOUND_RESERVED2+5
1401*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_hlInputGain_addr               DSP2XboxAddr_SRS_PURESOUND_RESERVED2+25
1402*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_hlOutputGain_addr              DSP2XboxAddr_SRS_PURESOUND_RESERVED2+26
1403*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_hlBypassGain_addr              DSP2XboxAddr_SRS_PURESOUND_RESERVED2+27
1404*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_hlLimiterboost_addr            DSP2XboxAddr_SRS_PURESOUND_RESERVED2+28
1405*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_hlHardLimit_addr               DSP2XboxAddr_SRS_PURESOUND_RESERVED2+29
1406*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_hlDelaylen_addr                DSP2XboxAddr_SRS_PURESOUND_RESERVED2+30
1407*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_AeqInputGain_addr              DSP2XboxAddr_SRS_PURESOUND_RESERVED2+32
1408*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_AeqOutputGain_addr             DSP2XboxAddr_SRS_PURESOUND_RESERVED2+33
1409*53ee8cc1Swenshuai.xi             #define SRS_PURESOUND_AeqBypassGain_addr             DSP2XboxAddr_SRS_PURESOUND_RESERVED2+34
1410*53ee8cc1Swenshuai.xi 
1411*53ee8cc1Swenshuai.xi             #define DSP2XboxAddr_SRS_PURESOUND_RESERVED_END      SRS_PURESOUND_AeqBypassGain_addr
1412*53ee8cc1Swenshuai.xi 
1413*53ee8cc1Swenshuai.xi         /* atv */
1414*53ee8cc1Swenshuai.xi         //reserved XBox for ATV
1415*53ee8cc1Swenshuai.xi              #define DSP2XboxAddr_ATV_RESERVED1                  DSP2XboxAddr_SRS_PURESOUND_RESERVED_END+1
1416*53ee8cc1Swenshuai.xi              #define DSP2XboxAddr_AU_PAL_SYS_THRESHOLD           DSP2XboxAddr_ATV_RESERVED1
1417*53ee8cc1Swenshuai.xi              #define DSP2XboxAddr_SIF_PM_GAIN_TBL_PAL            DSP2XboxAddr_AU_PAL_SYS_THRESHOLD+12
1418*53ee8cc1Swenshuai.xi              #define DSP2XboxAddr_SIF_PM_GAIN_TBL_BTSC           DSP2XboxAddr_AU_PAL_SYS_THRESHOLD+12
1419*53ee8cc1Swenshuai.xi              #define DSP2XboxAddr_ATV_RESERVED_END               DSP2XboxAddr_SIF_PM_GAIN_TBL_BTSC+8-1
1420*53ee8cc1Swenshuai.xi 
1421*53ee8cc1Swenshuai.xi     /************************************************
1422*53ee8cc1Swenshuai.xi     *   For Compile Pass  mailbox (Need to remove later)
1423*53ee8cc1Swenshuai.xi     ************************************************/
1424*53ee8cc1Swenshuai.xi 
1425*53ee8cc1Swenshuai.xi         #define D2M_MBOX_INTR_CMDTYPE                MB_2DB2
1426*53ee8cc1Swenshuai.xi         #define DSP1PmAddr_ipSecurity                0x0FF2
1427*53ee8cc1Swenshuai.xi         #define D2M_MBOX_ENC_LINEADDR                MB_2DAC                 //MPEG Encoder
1428*53ee8cc1Swenshuai.xi         #define D2M_MBOX_ENC_LINESIZE                MB_2DAE                 //MPEG Encoder
1429*53ee8cc1Swenshuai.xi         #define M2D_MBOX_PIO_ID                      MB_2D8A
1430*53ee8cc1Swenshuai.xi         #define DSP1PmAddr_smpRate              0x0FF7
1431*53ee8cc1Swenshuai.xi         #define D2M_MBOX_HDMI_NPCM_LOCK         MB_2DB4     //[ 3:0] Always in LSB Nibble
1432*53ee8cc1Swenshuai.xi         #define MBOX_DBGCMD_RELOAD_DTV1_BEG         0xF000
1433*53ee8cc1Swenshuai.xi         #define MBOX_DBGCMD_RELOAD_DTV1_END         0xF100
1434*53ee8cc1Swenshuai.xi         #define MBOX_DBGCMD_RELOAD_DTV2_BEG         0xF600
1435*53ee8cc1Swenshuai.xi         #define MBOX_DBGCMD_RELOAD_DTV2_END         0xF700
1436*53ee8cc1Swenshuai.xi         #define DSP1DmAddr_sys_IoInfo                          NULL
1437*53ee8cc1Swenshuai.xi         #define M2D_MBOX_MM_FILEIN_TAG          MB_2D8C
1438*53ee8cc1Swenshuai.xi         #define MBOX_DSP_INIT_ACK                   0xE300
1439*53ee8cc1Swenshuai.xi         #define D2M_MBOX_DBG_RESULT2            MB_2DBE
1440*53ee8cc1Swenshuai.xi         #define D2M_MBOX_DBG_RESULT1            MB_2DBC
1441*53ee8cc1Swenshuai.xi         #define M2D_MBOX_DEC_CTRL                  MB_2D86
1442*53ee8cc1Swenshuai.xi         #define M2D_MBOX_DBG_CMD1               MB_2D9C
1443*53ee8cc1Swenshuai.xi 
1444*53ee8cc1Swenshuai.xi          #define D2M_MBOX_DBG_RESULT1            MB_2DBC
1445*53ee8cc1Swenshuai.xi          #define MBOX_DSP_INIT_ACK                   0xE300
1446*53ee8cc1Swenshuai.xi          #define D2M_MBOX_DBG_RESULT2            MB_2DBE
1447*53ee8cc1Swenshuai.xi          #define MBOX_DSP_RELOAD_ACK1                0x0033
1448*53ee8cc1Swenshuai.xi          #define MBOX_DSP_RELOAD_ACK2                0x0077
1449*53ee8cc1Swenshuai.xi          #define M2D_MBOX_DEC_CTRL               MB_2D86
1450*53ee8cc1Swenshuai.xi          #define D2M_MBOX_SAMPLERATE             MB_2DA6
1451*53ee8cc1Swenshuai.xi          #define DSP1DmAddr_dec1_param           0x47A0
1452*53ee8cc1Swenshuai.xi          #define DSP1DmAddr_dec1_info            0x47C0
1453*53ee8cc1Swenshuai.xi          #define DSP1DmAddr_dec1_omx_param       0x42B4
1454*53ee8cc1Swenshuai.xi          #define M2D_MBOX_UNI_PCM3_WRPTR         MB_2D94
1455*53ee8cc1Swenshuai.xi          #define DSP1PmAddr_video_TD             0x0FF1
1456*53ee8cc1Swenshuai.xi          #define D2M_MBOX_UNI_PCM_BUFFEBT        MB_2D6A
1457*53ee8cc1Swenshuai.xi 
1458*53ee8cc1Swenshuai.xi     //// SIF    /* SIF DSP PM vars */        //  for SIF PAL DSP PM vars //
1459*53ee8cc1Swenshuai.xi         #define ADDR_gain_base		    0x1921
1460*53ee8cc1Swenshuai.xi         #define ADDR_thr_base		     0x1A20
1461*53ee8cc1Swenshuai.xi         #define ADDR_pfir_base              0x1A90        //  for SIF BTSC DSP PM vars //
1462*53ee8cc1Swenshuai.xi         #define BTSC_COMPILE_OPTION_Addr          0x19F1   // len 1
1463*53ee8cc1Swenshuai.xi         #define BTSC_OUTPUT_GAIN_Addr               0x1A21     // len 2
1464*53ee8cc1Swenshuai.xi         #define BTSC_THRESHOLD_Addr                    0x1A23       // len 10
1465*53ee8cc1Swenshuai.xi         #define MTS_OUTPUT_GAIN_Addr                 0x1A34   //len 6
1466*53ee8cc1Swenshuai.xi         #define SIF_AGC_THRESHOLD_Addr               0x192D   //len 3            /// PAL gain setting address
1467*53ee8cc1Swenshuai.xi         #define ADDR_fm_stdM_gain          ADDR_gain_base           // len = 4
1468*53ee8cc1Swenshuai.xi         #define ADDR_fm_stdX_gain          ADDR_fm_stdM_gain+4  // len = 4
1469*53ee8cc1Swenshuai.xi         #define ADDR_nicam_gain             ADDR_fm_stdX_gain+4   // len = 2
1470*53ee8cc1Swenshuai.xi         #define ADDR_am_gain                  ADDR_nicam_gain+2        // len = 2
1471*53ee8cc1Swenshuai.xi         #define ADDR_agc_gain                 ADDR_am_gain+2            // len = 24            // PAL threshold setting address
1472*53ee8cc1Swenshuai.xi         #define ADDR_a2_stdM_thr             ADDR_thr_base               				 // len = 15
1473*53ee8cc1Swenshuai.xi         #define ADDR_a2_stdBG_thr           ADDR_a2_stdM_thr+15    				 // len = 15
1474*53ee8cc1Swenshuai.xi         #define ADDR_a2_stdDK_thr           ADDR_a2_stdBG_thr+15 				 // len = 15
1475*53ee8cc1Swenshuai.xi         #define ADDR_a2_stdI_thr              ADDR_a2_stdDK_thr+15   				 // len = 4
1476*53ee8cc1Swenshuai.xi         #define ADDR_am_thr                     ADDR_a2_stdI_thr+4        				 // len = 3
1477*53ee8cc1Swenshuai.xi         #define ADDR_hidev_stdM_thr        ADDR_am_thr+3            				 // len = 4
1478*53ee8cc1Swenshuai.xi         #define ADDR_hidev_stdBG_thr      ADDR_hidev_stdM_thr+4  				 // len = 4
1479*53ee8cc1Swenshuai.xi         #define ADDR_hidev_stdDK_thr      ADDR_hidev_stdBG_thr+4  				 // len = 4
1480*53ee8cc1Swenshuai.xi         #define ADDR_hidev_stdI_thr         ADDR_hidev_stdDK_thr+4 				 // len = 4
1481*53ee8cc1Swenshuai.xi         #define ADDR_nicam_stdBG_pherr_thr        ADDR_hidev_stdI_thr+4  	        //len = 3
1482*53ee8cc1Swenshuai.xi         #define ADDR_nicam_stdI_pherr_thr           ADDR_nicam_stdBG_pherr_thr+3  // len = 3
1483*53ee8cc1Swenshuai.xi         #define ADDR_a2_bg_nicam_fm_nsr_thr     0x186F	 // len = 1
1484*53ee8cc1Swenshuai.xi         #define ADDR_a2_dk_nicam_fm_nsr_thr     0x1870 	// len = 1            // pfir setting address
1485*53ee8cc1Swenshuai.xi         #define ADDR_hidev_demfir          ADDR_pfir_base                 // len = 15
1486*53ee8cc1Swenshuai.xi         #define ADDR_fm_ch1_pfir           ADDR_hidev_demfir+16       // len = 30
1487*53ee8cc1Swenshuai.xi         #define ADDR_fm_ch2_pfir           ADDR_fm_ch1_pfir+30         // len = 30
1488*53ee8cc1Swenshuai.xi         #define ADDR_hidev_lv1_pfir        ADDR_fm_ch2_pfir+30        // len = 20
1489*53ee8cc1Swenshuai.xi         #define ADDR_hidev_lv2_pfir        ADDR_hidev_lv1_pfir+20     // len = 20
1490*53ee8cc1Swenshuai.xi         #define ADDR_hidev_lv3_pfir        ADDR_hidev_lv2_pfir+20     // len = 20            // BTSC threshold setting address
1491*53ee8cc1Swenshuai.xi         #define HIDEV_NSR_THRESHOLD_Addr            BTSC_THRESHOLD_Addr+10   // len 2
1492*53ee8cc1Swenshuai.xi         #define BTSC_MONO_AMP_THRESHOLD_Addr    HIDEV_NSR_THRESHOLD_Addr+2   // len 2
1493*53ee8cc1Swenshuai.xi         #define HIDEV_AMP_THRESHOLD_Addr    BTSC_MONO_AMP_THRESHOLD_Addr+2  // len 2
1494*53ee8cc1Swenshuai.xi         #define BTSC_SAP_PHASE_DIFF_CLIP_THR_Addr    HIDEV_AMP_THRESHOLD_Addr+2   // len 1
1495*53ee8cc1Swenshuai.xi         #define BTSC_PILOT_DEBOUNCE_THRESHOLD_Addr   MTS_OUTPUT_GAIN_Addr+6   // len 3
1496*53ee8cc1Swenshuai.xi         #define BTSC_SAP_ON_DETECTION_DEBOUNCE_THRESHOLD_Addr BTSC_PILOT_DEBOUNCE_THRESHOLD_Addr+3 // len 1
1497*53ee8cc1Swenshuai.xi 
1498*53ee8cc1Swenshuai.xi         #define M2S_MBOX_MM_FILEIN_TAG              MB_2DCC             //[7:0]
1499*53ee8cc1Swenshuai.xi         #define DSP2PmAddr_smpRate                       0x0D49
1500*53ee8cc1Swenshuai.xi         #define DSP2PmAddr_soundMode                   0x0D4A
1501*53ee8cc1Swenshuai.xi         #define DSP2DmAddr_dec1_param                 0x4390
1502*53ee8cc1Swenshuai.xi         #define DSP2DmAddr_hdmi_debugInfo                   0x396A
1503*53ee8cc1Swenshuai.xi         #define DSP2DmAddr_spdif_debugInfo                  0x3832
1504*53ee8cc1Swenshuai.xi 
1505*53ee8cc1Swenshuai.xi     /* SIF DSP PM vars */
1506*53ee8cc1Swenshuai.xi         /*  for SIF PAL DSP PM vars */
1507*53ee8cc1Swenshuai.xi 
1508*53ee8cc1Swenshuai.xi             #define ADDR_gain_base_2                  NULL
1509*53ee8cc1Swenshuai.xi             #define ADDR_thr_base_2                   NULL
1510*53ee8cc1Swenshuai.xi             #define ADDR_pfir_base_2                  NULL
1511*53ee8cc1Swenshuai.xi             //  for SIF BTSC DSP PM vars //
1512*53ee8cc1Swenshuai.xi             #define BTSC_COMPILE_OPTION_Addr_2        NULL   // len 1
1513*53ee8cc1Swenshuai.xi             #define BTSC_OUTPUT_GAIN_Addr_2           NULL   // len 2
1514*53ee8cc1Swenshuai.xi             #define BTSC_THRESHOLD_Addr_2             NULL   // len 10
1515*53ee8cc1Swenshuai.xi             #define MTS_OUTPUT_GAIN_Addr_2            NULL   //len 6
1516*53ee8cc1Swenshuai.xi             #define SIF_AGC_THRESHOLD_Addr_2          NULL   //len 3
1517*53ee8cc1Swenshuai.xi 
1518*53ee8cc1Swenshuai.xi             /// PAL gain setting address
1519*53ee8cc1Swenshuai.xi             #define ADDR_fm_stdM_gain_2               NULL           // len = 4
1520*53ee8cc1Swenshuai.xi             #define ADDR_fm_stdX_gain_2               NULL     // len = 4
1521*53ee8cc1Swenshuai.xi             #define ADDR_nicam_gain_2                 NULL      // len = 2
1522*53ee8cc1Swenshuai.xi             #define ADDR_am_gain_2                    NULL        // len = 2
1523*53ee8cc1Swenshuai.xi             #define ADDR_agc_gain_2                   NULL          // len = 24
1524*53ee8cc1Swenshuai.xi 
1525*53ee8cc1Swenshuai.xi             // PAL threshold setting address
1526*53ee8cc1Swenshuai.xi             #define ADDR_a2_stdM_thr_2                NULL            // len = 15
1527*53ee8cc1Swenshuai.xi             #define ADDR_a2_stdBG_thr_2               NULL      // len = 15
1528*53ee8cc1Swenshuai.xi             #define ADDR_a2_stdDK_thr_2               NULL         // len = 15
1529*53ee8cc1Swenshuai.xi             #define ADDR_a2_stdI_thr_2                NULL     // len = 4
1530*53ee8cc1Swenshuai.xi             #define ADDR_am_thr_2                     NULL       // len = 3
1531*53ee8cc1Swenshuai.xi             #define ADDR_hidev_stdM_thr_2             NULL           // len = 4
1532*53ee8cc1Swenshuai.xi             #define ADDR_hidev_stdBG_thr_2            NULL    // len = 4
1533*53ee8cc1Swenshuai.xi             #define ADDR_hidev_stdDK_thr_2            NULL  // len = 4
1534*53ee8cc1Swenshuai.xi             #define ADDR_hidev_stdI_thr_2             NULL   // len = 4
1535*53ee8cc1Swenshuai.xi             #define ADDR_nicam_stdBG_pherr_thr_2      NULL    //len = 3
1536*53ee8cc1Swenshuai.xi             #define ADDR_nicam_stdI_pherr_thr_2       NULL  // len = 3
1537*53ee8cc1Swenshuai.xi             #define ADDR_a2_bg_nicam_fm_nsr_thr_2     NULL     // len = 1
1538*53ee8cc1Swenshuai.xi             #define ADDR_a2_dk_nicam_fm_nsr_thr_2     NULL     // len = 1
1539*53ee8cc1Swenshuai.xi 
1540*53ee8cc1Swenshuai.xi             // pfir setting address
1541*53ee8cc1Swenshuai.xi             #define ADDR_hidev_demfir_2               NULL             // len = 15
1542*53ee8cc1Swenshuai.xi             #define ADDR_fm_ch1_pfir_2               NULL       // len = 30
1543*53ee8cc1Swenshuai.xi             #define ADDR_fm_ch2_pfir_2                NULL       // len = 30
1544*53ee8cc1Swenshuai.xi             #define ADDR_hidev_lv1_pfir_2             NULL        // len = 20
1545*53ee8cc1Swenshuai.xi             #define ADDR_hidev_lv2_pfir_2             NULL     // len = 20
1546*53ee8cc1Swenshuai.xi             #define ADDR_hidev_lv3_pfir_2             NULL     // len = 20
1547*53ee8cc1Swenshuai.xi 
1548*53ee8cc1Swenshuai.xi             // BTSC threshold setting address
1549*53ee8cc1Swenshuai.xi             #define HIDEV_NSR_THRESHOLD_Addr_2        NULL           // len 2
1550*53ee8cc1Swenshuai.xi             #define BTSC_MONO_AMP_THRESHOLD_Addr_2    NULL        // len 2
1551*53ee8cc1Swenshuai.xi             #define HIDEV_AMP_THRESHOLD_Addr_2        NULL    // len 2
1552*53ee8cc1Swenshuai.xi 
1553*53ee8cc1Swenshuai.xi             #define BTSC_SAP_PHASE_DIFF_CLIP_THR_Addr_2    NULL   // len 1
1554*53ee8cc1Swenshuai.xi             #define BTSC_PILOT_DEBOUNCE_THRESHOLD_Addr_2   NULL       // len 3
1555*53ee8cc1Swenshuai.xi             #define BTSC_SAP_ON_DETECTION_DEBOUNCE_THRESHOLD_Addr_2 NULL // len 1
1556*53ee8cc1Swenshuai.xi 
1557*53ee8cc1Swenshuai.xi     /************************************************
1558*53ee8cc1Swenshuai.xi     *   End for  Compile Pass  mailbox (Need to remove later)
1559*53ee8cc1Swenshuai.xi     ************************************************/
1560*53ee8cc1Swenshuai.xi 
1561*53ee8cc1Swenshuai.xi 
1562*53ee8cc1Swenshuai.xi #endif  //_AUDIO_COMM2_H_
1563*53ee8cc1Swenshuai.xi 
1564