source: svn/trunk/newcon3bcm2_21bu/magnum/portinginterface/xvd/7552/bxvd_priv.h

Last change on this file was 2, checked in by jglee, 11 years ago

first commit

  • Property svn:executable set to *
File size: 69.8 KB
Line 
1/***************************************************************************
2 *     Copyright (c) 2004-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: bxvd_priv.h $
11 * $brcm_Revision: Hydra_Software_Devel/273 $
12 * $brcm_Date: 2/16/12 6:12p $
13 *
14 * Module Description:
15 *   See Module Overview below.
16 *
17 * Revision History:
18 *
19 * $brcm_Log: /magnum/portinginterface/xvd/7401/bxvd_priv.h $
20 *
21 * Hydra_Software_Devel/273   2/16/12 6:12p davidp
22 * SW7425-2419: Add BXVD_P_DestroyInterrupts().
23 *
24 * Hydra_Software_Devel/272   2/9/12 7:57p davidp
25 * SW7425-2284: Add BXVD_P_InitChannel to be used in BXVD_OpenChannel.
26 *
27 * Hydra_Software_Devel/271   2/2/12 3:02p davidp
28 * SW7425-2024: Validate decode protocol specified in BXVD_StartDecode is
29 * supported on platform.
30 *
31 * Hydra_Software_Devel/270   1/20/12 3:47p davidp
32 * SW7208-175: Add support for 1920 portrait decode.
33 *
34 * Hydra_Software_Devel/269   12/1/11 1:12p pblanco
35 * SW7425-1780: Implemented picture id support for transcode userdata.
36 *
37 * Hydra_Software_Devel/268   11/10/11 2:37p davidp
38 * SW7425-1599: Add bSVCProgressiveOnly flag to BXVD_ChannelSettings.
39 *
40 * Hydra_Software_Devel/267   10/20/11 3:21p davidp
41 * SW7425-1564: Add support for SVC interlaced decode.
42 *
43 * Hydra_Software_Devel/266   9/27/11 6:40p davidp
44 * SW7340-279: Allocate Still Channel context in BXVD_Open.
45 *
46 * Hydra_Software_Devel/265   7/28/11 3:35p davidp
47 * SW7552-75: Add BCHP_GetFeature call to determins AVD core clock freq on
48 * platforms where freq varies.
49 *
50 * Hydra_Software_Devel/264   7/20/11 3:27p davidp
51 * SW7231-127: Add BXVD_Standby and BXVD_Resume support.
52 *
53 * Hydra_Software_Devel/263   6/27/11 4:13p davidp
54 * SW7425-542: Merge devel branch to mainline.
55 *
56 * Hydra_Software_Devel/SW7425-542/4   6/14/11 3:40p davidp
57 * SW7425-542: Add pDisplayInfo pointer to Xvd Handle.
58 *
59 * Hydra_Software_Devel/SW7425-542/3   6/9/11 3:38p davidp
60 * SW7425-542: Remove unnecessary chip specific macro.
61 *
62 * Hydra_Software_Devel/SW7425-542/2   6/9/11 1:19p btosi
63 * SW7425-542: added in support for the Host Memory Interface
64 *
65 * Hydra_Software_Devel/SW7425-542/1   5/31/11 3:59p davidp
66 * SW7425-542: Add support for Host Interface Memory (ARC Scratch memory)
67 * FW API changes.
68 *
69 * Hydra_Software_Devel/262   3/25/11 3:56p davidp
70 * SW7405-5101: Add checks to verify AVD code space, CDB/ITB and memory
71 * used is in memory region below 768mb for ARC300 based cores.
72 *
73 * Hydra_Software_Devel/261   12/9/10 5:13p davidp
74 * SW7422-22: Fix SVC support, allocate FW memory for AVD.
75 *
76 * Hydra_Software_Devel/260   10/27/10 5:32p davidp
77 * SW7422-22: Add ARC600 boot callback support.
78 *
79 * Hydra_Software_Devel/259   10/15/10 6:35p davidp
80 * SW7425-16: Add support for base layer ARC, new memory config,
81 * additional FW api memory arguments.
82 *
83 * Hydra_Software_Devel/258   10/7/10 3:31p davidp
84 * SW7422-22: Add BXVD private DDR3 constant definition.
85 *
86 * Hydra_Software_Devel/257   10/6/10 2:00p davidp
87 * SW7405-4923: Set XVD handle type to invalid when context is freed.
88 *
89 * Hydra_Software_Devel/256   10/5/10 10:24a davidp
90 * SW7405-4923: Resolve latest coverity run issues for non-debug builds.
91 *
92 * Hydra_Software_Devel/255   8/3/10 2:03p btosi
93 * SW7400-2870: added BXVD_[Set/Get]PlaybackRate(_isr)
94 *
95 * Hydra_Software_Devel/254   8/3/10 9:06a pblanco
96 * SW7400-2857: Reduced BXVD_Open memory footprint by 512 bytes by moving
97 * FW command and reply buffers to the XVD handle structure.
98 *
99 * Hydra_Software_Devel/253   3/24/10 3:00p davidp
100 * SW7405-3137: Save and restore extended CDB read register address for
101 * decode restart cases.
102 *
103 * Hydra_Software_Devel/252   2/25/10 4:24p nilesh
104 * SW7405-2993: XDM Merge
105 *
106 * Hydra_Software_Devel/251   2/17/10 2:50p davidp
107 * SW7468-74: Add support for IP licensing, save chip product revision
108 * register address in xvd handle.
109 *
110 * Hydra_Software_Devel/250   1/28/10 4:39p davidp
111 * SW7550-173: Set AVD PCache mode register based on DDR type and memory
112 * data width.
113 *
114 * Hydra_Software_Devel/249   1/8/10 11:50a btosi
115 * SW7405-3137: added support for extension data callback
116 *
117 * Hydra_Software_Devel/248   1/6/10 2:28p btosi
118 * SW7405-3137: merged branch into mainline
119 *
120 * Hydra_Software_Devel/247   12/11/09 1:03p davidp
121 * SW7405-3572: Change ChannelClose command argument to use ChannelHandle
122 * instead of ChannelId.
123 *
124 * Hydra_Software_Devel/246   12/1/09 9:48a btosi
125 * SW7405-3245: added BXVD_DBG_* macros.  Map to either BDBG_INSTANCE_* or
126 * BDBG_* at compile time.
127 *
128 * Hydra_Software_Devel/245   11/30/09 4:31p btosi
129 * SW7405-3245: added BXVD_DBG_* macros.  Map to either BDBG_INSTANCE_* or
130 * BDBG_* at compile.
131 *
132 * Hydra_Software_Devel/244   9/30/09 3:15p nilesh
133 * SW7405-3085: Target source polarity synchronization now only occurs if
134 * there are multiple active decodes targeted for the same display
135 * interrupt.
136 *
137 * Hydra_Software_Devel/243   9/29/09 2:11p nilesh
138 * SW7405-3085: The target source polarity for interlaced mosaic channels
139 * on a progressive display is now synchronized
140 *
141 * Hydra_Software_Devel/242   9/16/09 5:00p davidp
142 * SW3548-2458: Add BXVD_P_RESET_CORE macro to reset individual blocks in
143 * AVD core.
144 *
145 * Hydra_Software_Devel/241   6/30/09 4:20p davidp
146 * PR56374: Power down AVD related clocks in BXVD_Close.
147 *
148 * Hydra_Software_Devel/240   6/4/09 4:05p davidp
149 * PR54107: Add AVD_PCacheRegVal to Xvd_handle to save/restore PCache
150 * setting across resets.
151 *
152 * Hydra_Software_Devel/239   6/1/09 6:35p davidp
153 * PR55198: Add dynamic power management support to most STB platforms.
154 *
155 * Hydra_Software_Devel/238   5/26/09 3:34p nilesh
156 * PR52424: Added BXVD_Interrupt_eTSMResult callback and
157 * BXVD_GetPPBParameterQueueInfo() function
158 *
159 * Hydra_Software_Devel/237   3/31/09 5:30p davidp
160 * PR52344: Add bAVC51Enable flag to channel settings to use more memory
161 * for AVC 5.1 compliant streams.
162 *
163 * Hydra_Software_Devel/236   3/26/09 6:13p nilesh
164 * PR53580: Cleaned up DM structs
165 *
166 * Hydra_Software_Devel/235   3/12/09 11:32a nilesh
167 * PR52898: bIgnoreCadenceMatch and eDisplayFieldMode are now sticky
168 * parameters attached to the picture
169 *
170 * Hydra_Software_Devel/234   3/2/09 1:33p nilesh
171 * PR52659: Changed DNR non-AVC inter default from 1024 to 964 as
172 * documented in
173 * http://www.sj.broadcom.com/projects/dvt/Chip_Architecture/Video/Releas
174 * ed/DNR_bpe.doc
175 *
176 * Hydra_Software_Devel/233   2/23/09 2:40p btosi
177 * PR52205: added BXVD_Interrupt_eDecodeError callback
178 *
179 * Hydra_Software_Devel/232   2/4/09 5:09p rayshap
180 * PR51835: BXVD_GetGopTimeCode should make it obvious when no timecode is
181 * present
182 *
183 * Hydra_Software_Devel/231   2/4/09 4:18p nilesh
184 * PR51720: Frame advance now uses multiple field advances across
185 * sequential vsyncs to keep the cadence fed to the MAD happy.
186 *
187 * Hydra_Software_Devel/230   2/4/09 2:18p pblanco
188 * PR51740: Remove ulUserDataQueue member from BXVD_P_Channel structure.
189 *
190 * Hydra_Software_Devel/229   2/3/09 5:58p nilesh
191 * PR51134: Improved DM output cadence during decoder trick mode
192 * transitions
193 *
194 * Hydra_Software_Devel/228   1/27/09 1:49p nilesh
195 * PR51621: Resolved possible global variable naming conflict by either
196 * explicitly declaring globals as static (where possible) or adding
197 * BXVD_P_ prefix
198 *
199 * Hydra_Software_Devel/227   1/14/09 3:04p btosi
200 * PR50623: added uiSwPcrOffset and bUseHwPcrOffset to BXVD_P_TSMCommands
201 *
202 * Hydra_Software_Devel/226   12/19/08 12:04p btosi
203 * PR50241: added support for "OpenChannel" initialization, cleaned up DM
204 * API
205 *
206 * Hydra_Software_Devel/225   12/17/08 2:33p btosi
207 * PR50241: removed the extraneous DM function declarations
208 *
209 * Hydra_Software_Devel/224   12/9/08 10:18a btosi
210 * PR38467: enhanced comment for BXVD_DMInfo
211 *
212 * Hydra_Software_Devel/223   11/21/08 11:49a btosi
213 * PR48843: added in support for uiPicturesReceivedCount
214 *
215 * Hydra_Software_Devel/222   11/20/08 5:12p davidp
216 * PR49533: Add bPreserveCounters boolean to channel structure to not
217 * decoder counters for certain startDecode situations.
218 *
219 * Hydra_Software_Devel/221   11/5/08 3:25p nilesh
220 * PR48693: Added BTMR support
221 *
222 * Hydra_Software_Devel/220   10/28/08 12:30p davidp
223 * PR47278: Add support for ExcessDirMode, allocate more direct memory for
224 * certain AVC streams when flag is set.
225 *
226 * Hydra_Software_Devel/219   10/23/08 5:08p davidp
227 * PR48295: Stripe width of 256 not currently supported. Do not allow QCIF
228 * and CIF still picture decodes.
229 *
230 * Hydra_Software_Devel/218   10/9/08 11:02a nilesh
231 * PR47494: Merged BXVD_Interrupt_ePPBParameters callback support
232 *
233 * Hydra_Software_Devel/PR47494/1   10/8/08 1:28p nilesh
234 * PR47494: Added BXVD_Interrupt_ePPBParameters callback support
235 *
236 * Hydra_Software_Devel/217   10/8/08 11:25a nilesh
237 * PR47692: RequestSTC now returns current coded PTS if re-enabled in the
238 * middle of the clip
239 *
240 * Hydra_Software_Devel/216   10/6/08 11:52a btosi
241 * PR46567: modified BXVD_DMInfo
242 *
243 * Hydra_Software_Devel/215   10/3/08 10:11a nilesh
244 * PR47517: Timing Marker detection logic fixed to work with single PPB
245 * clip decode.  Default AVD timing marker is now used as comparison with
246 * first PPB.
247 *
248 * Hydra_Software_Devel/214   10/2/08 6:44p davidp
249 * PR46543: Add power management support, hibernate field to XVD context.
250 *
251 * Hydra_Software_Devel/213   9/18/08 2:03p davidp
252 * PR46650: Fix MemCfgMode enum field names.
253 *
254 * Hydra_Software_Devel/212   9/17/08 4:27p nilesh
255 * PR43585: Fixed seamless clip handling
256 *
257 * Hydra_Software_Devel/211   9/8/08 6:42p davidp
258 * PR46650: Add BXVD_P_GET_MEMORY_CONFIG macro and BXVD_P_ValidateHeaps to
259 * sanity check heaps passed to BXVD_Open.
260 *
261 * Hydra_Software_Devel/210   8/5/08 3:56p nilesh
262 * PR45322: BXVD_DMDBG_P_DumpYUV() no longer uses hard coded stripe width
263 *
264 * Hydra_Software_Devel/209   8/5/08 2:23p davidp
265 * PR45080: Add support for AVD status block, block address now returned
266 * in FW channel open command.
267 *
268 * Hydra_Software_Devel/208   8/1/08 4:57p davidp
269 * PR43272: Merge PR43272 branch to mainline, new FW memory configuration
270 * API.
271 *
272 * Hydra_Software_Devel/PR43272/1   7/17/08 12:36p davidp
273 * PR43272: Add support for additional FW memory configuration parameters,
274 * Direct mode and IL Work list memory.
275 *
276 * Hydra_Software_Devel/207   7/29/08 4:01p nilesh
277 * PR37222: BXVD_GetNextPTS() returns an error if the next picture is not
278 * available on the delivery queue
279 *
280 * Hydra_Software_Devel/206   7/29/08 3:01p nilesh
281 * PR37222: Added BXVD_GetNextPTS() support
282 *
283 * Hydra_Software_Devel/205   7/29/08 12:41p pblanco
284 * PR45230: Fixed typo in userdata context structure.
285 *
286 * Hydra_Software_Devel/204   7/29/08 11:22a pblanco
287 * PR45230: Added forward error member to multidecode version of userdata
288 * context structure.
289 *
290 * Hydra_Software_Devel/203   7/24/08 12:20p btosi
291 * PR39962: added BXVD_DMLocalPTSInfo to aid in cleaning up PTSInfo
292 * structure
293 *
294 * Hydra_Software_Devel/202   7/8/08 1:49p btosi
295 * PR38467: added support for PPBReceived callback
296 *
297 * Hydra_Software_Devel/201   7/1/08 4:44p nilesh
298 * PR43585: Update to allow bxvd_dispmgr_dvd.c to compile
299 *
300 * Hydra_Software_Devel/200   7/1/08 2:31p nilesh
301 * PR43585: Merge DVD Development branch to mainline
302 *
303 * Hydra_Software_Devel/PR43585/3   6/26/08 11:09a nilesh
304 * PR43585: ClipStart event now only occurs if the current clip has
305 * actually started displaying
306 *
307 * Hydra_Software_Devel/PR43585/2   6/23/08 8:23p nilesh
308 * PR43585: Add Marker valid bit to handle marker transition during start-
309 * up
310 *
311 * Hydra_Software_Devel/PR43585/1   6/20/08 5:04p nilesh
312 * PR43585: Added initial clip support (eRequestSTC, eClipStart,
313 * eClipStop, and ePictureMarker)
314 *
315 * Hydra_Software_Devel/199   6/12/08 5:30p nilesh
316 * PR43585: Updated multi-decode XVD to compile with 7440
317 *
318 * Hydra_Software_Devel/198   5/21/08 1:51p pblanco
319 * PR42910: Added support for handle types and moved the contents of
320 * bxvd_userdata_priv.h to this module."
321 *
322 * Hydra_Software_Devel/197   5/8/08 3:29p nilesh
323 * PR38467: Merge DMv2 to mainline
324 *
325 * Hydra_Software_Devel/196   4/11/08 4:53p davidp
326 * PR40234: Merge decoder debug logging from branch to
327 * Hydra_Software_Devel/.
328 *
329 * Hydra_Software_Devel/PR40234/1   4/10/08 3:37p davidp
330 * PR40234: Add support for decoder debug logging.
331 *
332 * Hydra_Software_Devel/195   4/3/08 2:17p nilesh
333 * PR41276: Fixed possible out of bounds condition for StripeWidth and
334 * StripeMultiple
335 *
336 * Hydra_Software_Devel/194   4/1/08 2:42p davidp
337 * PR27168: Remove FW get version command.
338 *
339 * Hydra_Software_Devel/193   3/21/08 3:45p btosi
340 * PR40010: for DQT, revamped the handling of GOP "tails"
341 *
342 * Hydra_Software_Devel/192   3/18/08 3:30p btosi
343 * PR40009: removed iReleaseStallCnt from BXVD_P_DQTContext
344 *
345 * Hydra_Software_Devel/191   3/7/08 10:38a nilesh
346 * PR40349: Update memory tables according to AVD Mosaic API doc v2.19
347 *
348 * Hydra_Software_Devel/190   1/29/08 6:47p davidp
349 * PR39098: Add PFRI data register item to xvd handle to be saved and
350 * restore on core rev i0.
351 *
352 * Hydra_Software_Devel/189   1/24/08 11:40a nilesh
353 * PR38570: Merge CABAC worklist API changes to mainline
354 *
355 * Hydra_Software_Devel/PR38570/1   1/21/08 5:12p nilesh
356 * PR38570: Added support for cabac worklist buffer and size parameter to
357 * AVD ChannelOpen
358 *
359 * Hydra_Software_Devel/188   1/15/08 5:21p davidp
360 * PR38735: Add BXVD_LinkDecoders/UnlinkDecoders and associated data
361 * structures.
362 *
363 * Hydra_Software_Devel/187   1/8/08 2:35p pblanco
364 * PR38593: Added support for AVS userdata handling
365 *
366 * Hydra_Software_Devel/186   11/8/07 10:49a btosi
367 * PR32273: added support bIgnorePcrDiscontinuity
368 *
369 * Hydra_Software_Devel/185   11/6/07 1:38p btosi
370 * PR30310: added BXVD_P_AVD_NO_CONSTRAINTS
371 *
372 * Hydra_Software_Devel/184   11/6/07 12:36p nilesh
373 * PR36741: Added XVD status reporting via BDBG console messages
374 *
375 * Hydra_Software_Devel/183   11/6/07 10:50a nilesh
376 * PR36735: XVD : Need to add support for Adaptive System Time Management
377 * (ASTM)
378 *
379 * Hydra_Software_Devel/182   10/22/07 10:28a btosi
380 * PR30130: merged DQT constants and structures into mainline
381 *
382 * Hydra_Software_Devel/181   9/26/07 3:20p parijat
383 * PR35190: Need to add generic fix for PPB leaks in DM
384 *
385 * Hydra_Software_Devel/180   9/21/07 10:33a btosi
386 * PR34980: added uiVsyncCount to BXVD_DMInfo
387 *
388 * Hydra_Software_Devel/179   8/30/07 12:21p nilesh
389 * PR34430: Channel specific heaps are now used for address conversion
390 *
391 * Hydra_Software_Devel/178   8/29/07 1:25p rayshap
392 * PR33893: Add support for conditional display manager trickmode
393 * transition
394 *
395 * Hydra_Software_Devel/177   8/29/07 1:08p nilesh
396 * PR34430: Added support for channel specific memory heaps
397 *
398 * Hydra_Software_Devel/176   8/22/07 3:49p nilesh
399 * PR29915: The FW memory config table for compatibility mode is now
400 * generated on-the-fly at runtime
401 *
402 * Hydra_Software_Devel/175   8/21/07 3:04p davidp
403 * PR34052: Remove nolonger used register addr pointers from BXVD_Handle,
404 * use platform_info.stReg structure to reference registers
405 *
406 * Hydra_Software_Devel/174   8/20/07 4:02p nilesh
407 * PR29915: Fixed secure heap memory allocation
408 *
409 * Hydra_Software_Devel/173   8/14/07 10:01p parijat
410 * PR32701: Implement & test 1080p pass-thru on Brutus
411 *
412 * Hydra_Software_Devel/172   8/13/07 4:08p nilesh
413 * PR29915: Multi-decode merge to mainline
414 *
415 * Hydra_Software_Devel/xvd_PR29915_Rel_Mosaic_FW_API/24   8/9/07 3:50p nilesh
416 * PR29915: Updated memory tables according to AVD Mosaic Doc v2.11 (Aug
417 * 9, 2007)
418 *
419 * Hydra_Software_Devel/xvd_PR29915_Rel_Mosaic_FW_API/23   7/26/07 4:00p nilesh
420 * PR29915: Add MPEG2 w/o BTP support
421 *
422 * Hydra_Software_Devel/xvd_PR29915_Rel_Mosaic_FW_API/22   7/25/07 1:37p nilesh
423 * PR29915: Cleaned up bxvd_priv.h and bxvd_vdec_info.h constants to match
424 * XVD coding style
425 *
426 * Hydra_Software_Devel/xvd_PR29915_Rel_Mosaic_FW_API/20   7/20/07 2:22p pblanco
427 * PR29915: Changed value of bottom field first flag from 0x0080 to 0x0010
428 * to refct its value in bxvd_vdec_info.h
429 *
430 * Hydra_Software_Devel/xvd_PR29915_Rel_Mosaic_FW_API/19   7/19/07 5:17p nilesh
431 * PR29915: Fixed stripe_width value in still picture buffer
432 *
433 * Hydra_Software_Devel/xvd_PR29915_Rel_Mosaic_FW_API/18   7/19/07 5:14p nilesh
434 * PR29915: Update BXVD_GetBufferConfig() and BXVD_P_ParseDecodeMode() to
435 * handle BXVD_DecodeMode_eCustom
436 *
437 * Hydra_Software_Devel/xvd_PR29915_Rel_Mosaic_FW_API/17   7/13/07 5:15p nilesh
438 * PR29915: Updated memory tables based on v2.9 of Mosaic API doc
439 *
440 * Hydra_Software_Devel/xvd_PR29915_Rel_Mosaic_FW_API/16   7/10/07 6:18p nilesh
441 * PR29915: Added 7405 support to mosaic branch
442 *
443 * Hydra_Software_Devel/xvd_PR29915_Rel_Mosaic_FW_API/15   7/10/07 10:41a nilesh
444 * PR29915: Merged from mainline 07/10/2007
445 *
446 * Hydra_Software_Devel/167   6/28/07 5:58p vijeth
447 * PR 32432: Enhance get channel status
448 *
449 * Hydra_Software_Devel/166   6/22/07 9:30a btosi
450 * PR30310: added "bReversePlayback" to "BXVD_P_PVRCommands"
451 *
452 * Hydra_Software_Devel/xvd_PR29915_Rel_Mosaic_FW_API/14   7/3/07 3:47p nilesh
453 * PR29915: bxvd_priv.h cleanup
454 *
455 * Hydra_Software_Devel/xvd_PR29915_Rel_Mosaic_FW_API/13   7/3/07 12:09p nilesh
456 * PR29915: Added FGT support
457 *
458 * Hydra_Software_Devel/xvd_PR29915_Rel_Mosaic_FW_API/12   6/28/07 1:36p davidp
459 * PR29915: Move remaining data structure definitions for
460 * bxvd_devcmds_priv.h to bxvd_vdec_api.h
461 *
462 * Hydra_Software_Devel/xvd_PR29915_Rel_Mosaic_FW_API/11   6/19/07 12:55p nilesh
463 * PR29915: BXVD_Settings decode mode list is now copied locally
464 *
465 * Hydra_Software_Devel/xvd_PR29915_Rel_Mosaic_FW_API/10   6/19/07 12:13p nilesh
466 * PR29915: Merge from mainline
467 *
468 * Hydra_Software_Devel/165   6/12/07 12:37p rayshap
469 * PR31988: Add support for enable/disable of 3-2 pulldown
470 *
471 * Hydra_Software_Devel/164   6/4/07 7:44p parijat
472 * PR31700: Video jitter at stream wrap when TSM is enabled (does not
473 * happen with 7411)
474 *
475 * Hydra_Software_Devel/163   5/23/07 12:43p nilesh
476 * PR29874: Consolidate TSM threshold code
477 *
478 * Hydra_Software_Devel/162   5/23/07 5:42p parijat
479 * PR30755: Problem decoding AVC stream A3VID12_151.btz, looks like
480 * single-field
481 *
482 * Hydra_Software_Devel/161   5/22/07 5:16p parijat
483 * PR30242: (According to latest AVD PPB doc, DM will get valid progSeq
484 * values from AVD firmware for all algorithms except AVC & the value
485 * will be derived as per the document from apt ppb fields. So, the fix
486 * is not required for algorithms other than AVC. For AVC, even progFrame
487 * info is in general not available. So, the fix doesn't have relevance
488 * for AVC.)
489 *
490 * Hydra_Software_Devel/160   5/21/07 7:13p vijeth
491 * PR 31433 : Frame Forward for 3:2 pulldown stream
492 *
493 * Hydra_Software_Devel/159   5/17/07 5:03p parijat
494 * PR30011: Frame rewind to frame advance to play transition can cause
495 * video to freeze on AVC
496 *
497 * Hydra_Software_Devel/158   5/15/07 1:19p pblanco
498 * PR28215: Added support for variable stripe width and multiple.
499 *
500 * Hydra_Software_Devel/157   5/14/07 11:30a nilesh
501 * PR30249: Merged UOD 2.x changes to mainline
502 *
503 * Hydra_Software_Devel/156   5/3/07 10:03p parijat
504 * PR30242: DM needs to derive "progressive sequence" info using
505 * progressive frame info for algorithms other than MPEG & VC1
506 *
507 * Hydra_Software_Devel/155   5/2/07 2:55p vijeth
508 * PR 30382: Marker represents the Beginning of a Clip and not the end.
509 *
510 * Hydra_Software_Devel/154   4/24/07 2:52p rayshap
511 * PR30086: Increase VC1 discard threshold to 10 seconds
512 *
513 * Hydra_Software_Devel/153   4/24/07 1:39p nilesh
514 * PR22766: Added support for new FW API to provide FGT buffer address and
515 * size
516 *
517 * Hydra_Software_Devel/152   4/11/07 7:07p vijeth
518 * PR 29434 : Display Manager - NF002 disk - Simple Seemless Playback test
519 * fails - drops pictures
520 *
521 * Hydra_Software_Devel/151   4/11/07 12:15p parijat
522 * PR27835: Removed static variable & added eSourcePolarityPrev to
523 * stDMContextState structure
524 *
525 * Hydra_Software_Devel/150   4/11/07 12:01p parijat
526 * PR28082: Changed bFirstPPBForCurrentChannelHasBeenDetected from static
527 * to state variable
528 *
529 * Hydra_Software_Devel/149   3/26/07 1:54p pblanco
530 * PR27168: Added new constant definitions.
531 *
532 * Hydra_Software_Devel/148   3/22/07 11:51a pblanco
533 * PR28629: Added GOP timecode mask and shift constants.
534 *
535 * Hydra_Software_Devel/147   3/20/07 12:09p pblanco
536 * PR28629: Added support for BXVD_GetGopTimeCode.
537 *
538 * Hydra_Software_Devel/146   3/6/07 3:29p parijat
539 * PR28082: XVD : DM in PI : New callback which provides picture sizes
540 * immediately after channel open/change, required
541 *
542 * Hydra_Software_Devel/145   3/2/07 1:36p nilesh
543 * PR26188: Merged 7400B0 bring-up branch to mainline.  Cleaned up heap
544 * naming and usage.
545 *
546 * Hydra_Software_Devel/PR26188/3   2/28/07 4:27p nilesh
547 * PR26188: Fixed incorrect calculation of FW Context base phy addr on
548 * 7400B0
549 *
550 * Hydra_Software_Devel/PR26188/2   2/27/07 6:03p nilesh
551 * PR26188: Remove hack to set picture buffer address on 7400B0
552 *
553 * Hydra_Software_Devel/PR26188/1   2/27/07 4:05p nilesh
554 * PR26188: 7400B0 Bring-Up
555 *
556 * Hydra_Software_Devel/144   2/6/07 11:08a nilesh
557 * PR27575: Fix 7440 Watchdog and make watchdog more robust on all
558 * platforms.
559 *
560 * Hydra_Software_Devel/PR27575/1   2/2/07 2:12p nilesh
561 * PR27575: Fix 7440 Watchdog
562 *
563 * Hydra_Software_Devel/142   1/23/07 1:40p pblanco
564 * PR27283: New UART initialization support.
565 *
566 * Hydra_Software_Devel/141   12/29/06 5:25p vijeth
567 * PR 26847: XVD : DM in PI : Wrong #defines used for couple of DNR
568 * parameters for AVC
569 *
570 * Hydra_Software_Devel/140   12/13/06 7:39p davidp
571 * PR25443: Remove deprecated data structures.
572 *
573 * Hydra_Software_Devel/139   12/12/06 3:00p davidp
574 * PR25443: Merge Simplified FW API branch into mainline
575 *
576 * Hydra_Software_Devel/138   12/6/06 11:11a pblanco
577 * PR26199: Altered change based on Gaurav's input. There is now a
578 * separate define for VC1 streams (4 secs.) and MPEG is back to 2 secs.
579 *
580 * Hydra_Software_Devel/137   12/6/06 10:21a pblanco
581 * PR26199: Changed mpeg discard threshold from 2 to 4 seconds to
582 * accomodate vc1 streams.
583 *
584 * Hydra_Software_Devel/136   11/17/06 4:50p nilesh
585 * PR25868: Merged authenticated image support to mainline
586 *
587 * Hydra_Software_Devel/PR25868/2   11/16/06 3:38p nilesh
588 * PR25868: Added authenticated image support
589 *
590 * Hydra_Software_Devel/PR25868/1   11/14/06 4:01p nilesh
591 * PR25868: Added pre-relocated image support
592 *
593 * Hydra_Software_Devel/135   11/13/06 9:32p vijeth
594 * PR 19436 : IFrameDetect needed for HITS
595 *
596 * Hydra_Software_Devel/134   11/13/06 7:18p vijeth
597 * PR 24597: Input / Output frame rate mismatch causes endless XVD phase
598 * interrupts
599 *
600 * Hydra_Software_Devel/133   11/9/06 4:43p davidp
601 * PR25698: Explicitly save XPT Rave CDB_Read register address being used
602 * for current decode to be restored during watchdog processing.
603 *
604 * Hydra_Software_Devel/132   11/3/06 6:35p vijeth
605 * PR 24492 : During transition from Pause -> Play there is a Jump in the
606 * Video
607 *
608 * Hydra_Software_Devel/131   10/19/06 7:16p vijeth
609 * PR 23237 : 7440: Add DisplayMgr support
610 *
611 * Hydra_Software_Devel/130   10/17/06 11:22p vijeth
612 * PR 23237 : 7440: Add DisplayMgr support
613 *
614 * Hydra_Software_Devel/DM7440/4   10/17/06 9:25p vijeth
615 * PR 23237 : 7440: Add DisplayMgr support
616 *
617 * Hydra_Software_Devel/DM7440/3   10/16/06 2:09p vijeth
618 * PR 23237 : 7440: Add DisplayMgr support
619 *
620 * Hydra_Software_Devel/DM7440/2   10/11/06 11:44a vijeth
621 * PR 23237 : 7440: Add DisplayMgr support
622 *
623 * Hydra_Software_Devel/DM7440/1   10/9/06 2:45p vijeth
624 * PR 23237: 7440: Add DisplayMgr support ( Making changes)
625 *
626 * Hydra_Software_Devel/129   10/2/06 3:00p gaurava
627 * PR 24597: Do not enable DM Logging because it kills the system.
628 *
629 * Hydra_Software_Devel/128   9/29/06 3:40p vijeth
630 * PR 24597 : Input / Output frame rate mismatch causes endless XVD phase
631 * interrupts
632 *
633 * Hydra_Software_Devel/127   9/26/06 9:54p vijeth
634 * PR 24559: Display Manager should not consider the first picture after
635 * ChannelOpen as late for performance measurements
636 *
637 * Hydra_Software_Devel/126   9/22/06 2:21p davidp
638 * PR22867: Update FW memory usage table, add secure memory heap support.
639 *
640 * Hydra_Software_Devel/125   9/5/06 3:05p davidp
641 * PR22867: Merge secure heap (Cabac) support
642 *
643 * Hydra_Software_Devel/xvd_cabac_heap/1   8/30/06 5:10p davidp
644 * 22867: Separate FW memory so Cabac bin memory can me moved to secure
645 * heap.
646 *
647 * Hydra_Software_Devel/124   8/9/06 3:06p davidp
648 * PR20394: PCR TimeBase decoder setting now assigned a default value in
649 * BXVD_OpenChannel.
650 *
651 * Hydra_Software_Devel/123   8/3/06 7:42p parijat
652 * PR 21703: video output stuttering when input stream is 50Hz and output
653 * is 60Hz
654 *
655 * Hydra_Software_Devel/122   8/1/06 5:58p davidp
656 * PR22673: Add verify watchdog fired platform routine.
657 *
658 * Hydra_Software_Devel/121   7/26/06 4:50p davidp
659 * PR22673: Cleanup more platform specific code, add hHWMemHeap element in
660 * Xvd handle.
661 *
662 * Hydra_Software_Devel/120   7/20/06 2:22p nilesh
663 * PR22673: Created BXVD_P_CONTEXT_PLATFORM macro to allow platform-
664 * specific fields in BXVD_P_Context struct
665 *
666 * Hydra_Software_Devel/119   7/19/06 2:26p pblanco
667 * PR22673: Moved conditional defines from bxvd_priv.h to the appropriate
668 * platformspecific header files.
669 *
670 * Hydra_Software_Devel/118   7/18/06 12:11a nilesh
671 * PR22673: Code restructure for 97400, 97401 B0, and 97118
672 *
673 * Hydra_Software_Devel/PR22673/2   7/17/06 2:51p nilesh
674 * PR22673: Restructure on 97400
675 *
676 * Hydra_Software_Devel/PR22673/1   7/17/06 2:34p nilesh
677 * PR22673: Restructure on 97401
678 *
679 * Hydra_Software_Devel/117   7/14/06 10:21a pblanco
680 * PR21703: Also 22389 and 21580... 50Hz -> 60Hz
681 *
682 * Hydra_Software_Devel/116   7/13/06 4:56p davidp
683 * PR22673: Add BXVD_P_SetWatchdog_7401B0 routine, remove some 7401A0
684 * support.
685 *
686 * Hydra_Software_Devel/115   7/12/06 4:48p davidp
687 * PR20017: Cleanup BXVD_Open, add platform specific setup routines
688 *
689 * Hydra_Software_Devel/114   7/11/06 5:06p davidp
690 * PR20017: Add FW inner loop Watchdog support, also add platform specific
691 * SetupInterrupts routines
692 *
693 * Hydra_Software_Devel/113   7/6/06 9:40a pblanco
694 * PR21943: Fixed conditional compilation for 7401 B0, broken when
695 * conditionalizing for 7118.
696 *
697 * Hydra_Software_Devel/112   7/5/06 3:20p pblanco
698 * PR21943: Conditionalization for 7118
699 *
700 * Hydra_Software_Devel/111   5/31/06 11:01a vijeth
701 * PR 21144: XVD to tell VDC a field repeat
702 *
703 * Hydra_Software_Devel/110   5/26/06 1:54p davidp
704 * PR21740: Store userdata context in channel context, convert userdata
705 * addr using private memory heap info.
706 *
707 * Hydra_Software_Devel/109   5/25/06 3:10p pblanco
708 * PR20017: Reloc sanity check in.
709 *
710 * Hydra_Software_Devel/108   5/24/06 1:20p pblanco
711 * PR20017: Decreased inner loop address offset from 0x000c0000 to
712 * 0x000a0000.
713 *
714 * Hydra_Software_Devel/107   5/24/06 11:15a pblanco
715 * PR20017: Added a defined constant for inner loop address offset.
716 *
717 * Hydra_Software_Devel/106   5/24/06 10:00a pblanco
718 * PR20017: Added inner and outer loop end-of-code members to XVD context
719 * structure.
720 *
721 * Hydra_Software_Devel/105   5/11/06 6:08p davidp
722 * PR21532: Created new BXVD_[Un]InstallDeviceInterruptCallback to handle
723 * device instance interrupts for DecodeStillPicture and Watchdog.
724 *
725 * Hydra_Software_Devel/104   5/10/06 11:01a pblanco
726 * PR19877: Removed unused host command prototypes identified by Gaurav.
727 *
728 * Hydra_Software_Devel/103   5/5/06 3:29p davidp
729 * PR20079: Reduce 7400 FW shared memory from 16mb to 8mb per decoder.
730 *
731 * Hydra_Software_Devel/102   5/5/06 2:10p davidp
732 * PR21156: Add BXVD_P_ReleasePPB_isr and related _isr routines for DM to
733 * use at ISR time.
734 *
735 * Hydra_Software_Devel/101   5/4/06 11:32p vijeth
736 * PR 17879 : Support new DNR feature in XVD
737 *
738 * Hydra_Software_Devel/Test_PR17879_SupportDNR/1   5/3/06 9:44p vijeth
739 * PR 17879 : Support new DNR feature in XVD
740 *
741 * Hydra_Software_Devel/100   4/24/06 2:11p davidp
742 * PR18043: Add support for Sequence Header interrupt processing
743 *
744 * Hydra_Software_Devel/99   4/18/06 11:04a pblanco
745 * PR19123: Use calculated values for page register initialization.
746 *
747 * Hydra_Software_Devel/98   4/17/06 6:27p davidp
748 * PR20916: Save and restore channelChangeMode during disableForFlush and
749 * Flush processing
750 *
751 * Hydra_Software_Devel/97   4/17/06 3:55p pblanco
752 * PR19123: Added definitions for page register initialization values.
753 *
754 * Hydra_Software_Devel/96   4/14/06 2:17p davidp
755 * PR19600: Move 7400 AVD FW load address to 62MB
756 *
757 * Hydra_Software_Devel/95   4/12/06 12:50p davidp
758 * PR19600: Move 7401 FW load address to 48mb, also decrease size to 1mb
759 *
760 * Hydra_Software_Devel/94   4/6/06 3:52p pblanco
761 * PR19877: Removed unused members from private channel context structure.
762 *
763 * Hydra_Software_Devel/93   4/6/06 12:59p pblanco
764 * PR20625: Removed the now unused bUserMute flag from the channel context
765 * structure.
766 *
767 * Hydra_Software_Devel/92   4/5/06 2:09p pblanco
768 * PR15434: Changed channel open formal parameter from Port to
769 * RaveEndianess.
770 *
771 * Hydra_Software_Devel/91   3/29/06 2:28p pblanco
772 * PR19099: Added separate discard threshold defines for AVC and MPEG.
773 *
774 * Hydra_Software_Devel/90   3/29/06 2:08p pblanco
775 * PR19877: Added BXVD_P_GetSeqHdr function prototype.
776 *
777 * Hydra_Software_Devel/89   3/29/06 12:45p vijeth
778 * PR 19284: add BXVD_Interrupt_eNewPtsStcOffset for higher precision
779 * lipsync
780 *
781 * Hydra_Software_Devel/89   3/29/06 12:43p vijeth
782 * PR 19284: add BXVD_Interrupt_eNewPtsStcOffset for higher precision
783 * lipsync
784 *
785 * Hydra_Software_Devel/89   3/29/06 12:42p vijeth
786 * PR 19284: add BXVD_Interrupt_eNewPtsStcOffset for higher precision
787 * lipsync
788 *
789 * Hydra_Software_Devel/88   3/28/06 6:14p davidp
790 * PR20353: Add decoder private memory base address to luma/chroma buffer
791 * address being returned to app.
792 *
793 * Hydra_Software_Devel/87   3/27/06 6:35p davidp
794 * PR20353: Add Decode Still Picture support for 7400
795 *
796 * Hydra_Software_Devel/86   3/27/06 4:22p pblanco
797 * PR19877: Added address for vdec status block to private channel context
798 * structure. This is used to get GOP time codes sequence header.
799 *
800 * Hydra_Software_Devel/85   3/27/06 3:13p pblanco
801 * PR19877: Removed unused member declaration of type BXVD_VideoParams.
802 *
803 * Hydra_Software_Devel/84   3/24/06 1:35p pblanco
804 * PR20274: Interim checkin prior to FW implementation.
805 *
806 * Hydra_Software_Devel/83   3/23/06 8:57a pblanco
807 * PR19877: Added bPreserveState to private channel context data.
808 *
809 * Hydra_Software_Devel/82   3/22/06 5:16p davidp
810 * PR20347: Add L2 interrupt support
811 *
812 * Hydra_Software_Devel/81   3/21/06 5:20p vijeth
813 * PR 20202: Need initial removal delay option for elementary stream
814 * playback
815 * PR 20243: XVD DM should print message when vsync interrupt is missed
816 *
817 * Hydra_Software_Devel/80   3/15/06 4:09p pblanco
818 * PR20197: The channel context structure contained a member that was
819 * incorrectly being set for display field mode. The correct member is in
820 * the channel state structure. The incorrect member has been removed to
821 * eliminate future confusion.
822 *
823 * Hydra_Software_Devel/79   3/6/06 1:21p pblanco
824 * PR16785: Changed skip mode command prototype to use new skip mode enum.
825 *
826 * Hydra_Software_Devel/78   2/28/06 4:36p davidp
827 * PR18906: Pass proper field polarity/frame value to VDC for
828 * PictureDataRdy interrupt regardless if decode is in progress.:
829 *
830 * Hydra_Software_Devel/77   2/28/06 10:31a pblanco
831 * PR19877: Additional structure and code cleanup.
832 *
833 * Hydra_Software_Devel/76   2/22/06 11:37a pblanco
834 * PR19785: Re-checked in to fix ClearCase 0 length file problem.
835 *
836 * Hydra_Software_Devel/74   2/21/06 1:46p pblanco
837 * PR19785: Implemented BXVD_SetSkipPictureMode API. This also needs FW
838 * support.
839 *
840 * Hydra_Software_Devel/73   2/17/06 3:17p davidp
841 * PR16792: Modify FW API for Still Picture Decode, feature now working:
842 *
843 * Hydra_Software_Devel/72   2/15/06 1:56p pblanco
844 * PR18545: Extended user data types for 7401/7400 in the same manner Mai
845 * did for 7411.
846 *
847 * Hydra_Software_Devel/71   2/14/06 1:11p pblanco
848 * PR19123: Moved static data from bxvd.c interrupt routines to XVD
849 * context structure.
850 *
851 * Hydra_Software_Devel/70   2/2/06 4:04p pblanco
852 * PR19123: More code cleanup. Changed all instances of uAvcInstance to
853 * uDecoderInstance and removed last remaining references to the old
854 * decoder context array.
855 *
856 * Hydra_Software_Devel/69   2/1/06 3:54p pblanco
857 * PR19123: Changed "AVC" instance array in XVD context structure to a
858 * single instance of type BXVD_DecoderContext. Tested against 7401 with
859 * no regressions and against 7400 with no regressions.
860 *
861 * Hydra_Software_Devel/68   1/31/06 1:35p pblanco
862 * PR19123: Make sure there are two AVC instance structures for 7400.
863 *
864 * Hydra_Software_Devel/67   1/30/06 1:40p pblanco
865 * PR19123: Fixed function prototype for trick mode enable.
866 *
867 * Hydra_Software_Devel/66   1/30/06 8:58a pblanco
868 * PR19308: Changed function prototype for
869 * BXVD_P_HostCmdDecEnableBRCMTrickPlay to take an unsigned long value
870 * instead of a boolean.
871 *
872 * Hydra_Software_Devel/65   1/26/06 4:03p davidp
873 * PR19123: Remove printf debug messages, clean up compiler warnings:
874 *
875 * Hydra_Software_Devel/64   1/25/06 6:52p davidp
876 * PR19123: Add platform specific definition of FS_MAP_SIZE:
877 *
878 * Hydra_Software_Devel/63   1/24/06 2:51p pblanco
879 * PR19123: 7400 firmware bring up debugging changes.
880 *
881 * Hydra_Software_Devel/62   1/20/06 9:31a pblanco
882 * PR19123: Change Reset7401 to the more generic Reset740x.
883 *
884 * Hydra_Software_Devel/61   1/16/06 4:38p pblanco
885 * PR19099: Added default discard threshold value definition.
886 *
887 * Hydra_Software_Devel/60   1/16/06 1:27p davidp
888 * PR16792: BXVD_Open now uses two heap pointers, one for FW code (2MB)
889 * the other for FW picture buffers.:
890 *
891 * Hydra_Software_Devel/59   1/10/06 11:17a pblanco
892 * PR16052: Added function prototype for
893 * BXVD_P_HostCmdDecEnableBRCMTrickPlay.
894 *
895 * Hydra_Software_Devel/58   1/3/06 10:51a pblanco
896 * PR16052: Added BXVD_PVR_BTPMode member to BXVD_P_PVRCommands.
897 *
898 * Hydra_Software_Devel/57   12/23/05 6:50p davidp
899 * PR16878: Reset Decoder in Watchdog ISR, add BXVD_Open setting for
900 * watchdog timer value, pass WD info to FW:
901 *
902 * Hydra_Software_Devel/56   12/21/05 5:59p davidp
903 * PR16052: Add Still picture support:
904 *
905 * Hydra_Software_Devel/55   12/12/05 8:19p davidp
906 * PR16052: Add PTS related callbacks:
907 *
908 * Hydra_Software_Devel/54   12/12/05 3:09p pblanco
909 * PR16052: More still picture internals (sanity checkin)
910 *
911 * Hydra_Software_Devel/53   12/9/05 12:28p pblanco
912 * PR16052: Added prototype for still picture decode host command.
913 *
914 * Hydra_Software_Devel/52   12/7/05 5:26p davidp
915 * PR16878: Add XVD Watchdog routines:
916 *
917 * Hydra_Software_Devel/51   12/2/05 12:32p pblanco
918 * PR16052: Removed BXVD_FilmTypeDetectionMode from referring structure.
919 *
920 * Hydra_Software_Devel/50   12/2/05 9:58a pblanco
921 * PR16052: Moved BXVD_ReleasePPB to BXVD_P_ReleasePPB.
922 *
923 * Hydra_Software_Devel/49   12/1/05 1:44p pblanco
924 * PR16052: Changed definition of BXVD_P_UserData so that the forward
925 * pointer is a
926 * unsigned long.
927 *
928 * Hydra_Software_Devel/48   11/28/05 2:30p pblanco
929 * PR16052: Added BXVD_IS_MPEG and BXVD_IS_AVC macros.
930 *
931 * Hydra_Software_Devel/47   11/22/05 1:15p pblanco
932 * PR16052: Added new user data related defines and enums.
933 *
934 * Hydra_Software_Devel/46   11/18/05 9:19a pblanco
935 * PR16052: Added PPB field polarity flag mask define.
936 *
937 * Hydra_Software_Devel/45   11/15/05 11:14a pblanco
938 * PR16052: Removed old queueing code. User data will implement a private
939 * version.
940 *
941 * Hydra_Software_Devel/44   11/11/05 9:47a pblanco
942 * PR16052: Added user data queue pointer to channel context.
943 *
944 * Hydra_Software_Devel/43   11/10/05 8:52a pblanco
945 * PR17567: Adding correct display override to XVD.
946 *
947 * Hydra_Software_Devel/42   11/10/05 7:53a pblanco
948 * PR16052: FW now uses heap info to determine load and execution
949 * addresses. Also removed unused code that existed when XVD used to
950 * create and map its own heap. Corresponding changes were made in
951 * related modules also checked in at this time.
952 *
953 * Hydra_Software_Devel/41   11/4/05 3:54p davidp
954 * PR16052: Add call to BXVD_P_ReleasePPBonCloseChannel to StopDecode:
955 *
956 * Hydra_Software_Devel/40   10/28/05 9:36p vijeth
957 * PR 17483: Added the STCinvalid flag
958 * Added support to count the number of underflows,
959 *
960 * Hydra_Software_Devel/39   10/27/05 7:06p vijeth
961 * PR 17483: Added code for the DM to remember the STC_Offset and
962 * STC_Offset_valid information across the DM runs. For different
963 * Pictures.
964 *
965 * Hydra_Software_Devel/38   10/20/05 5:25p pblanco
966 * PR16052: Removed all C++ style comments
967 *
968 * Hydra_Software_Devel/37   10/18/05 3:36p ssavekar
969 * PR 16052: New check-in for XVD
970 * Added code for excluding OS calls from all normal compilations.
971 *
972 * Hydra_Software_Devel/36   10/14/05 7:08p ssavekar
973 * PR 16052: New check-in for XVD
974 * Added defines related to display manager logs and a few other defines
975 * for enabling logs in "BXVD_P_PictureDataReady_isr()". All these
976 * defines are disabled hence no logs will be printed.
977 *
978 * Hydra_Software_Devel/35   10/7/05 3:29p pblanco
979 * PR16052: Added new function prototypes for queue management API.
980 *
981 * Hydra_Software_Devel/34   10/6/05 5:18p ssavekar
982 * PR 16052: New check-in for XVD
983 * Added variables for clean channel change.
984 *
985 * Hydra_Software_Devel/33   9/27/05 2:44p davidp
986 * PR16052: Fix SH_MEM_AREA definition:
987 *
988 * Hydra_Software_Devel/32   9/26/05 2:25p pblanco
989 * PR16052: Added RUL descriptor mask to channel open prototype.
990 *
991 * Hydra_Software_Devel/30   9/20/05 3:52p ssavekar
992 * PR 16052: New check-in for XVD
993 * Added a data structure for holding RUL ID mask values.
994 *
995 * Hydra_Software_Devel/29   9/16/05 8:37a pblanco
996 * PR16052: Moved decoder control functions from bxvd.c to private
997 * functions here.
998 *
999 * Hydra_Software_Devel/28   9/14/05 1:15p pblanco
1000 * PR16052: Added a BXVD_DisplayFieldType to the channel context.
1001 *
1002 * Hydra_Software_Devel/27   9/13/05 1:49p pblanco
1003 * PR16052: Cleaned up decoder flush code.
1004 *
1005 * Hydra_Software_Devel/26   9/9/05 7:26a pblanco
1006 * PR16052: Removed "AlmostDone" interrupt from channel structure.
1007 *
1008 * Hydra_Software_Devel/25   9/8/05 4:52p ssavekar
1009 * PR 16052: New check-in for XVD
1010 * Changes for DM integration with XVD and FW.
1011 *
1012 * Hydra_Software_Devel/24   9/6/05 1:07p pblanco
1013 * PR16052: Removed prototype for BXVD_P_GetFWVBase.
1014 *
1015 * Hydra_Software_Devel/23   9/6/05 10:26a pblanco
1016 * PR16052: Added new function prototypes for physical to virtual address
1017 * translation and moved some defines from bxvd_priv.c
1018 *
1019 * Hydra_Software_Devel/22   8/29/05 8:37a pblanco
1020 * PR16052: Support for new FW.
1021 *
1022 * Hydra_Software_Devel/21   8/25/05 9:34a pblanco
1023 * PR16052: Added prototypes for ChannelDrop and ReleasePicture.
1024 *
1025 * Hydra_Software_Devel/20   8/24/05 1:13p pblanco
1026 * PR16052: Added new function prototypes and a new member for AVC
1027 * instance to the XVD context structure.
1028 *
1029 * Hydra_Software_Devel/19   8/23/05 2:04p pblanco
1030 * PR16052: Additional host command support, code cleanup and bug fixes.
1031 *
1032 * Hydra_Software_Devel/19   8/23/05 1:46p pblanco
1033 * PR16052: Additional host command support, code cleanup and bug fixes.
1034 *
1035 * Hydra_Software_Devel/17   8/18/05 2:13p pblanco
1036 * PR16052: Code fixes for BXVD_OpenChannel and BXVD_StartDecode.
1037 *
1038 * Hydra_Software_Devel/16   8/5/05 12:24a ssavekar
1039 * PR 16052: New check-in for XVD
1040 * Added data structures and callback handles for "DataReadyISR" that in
1041 * turn calls DM in structure "BXVD_P_Channel".
1042 *
1043 * Hydra_Software_Devel/15   8/2/05 5:24a ssavekar
1044 * PR 16052: New check-in for XVD
1045 * Changes after a code walk-through.
1046 *
1047 * Hydra_Software_Devel/14   7/30/05 12:57a ssavekar
1048 * PR 16052: New check-in for XVD
1049 * Modified a few data structures for XVD and 7401 FW integration. Removed
1050 * all the PPB related data structures. These data structures are placed
1051 * in a separate file "bxvd_vdec_info.h"
1052 *
1053 * Hydra_Software_Devel/13   7/26/05 11:33a pblanco
1054 * PR16052: Changed remaining 7411 variable tags to 7401.
1055 *
1056 * Hydra_Software_Devel/12   7/25/05 12:24p ebrakus
1057 * PR16052: Modified BABV_Handle to include Avc contexts
1058 *
1059 * Hydra_Software_Devel/11   7/22/05 11:36a pblanco
1060 * PR16052: Code cleanup and data structure factoring.
1061 *
1062 * Hydra_Software_Devel/10   7/20/05 3:17p pblanco
1063 * PR16052: Additional development.
1064 *
1065 * Hydra_Software_Devel/9   7/19/05 3:09p pblanco
1066 * PR16052: Additional development.
1067 *
1068 * Hydra_Software_Devel/8   7/18/05 3:18p pblanco
1069* PR16052: Additional code development.
1070 *
1071 * Hydra_Software_Devel/6   7/15/05 1:07p pblanco
1072 * PR16052: Clean build with new code and data.
1073 *
1074 * Hydra_Software_Devel/5   7/14/05 10:53a pblanco
1075 * PR16052: Fix compilation errors caused by merge.
1076 *
1077 * Hydra_Software_Devel/4   7/13/05 4:19p pblanco
1078 * PR16052: Formatting and name fixups for merge.
1079 *
1080 * Hydra_Software_Devel/3   7/13/05 2:45p pblanco
1081 * PR16052: Merging with Santosh.
1082 *
1083 * Hydra_Software_Devel/1   7/7/05 8:56a pblanco
1084 * PR16052: Added
1085 *
1086 *****************************************************************************/
1087#ifndef BXVD_PRIV_H__
1088#define BXVD_PRIV_H__
1089
1090#include "bxvd.h"
1091#include "bkni.h"
1092#include "breg_mem.h"
1093#include "bxvd_userdata.h"
1094#include "bxvd_pvr.h"
1095#include "bchp_bvnf_intr2_3.h"
1096#include "bxvd_vdec_info.h"
1097#include "bxvd_vdec_api.h"
1098#include "bxvd_memory_priv.h"
1099#include "bxvd_status.h"
1100#include "bxvd_dip.h"
1101#include "bxdm_dih.h"
1102#include "bxdm_pp.h"
1103
1104/* needed to get pb_lib.c to compile.
1105 * better to change pi_util.h?
1106 */
1107#include "bxvd_decoder.h"
1108
1109#ifdef __cplusplus
1110extern "C" {
1111#endif
1112
1113/* Supported stripe width values */
1114#define BXVD_P_STRIPE_WIDTH_NUM 2
1115
1116/* Supported stripe multiple values */
1117#define BXVD_P_STRIPE_MULTIPLE_NUM 3
1118#ifdef CONFIG_AOV_SDRAM_1G/*janzy@20121001*/
1119#define BXVD_MAX_VIDEO_CHANNELS  4
1120#else
1121#define BXVD_MAX_VIDEO_CHANNELS  16
1122#endif
1123
1124/***********************************************************************
1125 *  Private macros
1126 ***********************************************************************/
1127
1128/* SW7405-3245: at compile time select either the BDBG_INSTANCE_* or
1129 * BDBG_* macros.  The BDBG_* macros are substantially faster.
1130 */
1131#if BXVD_P_USE_INSTANCE_MACROS
1132#define BXVD_DBG_MSG(instance, format) BDBG_INSTANCE_MSG(instance, format)
1133#define BXVD_DBG_WRN(instance, format) BDBG_INSTANCE_WRN(instance, format)
1134#define BXVD_DBG_ERR(instance, format) BDBG_INSTANCE_ERR(instance, format)
1135#else
1136#define BXVD_DBG_MSG(instance, format)    \
1137   BSTD_UNUSED(instance);                 \
1138   BDBG_MSG(format)                       \
1139   
1140#define BXVD_DBG_WRN(instance, format)    \
1141   BSTD_UNUSED(instance);                 \
1142   BDBG_WRN(format)                       \
1143
1144#define BXVD_DBG_ERR(instance, format)    \
1145   BSTD_UNUSED(instance);                 \
1146   BDBG_ERR(format)                       \
1147
1148#endif
1149
1150#define BXVD_IS_MPEG(protocol) ( \
1151    (BAVC_VideoCompressionStd_eMPEG2 == (protocol)) || \
1152    (BAVC_VideoCompressionStd_eMPEG2DTV == (protocol)) || \
1153    (BAVC_VideoCompressionStd_eMPEG1 == (protocol)))
1154
1155#define BXVD_IS_AVC(protocol) ( \
1156    (BAVC_VideoCompressionStd_eH264 == (protocol)) || \
1157    (BAVC_VideoCompressionStd_eH261== (protocol)) || \
1158    (BAVC_VideoCompressionStd_eH263== (protocol)))
1159
1160#define BXVD_IS_AVS(protocol) (BAVC_VideoCompressionStd_eAVS == (protocol))
1161
1162#define BXVD_P_RESET_CORE( hXvd, uiReg, uiResetMask, string)               \
1163{                                                                          \
1164   uint32_t uiRegVal, uiPollCnt;                                           \
1165   bool bDone;                                                             \
1166                                                                           \
1167   uiRegVal = BXVD_Reg_Read32( hXvd, uiReg);                               \
1168                                                                           \
1169   uiRegVal |= uiResetMask;                                                \
1170                                                                           \
1171   BXVD_Reg_Write32( hXvd, uiReg, uiRegVal);                               \
1172                                                                           \
1173   bDone = false;                                                          \
1174   uiPollCnt = 1;                                                          \
1175                                                                           \
1176   while (!bDone)                                                          \
1177   {                                                                       \
1178      uiRegVal = BXVD_Reg_Read32( hXvd, uiReg);                            \
1179                                                                           \
1180      if (((uiRegVal & uiResetMask) != uiResetMask)                        \
1181          || (uiPollCnt++ > 100))                                          \
1182      {                                                                    \
1183         bDone = true;                                                     \
1184      }                                                                    \
1185   }                                                                       \
1186   BXVD_DBG_MSG(hXvd, ("%s reset pollcnt: %d\n", string, uiPollCnt));      \
1187}
1188
1189
1190#define BXVD_P_IS_FW_VERSION_VALID(pInitRsp)                              \
1191   (((pInitRsp->sw_version >> 8) & 0xff) == BXVD_P_CURRENT_MAJOR_VERSION)
1192
1193#define BXVD_P_CREATE_PROTOCOLS_MASK(eVidCmprStd) \
1194   ( 1 << (eVidCmprStd - BAVC_VideoCompressionStd_eMPEG4Part2))
1195
1196#define BXVD_P_REVE_DECODE_PROTOCOLS_MASK BXVD_P_CREATE_PROTOCOLS_MASK(BAVC_VideoCompressionStd_eMPEG2_DSS_PES)
1197
1198#define BXVD_P_REVH_DECODE_PROTOCOLS_MASK (BXVD_P_REVE_DECODE_PROTOCOLS_MASK | \
1199                                           BXVD_P_CREATE_PROTOCOLS_MASK(BAVC_VideoCompressionStd_eMPEG4Part2))
1200
1201#define BXVD_P_REVI_DECODE_PROTOCOLS_MASK (BXVD_P_REVH_DECODE_PROTOCOLS_MASK | \
1202                                           BXVD_P_CREATE_PROTOCOLS_MASK( BAVC_VideoCompressionStd_eAVS))
1203
1204#define BXVD_P_REVJ_DECODE_PROTOCOLS_MASK (BXVD_P_REVI_DECODE_PROTOCOLS_MASK | \
1205                                           BXVD_P_CREATE_PROTOCOLS_MASK( BAVC_VideoCompressionStd_eMVC))
1206
1207#define BXVD_P_REVK_DECODE_PROTOCOLS_MASK (BXVD_P_REVJ_DECODE_PROTOCOLS_MASK | \
1208                                           BXVD_P_CREATE_PROTOCOLS_MASK( BAVC_VideoCompressionStd_eSVC))
1209
1210#define BXVD_P_REVL_DECODE_PROTOCOLS_MASK (BXVD_P_REVK_DECODE_PROTOCOLS_MASK | \
1211                                           BXVD_P_CREATE_PROTOCOLS_MASK( BAVC_VideoCompressionStd_eVP7) | \
1212                                           BXVD_P_CREATE_PROTOCOLS_MASK( BAVC_VideoCompressionStd_eVP8) | \
1213                                           BXVD_P_CREATE_PROTOCOLS_MASK( BAVC_VideoCompressionStd_eRV9) | \
1214                                           BXVD_P_CREATE_PROTOCOLS_MASK( BAVC_VideoCompressionStd_eSPARK))
1215
1216#define BXVD_P_REVM_DECODE_PROTOCOLS_MASK (BXVD_P_REVL_DECODE_PROTOCOLS_MASK | \
1217                                           BXVD_P_CREATE_PROTOCOLS_MASK( BAVC_VideoCompressionStd_eVP6))
1218
1219
1220
1221/***********************************************************************
1222 *  Private Enums
1223 ***********************************************************************/
1224
1225/* Private state to indicate decode state */
1226typedef enum BXVD_P_DecoderState
1227{
1228  BXVD_P_DecoderState_eNotActive=0,    /* Initial state */
1229  BXVD_P_DecoderState_eActive          /* StartDecode executed */
1230} BXVD_P_DecoderState;
1231
1232typedef enum BXVD_P_HandleType
1233{
1234   BXVD_P_HandleType_XvdMain,
1235   BXVD_P_HandleType_XvdChannel,
1236   BXVD_P_HandleType_Userdata,
1237   BXVD_P_HandleType_Invalid
1238} BXVD_P_HandleType;
1239
1240typedef enum BXVD_P_MemCfgMode
1241{
1242   BXVD_P_MemCfgMode_eUMA,
1243   BXVD_P_MemCfgMode_eNONUMA,
1244   BXVD_P_MemCfgMode_eUNKNOWN
1245} BXVD_P_MemCfgMode;
1246
1247typedef enum BXVD_P_PowerState
1248{
1249   BXVD_P_PowerState_eOn,
1250   BXVD_P_PowerState_eClkOff,
1251   BXVD_P_PowerState_ePwrOff
1252} BXVD_P_PowerState;
1253
1254#define  BXVD_P_OUTER_WATCHDOG 0
1255
1256/* Interrupt related definitions */
1257#define BXVD_P_INTR_CLEAR   0xffffffff
1258#define BXVD_P_INTR_OL_MASK 0x40000000
1259
1260/* AVD PFRI Data Width related definitions */
1261#define BXVD_P_PFRI_DATA_DDR2 0
1262#define BXVD_P_PFRI_DATA_DDR3 1
1263
1264typedef enum BXVD_P_PFRI_Data_Width
1265{
1266   BXVD_P_PFRI_Data_Width_e16Bit,
1267   BXVD_P_PFRI_Data_Width_e32Bit,
1268   BXVD_P_PFRI_Data_Width_e64Bit
1269} BXVD_P_PFRI_Data_Width ;
1270
1271/* AVD PCache Mode related definitions */
1272typedef enum BXVD_P_PCache_XGran
1273{
1274   BXVD_P_PCache_XGran_e8Bytes,
1275   BXVD_P_PCache_XGran_e16Bytes,
1276   BXVD_P_PCache_XGran_e32Bytes
1277} BXVD_P_PCache_XGran;
1278
1279typedef enum BXVD_P_PCache_YGran
1280{
1281   BXVD_P_PCache_YGran_e1Line,
1282   BXVD_P_PCache_YGran_e2Lines,
1283   BXVD_P_PCache_YGran_e4Lines
1284} BXVD_P_PCache_YGran;
1285
1286/* Relocation related definitions */
1287#define BXVD_P_RELF_DEFAULT_CODE_BASE 0x00000000
1288
1289/* Pre rev K core has a memory access limit of 768 mb */
1290#define BXVD_P_ARC300_RAM_LIMIT 0x30000000
1291
1292/* General definitions */
1293#define BXVD_P_MEM_ZERO 0x00000000
1294
1295/* If the firmware does not have a time code, or the protocol is not
1296   MPEG, the internal time code will be set thus */
1297#define BXVD_P_INVALID_TIMECODE 0xFFFFFFFF
1298
1299/*
1300** Passed as a flag in the "channel mode" when
1301** calling BXVD_P_HostCmdSendDecChannelOpen().
1302** For best peformance, the bit should be set when DQT is enabled.
1303**
1304**      if bit[3] == 0 then it is legacy restricted mode
1305**      if bit[3] == 1 then it is new all capable AVD mode.
1306*/
1307#define BXVD_P_AVD_NO_CONSTRAINTS 0x8
1308
1309
1310#if BXVD_P_SVD_PRESENT
1311#define BXVD_P_ARCS_PER_DECODER 3
1312#else
1313#define BXVD_P_ARCS_PER_DECODER 2
1314#endif
1315
1316typedef struct BXVD_P_CallBackRequests
1317{
1318  bool bPauseUntoPTS;
1319  bool bDisplayUntoPTS;
1320  bool bPTS1Match;
1321  bool bPTS2Match;
1322  bool bPresentationStart;
1323  bool bPresentationStop;
1324  bool bMarkerSeen;
1325
1326/*PR28082*/
1327  bool bMarker;
1328  bool bPPBReceived;
1329} BXVD_P_CallBackRequests;
1330
1331/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
1332
1333/***********************************************************************
1334 *  Private Structures
1335 ***********************************************************************/
1336/* Contains XVD interrupt callbacks and user params */
1337typedef struct BXVD_P_InterruptCallbackInfo
1338{
1339  BXVD_IntCallbackFunc BXVD_P_pAppIntCallbackPtr ;
1340
1341  void *pParm1;
1342  int  parm2;
1343} BXVD_P_InterruptCallbackInfo ;
1344
1345typedef struct BXVD_P_FWMemConfig
1346{
1347   uint32_t general_memory_size;
1348   uint32_t cabac_bin_size;
1349   uint32_t video_block_size;
1350   uint32_t video_block_count;
1351} BXVD_P_FWMemConfig;
1352
1353typedef struct BXVD_P_DecodeFWMemSize
1354{
1355   uint32_t  uiFWContextSize;
1356   uint32_t  uiFWCabacSize;
1357   uint32_t  uiFWPicBlockSize;
1358   uint32_t  uiFWPicBlockCount;
1359   uint32_t  uiFWCabacWorklistSize;
1360   uint32_t  uiFWDirectModeSize;
1361   uint32_t  uiFWInnerLoopWorklistSize;
1362   uint32_t  uiFWInterLayerPicSize;
1363   uint32_t  uiFWInterLayerMVSize;
1364} BXVD_P_DecodeFWMemSize;
1365
1366typedef struct BXVD_P_DecodeFWBaseAddrs
1367{
1368   uint32_t  uiFWContextBase;           /* FW Context memory base address */
1369   uint32_t  uiFWCabacBase;             /* FW Cabac memory base address */
1370   uint32_t  uiFWPicBlockBase;          /* FW Picture Block Base */
1371   uint32_t  uiFWCabacWorklistBase;     /* FW Cabac worklist memory base address */
1372   uint32_t  uiFWInnerLoopWorklistBase; /* FW Inner loop worklist memory base address */
1373   uint32_t  uiFWDirectModeBase;        /* FW Direct Mode memory base address */
1374   uint32_t  uiFWInterLayerPicBase;     /* FW Inter Layer Pic memory base address */
1375   uint32_t  uiFWInterLayerMVBase;      /* FW Inter Layer Motion Vector memory base address */
1376} BXVD_P_DecodeFWBaseAddrs;
1377
1378/* Internal XVD context data */
1379typedef struct BXVD_P_Context
1380{
1381  /* Interface handles */
1382  BCHP_Handle hChip;
1383  BREG_Handle hReg;
1384
1385  BMEM_Handle hSystemHeap; /* General Heap used to allocate structures */
1386  BMEM_Handle hCodeHeap; /* Firmware Code Heap used to load firmware */
1387  BMEM_Handle hPictureHeap; /* Picture Buffer Heap used by firmware to store decoded pictures */
1388  BMEM_Handle hCabacHeap; /* Cabac Buffer Heap used by firmware as CABAC bin buffer */
1389
1390  BINT_Handle hInterrupt;
1391
1392  /* XVD default settings */
1393  BXVD_Settings stSettings;
1394
1395  /* Contexts for AVC decoders */
1396  uint32_t uDecoderInstance;
1397  BXVD_DecoderContext stDecoderContext;
1398
1399  /* Platform-specific fields defined in platform header */
1400  BXVD_P_CONTEXT_PLATFORM
1401
1402  /* FW revision information */
1403  BXVD_RevisionInfo sRevisionInfo;
1404
1405  /* For Crc */
1406  unsigned long        ulDebugDeliveryQueueAddr;
1407  unsigned long        ulDebugReleaseQueueAddr;
1408
1409  /* Channel information including count and open handles */
1410  uint16_t             uiOpenChannels;
1411  BXVD_ChannelHandle   *ahChannel;
1412
1413  /* Suballocated FW memory heaps */
1414  BXVD_P_MemoryHandle  SubGenMem;
1415  BXVD_P_MemoryHandle  SubSecureMem;
1416  BXVD_P_MemoryHandle  SubPicMem;
1417
1418  /* Pointers to FW/XVD code memory where the FW is loaded */
1419  uint32_t             uiFWMemVirtAddr;
1420  uint32_t             uiFWMemPhyAddr;
1421  uint32_t             uiFWMemSize;
1422  uint8_t              bFWMemAllocated;
1423  BXVD_AVDBootMode     eAVDBootMode;
1424
1425  /* Some platforms determine AVD core clock freq at runtime */
1426  uint32_t             uiAVDCoreFreq;
1427
1428  /* Instruction base addresses for outer and inner loop */
1429  uint32_t             uiOuterLoopInstructionBase;
1430  uint32_t             uiInnerLoopInstructionBase;
1431
1432  /* End of code addresses for outer and inner loop */
1433  uint32_t             uiOuterLoopEOC;
1434  uint32_t             uiInnerLoopEOC;
1435#if BXVD_P_SVD_PRESENT
1436  /* Base Layer Instruction base and end of code */
1437  uint32_t             uiBaseInstructionBase;
1438  uint32_t             uiBaseEOC;
1439#endif
1440
1441  /* Outer loop communication vector. This is the same as uiOuterLoopEOC */
1442  uint32_t             uiCmdBufferVector;
1443
1444  /* Pointers to FW/XVD shared memory for Picture buffers and FW internal data structs */
1445  uint32_t             uiFWContextPhyAddr;
1446  uint32_t             uiFWGenMemVirtAddr;
1447  uint32_t             uiFWGenMemPhyAddr;
1448  uint32_t             uiFWGenMemSize;
1449
1450  /* Pointers to Decoder debug log buffers */
1451  uint32_t             uiDecoderDbgBufVirtAddr;
1452  uint32_t             uiDecoderDbgBufPhyAddr;
1453
1454  /* Size and count of FW Picture buffers */
1455  uint32_t             uiFWPicMemVirtAddr;
1456  uint32_t             uiFWPicMemPhyAddr;
1457  uint32_t             uiFWPicMemSize;
1458
1459  /* Pointers to FW/XVD Cabac Bin memory */
1460  uint32_t             uiFWCabacMemVirtAddr;
1461  uint32_t             uiFWCabacMemPhyAddr;
1462  uint32_t             uiFWCabacMemSize;
1463
1464  /* Register offset and mask values */
1465  uint32_t             uiXPT_PCROffset_STC;
1466
1467  uint32_t             uiDecode_SDStripeWidthRegVal;
1468  uint32_t             uiDecode_IPShimPfriRegVal;
1469  uint32_t             uiDecode_StripeWidth;
1470  uint32_t             uiDecode_StripeMultiple;
1471  uint32_t             uiDecode_PFRIDataRegVal;
1472  uint32_t             uiAVD_PCacheRegVal;
1473  uint32_t             uiChip_ProductRevision;
1474
1475  /* PR18233: Mosaic mode support */
1476  BAVC_XVD_Picture     *pVDCPictureBuffers;
1477  BAVC_XVD_Picture     *pPictureListVec0;
1478  BAVC_XVD_Picture     *pPictureListVec1;
1479
1480  /* Linked Decoder support */
1481  BXVD_Handle            hXvd_Secondary;
1482  BXVD_DisplayInterrupt  Secondary_eDisplayInterrupt;
1483
1484  /* Still picture buffer support */
1485  unsigned long  watchdog_timer_addr;
1486  unsigned long  watchdog_write_value;
1487
1488#if BXVD_P_FW_HIM_API
1489  uint32_t uiDisplayInfo0_Offset;
1490  uint32_t uiDisplayInfo1_Offset;
1491#endif
1492
1493  BXVD_P_DisplayInfo  *pDisplayInfo0;
1494  BXVD_P_DisplayInfo  *pDisplayInfo1;
1495
1496  BXVD_P_InterruptCallbackInfo stDeviceInterruptCallbackInfo[BXVD_DeviceInterrupt_eMaxInterrupts] ;
1497
1498  BXVD_ChannelHandle   hStillChannel;
1499  bool bStillChannelAllocated;
1500  uint32_t uiStillChannelNum;
1501  bool bStillPictureCompatibilityMode;
1502  bool bStillHDCapable;
1503
1504  uint32_t uiSupportedProtocolsMask;
1505
1506  bool bSVCCapable;
1507  bool bRV9Capable;
1508
1509  bool bAllocDecodeModeList;
1510
1511  bool bHibernate;
1512  BXVD_P_PowerState PowerStateCurrent;
1513  BXVD_P_PowerState PowerStateSaved;
1514
1515  BXVD_P_FWMemConfig stFWMemCfg[BXVD_DecodeMode_eMaxModes];
1516
1517  BXVD_StatusHandle hXvdStatus;
1518
1519  BXVD_P_HandleType eHandleType;
1520
1521  BTMR_TimerHandle hTimer;
1522
1523  uint32_t auiDisplayInterruptCount[BXVD_DisplayInterrupt_eMax];
1524  uint32_t auiActiveDecodes[BXVD_ChannelMode_eMax][BXVD_DisplayInterrupt_eMax];
1525
1526  BXDM_DisplayInterruptHandler_Handle hXdmDih[BXVD_DisplayInterrupt_eMax];
1527  BXDM_DisplayInterruptHandler_Handle hAppXdmDih[BXVD_DisplayInterrupt_eMax];
1528  BXDM_DisplayInterruptHandler_Handle hLinkedDecoderXdmDih;
1529  BXVD_DisplayInterruptProvider_P_ChannelHandle hXvdDipCh[BXVD_DisplayInterrupt_eMax];
1530
1531#if BXVD_P_AVD_ARC600
1532  BAFL_FirmwareInfo astFWBootInfo[BXVD_P_ARCS_PER_DECODER];
1533#endif
1534
1535  /* FW command and response buffers */
1536  BXVD_FW_Cmd FWCmd;
1537  BXVD_FW_Rsp FWRsp;
1538
1539} BXVD_P_Context;
1540
1541/* The buffer configuration for the channel */
1542typedef struct BXVD_P_BufferConfig
1543{
1544  BXVD_P_DMS2DMInfo AVD_DMS2PI_Buffer ;
1545  BXVD_P_DM2DMSInfo *pAVD_PI2DMS_Buffer ;
1546
1547  uint16_t ui32_HardwareNmbx ;
1548  uint16_t ui32_HardwareNmby ;
1549
1550} BXVD_P_BufferConfig;
1551
1552struct BXVD_P_IntCallback {
1553  BXVD_IntCallbackFunc callback;
1554  void *pParm1;
1555  int   parm2;
1556};
1557
1558
1559/* Circular queue */
1560#define BXVD_P_USERDATA_QUEUE_START 0
1561#define BXVD_P_USERDATA_QUEUE_MAX   32
1562
1563#define BXVD_P_USERDATA_ITEM_SIZE   2048
1564
1565/*
1566 * uiDecodePictureId added per Jira SW7425-1780
1567 */
1568typedef struct _QUEUE_MGR_
1569{
1570      int ulReadPtr;
1571      int ulWritePtr;
1572      int ulNextPtr;
1573      int ulQueueDepth;
1574      struct data
1575      {
1576            int           protocol;
1577            unsigned long ulFlags;
1578            unsigned long ulPulldown;
1579            unsigned long ulPTS;
1580            unsigned char *uUserData;
1581            uint32_t uiDecodePictureId;
1582      } *queue_data;
1583} QUEUE_MGR;
1584
1585
1586/* The internal structure for the User Data handle */
1587typedef struct BXVD_P_UserDataContext
1588{
1589      BXVD_ChannelHandle     hXvdCh;
1590      BINT_CallbackHandle    hCbUserdata;
1591      BXVD_Userdata_Settings sUserdataSettings;
1592      void                   *pBfr; /* user data buffer */
1593      bool                   bCallbackEnabled;
1594      /* Userdata callback registered */
1595      BINT_CallbackFunc      fUserdataCallback_isr;
1596      void                   *pParm1;
1597      int                    parm2;
1598      QUEUE_MGR              queue;
1599      BXVD_P_HandleType      eHandleType;
1600      BERR_Code              errForwardError;
1601} BXVD_P_UserDataContext ;
1602
1603
1604/*
1605 * Called by DM when valid user data is available in the PPB.
1606 */
1607BERR_Code BXVD_P_Userdata_EnqueueDataPointer(BXVD_ChannelHandle hXvdCh,
1608                                             int           protocol,
1609                                             unsigned long p_UserData,
1610                                             unsigned long ulFlags,
1611                                             unsigned long ulPulldown,
1612                                             unsigned long ulPTS,
1613                                             uint32_t uiSerialNumber);
1614
1615
1616#if BXVD_P_FW_HIM_API
1617
1618typedef struct BXVD_P_HIM_Offsets
1619{
1620   unsigned long ulByteOffset;      /* byte offset into HIM, returned by AVD. */
1621   unsigned long ulWordOffset;      /* ulByteOffset divided by 4, XVD always read/writes a word. */
1622   unsigned long ulByteShift;       /* used to shift the data to the appropriate byte. */
1623   unsigned long ulByteMask;        /* mask for the byte of interest. */
1624   unsigned long ulInverseMask;     /* inverse of the ulByteMask, to assist with read-modify-write operations. */
1625   unsigned long ulBytesPerValue;   /* Indicates if this a 1, 2, 3, or 4 byte value. */
1626
1627} BXVD_P_HIM_Offsets;
1628
1629/* Contains the addresses and offsets needed to access the AVD
1630 * Delivery and Release queues.
1631 */
1632typedef struct BXVD_P_AVD_Queue
1633{
1634   unsigned long        ulQueueOffset;
1635   BXVD_P_HIM_Offsets   stReadIndex;
1636   BXVD_P_HIM_Offsets   stWriteIndex;
1637   BXVD_P_HIM_Offsets   stShadowWriteIndex;     /* For the release queue. */
1638
1639} BXVD_P_AVD_Queue;
1640
1641#endif /* #if BXVD_P_FW_HIM_API */
1642
1643/* The internal structure for the Channel handle */
1644typedef struct BXVD_P_Channel
1645{
1646  uint32_t                 ulChannelNum;      /* channel number */
1647  bool                     bPreserveState;    /* Do not reset PVR context */
1648  bool                     bPreserveCounters; /* Do not reset decoder counters */
1649
1650  /* FW info */
1651  BXVD_P_DecodeFWMemSize   stDecodeFWMemSize;   /* FW Memory sizes allocated */ 
1652  BXVD_P_DecodeFWBaseAddrs stDecodeFWBaseAddrs; /* FW Memory base addresses */
1653
1654#if BXVD_P_FW_HIM_API
1655  BXVD_P_AVD_Queue         stDeliveryQueue;     /* data associated with the AVD delivery queue */
1656  BXVD_P_AVD_Queue         stReleaseQueue;      /* data associated with the AVD release queue */
1657  BXVD_P_HIM_Offsets       stDropCountIndex;    /* Host Interface Memory offsets for the drop count. */
1658  BXVD_P_HIM_Offsets       stStatusBlockIndex;  /* Host Interface Memory offsets for the AVD status word(s) */
1659#else
1660  unsigned long            ulPicBuf;          /* Picture delivery queue addr */
1661  unsigned long            ulPicRelBuf;       /* Picture release queue addr */
1662  unsigned long            ulPicInfoBuf;      /* unused? */
1663  unsigned long            ulPicInfoRelBuf;   /* offset to Release Queue shadow write offset and drop count. */
1664#endif
1665
1666  unsigned long            ulUserDataRelBuf;
1667
1668  unsigned long            ulAvdStatusBlock;  /* AVD Status block address */
1669
1670  BXVD_P_UserDataContext   *pUserData;
1671  BXVD_P_DecoderState      eDecoderState;
1672  BXVD_P_Context           *pXvd;             /* main handle */
1673  BXVD_DecodeSettings      sDecodeSettings;
1674  unsigned long            ulXptCDB_Read;     /* Current Rave CDB_Read register */
1675  unsigned long            aulXptCDB_Read_Extended[BXVD_NUM_EXT_RAVE_CONTEXT];     /* Current Extended Rave CDB_Read register */
1676  BXVD_ChannelSettings     sChSettings;
1677  BAVC_VideoCompressionStd asVideoCmprStdList[BAVC_VideoCompressionStd_eMax];
1678
1679  BXVD_DisplayInterrupt    eDisplayInterrupt;   /* The FW Display Device interrupt */
1680
1681  /* Structure to keep all the MVD interrupt callbacks and its params */
1682  BXVD_P_InterruptCallbackInfo stInterruptCallbackInfo[BXVD_Interrupt_eMaxInterrupts] ;
1683
1684  bool bStillPictureToRelease; /* True if there's a pending still picture to release */
1685  uint32_t uiStillDisplayElementOffset; /* Last still picture offset (to be released) */
1686  bool bDecoderChannelOpened; /* True if decoder channel has been opened */
1687
1688  BMEM_Handle hSystemHeap; /* General Heap used to allocate structures for this channel */
1689  BMEM_Handle hPictureHeap; /* Picture Buffer Heap used by firmware to store decoded pictures for this channel */
1690  BMEM_Handle hCabacHeap; /* Cabac Buffer Heap used by firmware as CABAC bin buffer for this channel */
1691
1692  BXVD_P_HandleType eHandleType;
1693
1694   /* TODO: Move back to stChannelState? */
1695  BXVD_P_CallBackRequests  stCallbackReq;
1696  BXVD_P_BufferConfig      stChBufferConfig ;
1697  BXDM_PictureProvider_ChannelChangeSettings stSavedChannelChangeSettings;
1698  BXVD_SkipMode eCurrentSkipMode;
1699
1700  BXDM_PictureProvider_Handle hPictureProvider;
1701
1702  BXVD_P_Decoder_Context stDecoderContext;
1703
1704  BXDM_Picture_Rate stSavedPlaybackRate;
1705  bool bSavedPlaybackRateValid;
1706
1707  /* SW7400-2870: paused by BXVD_PVR_EnablePause.  As opposed to being paused by
1708   * calling BXVD_SetPlaybackRate(_isr) with a numerator of '0'.
1709   */
1710  bool bPauseActive;
1711
1712  bool bProgressiveStream_7411;
1713  BXVD_PictureParameterInfo stPictureParameterInfo;
1714
1715  uint32_t uiPPBSerialNumber;
1716  BXVD_StillContentInterpolationMode eSavedSPIM;
1717} BXVD_P_Channel;
1718
1719/* This may be unnecessary and removed later */
1720typedef struct
1721{
1722  unsigned long next;
1723  unsigned long ulType;
1724  unsigned long ulSize;
1725} BXVD_P_UserData;
1726
1727typedef enum BXVD_P_VideoAtomIndex
1728{
1729   BXVD_P_VideoAtomIndex_eA = 0,
1730   BXVD_P_VideoAtomIndex_eB,
1731   BXVD_P_VideoAtomIndex_eC,
1732   BXVD_P_VideoAtomIndex_eD,
1733   BXVD_P_VideoAtomIndex_eE,
1734   BXVD_P_VideoAtomIndex_eF,
1735   BXVD_P_VideoAtomIndex_eG,
1736   BXVD_P_VideoAtomIndex_eH,
1737   BXVD_P_VideoAtomIndex_eI,
1738   BXVD_P_VideoAtomIndex_eAT,
1739
1740   /* Add more enums ABOVE this line */
1741   BXVD_P_VideoAtomIndex_eMax
1742} BXVD_P_VideoAtomIndex;
1743
1744typedef struct BXVD_P_FWMemConfig_V2
1745{
1746      unsigned long general_memory_size;
1747      unsigned long inner_loop_wl_size;
1748      unsigned long direct_mode_size;
1749      unsigned long cabac_bin_size;
1750      unsigned long cabac_wl_size;
1751      BXVD_P_VideoAtomIndex video_block_size_index;
1752      unsigned long video_block_count;
1753} BXVD_P_FWMemConfig_V2;
1754
1755typedef struct BXVD_P_FWMemConfig_SVC
1756{
1757      unsigned long context_memory_size;
1758      unsigned long inner_loop_wl_size;
1759      unsigned long direct_mode_size;
1760      unsigned long inter_layer_video_size_index;
1761      unsigned long inter_layer_mv_size;
1762      unsigned long cabac_bin_size;
1763      unsigned long cabac_wl_size;
1764      BXVD_P_VideoAtomIndex video_block_size_index;
1765      unsigned long video_block_count;
1766} BXVD_P_FWMemConfig_SVC;
1767
1768/***********************************************************************
1769 * Private functions
1770 ***********************************************************************/
1771
1772BERR_Code BXVD_P_SetupFWSubHeap(BXVD_Handle hXvd);
1773BERR_Code BXVD_P_TeardownFWSubHeap(BXVD_Handle hXvd);
1774
1775BERR_Code BXVD_P_GetDecodeFWMemSize
1776(
1777 BXVD_Handle hXvd,
1778 BXVD_DecodeResolution eDecodeResolution,
1779 BAVC_VideoCompressionStd aeVideoCmprStd[],
1780 uint32_t   uiVideoCmprCount,
1781 const BXVD_ChannelSettings *pChSettings,
1782 BXVD_P_DecodeFWMemSize       *pstDecodeFWMemSize
1783);
1784
1785BERR_Code BXVD_P_GetStillDecodeFWMemSize
1786(
1787 BXVD_Handle hXvd,
1788 BXVD_DecodeResolution eDecodeResolution,
1789 BAVC_VideoCompressionStd aeVideoCmprStd[],
1790 uint32_t   uiVideoCmprCount,
1791 BXVD_P_DecodeFWMemSize       *pstDecodeFWMemSize
1792);
1793
1794BERR_Code BXVD_P_AllocateFWMem
1795(
1796  BXVD_Handle hXvd,
1797  BXVD_ChannelHandle hXvdCh,
1798  BXVD_P_DecodeFWMemSize *pstDecodeFWMemSize,
1799  BXVD_P_DecodeFWBaseAddrs *pstDecodeFWBaseAddrs
1800);
1801
1802
1803BERR_Code BXVD_P_FreeFWMem
1804(
1805  BXVD_Handle hXvd,
1806  BXVD_ChannelHandle hXvdCh,
1807  uint32_t uiFWContextBase,
1808  uint32_t uiFWCabacBase,
1809  uint32_t uiFWPicBlockBase,
1810  uint32_t uiFWCabacWorklistBase,
1811  uint32_t uiFWInterLayerPicBase
1812);
1813
1814void BXVD_P_ValidateHeaps
1815(
1816  BXVD_Handle        hXvd,
1817  BXVD_P_MemCfgMode  eMemCfgMode
1818);
1819
1820BERR_Code BXVD_P_StillPictureEnabled(BXVD_Handle hXvd, bool *pEnableState, BXVD_DecodeMode *pSPDecodeMode);
1821
1822/***************************************************************************
1823Summary:
1824    Releases the indicated PPB via FW.
1825
1826Description:
1827    This API releases the PPB indicated in the ppb argument.
1828
1829Returns:
1830    BERR_SUCCESS
1831
1832See Also:
1833    None
1834
1835****************************************************************************/
1836BERR_Code BXVD_P_ReleasePPB(BXVD_Handle hXvd,   uint32_t ppb);
1837
1838BERR_Code BXVD_P_ReleasePPB_isr(BXVD_Handle hXvd,       uint32_t ppb);
1839
1840
1841/***************************************************************************
1842Name:
1843        BXVD_P_ParseDecodeMode
1844
1845Description:
1846    This routine parses the list of decoder modes looking for the mode that requires the largest picture buffers.
1847
1848Returns:
1849    None:
1850
1851See Also:
1852    None
1853
1854****************************************************************************/
1855
1856BERR_Code BXVD_P_ParseDecodeMode
1857(
1858  BXVD_Handle hXvd,
1859  BXVD_DecodeMode *pDecodeModeList,  /* List of decoder modes */
1860  BXVD_DecodeMode *eDecodeMode     /* Enum of mode in provided list that requires the largest buffer */
1861);
1862
1863BERR_Code BXVD_P_Boot
1864(
1865  BXVD_Handle hXvd
1866);
1867
1868BERR_Code BXVD_P_SetupStillPictureCompatibilityMode
1869(
1870   BXVD_Handle hXvd
1871);
1872
1873BERR_Code BXVD_P_TeardownStillPictureCompatibilityMode
1874(
1875   BXVD_Handle hXvd
1876);
1877
1878BERR_Code BXVD_P_InitializeFWMemConfigCompatibilityModeTable
1879(
1880   BXVD_Handle hXvd
1881);
1882
1883/* AVD DEVICE COMMANDS */
1884BERR_Code BXVD_P_HostCmdSendInit
1885(
1886 BXVD_Handle  hXvd,                /* XVD context */
1887 uint32_t     uDecoderInstance,    /* AVC instance */
1888 uint32_t     eRaveEndianess       /* Endianess of data in Rave CDB/ITB */
1889);
1890
1891BERR_Code BXVD_P_HostCmdSendConfig
1892(
1893 BXVD_Handle  hXvd,              /* XVD context */
1894 uint32_t     uiVecIndex,        /* Display device index */
1895 uint32_t     uiInterruptMask    /* RUL done mask for specified display */
1896);
1897
1898BERR_Code BXVD_P_HostCmdSendDecChannelOpen
1899(
1900 BXVD_Handle         hXvd,
1901 BXVD_ChannelHandle  hXvdCh,
1902 bool                bStillPictureMode,
1903 uint32_t            uiMaxResolution,
1904 BXVD_P_DecodeFWMemSize  *pstDecodeFWMemSize,
1905 BXVD_P_DecodeFWBaseAddrs *pstDecodeFWBaseAddrs
1906);
1907
1908BERR_Code BXVD_P_HostCmdSendDecChannelClose
1909(
1910 BXVD_Handle         hXvd,
1911 BXVD_ChannelHandle  hXvdCh
1912);
1913
1914BERR_Code BXVD_P_HostCmdSendDecChannelStart
1915(
1916  BXVD_Handle         hXvd,
1917  uint32_t            ulChannelNumber,
1918  uint32_t            eProtocol,
1919  uint32_t            eChannelMode,
1920  uint32_t            ulRaveContextBase,
1921  uint32_t            aulRaveContextBaseExt[],
1922  uint32_t            ulVecIndex
1923);
1924
1925
1926BERR_Code BXVD_P_HostCmdSendDecChannelStop
1927(
1928   BXVD_Handle        hXvd,
1929   uint32_t           ulChannelNum
1930);
1931
1932
1933/***************************************************************************
1934Summary:
1935    Set the skip picture mode.
1936
1937Description:
1938    This API instructs the FW to skip I, IP or no frames
1939
1940Returns:
1941    BERR_SUCCESS
1942
1943See Also:
1944    None
1945
1946****************************************************************************/
1947BERR_Code BXVD_P_HostCmdSetSkipPictureMode
1948(
1949 BXVD_Handle    hXvd,
1950 uint32_t       ulChannelNum,
1951 BXVD_SkipMode  eSkipMode
1952);
1953
1954
1955/***************************************************************************
1956 *  Summary
1957 *
1958 *     BXVD_P_HostCmdDbgLogControl: Send debug log control command
1959 *
1960 *  Description
1961 *
1962 *     The decoders outer loop debug output can be logged to memory for XVD
1963 *     to read and pass to the application. This routines starts and stops
1964 *     the logging of the debug data to the log buffer.
1965 *
1966 ***************************************************************************/
1967BERR_Code BXVD_P_HostCmdDbgLogControl
1968(
1969   BXVD_Handle    hXvd,
1970   bool           logStart
1971);
1972
1973/***************************************************************************
1974 *  Summary
1975 *
1976 *     BXVD_P_HostCmdDbgLogCommand: Send debug command
1977 *
1978 *  Description
1979 *
1980 *     The decoders outer loop will process debug command, the output for
1981 *     the command is written to the debug log buffer. This routine sends
1982 *     the outer loop the debug command string.
1983 *
1984 ***************************************************************************/
1985BERR_Code BXVD_P_HostCmdDbgLogCommand
1986(
1987   BXVD_Handle    hXvd,
1988   char           *pCommand
1989);
1990
1991BERR_Code BXVD_P_InitChannel(BXVD_ChannelHandle  hXvdCh);
1992
1993BERR_Code BXVD_P_DestroyInterrupts(BXVD_Handle hXvd);
1994
1995void BXVD_P_FreeXVDContext(BXVD_Handle hXvd);
1996
1997#if (BXVD_P_POWER_MANAGEMENT)
1998
1999void BXVD_P_GetHibernateState(BXVD_Handle hXvd,
2000                              bool *bHibernateState);
2001
2002void BXVD_P_SetHibernateState(BXVD_Handle hXvd,
2003                              bool bHibernateState);
2004
2005#endif
2006
2007
2008bool BXVD_P_IsDecodeProtocolSupported(BXVD_Handle               hXvd,
2009                                      BAVC_VideoCompressionStd  eVideoCmprStd);
2010
2011extern const uint32_t BXVD_P_StripeWidthLUT[];
2012
2013#ifdef __cplusplus
2014}
2015#endif
2016
2017#endif /* BXVD_PRIV_H__ */
2018
2019/* End of file. */
Note: See TracBrowser for help on using the repository browser.