source: svn/newcon3bcm2_21bu/magnum/portinginterface/xvd/7552/bxvd_vdec_api.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: 13.5 KB
Line 
1/***************************************************************************
2 *     Copyright (c) 2004,2005 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 ***************************************************************************
11 *  Video Decoder API
12 ***************************************************************************/
13
14/* vdec_api.h
15 * AVD API
16 */
17
18#ifndef  __INC_BXVD_VDEC_API_H__
19#define  __INC_BXVD_VDEC_API_H__
20
21#include "bxvd_platform.h"
22
23#define BXVD_P_MAX_HST_CMDQ_SIZE       (64)
24
25#define BXVD_P_DBGLOG_RD_PTR           (0)
26#define BXVD_P_DBGLOG_WR_PTR           (4)
27#define BXVD_P_DBGLOG_BUFFER_OVERFLOW  (0x80000000)
28#define BXVD_P_DBGLOG_ITEM_SIZE        (4)
29#define BXVD_P_DBGLOG_INITIAL_INDEX    (2)
30
31/*
32Summary:
33This is the basic format of all command issued to the AVC
34*/
35typedef struct
36{
37      uint32_t  cmd;
38      uint32_t  params[BXVD_P_MAX_HST_CMDQ_SIZE-2];
39} BXVD_Cmd, BXVD_Rsp;
40
41/* common response structure */
42typedef struct 
43{
44      unsigned long             ulCmd;
45      unsigned long             ulStatus;
46} BXVD_P_RspGeneric;
47
48
49/* Decoder context structure */
50typedef struct
51{
52      BINT_CallbackHandle pCbAVC_MBX_ISR;         /* AVC Mailbox L2 ISR */
53      BINT_CallbackHandle pCbAVC_PicDataRdy_ISR;  /* AVC Picture Data Ready Display 0 L2 ISR */
54      BINT_CallbackHandle pCbAVC_PicDataRdy1_ISR; /* AVC Picture Data Ready Display 1 L2 ISR */
55      BINT_CallbackHandle pCbAVC_StillPicRdy_ISR; /* AVC Still Picture L2 ISR */
56      BINT_CallbackHandle pCbAVC_Watchdog_ISR;    /* AVC Watchdog L2 ISR */
57      BINT_CallbackHandle pCbAVC_VICHReg_ISR;     /* AVC VICH Register L2 ISR */
58      BINT_CallbackHandle pCbAVC_VICHSCB_ISR;     /* AVC VICH SCB L2 ISR */
59      BINT_CallbackHandle pCbAVC_VICHInstrRd_ISR; /* AVC VICH instruction read L2 ISR */
60      BINT_CallbackHandle pCbAVC_VICHILInstrRd_ISR; /* AVC VICH IL instruction read L2 ISR */
61      BINT_CallbackHandle pCbAVC_VICHBLInstrRd_ISR; /* AVC VICH BL instruction read L2 ISR */
62      BINT_CallbackHandle pCbAVC_StereoSeqError_ISR; /* AVC StereoSeqError L2 ISR */
63      BKNI_EventHandle    hFWCmdDoneEvent;        /* FW Command handshake done event */
64      bool                bIfBusy;                /* TRUE if awaiting AVC response */
65      bool                bInitialized;           /* Initialized already? */
66      BXVD_Handle         hXvd;                   /* Pointer back to XVD command structure */
67      unsigned long       ulCmdBufferAddr;        /* addr of cmd buffer */
68      unsigned long       ulRspBufferAddr;        /* addr of rsp buffer */
69} BXVD_DecoderContext;
70
71#define  BXVD_CMD_INITIALIZE         (0x73760001)
72#define  BXVD_CMD_CHANNELOPEN        (0x73760002)
73#define  BXVD_CMD_CHANNELCLOSE       (0x73760003)
74#define  BXVD_CMD_CHANNELSPEED       (0x73760004)
75#define  BXVD_CMD_CHANNELSTART       (0x73760005)
76#define  BXVD_CMD_CHANNELSTOP        (0x73760006)
77#define  BXVD_CMD_CONFIG             (0x73760007)
78#define  BXVD_CMD_DBGLOGCONTROL      (0x73760008)
79#define  BXVD_CMD_DBGLOGCOMMAND      (0x73760009)
80
81#if BXVD_P_FW_HIM_API
82#define  BXVD_CMD_RESPONSE           (0x80000000)
83#else
84#define  BXVD_CMD_RESPONSE           (0x00000000)
85#endif
86
87/* Bit0 is used for picture interrupt. */
88#define  BXVD_INTERRUPT_PICTURE      (0x00000001)
89#define  BXVD_INTERRUPT_USER_DATA    (0x00000002)
90#define  BXVD_INTERRUPT_DISP_MGR     (0x00000004) /* used only for 7401 */
91#define  BXVD_INTERRUPT_STILL_PIC    (0x00000008) /* used only for 7401 */
92#define  BXVD_INTERRUPT_MAILBOX      (0x00000800) /* used only for 7401 */
93
94/* Error codes */
95enum
96{
97   BXVD_ErrUnknownCommand = -1,
98
99   BXVD_ErrInvalidChannelId = 1,
100   BXVD_ErrInvalidParameter,
101   BXVD_ErrInvalidMemoryConfig,
102   BXVD_ErrTestFailed,
103   BXVD_ErrUnableToRunTest,
104   BXVD_ErrNoChannels,
105   BXVD_ErrInsufficientResources,
106   BXVD_ErrInvalidPortNum,
107   BXVD_ErrChanInuse
108};
109
110/*------------------------------------------------------*
111 *    Initialize                                        *
112 *------------------------------------------------------*/
113
114#define VDEC_INIT_STRIPE_WIDTH_64       0       /* stripe_width=64 bytes  */
115#define VDEC_INIT_STRIPE_WIDTH_128      1       /* stripe_width=128 bytes */
116#define VDEC_INIT_STRIPE_WIDTH_256      2       /* stripe_width=256 bytes */
117
118typedef struct
119{
120   unsigned long  command; /* 0x73760001 */
121   unsigned long  cdb_little_endian;
122   unsigned long  stripe_width; /* 0=>64, 1=>128 */
123   unsigned long  stripe_height;
124   unsigned long  bvnf_intr_context_base;
125   unsigned long  host_L2_intr_set;
126   unsigned long  chip_prod_revision;
127   unsigned long  rave_context_reg_size;
128   unsigned long  rave_cx_hold_clr_status;
129   unsigned long  rave_packet_count;
130} BXVD_Cmd_Initialize;
131
132
133typedef struct
134{
135   unsigned long  command;
136   unsigned long  status;
137   unsigned long  sw_version;
138#if BXVD_P_FW_HIM_API
139   unsigned long  display_info_0_offset;
140   unsigned long  display_info_1_offset;
141#else
142   unsigned long  dms_delivery_address0;
143   unsigned long  dms_delivery_address1;
144#endif
145} BXVD_Rsp_Initialize;
146
147
148/*------------------------------------------------------*
149 *    ChannelOpen                                       *
150 *------------------------------------------------------*/
151
152typedef struct
153{
154   unsigned long  command; /* 0x73760002 */
155   unsigned long  channel_number;
156   unsigned long  max_resolution_enum;
157   unsigned long  still_picture_mode;
158   unsigned long  context_memory_base;
159   unsigned long  context_memory_size;
160   unsigned long  video_memory_base;
161   unsigned long  video_block_size;
162   unsigned long  video_block_count;
163   unsigned long  cabac_memory_base;
164   unsigned long  cabac_memory_size;
165   unsigned long  bl_mv_store_base;
166   unsigned long  bl_mv_store_size;
167   unsigned long  reserved;
168   unsigned long  cabac_wl_base;
169   unsigned long  cabac_wl_size;
170   unsigned long  direct_mode_storage_base;
171   unsigned long  direct_mode_storage_size;
172   unsigned long  il_wl_base;
173   unsigned long  il_wl_size;
174   unsigned long  bl_video_store_base;
175   unsigned long  bl_video_store_size;
176} BXVD_Cmd_ChannelOpen;
177
178
179#if BXVD_P_FW_HIM_API
180
181typedef struct
182{
183   unsigned long  command;
184   unsigned long  status;
185   unsigned long  picture_delivery_buffer;
186   unsigned long  picture_release_buffer;
187   unsigned long  drop_count_byte_offset;
188   unsigned long  avd_status_addr;
189   unsigned long  shadow_write_byte_offset;
190   unsigned long  delivery_q_read_byte_offset;
191   unsigned long  delivery_q_write_byte_offset;
192   unsigned long  release_q_read_byte_offset;
193   unsigned long  release_q_write_byte_offset;
194} BXVD_Rsp_ChannelOpen;
195
196#else
197
198typedef struct
199{
200   unsigned long  command;
201   unsigned long  status;
202   unsigned long  picture_delivery_buffer;
203   unsigned long  picture_release_buffer;
204   unsigned long  dm_return_address;
205   unsigned long  avd_status_address;
206} BXVD_Rsp_ChannelOpen;
207
208#endif /* ~BXVD_P_FW_HIM_API */
209
210
211/*------------------------------------------------------*
212 *    ChannelClose                                      *
213 *------------------------------------------------------*/
214
215typedef struct
216{
217   unsigned long  command; /* 0x73760003 */
218   unsigned long  channel_number;
219} BXVD_Cmd_ChannelClose;
220
221typedef struct
222{
223   unsigned long  command;
224   unsigned long  status;
225} BXVD_Rsp_ChannelClose;
226
227
228/*------------------------------------------------------*
229 *    ChannelSpeed                                      *
230 *------------------------------------------------------*/
231
232#define VDEC_SPEED_NORMAL       0       /* Normal playback                */
233#define VDEC_SPEED_REFONLY      1       /* Decode reference pictures only */
234#define VDEC_SPEED_IPONLY       2       /* Decode IP pictures only        */
235#define VDEC_SPEED_IONLY        3       /* Decode I pictures only         */
236
237typedef struct
238{
239   unsigned long  command; /* 0x73760004 */
240   unsigned long  channel_number;
241   unsigned long  speed;
242} BXVD_Cmd_ChannelSpeed;
243
244typedef struct
245{
246   unsigned long  command;
247   unsigned long  status;
248} BXVD_Rsp_ChannelSpeed;
249
250
251/*------------------------------------------------------*
252 *    ChannelStart                                      *
253 *------------------------------------------------------*/
254
255#define VDEC_CHANNEL_MODE_SPARSE_NORMAL               0x0000  /* Normal playback                      */
256#define VDEC_CHANNEL_MODE_SPARSE_NOSKIP               0x0001  /* Decode IPB pictures, no skip         */
257#define VDEC_CHANNEL_MODE_SPARSE_REFONLY              0x0002  /* Decode Ref pictures only             */
258#define VDEC_CHANNEL_MODE_SPARSE_IPONLY               0x0003  /* Decode IP pictures only              */
259#define VDEC_CHANNEL_MODE_SPARSE_IONLY                0x0004  /* Decode I pictures only               */
260#define VDEC_CHANNEL_MODE_NON_LEGACY                  0x0008  /* Non Legacy mode enable               */
261#define VDEC_CHANNEL_MODE_CLEAN_HITS                  0x0010  /* Clean HITS mode enable               */
262#define VDEC_CHANNEL_MODE_HITS                        0x0020  /* HITS mode enable                     */ 
263#define VDEC_CHANNEL_MODE_ZERO_DELAY                  0x0040  /* Zero delay output mode               */ 
264#define VDEC_CHANNEL_MODE_BLU_RAY_DECODE              0x0080  /* Blu-ray decode mode                  */ 
265#define VDEC_CHANNEL_MODE_TIMESTAMP_DISPLAY_ORDER     0x0100  /* Timestamp decode mode                */ 
266#define VDEC_CHANNEL_MODE_IFRAME_AS_RAP               0x0200  /* Treat I-Frame as RAP for AVC         */ 
267#define VDEC_CHANNEL_MODE_ENA_ERROR_CONCEALMENT       0x0400  /* Enable AVC error concealment         */ 
268#define VDEC_CHANNEL_MODE_ENA_IONLY_FIELD_OUTPUT      0x0800  /* Enable I Only Field output           */ 
269#define VDEC_CHANNEL_MODE_DISABLE_DPB_OUTPUT_DELAY    0x1000  /* Ignore the DPB output delay syntax   */
270#define VDEC_CHANNEL_MODE_ENA_SEI_FRAME_PACK          0x2000  /* Enable SEI Frame Packing             */
271#define VDEC_CHANNEL_MODE_DISABLE_P_SKIP              0x4000  /* Disable P-Skip mode                  */
272#define VDEC_CHANNEL_MODE_FILE_FORMAT                 0x8000  /* MKV File format hack h264            */
273#define VDEC_CHANNEL_MODE_3D_SVC_DECODE              0x10000  /* Enable 3D SVC mode                   */
274#define VDEC_CHANNEL_MODE_SW_COEF_AVC_DECODE         0x40000  /* Enable SW coefficient AVC decode     */
275#define VDEC_CHANNEL_MODE_IGN_NUM_REORDR_FRM_ZERO    0x80000  /* Ignore num reorder frame equal zero  */
276#define VDEC_CHANNEL_MODE_EARLY_PIC_DELIVERY        0x100000  /* Pre-mature picture delivery mode     */
277
278#define BXVD_P_VEC_UNUSED 0xff
279
280typedef struct
281{
282   unsigned long  command; /* 0x73760005 */
283   unsigned long  protocol;
284   unsigned long  channel_mode; /* See VDEC_CHANNEL_MODES defined above */
285   unsigned long  vec_index;
286   unsigned long  channel_number;
287
288   unsigned long  rave_ctxt_base;
289   unsigned long  rave_ctxt_base_ext;
290} BXVD_Cmd_ChannelStart;
291
292typedef struct
293{
294   unsigned long  command;
295   unsigned long  status;
296   unsigned long  frames_outstanding;
297} BXVD_Rsp_ChannelStart;
298
299
300/*------------------------------------------------------*
301 *    ChannelStop                                       *
302 *------------------------------------------------------*/
303
304typedef struct
305{
306   unsigned long  command; /* 0x73760006 */
307   unsigned long  channel_number;
308} BXVD_Cmd_ChannelStop;
309
310typedef struct
311{
312   unsigned long  command;
313   unsigned long  status;
314} BXVD_Rsp_ChannelStop;
315
316/*------------------------------------------------------*
317 *    ChannelConfig                                     *
318 *------------------------------------------------------*/
319
320typedef struct
321{
322   unsigned long  command; /* 0x73760007 */
323   unsigned long  vec_index;
324   unsigned long  interrupt_mask;
325} BXVD_Cmd_Config;
326
327typedef struct
328{
329   unsigned long  command;
330   unsigned long  status;
331} BXVD_Rsp_Config;
332
333/*---------------------------------------------*
334 *    Decoder Debug LOG Start/Stop Command     *
335 *---------------------------------------------*/
336
337typedef enum
338{
339   BXVD_DBGLOG_eSTOP = 0,
340   BXVD_DBGLOG_eSTART = 1
341} BXVD_DBG_LOG;
342
343typedef struct
344{
345   unsigned int  command;  /* 0x73760008 */
346   unsigned int  logStart;
347   unsigned int  dbglog_memory_base; /* 4 byte aligned memory address */
348   unsigned int  dbglog_memory_size; /* Size in bytes */
349
350} BXVD_Cmd_DbgLogControl;
351
352typedef struct
353{
354   unsigned int command;
355   unsigned int status;
356} BXVD_Rsp_DbgLogControl;
357
358
359/*---------------------------------------------*
360 *    Decoder DEBUG LOG Command                *
361 *---------------------------------------------*/
362
363typedef struct
364{
365   unsigned int  command;  /* 0x73760009 */
366   char logCmd[40];
367} BXVD_Cmd_DbgLogCommand;
368
369typedef struct
370{
371   unsigned int command;
372   unsigned int status;
373} BXVD_Rsp_DbgLogCommand;
374
375
376typedef union
377{
378      BXVD_Cmd cmd;
379      BXVD_Cmd_Initialize    init;
380      BXVD_Cmd_ChannelOpen   channelOpen;
381      BXVD_Cmd_ChannelClose  channelClose;
382      BXVD_Cmd_ChannelSpeed  channelSpeed;
383      BXVD_Cmd_ChannelStart  channelStart;
384      BXVD_Cmd_ChannelStop   channelStop;
385      BXVD_Cmd_Config        config;
386      BXVD_Cmd_DbgLogControl dbgLogControl;
387      BXVD_Cmd_DbgLogCommand dbgLogCommand;
388} BXVD_FW_Cmd;
389
390typedef union
391{
392      BXVD_Rsp rsp;
393      BXVD_Rsp_Initialize    init;
394      BXVD_Rsp_ChannelOpen   channelOpen;
395      BXVD_Rsp_ChannelClose  channelClose;
396      BXVD_Rsp_ChannelSpeed  channelSpeed;
397      BXVD_Rsp_ChannelStart  channelStart;
398      BXVD_Rsp_ChannelStop   channelStop;
399      BXVD_Rsp_Config        config;
400      BXVD_Rsp_DbgLogControl dbgLogControl;
401      BXVD_Rsp_DbgLogCommand dbgLogCommand;
402} BXVD_FW_Rsp;
403
404
405#endif /*__INC_BXVD_VDEC_API_H__ */
Note: See TracBrowser for help on using the repository browser.