source: svn/newcon3bcm2_21bu/magnum/portinginterface/ape/7552/bape_chip_priv.h

Last change on this file was 76, checked in by megakiss, 10 years ago

1W 대기전력을 만족시키기 위하여 POWEROFF시 튜너를 Standby 상태로 함

  • Property svn:executable set to *
File size: 21.5 KB
Line 
1/***************************************************************************
2 *     Copyright (c) 2006-2012, Broadcom Corporation
3 *     All Rights Reserved
4 *     Confidential Property of Broadcom Corporation
5 *
6 *  THIS SOFTWARE MAY ONLY BE USED SUBJECT TO AN EXECUTED SOFTWARE LICENSE
7 *  AGREEMENT  BETWEEN THE USER AND BROADCOM.  YOU HAVE NO RIGHT TO USE OR
8 *  EXPLOIT THIS MATERIAL EXCEPT SUBJECT TO THE TERMS OF SUCH AN AGREEMENT.
9 *
10 * $brcm_Workfile: bape_chip_priv.h $
11 * $brcm_Revision: Hydra_Software_Devel/43 $
12 * $brcm_Date: 3/5/12 9:22a $
13 *
14 * Module Description: Audio Decoder Interface
15 *
16 * Revision History:
17 *
18 * $brcm_Log: /magnum/portinginterface/ape/7422/bape_chip_priv.h $
19 *
20 * Hydra_Software_Devel/43   3/5/12 9:22a jgarrett
21 * SW7425-2455: Removing ADC and RF Inputs
22 *
23 * Hydra_Software_Devel/42   1/18/12 11:21a gskerl
24 * SW7429-18: Removed erroneous #error when there are no HDMI or SPDIF
25 * inputs.
26 *
27 * Hydra_Software_Devel/41   1/17/12 6:31p gskerl
28 * SW7429-18: Added conditional definitions for
29 * BAPE_CHIP_SPDIF_INPUT_TYPE_IS_LEGACY and
30 * BAPE_CHIP_SPDIF_INPUT_TYPE_IS_IOPIN.
31 *
32 * Hydra_Software_Devel/40   1/13/12 3:28p gskerl
33 * SW7429-18: Added BAPE_CHIP_MAI_INPUT_TYPE_IS_xxx macros
34 *
35 * Hydra_Software_Devel/39   12/5/11 7:02p gskerl
36 * SW7429-18: Define sample rate converter type... either
37 * BAPE_CHIP_SRC_TYPE_IS_LEGACY or BAPE_CHIP_SRC_TYPE_IS_IIR.
38 *
39 * Hydra_Software_Devel/39   12/5/11 7:02p gskerl
40 * SW7429-18: Define sample rate converter type... either
41 * BAPE_CHIP_SRC_TYPE_IS_LEGACY or BAPE_CHIP_SRC_TYPE_IS_IIR.
42 *
43 * Hydra_Software_Devel/39   12/5/11 6:50p gskerl
44 * SW7429-18: Define sample rate converter type... either
45 * BAPE_CHIP_SRC_TYPE_IS_LEGACY or BAPE_CHIP_SRC_TYPE_IS_IIR.
46 *
47 * Hydra_Software_Devel/38   12/1/11 6:40p gskerl
48 * SW7429-18: Only define BAPE_CHIP_MAX_SRC_COEFF_CHUNKS when it's
49 * dependencies are defined.
50 *
51 * Hydra_Software_Devel/37   12/1/11 3:43p jgarrett
52 * SW7429-18: Correcting STC address selection for 7429
53 *
54 * Hydra_Software_Devel/36   11/30/11 6:28p jgarrett
55 * SW7429-18: Revising coefficient numbers for 7429
56 *
57 * Hydra_Software_Devel/35   11/30/11 4:26p jgarrett
58 * SW7429-18: Adding stubs for SPDIF/MAI inputs on 7429
59 *
60 * Hydra_Software_Devel/34   11/29/11 12:03p gskerl
61 * SW7429-18: Fixed compile warning (and bug) #ifdef --> #if defined.
62 *
63 * Hydra_Software_Devel/33   11/28/11 6:32p gskerl
64 * SW7429-18: Added check for
65 * BCHP_AUD_MISC_SEROUT_SEL_HDMI_RX_ARC_ENABLE_MASK to decide if
66 * BAPE_CHIP_MAX_AUDIO_RETURN_CHANNELS should be defined
67 *
68 * Hydra_Software_Devel/32   11/14/11 3:22p gskerl
69 * SW7429-18: Merging 7429 changes back to main branch.
70 *
71 * Hydra_Software_Devel/SW7429-18/7   11/4/11 4:42p jgarrett
72 * SW7429-18: Adding SPDIF Output for 7429
73 *
74 * Hydra_Software_Devel/SW7429-18/6   10/27/11 3:21p jgarrett
75 * SW7429-18: Adding I2S Output for 7429
76 *
77 * Hydra_Software_Devel/SW7429-18/5   10/26/11 12:44p jgarrett
78 * SW7429-18: Merging latest changes from main branch
79 *
80 * Hydra_Software_Devel/SW7429-18/4   10/26/11 11:43a jgarrett
81 * SW7429-18: Adding I2S Input for 7429
82 *
83 * Hydra_Software_Devel/SW7429-18/3   10/25/11 5:34p jgarrett
84 * SW7429-18: Adding HDMI output support for 7429
85 *
86 * Hydra_Software_Devel/SW7429-18/2   10/25/11 10:15a jgarrett
87 * SW7429-18: Adding NCO support for 7429
88 *
89 * Hydra_Software_Devel/SW7429-18/1   10/21/11 6:29p jgarrett
90 * SW7429-18: Initial compileable version for 7429
91 *
92 * Hydra_Software_Devel/31   10/19/11 4:56p jgarrett
93 * SW7231-321: Fixed clockgen mux for 7231 B0
94 *
95 * Hydra_Software_Devel/30   9/2/11 3:53p sgadara
96 * SWDTV-6627: [35233] Refine the SRC coefficient memory allocation
97 *
98 * Hydra_Software_Devel/29   8/26/11 9:50p sgadara
99 * SWDTV-6627: [35233] Add Equalizer support
100 *
101 * Hydra_Software_Devel/28   8/12/11 4:18p venkatr
102 * SWDTV-6584 : [35233] ADC input code cleanup
103 *
104 * Hydra_Software_Devel/27   8/11/11 1:16p jgarrett
105 * SWDTV-6584: Making includes of audadc and spdif_rcvr register headers
106 * conditional on presence of the required blocks
107 *
108 * Hydra_Software_Devel/26   8/10/11 9:28a venkatr
109 * SWDTV-6584 : [35233] Add ADC Input for APE
110 *
111 * Hydra_Software_Devel/25   7/8/11 6:38p jgarrett
112 * SWDTV-6760: Adding I2sMultiOutput
113 *
114 * Hydra_Software_Devel/24   7/8/11 4:32p gskerl
115 * SW7552-72: Added support for NCO/Mclkgen audio clock sources
116 *
117 * Hydra_Software_Devel/23   6/9/11 3:40p gskerl
118 * SW7552-37: Set BAPE_CHIP_MAX_RFMODS based on RDB defs
119 *
120 * Hydra_Software_Devel/22   5/31/11 6:37p jgarrett
121 * SW7425-406: Adding initial DSP mixer code
122 *
123 * Hydra_Software_Devel/21   5/12/11 12:11p gskerl
124 * SW7422-354: Fixed to support APE compilation on 35230
125 *
126 * Hydra_Software_Devel/20   5/3/11 7:00p gskerl
127 * SW7422-354: First attempt at adding support for the audio return
128 * channel
129 *
130 * Hydra_Software_Devel/19   4/18/11 10:13p gskerl
131 * SW7425-364: Added BAPE_Pll_EnableExternalMclk() API to APE, then called
132 * it from NEXUS_AudioModule_EnableExternalMclk()
133 *
134 * Hydra_Software_Devel/18   4/16/11 12:15p jgarrett
135 * SW7425-371: Removing tab characters
136 *
137 * Hydra_Software_Devel/17   4/11/11 5:54p jgarrett
138 * SWDTV-6305: Adding ADC/RF Inputs for DTV
139 *
140 * Hydra_Software_Devel/16   4/6/11 1:24a jgarrett
141 * SW35330-35: Merge to main branch
142 *
143 * Hydra_Software_Devel/SW35330-35/3   4/6/11 11:15a jgarrett
144 * SW35330-35: Adding 35233
145 *
146 * Hydra_Software_Devel/SW35330-35/2   4/5/11 7:13p jgarrett
147 * SW35330-35: PCM Playback working on 35230
148 *
149 * Hydra_Software_Devel/SW35330-35/1   4/5/11 12:50p jgarrett
150 * SW35330-35: FMM Abstraction refactoring to support DTV
151 *
152 * Hydra_Software_Devel/15   4/5/11 6:53p gskerl
153 * SW7552-28: Updated comment.
154 *
155 * Hydra_Software_Devel/14   3/24/11 7:55p gskerl
156 * SW7422-146: Improved audio reference clock selection logic to handle
157 * RDB differences for the 7231
158 *
159 * Hydra_Software_Devel/13   3/24/11 10:28a jgarrett
160 * SW7422-364: Fixing compilation errors on systems without HDMI or SPDIF
161 * input
162 *
163 * Hydra_Software_Devel/12   3/23/11 11:03a piyushg
164 * SW7422-146: Make MAX_HDMI and MAX_SDPIF recvr marcos independent of
165 * BCHP_74xx macros
166 *
167 * Hydra_Software_Devel/11   3/10/11 7:03p jgarrett
168 * SW7422-146: Refactored DFIFO code, added support for input capture from
169 * compressed/multichannel
170 *
171 * Hydra_Software_Devel/10   3/9/11 4:47p piyushg
172 * SW7422-146: Initial checkin for HDMI and SPDIF inout ports.
173 *
174 * Hydra_Software_Devel/9   2/28/11 1:55p gskerl
175 * SW7422-146: Increased BAPE_CHIP_MAX_DACS from 1 to 2.
176 *
177 * Hydra_Software_Devel/8   2/28/11 1:28p jgarrett
178 * SW7422-146: Filter graph reworked to remove mixer dependencies
179 *
180 * Hydra_Software_Devel/7   2/28/11 12:22p gskerl
181 * SW7422-146: Changed BAPE_CHIP_MAX_RFMODS from 1 to 0 (because the 7422
182 * doesn't have any RF mods).
183 *
184 * Hydra_Software_Devel/6   2/9/11 5:28p gskerl
185 * SW7422-146:Added "#define BAPE_BASE_PLL_TO_FS_RATIO   256" which
186 * defines ratio of
187 * the PLL's channel 0 frequency to the "base" sample rate.
188 *
189 * Hydra_Software_Devel/5   2/4/11 12:43p gskerl
190 * SW7422-146:Modified the counting of I2S outputs so that it will handle
191 * 7422/7425 I2S register names.
192 *
193 * Hydra_Software_Devel/4   1/19/11 2:58p jgarrett
194 * SW7422-146: Initial decode/passthrough of ac3
195 *
196 * Hydra_Software_Devel/3   1/6/11 2:33p jgarrett
197 * SW7422-146: Adding initial input capture API
198 *
199 * Hydra_Software_Devel/2   12/17/10 3:58p jgarrett
200 * SW7422-146: Nexus APE integration on 7422
201 *
202 * Hydra_Software_Devel/1   12/16/10 4:05p jgarrett
203 * SW7422-146: Initial compilable APE for 7422
204 ***************************************************************************/
205
206#ifndef BAPE_CHIP_PRIV_H_
207#define BAPE_CHIP_PRIV_H_
208
209#include "bchp_common.h"
210#include "bchp_aud_fmm_bf_ctrl.h"
211#include "bchp_aud_fmm_dp_ctrl0.h"
212#include "bchp_aud_fmm_src_ctrl0.h"
213#if defined BCHP_AUD_FMM_OP_CTRL_REG_START
214/* Older-style RDB only */
215#include "bchp_aud_fmm_op_ctrl.h"
216#include "bchp_aud_fmm_iop_ctrl.h"
217#endif
218#if defined BCHP_AUD_FMM_OP_MCLKGEN_REG_START
219    #include "bchp_aud_fmm_op_mclkgen.h"
220#endif /* defined BCHP_AUD_FMM_OP_MCLKGEN_REG_START */
221
222#ifdef BCHP_AIO_MISC_REG_START
223#include "bchp_aio_misc.h"
224#include "bchp_aud_fmm_misc.h"
225#else
226#include "bchp_aud_misc.h"
227#endif
228
229#ifdef BCHP_AUD_FMM_IOP_MISC_REG_START
230#include "bchp_aud_fmm_iop_misc.h"
231#endif
232
233#define BAPE_CHIP_MAX_DECODERS (BAPE_CHIP_MAX_SFIFOS)
234#define BAPE_CHIP_MAX_PLAYBACKS (BAPE_CHIP_MAX_SFIFOS)
235#define BAPE_CHIP_MAX_INPUT_CAPTURES (BAPE_CHIP_MAX_DFIFOS)
236#define BAPE_CHIP_MAX_DSP_MIXERS (1)                            /* Allow 1 DSP mixer */
237#define BAPE_CHIP_MAX_DSP_TASKS (3+BAPE_CHIP_MAX_DSP_MIXERS)    /* 3 decoders + 1 FW Mixer */
238
239/* Max STCs */
240#ifdef BCHP_AUD_FMM_MISC_STC_UPPERi_ARRAY_END
241/* Legacy RDB */
242#define BAPE_CHIP_MAX_STCS (BCHP_AUD_FMM_MISC_STC_UPPERi_ARRAY_END)
243#ifdef BCHP_AUD_FMM_MISC_STC_LOWERi_ARRAY_BASE
244#define BAPE_CHIP_GET_STC_ADDRESS(idx) (BCHP_AUD_FMM_MISC_STC_LOWERi_ARRAY_BASE + ((BCHP_AUD_FMM_MISC_STC_LOWERi_ARRAY_ELEMENT_SIZE/8)*(idx)))
245#else
246#define BAPE_CHIP_GET_STC_ADDRESS(idx) (BCHP_AUD_FMM_MISC_STC_UPPERi_ARRAY_BASE + ((BCHP_AUD_FMM_MISC_STC_UPPERi_ARRAY_ELEMENT_SIZE/8)*(idx)))
247#endif
248#else
249/* 7429 style RDB */
250#define BAPE_CHIP_MAX_STCS (BCHP_AUD_MISC_STC_UPPERi_ARRAY_END)
251
252#ifdef BCHP_AUD_MISC_STC_LOWERi_ARRAY_BASE
253#define BAPE_CHIP_GET_STC_ADDRESS(idx) (BCHP_AUD_MISC_STC_LOWERi_ARRAY_BASE + ((BCHP_AUD_MISC_STC_LOWERi_ARRAY_ELEMENT_SIZE/8)*(idx)))
254#else
255#define BAPE_CHIP_GET_STC_ADDRESS(idx) (BCHP_AUD_MISC_STC_UPPERi_ARRAY_BASE + ((BCHP_AUD_MISC_STC_UPPERi_ARRAY_ELEMENT_SIZE/8)*(idx)))
256#endif
257#endif
258
259/* Check for DACs */
260#if defined BCHP_HIFIDAC_CTRL2_REG_START || defined BCHP_HIFIDAC_CTRL_2_REG_START
261#define BAPE_CHIP_MAX_DACS (3)
262#elif defined BCHP_HIFIDAC_CTRL1_REG_START || defined BCHP_HIFIDAC_CTRL_1_REG_START
263#define BAPE_CHIP_MAX_DACS (2)
264#elif defined BCHP_HIFIDAC_CTRL0_REG_START || defined BCHP_HIFIDAC_CTRL_0_REG_START
265#define BAPE_CHIP_MAX_DACS (1)
266#endif
267
268/* Check for the number of I2S outputs... */
269#if defined BCHP_AUD_FMM_OP_CTRL_I2SS1_CFG || defined BCHP_AUD_FMM_IOP_OUT_I2S_STEREO_1_REG_START
270#define BAPE_CHIP_MAX_I2S_OUTPUTS (2)
271#elif defined BCHP_AUD_FMM_OP_CTRL_I2SS0_CFG || defined BCHP_AUD_FMM_IOP_OUT_I2S_STEREO_0_REG_START
272#define BAPE_CHIP_MAX_I2S_OUTPUTS (1)
273/* There must not be any I2S outputs */
274#else
275#define BAPE_CHIP_MAX_I2S_OUTPUTS (0)
276#endif
277
278/* Check for I2S Multi Outputs */
279#define BAPE_CHIP_MAX_I2S_MULTI_OUTPUTS (0)
280
281/* Check for I2S Inputs */
282#if defined BCHP_AUD_FMM_IOP_CTRL_I2SIN_CFG1 || defined BCHP_AUD_FMM_IOP_IN_I2S_STEREO_1_REG_START
283#define BAPE_CHIP_MAX_I2S_INPUTS (2)
284#elif defined BCHP_AUD_FMM_IOP_CTRL_I2SIN_CFG0 || defined BCHP_AUD_FMM_IOP_IN_I2S_STEREO_0_REG_START
285#define BAPE_CHIP_MAX_I2S_INPUTS (1)
286#else
287#define BAPE_CHIP_MAX_I2S_INPUTS (0)
288#endif
289
290/* MAI Inputs */
291#if defined BCHP_HDMI_RCVR_CTRL_REG_START
292    #define BAPE_CHIP_MAX_MAI_INPUTS (1)
293    #define BAPE_CHIP_MAI_INPUT_TYPE_IS_LEGACY 1     /* 1=>true: This is a Legacy (7422/7425) type of MAI/HDMI input */
294#elif defined BCHP_AUD_FMM_IOP_IN_HDMI_0_REG_START
295    #define BAPE_CHIP_MAX_MAI_INPUTS (1)
296    #define BAPE_CHIP_MAI_INPUT_TYPE_IS_IOPIN 1      /* 1=>true: This is a newer (IOP IN) (7429) type of MAI/HDMI input */
297#endif
298
299/* SPDIF Inputs */
300#if defined BCHP_SPDIF_RCVR_CTRL_REG_START
301    #define BAPE_CHIP_MAX_SPDIF_INPUTS (1)
302    #define BAPE_CHIP_SPDIF_INPUT_TYPE_IS_LEGACY 1     /* 1=>true: This is a Legacy (7422/7425) type of SPDIF input */
303#elif defined BCHP_AUD_FMM_IOP_IN_SPDIF_0_REG_START
304    #define BAPE_CHIP_MAX_SPDIF_INPUTS (1)
305    #define BAPE_CHIP_SPDIF_INPUT_TYPE_IS_IOPIN 1      /* 1=>true: This is a newer (IOP IN) (7429) type of SPDIF input */
306#endif
307
308#if defined BCHP_RFM_SYSCLK_REG_START
309#define BAPE_CHIP_MAX_RFMODS (1)
310#else
311#define BAPE_CHIP_MAX_RFMODS (0)
312#endif
313
314#if defined BCHP_AUD_FMM_OP_CTRL_SPDIF_CFG_0 || defined BCHP_AUD_FMM_IOP_OUT_SPDIF_0_REG_START
315#define BAPE_CHIP_MAX_SPDIF_OUTPUTS (1)
316#endif
317
318#if defined BCHP_AUD_FMM_OP_CTRL_MAI_FORMAT || defined BCHP_AUD_FMM_IOP_OUT_MAI_0_REG_START
319#define BAPE_CHIP_MAX_MAI_OUTPUTS (1)
320#endif
321
322#if defined  BCHP_AUD_FMM_MISC_SEROUT_SEL_SPDIF_OUT_1_ENABLE_MASK || defined BCHP_AUD_MISC_SEROUT_SEL_HDMI_RX_ARC_ENABLE_MASK
323#define BAPE_CHIP_MAX_AUDIO_RETURN_CHANNELS (1)
324#endif
325
326#define BAPE_CHIP_MAX_OUTPUT_CAPTURES (BAPE_CHIP_MAX_LOOPBACKS)
327
328/* PLL Details */
329#if   defined BCHP_AUD_FMM_PLL2_REG_START || defined BCHP_AUD_FMM_IOP_PLL_2_REG_START
330#define BAPE_CHIP_MAX_PLLS (3)
331#elif defined BCHP_AUD_FMM_PLL1_REG_START || defined BCHP_AUD_FMM_IOP_PLL_1_REG_START
332#define BAPE_CHIP_MAX_PLLS (2)
333#elif defined BCHP_AUD_FMM_PLL0_REG_START || defined BCHP_AUD_FMM_IOP_PLL_0_REG_START
334#define BAPE_CHIP_MAX_PLLS (1)
335#else
336/* No PLLs */
337#define BAPE_CHIP_MAX_PLLS (0)
338#endif
339
340/* NCO Details */
341#if   defined BCHP_AUD_FMM_OP_MCLKGEN_MCLK_GEN_2_CONTROL || defined BCHP_AUD_FMM_IOP_NCO_2_REG_START
342#define BAPE_CHIP_MAX_NCOS (3)
343#elif defined BCHP_AUD_FMM_OP_MCLKGEN_MCLK_GEN_1_CONTROL || defined BCHP_AUD_FMM_IOP_NCO_1_REG_START
344#define BAPE_CHIP_MAX_NCOS (2)
345#elif defined BCHP_AUD_FMM_OP_MCLKGEN_MCLK_GEN_0_CONTROL || defined BCHP_AUD_FMM_IOP_NCO_0_REG_START
346#define BAPE_CHIP_MAX_NCOS (1)
347#else
348/* No NCOs */
349#endif
350
351#define BAPE_BASE_PLL_TO_FS_RATIO   256     /* PLL channel 0 runs at 256 * "base" Fs */
352
353/* SFIFO Details */
354#define BAPE_CHIP_MAX_SFIFOS (BCHP_AUD_FMM_BF_CTRL_SOURCECH_CFGi_ARRAY_END+1)
355
356/* DFIFO Details */
357#ifdef BCHP_AUD_FMM_BF_CTRL_DESTCH_CFG0
358#define BAPE_CHIP_MAX_DFIFOS (1)  /* Required because the RDB defs change with only one channel */
359#else
360#define BAPE_CHIP_MAX_DFIFOS (BCHP_AUD_FMM_BF_CTRL_DESTCH_CFGi_ARRAY_END+1)
361#endif
362#if defined(BCHP_AUD_FMM_BF_CTRL_DESTCH_CFG0_CAPTURE_MODE_SHIFT) || defined(BCHP_AUD_FMM_BF_CTRL_DESTCH_CFGi_CAPTURE_MODE_SHIFT)
363#define BAPE_CHIP_DFIFO_SUPPORTS_16BIT_CAPTURE 1
364#endif
365
366/* SRC Details */
367#define BAPE_CHIP_MAX_SRCS (BCHP_AUD_FMM_SRC_CTRL0_STRM_CFGi_ARRAY_END+1)
368
369#if defined BCHP_AUD_FMM_SRC_CTRL0_COEFFi_ARRAY_BASE
370    #define BAPE_CHIP_SRC_TYPE_IS_IIR 1     /* 1=>true: This is an IIR-type of SRC */
371    #if BCHP_AUD_FMM_SRC_CTRL0_COEFFi_ARRAY_END == 487
372        /* SRC Coefficient Memory */
373        #define BAPE_CHIP_P_SRC_IIR_CHUNK_BASE          0
374        #define BAPE_CHIP_P_MAX_SRC_IIR_CHUNKS          11
375        #define BAPE_CHIP_P_SRC_IIR_CHUNK_END           (BAPE_CHIP_P_SRC_IIR_CHUNK_BASE + BAPE_CHIP_P_MAX_SRC_IIR_CHUNKS - 1)
376        #define BAPE_CHIP_P_MAX_IIR_FILTERS_PER_SRC     8
377        #define BAPE_CHIP_P_MAX_IIR_COEFF_PER_SRC       (5 * BAPE_CHIP_P_MAX_IIR_FILTERS_PER_SRC)
378        #define BAPE_CHIP_P_MAX_SRC_IIR_COEFF_PER_CHUNK BAPE_CHIP_P_MAX_IIR_COEFF_PER_SRC
379        #define BAPE_CHIP_P_TOTAL_SRC_IIR_COEFF         (BAPE_CHIP_P_MAX_SRC_IIR_CHUNKS * BAPE_CHIP_P_MAX_SRC_IIR_COEFF_PER_CHUNK)
380
381        #define BAPE_CHIP_P_SRC_LIN_CHUNK_BASE          (BAPE_CHIP_P_SRC_IIR_CHUNK_END + 1)
382        #define BAPE_CHIP_P_MAX_SRC_LIN_CHUNKS          16
383        #define BAPE_CHIP_P_SRC_LIN_CHUNK_END           (BAPE_CHIP_P_SRC_LIN_CHUNK_BASE + BAPE_CHIP_P_MAX_SRC_LIN_CHUNKS - 1)
384        #define BAPE_CHIP_P_NUM_LIN_COEFF_PER_SRC       3
385        #define BAPE_CHIP_P_NUM_LIN_COEFF_PER_CHUNK     BAPE_CHIP_P_NUM_LIN_COEFF_PER_SRC
386        #define BAPE_CHIP_P_TOTAL_LIN_COEFF             (BAPE_CHIP_P_MAX_SRC_LIN_CHUNKS * BAPE_CHIP_P_NUM_LIN_COEFF_PER_CHUNK)
387        #define BAPE_CHIP_MAX_SRC_COEFF_CHUNKS          (BAPE_CHIP_P_MAX_SRC_IIR_CHUNKS + BAPE_CHIP_P_MAX_SRC_LIN_CHUNKS)
388
389    #elif BCHP_AUD_FMM_SRC_CTRL0_COEFFi_ARRAY_END == 231
390        #define BAPE_CHIP_P_SRC_IIR_CHUNK_BASE          0
391        #define BAPE_CHIP_P_MAX_SRC_IIR_CHUNKS          4
392        #define BAPE_CHIP_P_SRC_IIR_CHUNK_END           (BAPE_CHIP_P_SRC_IIR_CHUNK_BASE + BAPE_CHIP_P_MAX_SRC_IIR_CHUNKS - 1)
393        #define BAPE_CHIP_P_MAX_IIR_FILTERS_PER_SRC     8
394        #define BAPE_CHIP_P_MAX_IIR_COEFF_PER_SRC       (5 * BAPE_CHIP_P_MAX_IIR_FILTERS_PER_SRC)
395        #define BAPE_CHIP_P_MAX_SRC_IIR_COEFF_PER_CHUNK BAPE_CHIP_P_MAX_IIR_COEFF_PER_SRC
396        #define BAPE_CHIP_P_TOTAL_SRC_IIR_COEFF         (BAPE_CHIP_P_MAX_SRC_IIR_CHUNKS * BAPE_CHIP_P_MAX_SRC_IIR_COEFF_PER_CHUNK)
397
398        #define BAPE_CHIP_P_SRC_LIN_CHUNK_BASE          (BAPE_CHIP_P_SRC_IIR_CHUNK_END + 1)
399        #define BAPE_CHIP_P_MAX_SRC_LIN_CHUNKS          16
400        #define BAPE_CHIP_P_SRC_LIN_CHUNK_END           (BAPE_CHIP_P_SRC_LIN_CHUNK_BASE + BAPE_CHIP_P_MAX_SRC_LIN_CHUNKS - 1)
401        #define BAPE_CHIP_P_NUM_LIN_COEFF_PER_SRC       3
402        #define BAPE_CHIP_P_NUM_LIN_COEFF_PER_CHUNK     BAPE_CHIP_P_NUM_LIN_COEFF_PER_SRC
403        #define BAPE_CHIP_P_TOTAL_LIN_COEFF             (BAPE_CHIP_P_MAX_SRC_LIN_CHUNKS * BAPE_CHIP_P_NUM_LIN_COEFF_PER_CHUNK)
404        #define BAPE_CHIP_MAX_SRC_COEFF_CHUNKS          (BAPE_CHIP_P_MAX_SRC_IIR_CHUNKS + BAPE_CHIP_P_MAX_SRC_LIN_CHUNKS)
405    #else
406        #error unsupported number of SRC coefficients
407    #endif
408#elif defined BCHP_AUD_FMM_SRC_CTRL0_COEFF2X_i_ARRAY_BASE
409    #define BAPE_CHIP_SRC_TYPE_IS_LEGACY 1     /* 1=>true: This is an legacy type of SRC */
410#else
411    #error "Unknown Sample Rate Converter type"
412#endif
413
414/* Mixer Details */
415#if BCHP_CHIP == 7408
416#define BAPE_CHIP_MAX_MIXERS (6)                /* On the 7408, this is 6, others have more -- This must match the HW for coefficient loading. */
417#define BAPE_CHIP_MAX_MIXER_INPUTS (4)          /* On the 7408, only four inputs are supported per mixer.  Most other chips is 8. */
418#else
419#if defined BCHP_AUD_FMM_DP_CTRL0_MIXER_CONFIGi_ARRAY_END
420/* 7429-style chips define both of these using RDB arrays */
421#define BAPE_CHIP_MAX_MIXERS (BCHP_AUD_FMM_DP_CTRL0_MIXER_CONFIGi_ARRAY_END+1)
422#define BAPE_CHIP_MAX_MIXER_INPUTS (BCHP_AUD_FMM_DP_CTRL0_MIXER0_INPUT_CONFIGi_ARRAY_END+1)
423#elif defined BCHP_AUD_FMM_DP_CTRL0_MIXER11_CONFIG
424/* 7425-style mixer block */
425#define BAPE_CHIP_MAX_MIXERS (12)
426#define BAPE_CHIP_MAX_MIXER_INPUTS (8)
427#else
428/* Legacy 8-mixer block */
429#define BAPE_CHIP_MAX_MIXERS (8)
430#define BAPE_CHIP_MAX_MIXER_INPUTS (8)
431#endif
432#endif
433#define BAPE_CHIP_MAX_MIXER_OUTPUTS (2)
434#define BAPE_CHIP_MAX_MIXER_PLAYBACKS (1+BCHP_AUD_FMM_DP_CTRL0_PB_FCI_IDi_ARRAY_END-BCHP_AUD_FMM_DP_CTRL0_PB_FCI_IDi_ARRAY_START)
435
436/* Dummysinks */
437#ifdef BCHP_AUD_FMM_IOP_DUMMYSINK_0_REG_START
438#include "bchp_aud_fmm_iop_dummysink_0.h"
439#define BAPE_CHIP_MAX_DUMMYSINKS (BCHP_AUD_FMM_IOP_DUMMYSINK_0_STREAM_CFG_0_i_ARRAY_END+1)
440#else
441#define BAPE_CHIP_MAX_DUMMYSINKS (4)
442#endif
443
444/* Loopbacks */
445#if BCHP_AUD_FMM_IOP_CTRL_LOOPBACK_CFG0
446#define BAPE_CHIP_MAX_LOOPBACKS (1)             /* On the 7408, this is 1, others have more */
447#elif defined BCHP_AUD_FMM_IOP_CTRL_LOOPBACK_CFG
448#define BAPE_CHIP_MAX_LOOPBACKS (4)
449#elif defined BCHP_AUD_FMM_IOP_CTRL_LOOPBACK_CFGi_ARRAY_END
450#define BAPE_CHIP_MAX_LOOPBACKS (BCHP_AUD_FMM_IOP_CTRL_LOOPBACK_CFGi_ARRAY_END+1)
451#elif defined BCHP_AUD_FMM_IOP_LOOPBACK_0_REG_START
452#include "bchp_aud_fmm_iop_loopback_0.h"
453#define BAPE_CHIP_MAX_LOOPBACKS (BCHP_AUD_FMM_IOP_LOOPBACK_0_STREAM_CFG_i_ARRAY_END+1)
454#endif
455
456#ifdef BCHP_AUD_FMM_OP_CTRL_MCLK_CFG_FSi_ARRAY_END
457/* FS Timing Sources */
458#define BAPE_CHIP_MAX_FS (BCHP_AUD_FMM_OP_CTRL_MCLK_CFG_FSi_ARRAY_END+1)
459#endif
460
461/* External MCLK Outputs */
462#if defined BCHP_AUD_FMM_OP_CTRL_MCLK_CFG_EXTi_ARRAY_END
463#define BAPE_CHIP_MAX_EXT_MCLKS (BCHP_AUD_FMM_OP_CTRL_MCLK_CFG_EXTi_ARRAY_END+1)
464#elif defined BCHP_AUD_FMM_IOP_MISC_MCLK_CFG_i_ARRAY_END
465#define BAPE_CHIP_MAX_EXT_MCLKS (BCHP_AUD_FMM_IOP_MISC_MCLK_CFG_i_ARRAY_END+1)
466#endif
467
468#define BAPE_CHIP_MAX_OUTPUT_PORTS (BCHP_SHIFT(AUD_FMM_OP_CTRL_ENABLE_STATUS, reserved0))    /* Total output ports  */
469
470#if defined BCHP_AUD_FMM_BF_CTRL_ADAPTRATE_CFGi_ARRAY_END
471#define BAPE_CHIP_MAX_ADAPTRATE_CONTROLLERS (BCHP_AUD_FMM_BF_CTRL_ADAPTRATE_CFGi_ARRAY_END+1)
472#elif defined BCHP_AUD_FMM_BF_CTRL_ADAPTRATE_7_CFG
473#define BAPE_CHIP_MAX_ADAPTRATE_CONTROLLERS (8)                  /* New chips provide 8 controllers */
474#else
475#define BAPE_CHIP_MAX_ADAPTRATE_CONTROLLERS (4)                  /* Legacy chips only provided 4 controllers */
476#endif
477
478#ifdef BCHP_AUD_FMM_IOP_CTRL_REG_START
479#define BAPE_CHIP_MAX_IOP_STREAMS (BAPE_CHIP_MAX_OUTPUT_PORTS + BAPE_CHIP_MAX_LOOPBACKS + BAPE_CHIP_MAX_DUMMYSINKS)
480#else
481/* The "stream" concept went away on newer chips like 7429 */
482#define BAPE_CHIP_MAX_IOP_STREAMS 0
483#endif
484
485#define BAPE_CHIP_DEFAULT_NUM_COMPRESSED_BUFFERS (2)    /* For AC3+ passthrough we need one for SPDIF out (AC3) and one for HDMI (AC3+) */
486#define BAPE_CHIP_DEFAULT_NUM_PCM_BUFFERS (4)           /* 5.1 + one stereo */
487#define BAPE_CHIP_MAX_PATH_DELAY (128)
488#define BAPE_CHIP_BYTES_PER_PCM_SAMPLE (4)
489#define BAPE_CHIP_BYTES_PER_PCM_SAMPLE_PAIR (2*BAPE_CHIP_BYTES_PER_PCM_SAMPLE)
490#define BAPE_CHIP_BYTES_PER_COMPRESSED_SAMPLE (2)
491#define BAPE_CHIP_INTERLEAVE_DSP_SAMPLES (0)
492
493#define BAPE_CHIP_MAX_SFIFO_GROUPS (BAPE_CHIP_MAX_SFIFOS)
494#define BAPE_CHIP_MAX_DFIFO_GROUPS (BAPE_CHIP_MAX_DFIFOS)
495#define BAPE_CHIP_MAX_SRC_GROUPS (BAPE_CHIP_MAX_SRCS)
496#define BAPE_CHIP_MAX_MIXER_GROUPS (BAPE_CHIP_MAX_MIXERS)
497#define BAPE_CHIP_MAX_LOOPBACK_GROUPS (BAPE_CHIP_MAX_LOOPBACKS)
498#define BAPE_CHIP_MAX_DUMMYSINK_GROUPS (BAPE_CHIP_MAX_DUMMYSINKS)
499
500/* And finally, here are some things that aren't in the RDB */
501
502/* Define values for the PLL_AUDIO<n>_REFERENCE_CLOCK fields of the
503 * CLKGEN_INTERNAL_MUX_SELECT register
504 */
505#ifdef BCHP_CLKGEN_INTERNAL_MUX_SELECT
506#if (BCHP_CHIP==7231 && BCHP_VER == BCHP_VER_A0)
507    #define BCHP_CLKGEN_INTERNAL_MUX_SELECT_PLLAUDIO0_REFERENCE_CLOCK_Fixed  1
508    #define BCHP_CLKGEN_INTERNAL_MUX_SELECT_PLLAUDIO0_REFERENCE_CLOCK_Vcxo0  0
509#else /* for others  (7422, 7425, 7344, 7346, 7358)  */
510    #define BCHP_CLKGEN_INTERNAL_MUX_SELECT_PLLAUDIO0_REFERENCE_CLOCK_Fixed  0
511    #define BCHP_CLKGEN_INTERNAL_MUX_SELECT_PLLAUDIO0_REFERENCE_CLOCK_Vcxo0  1
512    #define BCHP_CLKGEN_INTERNAL_MUX_SELECT_PLLAUDIO0_REFERENCE_CLOCK_Vcxo1  2
513    #define BCHP_CLKGEN_INTERNAL_MUX_SELECT_PLLAUDIO0_REFERENCE_CLOCK_Vcxo2  3
514#endif
515#endif
516
517#endif /* #ifndef BAPE_CHIP_PRIV_H_ */
518
Note: See TracBrowser for help on using the repository browser.