1*53ee8cc1Swenshuai.xi //<MStar Software> 2*53ee8cc1Swenshuai.xi //****************************************************************************** 3*53ee8cc1Swenshuai.xi // MStar Software 4*53ee8cc1Swenshuai.xi // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved. 5*53ee8cc1Swenshuai.xi // All software, firmware and related documentation herein ("MStar Software") are 6*53ee8cc1Swenshuai.xi // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by 7*53ee8cc1Swenshuai.xi // law, including, but not limited to, copyright law and international treaties. 8*53ee8cc1Swenshuai.xi // Any use, modification, reproduction, retransmission, or republication of all 9*53ee8cc1Swenshuai.xi // or part of MStar Software is expressly prohibited, unless prior written 10*53ee8cc1Swenshuai.xi // permission has been granted by MStar. 11*53ee8cc1Swenshuai.xi // 12*53ee8cc1Swenshuai.xi // By accessing, browsing and/or using MStar Software, you acknowledge that you 13*53ee8cc1Swenshuai.xi // have read, understood, and agree, to be bound by below terms ("Terms") and to 14*53ee8cc1Swenshuai.xi // comply with all applicable laws and regulations: 15*53ee8cc1Swenshuai.xi // 16*53ee8cc1Swenshuai.xi // 1. MStar shall retain any and all right, ownership and interest to MStar 17*53ee8cc1Swenshuai.xi // Software and any modification/derivatives thereof. 18*53ee8cc1Swenshuai.xi // No right, ownership, or interest to MStar Software and any 19*53ee8cc1Swenshuai.xi // modification/derivatives thereof is transferred to you under Terms. 20*53ee8cc1Swenshuai.xi // 21*53ee8cc1Swenshuai.xi // 2. You understand that MStar Software might include, incorporate or be 22*53ee8cc1Swenshuai.xi // supplied together with third party`s software and the use of MStar 23*53ee8cc1Swenshuai.xi // Software may require additional licenses from third parties. 24*53ee8cc1Swenshuai.xi // Therefore, you hereby agree it is your sole responsibility to separately 25*53ee8cc1Swenshuai.xi // obtain any and all third party right and license necessary for your use of 26*53ee8cc1Swenshuai.xi // such third party`s software. 27*53ee8cc1Swenshuai.xi // 28*53ee8cc1Swenshuai.xi // 3. MStar Software and any modification/derivatives thereof shall be deemed as 29*53ee8cc1Swenshuai.xi // MStar`s confidential information and you agree to keep MStar`s 30*53ee8cc1Swenshuai.xi // confidential information in strictest confidence and not disclose to any 31*53ee8cc1Swenshuai.xi // third party. 32*53ee8cc1Swenshuai.xi // 33*53ee8cc1Swenshuai.xi // 4. MStar Software is provided on an "AS IS" basis without warranties of any 34*53ee8cc1Swenshuai.xi // kind. Any warranties are hereby expressly disclaimed by MStar, including 35*53ee8cc1Swenshuai.xi // without limitation, any warranties of merchantability, non-infringement of 36*53ee8cc1Swenshuai.xi // intellectual property rights, fitness for a particular purpose, error free 37*53ee8cc1Swenshuai.xi // and in conformity with any international standard. You agree to waive any 38*53ee8cc1Swenshuai.xi // claim against MStar for any loss, damage, cost or expense that you may 39*53ee8cc1Swenshuai.xi // incur related to your use of MStar Software. 40*53ee8cc1Swenshuai.xi // In no event shall MStar be liable for any direct, indirect, incidental or 41*53ee8cc1Swenshuai.xi // consequential damages, including without limitation, lost of profit or 42*53ee8cc1Swenshuai.xi // revenues, lost or damage of data, and unauthorized system use. 43*53ee8cc1Swenshuai.xi // You agree that this Section 4 shall still apply without being affected 44*53ee8cc1Swenshuai.xi // even if MStar Software has been modified by MStar in accordance with your 45*53ee8cc1Swenshuai.xi // request or instruction for your use, except otherwise agreed by both 46*53ee8cc1Swenshuai.xi // parties in writing. 47*53ee8cc1Swenshuai.xi // 48*53ee8cc1Swenshuai.xi // 5. If requested, MStar may from time to time provide technical supports or 49*53ee8cc1Swenshuai.xi // services in relation with MStar Software to you for your use of 50*53ee8cc1Swenshuai.xi // MStar Software in conjunction with your or your customer`s product 51*53ee8cc1Swenshuai.xi // ("Services"). 52*53ee8cc1Swenshuai.xi // You understand and agree that, except otherwise agreed by both parties in 53*53ee8cc1Swenshuai.xi // writing, Services are provided on an "AS IS" basis and the warranty 54*53ee8cc1Swenshuai.xi // disclaimer set forth in Section 4 above shall apply. 55*53ee8cc1Swenshuai.xi // 56*53ee8cc1Swenshuai.xi // 6. Nothing contained herein shall be construed as by implication, estoppels 57*53ee8cc1Swenshuai.xi // or otherwise: 58*53ee8cc1Swenshuai.xi // (a) conferring any license or right to use MStar name, trademark, service 59*53ee8cc1Swenshuai.xi // mark, symbol or any other identification; 60*53ee8cc1Swenshuai.xi // (b) obligating MStar or any of its affiliates to furnish any person, 61*53ee8cc1Swenshuai.xi // including without limitation, you and your customers, any assistance 62*53ee8cc1Swenshuai.xi // of any kind whatsoever, or any information; or 63*53ee8cc1Swenshuai.xi // (c) conferring any license or right under any intellectual property right. 64*53ee8cc1Swenshuai.xi // 65*53ee8cc1Swenshuai.xi // 7. These terms shall be governed by and construed in accordance with the laws 66*53ee8cc1Swenshuai.xi // of Taiwan, R.O.C., excluding its conflict of law rules. 67*53ee8cc1Swenshuai.xi // Any and all dispute arising out hereof or related hereto shall be finally 68*53ee8cc1Swenshuai.xi // settled by arbitration referred to the Chinese Arbitration Association, 69*53ee8cc1Swenshuai.xi // Taipei in accordance with the ROC Arbitration Law and the Arbitration 70*53ee8cc1Swenshuai.xi // Rules of the Association by three (3) arbitrators appointed in accordance 71*53ee8cc1Swenshuai.xi // with the said Rules. 72*53ee8cc1Swenshuai.xi // The place of arbitration shall be in Taipei, Taiwan and the language shall 73*53ee8cc1Swenshuai.xi // be English. 74*53ee8cc1Swenshuai.xi // The arbitration award shall be final and binding to both parties. 75*53ee8cc1Swenshuai.xi // 76*53ee8cc1Swenshuai.xi //****************************************************************************** 77*53ee8cc1Swenshuai.xi //<MStar Software> 78*53ee8cc1Swenshuai.xi #ifndef _MFE_REG_H_ 79*53ee8cc1Swenshuai.xi #define _MFE_REG_H_ 80*53ee8cc1Swenshuai.xi 81*53ee8cc1Swenshuai.xi #include "mfe_type.h" 82*53ee8cc1Swenshuai.xi 83*53ee8cc1Swenshuai.xi 84*53ee8cc1Swenshuai.xi // Reg bank base address 85*53ee8cc1Swenshuai.xi // See mhal_mfe.h 86*53ee8cc1Swenshuai.xi // #define REG_BANK_MFE 0x0a80UL //0 87*53ee8cc1Swenshuai.xi // #define REG_BANK_MFE1 0xB00UL 88*53ee8cc1Swenshuai.xi 89*53ee8cc1Swenshuai.xi 90*53ee8cc1Swenshuai.xi #define REG_ENC_MODE_MPG4 0UL 91*53ee8cc1Swenshuai.xi #define REG_ENC_MODE_H263 1UL 92*53ee8cc1Swenshuai.xi #define REG_ENC_MODE_H264 2UL 93*53ee8cc1Swenshuai.xi #define REG_ENC_MODE_JPEG 3UL 94*53ee8cc1Swenshuai.xi 95*53ee8cc1Swenshuai.xi #ifdef _MFE_M1_ 96*53ee8cc1Swenshuai.xi #define MFE_MIAW 27UL //25//24 97*53ee8cc1Swenshuai.xi #elif defined(_MFE_A3_) 98*53ee8cc1Swenshuai.xi #define MFE_MIAW 29UL //25//24 99*53ee8cc1Swenshuai.xi #define MFE_MIDW (128UL) // MFE-T1: 128bit MIU 100*53ee8cc1Swenshuai.xi #else 101*53ee8cc1Swenshuai.xi #define MFE_MIAW 26UL //25//24 102*53ee8cc1Swenshuai.xi #endif 103*53ee8cc1Swenshuai.xi #define ADDR_HI_BITS ((MFE_MIAW-5UL)-16UL) 104*53ee8cc1Swenshuai.xi #define OUTBUF_HI_BITS (MFE_MIAW-16UL) 105*53ee8cc1Swenshuai.xi #define IMIBUF_HI_BITS (MFE_MIAW-16UL) // low-bandwidth imi buffer is using 8-byte unit. 106*53ee8cc1Swenshuai.xi #define ADDR_MASK (0xffffffffUL>>(32UL-(MFE_MIAW-5UL))) 107*53ee8cc1Swenshuai.xi 108*53ee8cc1Swenshuai.xi #define LAST_FRAME_AVGQP_HI_BITS (24UL-16UL) 109*53ee8cc1Swenshuai.xi #ifdef _MFE_AGATE_ 110*53ee8cc1Swenshuai.xi #define BITCOUNT_HI_BITS (24UL-16UL) 111*53ee8cc1Swenshuai.xi #else 112*53ee8cc1Swenshuai.xi #define BITCOUNT_HI_BITS (23UL-16UL) 113*53ee8cc1Swenshuai.xi #endif 114*53ee8cc1Swenshuai.xi // IRQ's 115*53ee8cc1Swenshuai.xi #define IRQ_LESS_ROW_DONE 7UL 116*53ee8cc1Swenshuai.xi #define IRQ_NET_TRIGGER 6UL 117*53ee8cc1Swenshuai.xi #define IRQ_FS_FAIL 5UL 118*53ee8cc1Swenshuai.xi #define IRQ_TXIP_TIME_OUT 4UL 119*53ee8cc1Swenshuai.xi #define IRQ_BSPOBUF_FULL 3UL 120*53ee8cc1Swenshuai.xi #define IRQ_IMG_BUF_FULL 2UL 121*53ee8cc1Swenshuai.xi #define IRQ_MARB_BSPOBUF_FUL 1UL 122*53ee8cc1Swenshuai.xi #define IRQ_FRAME_DONE 0UL 123*53ee8cc1Swenshuai.xi #define CHECK_IRQ_STATUS(u16reg, irqnum) ((u16reg>>irqnum)&1UL) 124*53ee8cc1Swenshuai.xi 125*53ee8cc1Swenshuai.xi #define HW_ECO_STARTCODE_PREVENTION 126*53ee8cc1Swenshuai.xi 127*53ee8cc1Swenshuai.xi typedef struct _fdc_info_ { 128*53ee8cc1Swenshuai.xi union { 129*53ee8cc1Swenshuai.xi struct { 130*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_fdc_ack:1; // fdc to cpu ack; 0/1: frame data pool not empty/frame data pool empty; 48x64 bits of space 131*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_fdc_done_clr:1; // fdc done clear (write one clear) 132*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_fdc_done:1; // fdc done; indicate to CPU that data has been written to internal buffer 133*53ee8cc1Swenshuai.xi MS_U16 reg48_dummy:8; 134*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_fdc_bs_vld:1; // set for bitstream write out (write one clear) 135*53ee8cc1Swenshuai.xi }; 136*53ee8cc1Swenshuai.xi MS_U16 reg48; 137*53ee8cc1Swenshuai.xi }; 138*53ee8cc1Swenshuai.xi } RegFdcDone; 139*53ee8cc1Swenshuai.xi 140*53ee8cc1Swenshuai.xi 141*53ee8cc1Swenshuai.xi typedef struct _wqt_info_ { 142*53ee8cc1Swenshuai.xi union { 143*53ee8cc1Swenshuai.xi struct { 144*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_tbc_rw:1; // table mode; 0: read, 1: write 145*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_tbc_done_clr:1; // table done clear (write one clear) 146*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_tbc_done:1; // table done; indicate to CPU that (1) data has been written to table (2) table output is ready at reg_mfe_s_tbc_rdata 147*53ee8cc1Swenshuai.xi MS_U16 reg49_dummy:5; 148*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_tbc_adr:6; // table address 149*53ee8cc1Swenshuai.xi }; 150*53ee8cc1Swenshuai.xi MS_U16 reg49; 151*53ee8cc1Swenshuai.xi }; 152*53ee8cc1Swenshuai.xi } RegWQTDone; 153*53ee8cc1Swenshuai.xi 154*53ee8cc1Swenshuai.xi 155*53ee8cc1Swenshuai.xi typedef struct _qt_rb_check_info_ { 156*53ee8cc1Swenshuai.xi union { 157*53ee8cc1Swenshuai.xi struct { 158*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_tbc_rdata:16; // table mode; 0: read, 1: write 159*53ee8cc1Swenshuai.xi }; 160*53ee8cc1Swenshuai.xi MS_U16 reg4b; 161*53ee8cc1Swenshuai.xi }; 162*53ee8cc1Swenshuai.xi } RegQT_RB_CHECK; 163*53ee8cc1Swenshuai.xi 164*53ee8cc1Swenshuai.xi 165*53ee8cc1Swenshuai.xi typedef struct _ratecontrol_info_ { 166*53ee8cc1Swenshuai.xi union { 167*53ee8cc1Swenshuai.xi struct { 168*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mbr_last_frm_avg_qp_low:16; // last frame average qp (status register) 169*53ee8cc1Swenshuai.xi }; 170*53ee8cc1Swenshuai.xi MS_U16 reg28; 171*53ee8cc1Swenshuai.xi }; 172*53ee8cc1Swenshuai.xi union { 173*53ee8cc1Swenshuai.xi struct { 174*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mbr_last_frm_avg_qp_high:LAST_FRAME_AVGQP_HI_BITS; // last frame average qp (status register) 175*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mbr_qp_cidx_offset:5; // [H264] chroma qp index offset (+12). Spec range is [-12,12] 176*53ee8cc1Swenshuai.xi }; 177*53ee8cc1Swenshuai.xi MS_U16 reg29; 178*53ee8cc1Swenshuai.xi }; 179*53ee8cc1Swenshuai.xi union { 180*53ee8cc1Swenshuai.xi struct { 181*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_bsp_bit_cnt_low:16; // encoded bit count (one frame) 182*53ee8cc1Swenshuai.xi }; 183*53ee8cc1Swenshuai.xi MS_U16 reg42; 184*53ee8cc1Swenshuai.xi }; 185*53ee8cc1Swenshuai.xi union { 186*53ee8cc1Swenshuai.xi struct { 187*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_bsp_bit_cnt_high:BITCOUNT_HI_BITS; // encoded bit count (one frame) 188*53ee8cc1Swenshuai.xi }; 189*53ee8cc1Swenshuai.xi MS_U16 reg43; 190*53ee8cc1Swenshuai.xi }; 191*53ee8cc1Swenshuai.xi } RateControl_REG; 192*53ee8cc1Swenshuai.xi 193*53ee8cc1Swenshuai.xi 194*53ee8cc1Swenshuai.xi 195*53ee8cc1Swenshuai.xi 196*53ee8cc1Swenshuai.xi typedef struct _mfe_reg_ { 197*53ee8cc1Swenshuai.xi // [GLOBAL SETTING] 198*53ee8cc1Swenshuai.xi union { 199*53ee8cc1Swenshuai.xi struct { 200*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_frame_start_sw:1; // frame start (1T clk_mfe) 201*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_soft_rstz:1; // software reset; 0/1: reset/not reset 202*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_enc_mode:2; // 0/1/2/3: MPEG4/H263/H264/JPEG 203*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_frame_type:2; // 0/1/2: I/P/B 204*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_ref_no:1; // 0/1: 1 frame/2 frames 205*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_mbr_en:1; // 0/1: disable/enable MB-level Rate control 206*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_qscale:6; // frame level qscale: [H264]: 1 ~ 51; [MPEG4]: 1 ~ 31 207*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_rec_en:1; // reconstruct enable 208*53ee8cc1Swenshuai.xi #if defined(_MFE_M1_)||defined(_MFE_AGATE_) 209*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_jpe_mst422_mode:1; // YUV422 input buffer format; 0: YUYV, 1: MST422 210*53ee8cc1Swenshuai.xi #endif 211*53ee8cc1Swenshuai.xi }; 212*53ee8cc1Swenshuai.xi MS_U16 reg00; 213*53ee8cc1Swenshuai.xi }; 214*53ee8cc1Swenshuai.xi union { 215*53ee8cc1Swenshuai.xi struct { 216*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_pic_width:12; // picture width 217*53ee8cc1Swenshuai.xi #ifdef _MFE_M1_ 218*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_ver_minor_idx:4; 219*53ee8cc1Swenshuai.xi #endif 220*53ee8cc1Swenshuai.xi }; 221*53ee8cc1Swenshuai.xi MS_U16 reg01; 222*53ee8cc1Swenshuai.xi }; 223*53ee8cc1Swenshuai.xi union { 224*53ee8cc1Swenshuai.xi struct { 225*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_pic_height:12; // picture height 226*53ee8cc1Swenshuai.xi #ifdef _MFE_M1_ 227*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_ver_major_idx:4; 228*53ee8cc1Swenshuai.xi #endif 229*53ee8cc1Swenshuai.xi }; 230*53ee8cc1Swenshuai.xi MS_U16 reg02; 231*53ee8cc1Swenshuai.xi }; 232*53ee8cc1Swenshuai.xi union { 233*53ee8cc1Swenshuai.xi struct { 234*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_er_mode:2; // 0/1/2/3: mby/bs/mby+bs/off 235*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_er_mby:2; // 0/1/2/3: every 1/2/4/8 mb row(s) (error resilence) 236*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_packed_mode:1; // frame buffer format for 422 packed mode; 0/1: YVYU/YUYV 237*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_qmode:1; // quantization method; 0/1: h263/mp4 238*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_tbc_mode:1; // table mode; 0: SW control, 1: HW control 239*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_fldpic_en:1; //field picture coding 240*53ee8cc1Swenshuai.xi #if defined(_MFE_M1_)||defined(_MFE_AGATE_) 241*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_dct_only_en:1; // reg_mfe_g_dct_only_en 242*53ee8cc1Swenshuai.xi #endif 243*53ee8cc1Swenshuai.xi #if defined(_MFE_AGATE_) 244*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_mstar_tile:1; // input buffer format; 0: m4ve tiled mode, 1: mstar tiled mode 245*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_mstar_tile_field_split:1; // input field buffer format; 0: top/bottom fields interlaced, 1: fields split 246*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_fldpic_idx:1; 247*53ee8cc1Swenshuai.xi #endif 248*53ee8cc1Swenshuai.xi #if defined(_MFE_MUJI_) || defined(_MFE_MONET_) || defined(_MFE_MESSI_) || defined(_MFE_MANHATTAN_) || defined(_MFE_MASERATI_) || defined(_MFE_MAXIM_) || defined(_MFE_KANO_) || defined(_MFE_K6_) 249*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_fldpic_multislice_en:1; // multi-slice of field picture coding 0/1 : off/on 250*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_cabac_en:1; // entropy encoding mode 0/1: cavlc/cabac 251*53ee8cc1Swenshuai.xi MS_U16 reg03_dummy:1; 252*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_miu_sel:1; 253*53ee8cc1Swenshuai.xi #elif defined(_MFE_EDISON_) 254*53ee8cc1Swenshuai.xi MS_U16 reg03_dummy:2; 255*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_ns:1; 256*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_miu_sel:1; 257*53ee8cc1Swenshuai.xi #endif 258*53ee8cc1Swenshuai.xi }; 259*53ee8cc1Swenshuai.xi MS_U16 reg03; 260*53ee8cc1Swenshuai.xi }; 261*53ee8cc1Swenshuai.xi union { 262*53ee8cc1Swenshuai.xi struct { 263*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_er_bs_th:16; // er_bs mode threshold 264*53ee8cc1Swenshuai.xi }; 265*53ee8cc1Swenshuai.xi MS_U16 reg04; 266*53ee8cc1Swenshuai.xi }; 267*53ee8cc1Swenshuai.xi union { 268*53ee8cc1Swenshuai.xi struct { 269*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_inter_pref:16; // inter prediction preference 270*53ee8cc1Swenshuai.xi }; 271*53ee8cc1Swenshuai.xi MS_U16 reg05; 272*53ee8cc1Swenshuai.xi }; 273*53ee8cc1Swenshuai.xi union { 274*53ee8cc1Swenshuai.xi struct { 275*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_cur_y_adr_low:16; // current luma base address 276*53ee8cc1Swenshuai.xi }; 277*53ee8cc1Swenshuai.xi MS_U16 reg06; 278*53ee8cc1Swenshuai.xi }; 279*53ee8cc1Swenshuai.xi union { 280*53ee8cc1Swenshuai.xi struct { 281*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_cur_y_adr_high:ADDR_HI_BITS; // current luma base address 282*53ee8cc1Swenshuai.xi }; 283*53ee8cc1Swenshuai.xi MS_U16 reg07; 284*53ee8cc1Swenshuai.xi }; 285*53ee8cc1Swenshuai.xi union { 286*53ee8cc1Swenshuai.xi struct { 287*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_cur_c_adr_low:16; // current chroma base address 288*53ee8cc1Swenshuai.xi }; 289*53ee8cc1Swenshuai.xi MS_U16 reg08; 290*53ee8cc1Swenshuai.xi }; 291*53ee8cc1Swenshuai.xi union { 292*53ee8cc1Swenshuai.xi struct { 293*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_cur_c_adr_high:ADDR_HI_BITS; // current chroma base address 294*53ee8cc1Swenshuai.xi }; 295*53ee8cc1Swenshuai.xi MS_U16 reg09; 296*53ee8cc1Swenshuai.xi }; 297*53ee8cc1Swenshuai.xi union { 298*53ee8cc1Swenshuai.xi struct { 299*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_ref_y_adr0_low:16; // reference luma base address0 300*53ee8cc1Swenshuai.xi }; 301*53ee8cc1Swenshuai.xi MS_U16 reg0a; 302*53ee8cc1Swenshuai.xi }; 303*53ee8cc1Swenshuai.xi union { 304*53ee8cc1Swenshuai.xi struct { 305*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_ref_y_adr0_high:ADDR_HI_BITS; // reference luma base address0 306*53ee8cc1Swenshuai.xi }; 307*53ee8cc1Swenshuai.xi MS_U16 reg0b; 308*53ee8cc1Swenshuai.xi }; 309*53ee8cc1Swenshuai.xi union { 310*53ee8cc1Swenshuai.xi struct { 311*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_ref_y_adr1_low:16; // reference luma base address1 312*53ee8cc1Swenshuai.xi }; 313*53ee8cc1Swenshuai.xi MS_U16 reg0c; 314*53ee8cc1Swenshuai.xi }; 315*53ee8cc1Swenshuai.xi union { 316*53ee8cc1Swenshuai.xi struct { 317*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_ref_y_adr1_high:ADDR_HI_BITS; // reference luma base address0 318*53ee8cc1Swenshuai.xi }; 319*53ee8cc1Swenshuai.xi MS_U16 reg0d; 320*53ee8cc1Swenshuai.xi }; 321*53ee8cc1Swenshuai.xi union { 322*53ee8cc1Swenshuai.xi struct { 323*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_ref_c_adr0_low:16; // reference chroma base address0 324*53ee8cc1Swenshuai.xi }; 325*53ee8cc1Swenshuai.xi MS_U16 reg0e; 326*53ee8cc1Swenshuai.xi }; 327*53ee8cc1Swenshuai.xi union { 328*53ee8cc1Swenshuai.xi struct { 329*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_ref_c_adr0_high:ADDR_HI_BITS; // reference chroma base address0 330*53ee8cc1Swenshuai.xi }; 331*53ee8cc1Swenshuai.xi MS_U16 reg0f; 332*53ee8cc1Swenshuai.xi }; 333*53ee8cc1Swenshuai.xi union { 334*53ee8cc1Swenshuai.xi struct { 335*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_ref_c_adr1_low:16; // reference chroma base address1 336*53ee8cc1Swenshuai.xi }; 337*53ee8cc1Swenshuai.xi MS_U16 reg10; 338*53ee8cc1Swenshuai.xi }; 339*53ee8cc1Swenshuai.xi union { 340*53ee8cc1Swenshuai.xi struct { 341*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_ref_c_adr1_high:ADDR_HI_BITS; // reference chroma base address1 342*53ee8cc1Swenshuai.xi }; 343*53ee8cc1Swenshuai.xi MS_U16 reg11; 344*53ee8cc1Swenshuai.xi }; 345*53ee8cc1Swenshuai.xi union { 346*53ee8cc1Swenshuai.xi struct { 347*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_rec_y_adr_low:16; // reconstructed luma base address 348*53ee8cc1Swenshuai.xi }; 349*53ee8cc1Swenshuai.xi MS_U16 reg12; 350*53ee8cc1Swenshuai.xi }; 351*53ee8cc1Swenshuai.xi union { 352*53ee8cc1Swenshuai.xi struct { 353*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_rec_y_adr_high:ADDR_HI_BITS; // reconstructed luma base address 354*53ee8cc1Swenshuai.xi }; 355*53ee8cc1Swenshuai.xi MS_U16 reg13; 356*53ee8cc1Swenshuai.xi }; 357*53ee8cc1Swenshuai.xi union { 358*53ee8cc1Swenshuai.xi struct { 359*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_rec_c_adr_low:16; // reconstructed chroma base address 360*53ee8cc1Swenshuai.xi }; 361*53ee8cc1Swenshuai.xi MS_U16 reg14; 362*53ee8cc1Swenshuai.xi }; 363*53ee8cc1Swenshuai.xi union { 364*53ee8cc1Swenshuai.xi struct { 365*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_rec_c_adr_high:ADDR_HI_BITS; // reconstructed chroma base address 366*53ee8cc1Swenshuai.xi }; 367*53ee8cc1Swenshuai.xi MS_U16 reg15; 368*53ee8cc1Swenshuai.xi }; 369*53ee8cc1Swenshuai.xi union { 370*53ee8cc1Swenshuai.xi struct { // clock gating 371*53ee8cc1Swenshuai.xi MS_U16 gate_cry_crc_sram:1; 372*53ee8cc1Swenshuai.xi MS_U16 gate_qtab_dbfdc_dbqtb_sram:1; 373*53ee8cc1Swenshuai.xi MS_U16 gate_mcy_mcc_sram:1; 374*53ee8cc1Swenshuai.xi MS_U16 gate_res0_res1_sram:1; 375*53ee8cc1Swenshuai.xi MS_U16 gate_ieap:1; 376*53ee8cc1Swenshuai.xi MS_U16 gate_dct_idct:1; 377*53ee8cc1Swenshuai.xi MS_U16 gate_dbf:1; 378*53ee8cc1Swenshuai.xi }; 379*53ee8cc1Swenshuai.xi MS_U16 reg16; 380*53ee8cc1Swenshuai.xi }; 381*53ee8cc1Swenshuai.xi union { 382*53ee8cc1Swenshuai.xi struct { 383*53ee8cc1Swenshuai.xi #ifdef _MFE_M1_ 384*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_auto_rst_wait_cnt:6; // the waiting count for regen_soft_rstz and regen_fs_sw generation 385*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_sram1p_wp_type:1; // "MFE 1p SRAM wrapper Type 'b1: Fix write-through problem 'b0: Original" 386*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_sram2p_wp_type:1; // "MFE 2p SRAM wrapper Type 'b1: Fix write-through problem 'b0: Original" 387*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_clk_mfe_en:4; // NOT used now. 388*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_mreq_sel:1; // "1" D1 MIU clk gating; "0" dynamic MIU clk gating 389*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_mreq_always_active:1; // "1" mreq always active; "0" make mreq active according to FSM. (let this be default) 390*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_clk_miu_d2_gate:1; // b1: turn off miu clock of power-domain "dma" and sleep into d2 mode 391*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_clk_mfe_d2_gate:1; // b1: turn off mfe clock of power-domain "core" and sleep into d2 mode 392*53ee8cc1Swenshuai.xi #elif defined(_MFE_AGATE_) 393*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_auto_rst_wait_cnt:6; // the waiting count for regen_soft_rstz and regen_fs_sw generation 394*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_clk_mfe_en_dummy:8; // no use 395*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_clk_miu_d2_gate:1; // b1: turn off miu clock of power-domain "dma" and sleep into d2 mode 396*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_clk_mfe_d2_gate:1; // b1: turn off mfe clock of power-domain "core" and sleep into d2 mode 397*53ee8cc1Swenshuai.xi #else 398*53ee8cc1Swenshuai.xi MS_U16 reserved_reg17; 399*53ee8cc1Swenshuai.xi #endif 400*53ee8cc1Swenshuai.xi }; 401*53ee8cc1Swenshuai.xi MS_U16 reg17; 402*53ee8cc1Swenshuai.xi }; 403*53ee8cc1Swenshuai.xi // [JPEG] 404*53ee8cc1Swenshuai.xi union { 405*53ee8cc1Swenshuai.xi struct { 406*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_jpe_enc_mode:2; // JPE encode mode; 2'b00/2'b01/2'b10/2'b11: 420/422/444/gray; current version supports 422 only 407*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_jpe_buffer_mode:1; // JPE buffer mode; 0/1: double buffer mode/frame buffer mode 408*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_jpe_multibuf_mode:2; // JPE multi-buffer mode; 0/1/2: 2/4/8 buffers 409*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_jpe_qfactor:4; // JPE q factor; 0 ~ 15: (1 ~ 16)/4 410*53ee8cc1Swenshuai.xi // (M1)JPE fsvs generation mode; 411*53ee8cc1Swenshuai.xi // 0: pure sw 412*53ee8cc1Swenshuai.xi // 1: sw+hw 413*53ee8cc1Swenshuai.xi // 2: hw w/o auto-restart 414*53ee8cc1Swenshuai.xi // 3: hw w/i auto-restart 415*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_jpe_fsvs_mode:2; // (T8)JPE fsvs generation mode; 0/1/2: pure sw/sw+hw/hw 416*53ee8cc1Swenshuai.xi MS_U16 reg18_dummy:4; 417*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_viu_soft_rstz:1; // viu software reset; 0/1: reset/not reset 418*53ee8cc1Swenshuai.xi }; 419*53ee8cc1Swenshuai.xi MS_U16 reg18; 420*53ee8cc1Swenshuai.xi }; 421*53ee8cc1Swenshuai.xi // [MPEG4/H263] 422*53ee8cc1Swenshuai.xi union { 423*53ee8cc1Swenshuai.xi struct { 424*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_mp4_itlc:1; // 0/1: MPEG4 progressive/interlaced mode 425*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_mp4_pskip_off:1; // 0/1: MPEG4 enable/disable p skip mode 426*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_mp4_acp:2; // [0]: 0/1: sw/hw acp selection; [1]: sw default value: 0/1: disable/enable acp; current version off 427*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_mp4_rounding_ctrl:1; // mp4 rounding control specified as in spec 428*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_er_hec:1; // 0/1: header extension code off/on 429*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_er_hec_t:3; // HEC counter reset values 430*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_er_h263_unit:2; // 0/1/2: unit is 1/2/4, for calculating gob_num. 431*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_mp4_direct_en:1; // MPEG4 direct enable 432*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_mp4_direct_mvstore:1; // [M]: enable storing of mv & skip_mb information to DRAM in P(or sometimes I) frame 433*53ee8cc1Swenshuai.xi }; 434*53ee8cc1Swenshuai.xi MS_U16 reg19; 435*53ee8cc1Swenshuai.xi }; 436*53ee8cc1Swenshuai.xi union { 437*53ee8cc1Swenshuai.xi struct { 438*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_mp4_direct_pref:8; // used in mp4 only, mp4 direct mode preference value 439*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_mp4_direct_trb:3; // used in mp4 only, mp4 direct mode trb (P0-B distance) 440*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_mp4_direct_trd:3; // used in mp4 only, mp4 direct mode trd (P0-P1 distance) 441*53ee8cc1Swenshuai.xi #ifdef _MFE_AGATE_ 442*53ee8cc1Swenshuai.xi MS_U16 reg1a_dummy:1; 443*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_mb_pitch_en:1; 444*53ee8cc1Swenshuai.xi #endif 445*53ee8cc1Swenshuai.xi }; 446*53ee8cc1Swenshuai.xi MS_U16 reg1a; 447*53ee8cc1Swenshuai.xi }; 448*53ee8cc1Swenshuai.xi union { 449*53ee8cc1Swenshuai.xi struct { 450*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_mp4_flddct_diff_thr:8; // used in mp4 only, mp4 field dct difference threshold 451*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_mp4_flddct_en:1; // used in mp4 only, mp4 field dct enable 452*53ee8cc1Swenshuai.xi }; 453*53ee8cc1Swenshuai.xi MS_U16 reg1b; 454*53ee8cc1Swenshuai.xi }; 455*53ee8cc1Swenshuai.xi // [IRQ & important IP status checkings] 456*53ee8cc1Swenshuai.xi union { 457*53ee8cc1Swenshuai.xi struct { 458*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_irq_mask:8; // 0/1: irq not-mask/mask 459*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_irq_force:8; // 0/1: set corresponding interrupt as usual/force corresponding interrupt 460*53ee8cc1Swenshuai.xi }; 461*53ee8cc1Swenshuai.xi MS_U16 reg1c; 462*53ee8cc1Swenshuai.xi }; 463*53ee8cc1Swenshuai.xi union { 464*53ee8cc1Swenshuai.xi struct { 465*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_irq_clr0:1; // 0/1: not clear interrupt/clear interrupt 0 466*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_irq_clr1:1; // 0/1: not clear interrupt/clear interrupt 1 467*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_irq_clr2:1; // 0/1: not clear interrupt/clear interrupt 2 468*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_irq_clr3:1; // 0/1: not clear interrupt/clear interrupt 3 469*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_irq_clr4:1; // 0/1: not clear interrupt/clear interrupt 4 470*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_irq_clr5:1; // 0/1: not clear interrupt/clear interrupt 5 471*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_irq_clr6:1; // 0/1: not clear interrupt/clear interrupt 6 472*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_irq_clr7:1; // 0/1: not clear interrupt/clear interrupt 7 473*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_swrst_safe:1; // to indicate there're no miu activities that need to pay attention to 474*53ee8cc1Swenshuai.xi }; 475*53ee8cc1Swenshuai.xi MS_U16 reg1d; 476*53ee8cc1Swenshuai.xi }; 477*53ee8cc1Swenshuai.xi union { 478*53ee8cc1Swenshuai.xi struct { 479*53ee8cc1Swenshuai.xi //status of interrupt on CPU side ({1'b0, net_trigger, fs_fail_irq, txip_time_out, early_bspobuf_full_irq/buf1_full, img_buf_full_irq, marb_bspobuf_ful1/buf0_full, frame_done_irq}) 480*53ee8cc1Swenshuai.xi //[3] SW mode: early obuf full; HW mode: buf1 full 481*53ee8cc1Swenshuai.xi //[1] SW mode: buf full; HW mode: buf0 full 482*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_irq_cpu:8; 483*53ee8cc1Swenshuai.xi //status of interrupt on IP side ({1'b0, net_trigger, fs_fail_irq, txip_time_out, early_bspobuf_full_irq/buf1_full, img_buf_full_irq, marb_bspobuf_ful/buf0_full, frame_done_irq}) 484*53ee8cc1Swenshuai.xi //[3] SW mode: early obuf full; HW mode: buf1 full 485*53ee8cc1Swenshuai.xi //[1] SW mode: buf full; HW mode: buf0 full 486*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_irq_ip:8; 487*53ee8cc1Swenshuai.xi }; 488*53ee8cc1Swenshuai.xi MS_U16 reg1e; 489*53ee8cc1Swenshuai.xi }; 490*53ee8cc1Swenshuai.xi union { 491*53ee8cc1Swenshuai.xi struct { 492*53ee8cc1Swenshuai.xi MS_U16 reserved_reg1f; 493*53ee8cc1Swenshuai.xi }; 494*53ee8cc1Swenshuai.xi MS_U16 reg1f; 495*53ee8cc1Swenshuai.xi }; 496*53ee8cc1Swenshuai.xi // [ME setting] 497*53ee8cc1Swenshuai.xi union { 498*53ee8cc1Swenshuai.xi struct { 499*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_me_4x4_disable:1; // 4x4_disable 500*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_me_8x4_disable:1; // 8x4_disable 501*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_me_4x8_disable:1; // 4x8_disable 502*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_me_16x8_disable:1; // 16x8_disable 503*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_me_8x16_disable:1; // 8x16_disable 504*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_me_8x8_disable:1; // 8x8_disable 505*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_me_16x16_disable:1; // 16x16_disable 506*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mesr_adapt:1; // me search range auto-adaptive; 0/1: off/on 507*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_me_ref_en_mode:2; // ref enable mode: 2'b01/2'b10/2'b11: ref0 enable/ref1 enable/ref0&1 enable 508*53ee8cc1Swenshuai.xi }; 509*53ee8cc1Swenshuai.xi MS_U16 reg20; 510*53ee8cc1Swenshuai.xi }; 511*53ee8cc1Swenshuai.xi // [IME PIPELINE] 512*53ee8cc1Swenshuai.xi union { 513*53ee8cc1Swenshuai.xi struct { 514*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_ime_sr16:1; // search range limited to (h,v) = (+/-16, +/-16); 0/1: search range 32/16 515*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_ime_umv_disable:1; // 0/1: UMV enable/disable 516*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_ime_ime_wait_fme:1; // 0/1: ime wait fme/fme wait ime 517*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_ime_boundrect_en:1; // ime bounding rectangle enable (needed for level 3.0 and below) 518*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_ime_h264_p8x8_ctrl_en:1; // ime h264 max p8x8 count control enable 519*53ee8cc1Swenshuai.xi MS_U16 reg21_dummy:3; 520*53ee8cc1Swenshuai.xi #if defined(_MFE_M1_)||defined(_MFE_AGATE_) 521*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_ime_h264_p8x8_max:8; // ime h264 max p8x8 count; value 0 is prohibited 522*53ee8cc1Swenshuai.xi // Max P8x8 MB count = 16 * reg_mfe_s_ime_h264_p8x8_max 523*53ee8cc1Swenshuai.xi 524*53ee8cc1Swenshuai.xi #else 525*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_ime_h264_p8x8_max:6; // ime h264 max p8x8 count; value 0 is prohibited 526*53ee8cc1Swenshuai.xi // Max P8x8 MB count = 16 * reg_mfe_s_ime_h264_p8x8_max 527*53ee8cc1Swenshuai.xi #endif 528*53ee8cc1Swenshuai.xi }; 529*53ee8cc1Swenshuai.xi MS_U16 reg21; 530*53ee8cc1Swenshuai.xi }; 531*53ee8cc1Swenshuai.xi union { 532*53ee8cc1Swenshuai.xi struct { 533*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_ime_mesr_max_addr:8; // me search range max depth 534*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_ime_mesr_min_addr:8; // me search range min depth 535*53ee8cc1Swenshuai.xi }; 536*53ee8cc1Swenshuai.xi MS_U16 reg22; 537*53ee8cc1Swenshuai.xi }; 538*53ee8cc1Swenshuai.xi union { 539*53ee8cc1Swenshuai.xi struct { 540*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_ime_mvx_min:6; // me mvx min; 0/�K/62 --> -32/�K/30 541*53ee8cc1Swenshuai.xi MS_U16 reg24_dummy:2; 542*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_ime_mvx_max:6; // me mvx max; 0/�K/62 --> -32/�K/30 543*53ee8cc1Swenshuai.xi }; 544*53ee8cc1Swenshuai.xi MS_U16 reg23; 545*53ee8cc1Swenshuai.xi }; 546*53ee8cc1Swenshuai.xi union { 547*53ee8cc1Swenshuai.xi struct { 548*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_ime_mvy_min:6; // me mvy min; 0/�K/62 --> -32/�K/30 549*53ee8cc1Swenshuai.xi MS_U16 reg25_dummy:2; 550*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_ime_mvy_max:6; // me mvy max; 0/�K62/ --> -32/�K/30 551*53ee8cc1Swenshuai.xi }; 552*53ee8cc1Swenshuai.xi MS_U16 reg24; 553*53ee8cc1Swenshuai.xi }; 554*53ee8cc1Swenshuai.xi // [FME pipeline] 555*53ee8cc1Swenshuai.xi union { 556*53ee8cc1Swenshuai.xi struct { 557*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_fme_quarter_disable:1; // 0/1: Quarter fine-tune enable/disable 558*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_fme_half_disable:1; // 0/1: Half fine-tune enable/disable 559*53ee8cc1Swenshuai.xi MS_U16 /*reg_mfe_s_fme_one_mode*/reg26_dummy:1; 560*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_fme_pmv_enable:1; // 0/1: disable/enable Previous Skip MV mode 561*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_fme_mode_no:1; // 0: one mode. 1: two mode. 562*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_fme_mode0_refno:1; // 0: one ref. for mode0 1: two ref. for mode0 563*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_fme_mode1_refno:1; // 0: one ref. for mode1 1: two ref. for mode1 564*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_fme_mode2_refno:1; // 0: one ref. for mode2 1: two ref. for mode2 565*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_fme_skip:1; // fme skip 566*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_fme_pipeline_on:1; //0/1: FME pipeline off/on 567*53ee8cc1Swenshuai.xi }; 568*53ee8cc1Swenshuai.xi MS_U16 reg25; 569*53ee8cc1Swenshuai.xi }; 570*53ee8cc1Swenshuai.xi // MBR 571*53ee8cc1Swenshuai.xi union { 572*53ee8cc1Swenshuai.xi struct { 573*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mbr_pqp_dlimit:2; // previous qp diff limit 574*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mbr_uqp_dlimit:2; // upper qp diff limit 575*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mbr_tmb_bits:12; // target MB bits 576*53ee8cc1Swenshuai.xi }; 577*53ee8cc1Swenshuai.xi MS_U16 reg26; 578*53ee8cc1Swenshuai.xi }; 579*53ee8cc1Swenshuai.xi union { 580*53ee8cc1Swenshuai.xi struct { 581*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mbr_frame_qstep:13; // frame level qp's qstep 582*53ee8cc1Swenshuai.xi }; 583*53ee8cc1Swenshuai.xi MS_U16 reg27; 584*53ee8cc1Swenshuai.xi }; 585*53ee8cc1Swenshuai.xi union { 586*53ee8cc1Swenshuai.xi struct { 587*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mbr_last_frm_avg_qp_low:16; // last frame average qp (status register) 588*53ee8cc1Swenshuai.xi }; 589*53ee8cc1Swenshuai.xi MS_U16 reg28; 590*53ee8cc1Swenshuai.xi }; 591*53ee8cc1Swenshuai.xi union { 592*53ee8cc1Swenshuai.xi struct { 593*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mbr_last_frm_avg_qp_high:LAST_FRAME_AVGQP_HI_BITS; // last frame average qp (status register) 594*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mbr_qp_cidx_offset:5; // [H264] chroma qp index offset (+12). Spec range is [-12,12] 595*53ee8cc1Swenshuai.xi }; 596*53ee8cc1Swenshuai.xi MS_U16 reg29; 597*53ee8cc1Swenshuai.xi }; 598*53ee8cc1Swenshuai.xi union { 599*53ee8cc1Swenshuai.xi struct { 600*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mbr_qp_min:6; // qp min 601*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mbr_qp_max:6; // qp max 602*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mvdctl_ref0_offset:2; // H264 mvy offset adjustment for MCC if ref is frame 0: 0/1/2: 0/+2/-2 603*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mvdctl_ref1_offset:2; // H264 mvy offset adjustment for MCC if ref is frame 1: 0/1/2: 0/+2/-2 604*53ee8cc1Swenshuai.xi }; 605*53ee8cc1Swenshuai.xi MS_U16 reg2a; 606*53ee8cc1Swenshuai.xi }; 607*53ee8cc1Swenshuai.xi // IEAP 608*53ee8cc1Swenshuai.xi union { 609*53ee8cc1Swenshuai.xi struct { 610*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_ieap_last_mode:4; // software control of the last mode of Intra4x4 mode 0 ~ 8 611*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_ieap_constraint_intra:1; // software control constraint intra; 0/1: OFF/ON 612*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_ieap_ccest_en:1; // software control cost estimator; 0/1: OFF/ON 613*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_ieap_ccest_thr:2; // threshold of cost estimator set 0 ~ 3 for threshold 1 ~ 4 614*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_ieap_drop_i16:1; // software control stop-Intra16x16-mode; 1:w/o I16M, 0:w/i I16MB 615*53ee8cc1Swenshuai.xi #if defined(_MFE_MUJI_) || defined(_MFE_MONET_) || defined(_MFE_MESSI_) || defined(_MFE_MANHATTAN_) || defined(_MFE_MASERATI_) || defined(_MFE_MAXIM_) || defined(_MFE_KANO_) || defined(_MFE_K6_) 616*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_ieap_early_termination:1; // 1/0: turn on/off ieap early termination 617*53ee8cc1Swenshuai.xi #endif 618*53ee8cc1Swenshuai.xi }; 619*53ee8cc1Swenshuai.xi MS_U16 reg2b; 620*53ee8cc1Swenshuai.xi }; 621*53ee8cc1Swenshuai.xi // QUAN 622*53ee8cc1Swenshuai.xi union { 623*53ee8cc1Swenshuai.xi struct { 624*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_quan_idx_last:6; // the index of the last non-zero coefficient in the zig-zag order 625*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_quan_idx_swlast:1; // software control of the index of the last non-zero coefficient in the zig-zag order; 0/1: disable/enable 626*53ee8cc1Swenshuai.xi #ifdef _MFE_AGATE_ 627*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_mb_pitch:7; // mb pitch (x-direction) 628*53ee8cc1Swenshuai.xi #endif 629*53ee8cc1Swenshuai.xi #if defined(_MFE_MUJI_) || defined(_MFE_MONET_) || defined(_MFE_MESSI_) || defined(_MFE_MANHATTAN_) || defined(_MFE_MASERATI_) || defined(_MFE_MAXIM_) || defined(_MFE_KANO_) || defined(_MFE_K6_) 630*53ee8cc1Swenshuai.xi MS_U16 reg2c_dummy:1;// dummy 631*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_ieap_sram_4x2_swap:1;//0/1: for ieap 4pels sram interface / for ieap 8pels sram interface 632*53ee8cc1Swenshuai.xi #endif 633*53ee8cc1Swenshuai.xi }; 634*53ee8cc1Swenshuai.xi MS_U16 reg2c; 635*53ee8cc1Swenshuai.xi }; 636*53ee8cc1Swenshuai.xi // TXIP control & debug 637*53ee8cc1Swenshuai.xi union { 638*53ee8cc1Swenshuai.xi struct { 639*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_txip_mbx:9; //txip mbx 640*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_txip_sng_mb:1; //0/1: disable/enable txip controller stop-and-go mechanism using (txip_mbx == reg_mfe_g_debug_trig_mbx) & (txip_mby == reg_mfe_g_debug_trig_mby) 641*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_txip_sng_set:1; //txip controller stop-and-go mechanism using this register bit: 0/1: go/stop 642*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_txip_dbf_full_halt_en:1; //txip controller stop-and-go mechanism using double buffer fullness as criterion; 0/1: disable/enable 643*53ee8cc1Swenshuai.xi }; 644*53ee8cc1Swenshuai.xi MS_U16 reg2d; 645*53ee8cc1Swenshuai.xi }; 646*53ee8cc1Swenshuai.xi union { 647*53ee8cc1Swenshuai.xi struct { 648*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_txip_mby:9; // txip mby 649*53ee8cc1Swenshuai.xi }; 650*53ee8cc1Swenshuai.xi MS_U16 reg2e; 651*53ee8cc1Swenshuai.xi }; 652*53ee8cc1Swenshuai.xi union { 653*53ee8cc1Swenshuai.xi struct { 654*53ee8cc1Swenshuai.xi #if defined(_MFE_M1_)||defined(_MFE_AGATE_) 655*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_txip_irfsh_mb_s0:13; // intra refresh mb start 0 656*53ee8cc1Swenshuai.xi MS_U16 reg2f_dummy:1; 657*53ee8cc1Swenshuai.xi #else 658*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_txip_irfsh_mb_s0:12; // intra refresh mb start 0 659*53ee8cc1Swenshuai.xi #endif 660*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_txip_irfsh_en:2; // intra refresh enable bits: bit0: enable condition 0; bit 1: enable condition 1 661*53ee8cc1Swenshuai.xi }; 662*53ee8cc1Swenshuai.xi MS_U16 reg2f; 663*53ee8cc1Swenshuai.xi }; 664*53ee8cc1Swenshuai.xi union { 665*53ee8cc1Swenshuai.xi struct { 666*53ee8cc1Swenshuai.xi #if defined(_MFE_M1_)||defined(_MFE_AGATE_) 667*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_txip_irfsh_mb_e0:13; // intra refresh mb end 0 668*53ee8cc1Swenshuai.xi #else 669*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_txip_irfsh_mb_e0:12; // intra refresh mb end 0 670*53ee8cc1Swenshuai.xi #endif 671*53ee8cc1Swenshuai.xi }; 672*53ee8cc1Swenshuai.xi MS_U16 reg30; 673*53ee8cc1Swenshuai.xi }; 674*53ee8cc1Swenshuai.xi union { 675*53ee8cc1Swenshuai.xi struct { 676*53ee8cc1Swenshuai.xi #if defined(_MFE_M1_)||defined(_MFE_AGATE_) 677*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_txip_irfsh_mb_s1:13; // intra refresh mb start 1 678*53ee8cc1Swenshuai.xi #else 679*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_txip_irfsh_mb_s1:12; // intra refresh mb start 1 680*53ee8cc1Swenshuai.xi #endif 681*53ee8cc1Swenshuai.xi }; 682*53ee8cc1Swenshuai.xi MS_U16 reg31; 683*53ee8cc1Swenshuai.xi }; 684*53ee8cc1Swenshuai.xi union { 685*53ee8cc1Swenshuai.xi struct { 686*53ee8cc1Swenshuai.xi #if defined(_MFE_M1_)||defined(_MFE_AGATE_) 687*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_txip_irfsh_mb_e1:13; // intra refresh mb end 1 688*53ee8cc1Swenshuai.xi MS_U16 reg32_dummy:1; 689*53ee8cc1Swenshuai.xi #else 690*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_txip_irfsh_mb_e1:12; // intra refresh mb end 1 691*53ee8cc1Swenshuai.xi #endif 692*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_txip_timeout_en:1; // txip time out enable 693*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_txip_wait_mode:1; // txip waiting mode to move to next MB; 0/1: idle count/cycle count 694*53ee8cc1Swenshuai.xi }; 695*53ee8cc1Swenshuai.xi MS_U16 reg32; 696*53ee8cc1Swenshuai.xi }; 697*53ee8cc1Swenshuai.xi union { 698*53ee8cc1Swenshuai.xi struct { 699*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_txip_idle_cnt:16; // wait mode is 0: txip idle count (x 64T)/ wait mode is 1: txip total processing count (x 64T) 700*53ee8cc1Swenshuai.xi }; 701*53ee8cc1Swenshuai.xi MS_U16 reg33; 702*53ee8cc1Swenshuai.xi }; 703*53ee8cc1Swenshuai.xi union { 704*53ee8cc1Swenshuai.xi struct { 705*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_txip_timeout:16; // txip timeout count (x 64T) 706*53ee8cc1Swenshuai.xi }; 707*53ee8cc1Swenshuai.xi MS_U16 reg34; 708*53ee8cc1Swenshuai.xi }; 709*53ee8cc1Swenshuai.xi // [ECDB PIPELINE] 710*53ee8cc1Swenshuai.xi // ECDB control & debug 711*53ee8cc1Swenshuai.xi union { 712*53ee8cc1Swenshuai.xi struct { 713*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_ecdb_mbx:9; // ecdb mbx 714*53ee8cc1Swenshuai.xi }; 715*53ee8cc1Swenshuai.xi MS_U16 reg35; 716*53ee8cc1Swenshuai.xi }; 717*53ee8cc1Swenshuai.xi union { 718*53ee8cc1Swenshuai.xi struct { 719*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_ecdb_mby:9; // ecdb mby 720*53ee8cc1Swenshuai.xi }; 721*53ee8cc1Swenshuai.xi MS_U16 reg36; 722*53ee8cc1Swenshuai.xi }; 723*53ee8cc1Swenshuai.xi // MDC 724*53ee8cc1Swenshuai.xi union { 725*53ee8cc1Swenshuai.xi struct { 726*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mdc_total_mb_bw:4; // total mb bit width used in video_pkt 727*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mdc_m4vpktpzero:1; // MPEG4 video packet preceding zeros: 0/1: 16/17 zeros 728*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mdc_m4time:2; // MPEG4 modulo time base: 0/1/2/3: 0/10/110/1110 729*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mdc_m4iadcvlc_th:3; // MPEG4 intra dc vlc threshold 730*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mdc_m4vop_tinc_bw:4; // vop_time_increment bit width 731*53ee8cc1Swenshuai.xi }; 732*53ee8cc1Swenshuai.xi MS_U16 reg37; 733*53ee8cc1Swenshuai.xi }; 734*53ee8cc1Swenshuai.xi union { 735*53ee8cc1Swenshuai.xi struct { 736*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mdc_m4vop_tinc:15; // vop_time_increment 737*53ee8cc1Swenshuai.xi }; 738*53ee8cc1Swenshuai.xi MS_U16 reg38; 739*53ee8cc1Swenshuai.xi }; 740*53ee8cc1Swenshuai.xi union { 741*53ee8cc1Swenshuai.xi struct { 742*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mdc_gob_frame_id:2; // H263 gob frame id 743*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mdc_h264_nal_ref_idc:2; // nal_ref_idc 744*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mdc_h264_nal_unit_type:1; // 0/1: 1/5 745*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mdc_h264_fnum_bits:2; // H264 frame num bits 746*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mdc_h264_dbf_control:1; // dbf control present flag 747*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mdc_h264_fnum_value:8; // H264 frame num value 748*53ee8cc1Swenshuai.xi }; 749*53ee8cc1Swenshuai.xi MS_U16 reg39; 750*53ee8cc1Swenshuai.xi }; 751*53ee8cc1Swenshuai.xi union { 752*53ee8cc1Swenshuai.xi struct { 753*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mdc_h264_idr_pic_id:3; 754*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mdc_h264_disable_dbf_idc:2; 755*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mdc_h264_alpha:4; // slice_alpha_c0_offset_div2 756*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mdc_h264_beta:4; // slice_beta_offset_div2 757*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mdc_h264_ridx_aor_flag:1; // reference index active override flag 758*53ee8cc1Swenshuai.xi }; 759*53ee8cc1Swenshuai.xi MS_U16 reg3a; 760*53ee8cc1Swenshuai.xi }; 761*53ee8cc1Swenshuai.xi // BSPOBUF/MVOBUF 762*53ee8cc1Swenshuai.xi union { 763*53ee8cc1Swenshuai.xi struct { 764*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_bspobuf_set_adr:1; // set bsp obuf start address(write one clear) 765*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mvobuf_set_adr:1; // set mv obuf start address (write one clear) 766*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_bspobuf_fifo_th:3; // bsp obuf threshold 767*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mvobuf_fifo_th:3; // mv obuf threshold 768*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_bsp_fdc_skip:1; // fdc skip enable; 0: fdc skip disable, 1: fdc skip enable 769*53ee8cc1Swenshuai.xi #if defined(_MFE_M1_)||defined(_MFE_AGATE_) 770*53ee8cc1Swenshuai.xi MS_U16 dummy_reg3b:5; 771*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_obuf_toggle_obuf0_status:1; // toggle buf0 status(write one clear) 772*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_obuf_toggle_obuf1_status:1; // toggle buf1 status(write one clear) 773*53ee8cc1Swenshuai.xi #elif !defined(_MFE_T8_) 774*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_txip_irfsh_mb_e1:13; // intra refresh mb end 1 775*53ee8cc1Swenshuai.xi #endif 776*53ee8cc1Swenshuai.xi }; 777*53ee8cc1Swenshuai.xi MS_U16 reg3b; 778*53ee8cc1Swenshuai.xi }; 779*53ee8cc1Swenshuai.xi union { 780*53ee8cc1Swenshuai.xi struct { 781*53ee8cc1Swenshuai.xi #if defined(_MFE_M1_)||defined(_MFE_AGATE_) 782*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_bspobuf_low:16; // bsp obuf start address 783*53ee8cc1Swenshuai.xi #else 784*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_bspobuf_sadr_low:16; // bsp obuf start address 785*53ee8cc1Swenshuai.xi #endif 786*53ee8cc1Swenshuai.xi }; 787*53ee8cc1Swenshuai.xi MS_U16 reg3c; 788*53ee8cc1Swenshuai.xi }; 789*53ee8cc1Swenshuai.xi union { 790*53ee8cc1Swenshuai.xi struct { 791*53ee8cc1Swenshuai.xi #if defined(_MFE_M1_)||defined(_MFE_AGATE_) 792*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_bspobuf_high:OUTBUF_HI_BITS; // bsp obuf address high 793*53ee8cc1Swenshuai.xi MS_U16 reg3d_dummy_bits:(16-OUTBUF_HI_BITS-2); 794*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_obuf_id:2; // 00: s0, 01: e0, 10: s1, 11: e1 795*53ee8cc1Swenshuai.xi #else 796*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_bspobuf_sadr_high:OUTBUF_HI_BITS; // bsp obuf start address 797*53ee8cc1Swenshuai.xi #endif 798*53ee8cc1Swenshuai.xi 799*53ee8cc1Swenshuai.xi }; 800*53ee8cc1Swenshuai.xi MS_U16 reg3d; 801*53ee8cc1Swenshuai.xi }; 802*53ee8cc1Swenshuai.xi union { 803*53ee8cc1Swenshuai.xi struct { 804*53ee8cc1Swenshuai.xi #if defined(_MFE_M1_)||defined(_MFE_AGATE_) 805*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_obuf_write_id_adr:1; // write to this address to enable writing of bspobuf address 806*53ee8cc1Swenshuai.xi #else 807*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_bspobuf_eadr_low:16; // bsp obuf end address 808*53ee8cc1Swenshuai.xi #endif 809*53ee8cc1Swenshuai.xi }; 810*53ee8cc1Swenshuai.xi MS_U16 reg3e; 811*53ee8cc1Swenshuai.xi }; 812*53ee8cc1Swenshuai.xi union { 813*53ee8cc1Swenshuai.xi struct { 814*53ee8cc1Swenshuai.xi #if defined(_MFE_M1_)||defined(_MFE_AGATE_) 815*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_bspobuf_hw_en:1; // enable HW obuf automatic mechanism 816*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_bspobuf_update_adr:1; // update obuf address(write one clear) 817*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_bspobuf_adr_rchk_sel:2; // obuf adr read back check selection: 0/1/2/3: s0/e0/s1/e1 818*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_bspobuf_adr_rchk_en:1; // enable bspobuf adr read back check through reg_mfe_s_bspobuf_wptr 819*53ee8cc1Swenshuai.xi MS_U16 dummy_reg3f:3; 820*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_bsp_fdc_offset:7; // bsp's fdc offset 821*53ee8cc1Swenshuai.xi #else 822*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_bspobuf_eadr_high:OUTBUF_HI_BITS; // bsp obuf end address 823*53ee8cc1Swenshuai.xi #endif 824*53ee8cc1Swenshuai.xi }; 825*53ee8cc1Swenshuai.xi MS_U16 reg3f; 826*53ee8cc1Swenshuai.xi }; 827*53ee8cc1Swenshuai.xi union { 828*53ee8cc1Swenshuai.xi struct { 829*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mvobuf_sadr_low:16; // mv obuf start address 830*53ee8cc1Swenshuai.xi }; 831*53ee8cc1Swenshuai.xi MS_U16 reg40; 832*53ee8cc1Swenshuai.xi }; 833*53ee8cc1Swenshuai.xi union { 834*53ee8cc1Swenshuai.xi struct { 835*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mvobuf_sadr_high:OUTBUF_HI_BITS; // mv obuf start address 836*53ee8cc1Swenshuai.xi }; 837*53ee8cc1Swenshuai.xi MS_U16 reg41; 838*53ee8cc1Swenshuai.xi }; 839*53ee8cc1Swenshuai.xi union { 840*53ee8cc1Swenshuai.xi struct { 841*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_bsp_bit_cnt_low:16; // encoded bit count (one frame) 842*53ee8cc1Swenshuai.xi }; 843*53ee8cc1Swenshuai.xi MS_U16 reg42; 844*53ee8cc1Swenshuai.xi }; 845*53ee8cc1Swenshuai.xi union { 846*53ee8cc1Swenshuai.xi struct { 847*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_bsp_bit_cnt_high:BITCOUNT_HI_BITS; // encoded bit count (one frame) 848*53ee8cc1Swenshuai.xi }; 849*53ee8cc1Swenshuai.xi MS_U16 reg43; 850*53ee8cc1Swenshuai.xi }; 851*53ee8cc1Swenshuai.xi union { 852*53ee8cc1Swenshuai.xi struct { 853*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_bspobuf_wptr_low:16; // bspobuf write pointer (8 byte unit) 854*53ee8cc1Swenshuai.xi }; 855*53ee8cc1Swenshuai.xi MS_U16 reg44; 856*53ee8cc1Swenshuai.xi }; 857*53ee8cc1Swenshuai.xi union { 858*53ee8cc1Swenshuai.xi struct { 859*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_bspobuf_wptr_high:OUTBUF_HI_BITS; // bspobuf write pointer (8 byte unit) 860*53ee8cc1Swenshuai.xi }; 861*53ee8cc1Swenshuai.xi MS_U16 reg45; 862*53ee8cc1Swenshuai.xi }; 863*53ee8cc1Swenshuai.xi // FDC 864*53ee8cc1Swenshuai.xi union { 865*53ee8cc1Swenshuai.xi struct { 866*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_fdc_bs:16; // cpu to fdc bitstream data 867*53ee8cc1Swenshuai.xi }; 868*53ee8cc1Swenshuai.xi MS_U16 reg46; 869*53ee8cc1Swenshuai.xi }; 870*53ee8cc1Swenshuai.xi union { 871*53ee8cc1Swenshuai.xi struct { 872*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_fdc_bs_len:5; // cpu to fdc bitstream len; 0 ~ 16 873*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_fdc_bs_count:10; // cpu to fdc round count 874*53ee8cc1Swenshuai.xi }; 875*53ee8cc1Swenshuai.xi MS_U16 reg47; 876*53ee8cc1Swenshuai.xi }; 877*53ee8cc1Swenshuai.xi // [Table Control] 878*53ee8cc1Swenshuai.xi union { 879*53ee8cc1Swenshuai.xi struct { 880*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_fdc_ack:1; // fdc to cpu ack; 0/1: frame data pool not empty/frame data pool empty; 48x64 bits of space 881*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_fdc_done_clr:1; // fdc done clear (write one clear) 882*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_fdc_done:1; // fdc done; indicate to CPU that data has been written to internal buffer 883*53ee8cc1Swenshuai.xi MS_U16 reg48_dummy:8; 884*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_fdc_bs_vld:1; // set for bitstream write out (write one clear) 885*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_tbc_en:1; // set for table read & write ; 1: enable, 0: disable (write one clear) 886*53ee8cc1Swenshuai.xi }; 887*53ee8cc1Swenshuai.xi MS_U16 reg48; 888*53ee8cc1Swenshuai.xi }; 889*53ee8cc1Swenshuai.xi union { 890*53ee8cc1Swenshuai.xi struct { 891*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_tbc_rw:1; // table mode; 0: read, 1: write 892*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_tbc_done_clr:1; // table done clear (write one clear) 893*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_tbc_done:1; // table done; indicate to CPU that (1) data has been written to table (2) table output is ready at reg_mfe_s_tbc_rdata 894*53ee8cc1Swenshuai.xi MS_U16 reg49_dummy:5; 895*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_tbc_adr:6; // table address 896*53ee8cc1Swenshuai.xi }; 897*53ee8cc1Swenshuai.xi MS_U16 reg49; 898*53ee8cc1Swenshuai.xi }; 899*53ee8cc1Swenshuai.xi union { 900*53ee8cc1Swenshuai.xi struct { 901*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_tbc_wdata:16; // table write data 902*53ee8cc1Swenshuai.xi }; 903*53ee8cc1Swenshuai.xi MS_U16 reg4a; 904*53ee8cc1Swenshuai.xi }; 905*53ee8cc1Swenshuai.xi union { 906*53ee8cc1Swenshuai.xi struct { 907*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_tbc_rdata:16; // table read data 908*53ee8cc1Swenshuai.xi }; 909*53ee8cc1Swenshuai.xi MS_U16 reg4b; 910*53ee8cc1Swenshuai.xi }; 911*53ee8cc1Swenshuai.xi // [Get Neighbor] 912*53ee8cc1Swenshuai.xi union { 913*53ee8cc1Swenshuai.xi struct { 914*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_gn_sadr_low:16; // gn base adr low 915*53ee8cc1Swenshuai.xi }; 916*53ee8cc1Swenshuai.xi MS_U16 reg4c; 917*53ee8cc1Swenshuai.xi }; 918*53ee8cc1Swenshuai.xi union { 919*53ee8cc1Swenshuai.xi struct { 920*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_gn_sadr_high:OUTBUF_HI_BITS; // gn base adr high 921*53ee8cc1Swenshuai.xi #ifdef _MFE_M1_ 922*53ee8cc1Swenshuai.xi #if (16-OUTBUF_HI_BITS-1>0) 923*53ee8cc1Swenshuai.xi MS_U16 dummy_reg4d:16-OUTBUF_HI_BITS-1; 924*53ee8cc1Swenshuai.xi #endif 925*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_gn_sadr_mode:1; // 1: gn save data in one frame 0: gn save data in one row 926*53ee8cc1Swenshuai.xi #endif 927*53ee8cc1Swenshuai.xi }; 928*53ee8cc1Swenshuai.xi MS_U16 reg4d; 929*53ee8cc1Swenshuai.xi }; 930*53ee8cc1Swenshuai.xi union { 931*53ee8cc1Swenshuai.xi struct { 932*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_gn_mvibuf_sadr_low:16; // mv ibuf start address low 933*53ee8cc1Swenshuai.xi }; 934*53ee8cc1Swenshuai.xi MS_U16 reg4e; 935*53ee8cc1Swenshuai.xi }; 936*53ee8cc1Swenshuai.xi union { 937*53ee8cc1Swenshuai.xi struct { 938*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_gn_mvibuf_sadr_high:OUTBUF_HI_BITS; // mv ibuf start address high 939*53ee8cc1Swenshuai.xi #if defined(MFE_DBF_PACKED_MODE) 940*53ee8cc1Swenshuai.xi #if (16-OUTBUF_HI_BITS-2 > 0) 941*53ee8cc1Swenshuai.xi MS_U16 reg4f_dummy:(16-OUTBUF_HI_BITS-2); 942*53ee8cc1Swenshuai.xi #endif 943*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_gn_bwr_mode:2; // bit[0]: 0, DBF bottom row data write to reconstructed address, 944*53ee8cc1Swenshuai.xi // 1, DBF bottom row data write to IMI 945*53ee8cc1Swenshuai.xi // bit[1]: DBF packed mode. 0: disable, 1: enable 946*53ee8cc1Swenshuai.xi #endif 947*53ee8cc1Swenshuai.xi }; 948*53ee8cc1Swenshuai.xi MS_U16 reg4f; 949*53ee8cc1Swenshuai.xi }; 950*53ee8cc1Swenshuai.xi union { 951*53ee8cc1Swenshuai.xi struct { 952*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_rp0_promote:4; 953*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_rp1_promote:4; 954*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_rp2_promote:4; 955*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_rp3_promote:4; 956*53ee8cc1Swenshuai.xi }; 957*53ee8cc1Swenshuai.xi MS_U16 reg51; 958*53ee8cc1Swenshuai.xi }; 959*53ee8cc1Swenshuai.xi union { 960*53ee8cc1Swenshuai.xi struct { 961*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_mrpriority_thd:4; 962*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_mwpriority_thd:4; 963*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_rp4_occupy:4; 964*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_rp4_promote:4; 965*53ee8cc1Swenshuai.xi }; 966*53ee8cc1Swenshuai.xi MS_U16 reg55; 967*53ee8cc1Swenshuai.xi }; 968*53ee8cc1Swenshuai.xi union { 969*53ee8cc1Swenshuai.xi struct { 970*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_mrpriority_sw:2; // mfe2mi_rpriority software programmable 971*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_mr_timeout_ref:1; //miu read burst timeout count start point 972*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_mr_nwait_mw:1; //miu read not wait mi2mfe_wrdy 973*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_mwpriority_sw:2; //mfe2mi_wpriority software programmable 974*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_mw_timeout_ref:1; //miu write burst timeout count start point 975*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_mw_nwait_mr:1; //miu read not wait mi2mfe_wrdy 976*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_mr_pending:4; //max. pending read requests to miu 977*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_32b_ad_nswap:1; //32bits miu address not swap. only for 32bits mode 978*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_miu_wmode:1; //0/1: original miu protocol/new miu protocol(wd_en) 979*53ee8cc1Swenshuai.xi 980*53ee8cc1Swenshuai.xi }; 981*53ee8cc1Swenshuai.xi MS_U16 reg56; 982*53ee8cc1Swenshuai.xi }; 983*53ee8cc1Swenshuai.xi union { 984*53ee8cc1Swenshuai.xi struct { 985*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_ubound_0_low:16; // MIU protect for MPEG4 BSP obuf 986*53ee8cc1Swenshuai.xi }; 987*53ee8cc1Swenshuai.xi MS_U16 reg58; 988*53ee8cc1Swenshuai.xi }; 989*53ee8cc1Swenshuai.xi union { 990*53ee8cc1Swenshuai.xi struct { 991*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_ubound_0_high:OUTBUF_HI_BITS; // MIU protect for MPEG4 BSP obuf 992*53ee8cc1Swenshuai.xi MS_U16 reg59_dummy:(16-OUTBUF_HI_BITS); 993*53ee8cc1Swenshuai.xi 994*53ee8cc1Swenshuai.xi }; 995*53ee8cc1Swenshuai.xi MS_U16 reg59; 996*53ee8cc1Swenshuai.xi }; 997*53ee8cc1Swenshuai.xi union { 998*53ee8cc1Swenshuai.xi struct { 999*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_lbound_0_low:16; // MIU protect for MPEG4 BSP obuf 1000*53ee8cc1Swenshuai.xi }; 1001*53ee8cc1Swenshuai.xi MS_U16 reg5a; 1002*53ee8cc1Swenshuai.xi }; 1003*53ee8cc1Swenshuai.xi union { 1004*53ee8cc1Swenshuai.xi struct { 1005*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_lbound_0_high:OUTBUF_HI_BITS; // MIU protect for MPEG4 BSP obuf 1006*53ee8cc1Swenshuai.xi #ifdef _MFE_A3_ 1007*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_miu_bound_en_0:1; // 1008*53ee8cc1Swenshuai.xi #endif 1009*53ee8cc1Swenshuai.xi }; 1010*53ee8cc1Swenshuai.xi MS_U16 reg5b; 1011*53ee8cc1Swenshuai.xi }; 1012*53ee8cc1Swenshuai.xi union { 1013*53ee8cc1Swenshuai.xi struct { 1014*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_ubound_1_low:16; // MIU Upper bound protect for MPEG4 MC obuf rec 1015*53ee8cc1Swenshuai.xi }; 1016*53ee8cc1Swenshuai.xi MS_U16 reg5c; 1017*53ee8cc1Swenshuai.xi }; 1018*53ee8cc1Swenshuai.xi union { 1019*53ee8cc1Swenshuai.xi struct { 1020*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_ubound_1_high:OUTBUF_HI_BITS; // MIU Upper bound protect for MPEG4 MC obuf rec 1021*53ee8cc1Swenshuai.xi }; 1022*53ee8cc1Swenshuai.xi MS_U16 reg5d; 1023*53ee8cc1Swenshuai.xi }; 1024*53ee8cc1Swenshuai.xi union { 1025*53ee8cc1Swenshuai.xi struct { 1026*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_lbound_1_low:16; // MIU Lower bound protect for MPEG4 MC obuf 1027*53ee8cc1Swenshuai.xi }; 1028*53ee8cc1Swenshuai.xi MS_U16 reg5e; 1029*53ee8cc1Swenshuai.xi }; 1030*53ee8cc1Swenshuai.xi union { 1031*53ee8cc1Swenshuai.xi struct { 1032*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_lbound_1_high:OUTBUF_HI_BITS; // MIU Lower bound protect for MPEG4 MC obuf 1033*53ee8cc1Swenshuai.xi #ifdef _MFE_A3_ 1034*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_miu_bound_en_1:1; // 1035*53ee8cc1Swenshuai.xi #endif 1036*53ee8cc1Swenshuai.xi }; 1037*53ee8cc1Swenshuai.xi MS_U16 reg5f; 1038*53ee8cc1Swenshuai.xi }; 1039*53ee8cc1Swenshuai.xi union { 1040*53ee8cc1Swenshuai.xi struct { 1041*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_ubound_2_low:16; // MIU protect for MPEG4 MV obuf 1042*53ee8cc1Swenshuai.xi }; 1043*53ee8cc1Swenshuai.xi MS_U16 reg60; 1044*53ee8cc1Swenshuai.xi }; 1045*53ee8cc1Swenshuai.xi union { 1046*53ee8cc1Swenshuai.xi struct { 1047*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_ubound_2_high:OUTBUF_HI_BITS; // MIU protect for MPEG4 MV obuf 1048*53ee8cc1Swenshuai.xi }; 1049*53ee8cc1Swenshuai.xi MS_U16 reg61; 1050*53ee8cc1Swenshuai.xi }; 1051*53ee8cc1Swenshuai.xi union { 1052*53ee8cc1Swenshuai.xi struct { 1053*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_lbound_2_low:16; // MIU protect for MPEG4 MV obuf 1054*53ee8cc1Swenshuai.xi }; 1055*53ee8cc1Swenshuai.xi MS_U16 reg62; 1056*53ee8cc1Swenshuai.xi }; 1057*53ee8cc1Swenshuai.xi union { 1058*53ee8cc1Swenshuai.xi struct { 1059*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_lbound_2_high:OUTBUF_HI_BITS; // MIU protect for MPEG4 MV obuf 1060*53ee8cc1Swenshuai.xi #ifdef _MFE_A3_ 1061*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_miu_bound_en_2:1; // 1062*53ee8cc1Swenshuai.xi #endif 1063*53ee8cc1Swenshuai.xi }; 1064*53ee8cc1Swenshuai.xi MS_U16 reg63; 1065*53ee8cc1Swenshuai.xi }; 1066*53ee8cc1Swenshuai.xi union { 1067*53ee8cc1Swenshuai.xi struct { 1068*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_ubound_3_low:16; // MIU protect for MPEG4 GN 1069*53ee8cc1Swenshuai.xi }; 1070*53ee8cc1Swenshuai.xi MS_U16 reg64; 1071*53ee8cc1Swenshuai.xi }; 1072*53ee8cc1Swenshuai.xi union { 1073*53ee8cc1Swenshuai.xi struct { 1074*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_ubound_3_high:OUTBUF_HI_BITS; // MIU protect for MPEG4 GN 1075*53ee8cc1Swenshuai.xi }; 1076*53ee8cc1Swenshuai.xi MS_U16 reg65; 1077*53ee8cc1Swenshuai.xi }; 1078*53ee8cc1Swenshuai.xi union { 1079*53ee8cc1Swenshuai.xi struct { 1080*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_lbound_3_low:16; // MIU protect for MPEG4 GN 1081*53ee8cc1Swenshuai.xi }; 1082*53ee8cc1Swenshuai.xi MS_U16 reg66; 1083*53ee8cc1Swenshuai.xi }; 1084*53ee8cc1Swenshuai.xi union { 1085*53ee8cc1Swenshuai.xi struct { 1086*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_lbound_3_high:OUTBUF_HI_BITS; // MIU protect for MPEG4 GN 1087*53ee8cc1Swenshuai.xi #ifdef _MFE_A3_ 1088*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_miu_bound_en_3:1; // 1089*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_miu_off:1; // 1090*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_miu_bound_err:1; // 1091*53ee8cc1Swenshuai.xi #endif 1092*53ee8cc1Swenshuai.xi }; 1093*53ee8cc1Swenshuai.xi MS_U16 reg67; 1094*53ee8cc1Swenshuai.xi }; 1095*53ee8cc1Swenshuai.xi #if defined(_MFE_M1_)||defined(_MFE_AGATE_) 1096*53ee8cc1Swenshuai.xi union { 1097*53ee8cc1Swenshuai.xi struct { 1098*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_eimi_block:1; // miu emi/imi block, 0: disable 1099*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_lbwd_mode:1; // low bandwidth mode, 0: disable 1100*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_imi_burst_thd:5;//imi write burst bunch up threshold 1101*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_imi_timeout:3; //imi write burst timeout 1102*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_imilast_thd:4; //auto mfe2imi_last threshold 1103*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_prfh_cryc_en:1; // 0: disable prfh_cryc circuit, 1: enable prfh_cryc circuit 1104*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_prfh_refy_en:1; // 0: disable prfh_refy circuit, 1: enable prfh_refy circuit 1105*53ee8cc1Swenshuai.xi }; 1106*53ee8cc1Swenshuai.xi MS_U16 reg68; 1107*53ee8cc1Swenshuai.xi }; 1108*53ee8cc1Swenshuai.xi union { 1109*53ee8cc1Swenshuai.xi struct { 1110*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_pat_gen_init:16; // pattern generation initial value 1111*53ee8cc1Swenshuai.xi }; 1112*53ee8cc1Swenshuai.xi MS_U16 reg69; 1113*53ee8cc1Swenshuai.xi }; 1114*53ee8cc1Swenshuai.xi union { 1115*53ee8cc1Swenshuai.xi struct { 1116*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_bspobuf_idx:2; // HW obuf index(0->1->2->3->0->1�K) 1117*53ee8cc1Swenshuai.xi // SW obuf index(00->01->11->10->00...) 1118*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_obuf0_status:1; 1119*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_obuf1_status:1; 1120*53ee8cc1Swenshuai.xi // reg_mfe_s_bspobuf_adr_status:6 {fifo_not_full, fifo_not_empty, enable_obufadr_update, obufadr_update_cnt[2:0]} 1121*53ee8cc1Swenshuai.xi MS_U16 obufadr_update_cnt:3; 1122*53ee8cc1Swenshuai.xi MS_U16 enable_obufadr_update:1; 1123*53ee8cc1Swenshuai.xi MS_U16 fifo_not_empty:1; 1124*53ee8cc1Swenshuai.xi MS_U16 fifo_not_full:1; 1125*53ee8cc1Swenshuai.xi }; 1126*53ee8cc1Swenshuai.xi MS_U16 reg6a; 1127*53ee8cc1Swenshuai.xi }; 1128*53ee8cc1Swenshuai.xi union { 1129*53ee8cc1Swenshuai.xi struct { 1130*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_imi_sadr_low:16; // imi base address for low bandwidth mode (in 8-byte unit) 1131*53ee8cc1Swenshuai.xi }; 1132*53ee8cc1Swenshuai.xi MS_U16 reg6b; 1133*53ee8cc1Swenshuai.xi }; 1134*53ee8cc1Swenshuai.xi union { 1135*53ee8cc1Swenshuai.xi struct { 1136*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_imi_sadr_high:IMIBUF_HI_BITS; 1137*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_rimi_force:1; 1138*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_imi_cache_size:2; // imi cache size (0: 32kB, 1:64kB, 2:8kB, 3:16kB) 1139*53ee8cc1Swenshuai.xi }; 1140*53ee8cc1Swenshuai.xi MS_U16 reg6c; 1141*53ee8cc1Swenshuai.xi }; 1142*53ee8cc1Swenshuai.xi union { 1143*53ee8cc1Swenshuai.xi struct { 1144*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_imipriority_thd:4; //hardware mfe2imi_priority threshold 1145*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_marb_imipriority_sw:2; //mfe2imi_priority software programmable 1146*53ee8cc1Swenshuai.xi MS_U16 dummy:2; 1147*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_prfh_cryc_idle_cnt:4; // prfh idle count (x 16T) for prfh_cryc 1148*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_prfh_refy_idle_cnt:4; // prfh idle count (x 16T) for prfh_refy 1149*53ee8cc1Swenshuai.xi }; 1150*53ee8cc1Swenshuai.xi MS_U16 reg6d; 1151*53ee8cc1Swenshuai.xi }; 1152*53ee8cc1Swenshuai.xi #endif 1153*53ee8cc1Swenshuai.xi union { 1154*53ee8cc1Swenshuai.xi struct { 1155*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mbr_qstep_min:7; // qstep min (note: max value of qstep_min is 128 because condition is qstep <= qstep_min) 1156*53ee8cc1Swenshuai.xi }; 1157*53ee8cc1Swenshuai.xi MS_U16 reg6e; 1158*53ee8cc1Swenshuai.xi }; 1159*53ee8cc1Swenshuai.xi union { 1160*53ee8cc1Swenshuai.xi struct { 1161*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mbr_qstep_max:13; // qstep max 1162*53ee8cc1Swenshuai.xi }; 1163*53ee8cc1Swenshuai.xi MS_U16 reg6f; 1164*53ee8cc1Swenshuai.xi }; 1165*53ee8cc1Swenshuai.xi union { 1166*53ee8cc1Swenshuai.xi struct { 1167*53ee8cc1Swenshuai.xi #if defined(_MFE_M1_)||defined(_MFE_AGATE_) 1168*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_debug_mode:7; // debug mode 1169*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_debug_trig_cycle:9; // wait (8 * reg_mfe_g_debug_trig_cycle) cycles 1170*53ee8cc1Swenshuai.xi #else 1171*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_debug_mode:6; // debug mode 1172*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_debug_trig_cycle:10; // wait (8 * reg_mfe_g_debug_trig_cycle) cycles 1173*53ee8cc1Swenshuai.xi #endif 1174*53ee8cc1Swenshuai.xi }; 1175*53ee8cc1Swenshuai.xi MS_U16 reg70; 1176*53ee8cc1Swenshuai.xi }; 1177*53ee8cc1Swenshuai.xi union { 1178*53ee8cc1Swenshuai.xi struct { 1179*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_debug_trig_mbx:9; // debug trigger mbx 1180*53ee8cc1Swenshuai.xi }; 1181*53ee8cc1Swenshuai.xi MS_U16 reg71; 1182*53ee8cc1Swenshuai.xi }; 1183*53ee8cc1Swenshuai.xi union { 1184*53ee8cc1Swenshuai.xi struct { 1185*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_debug_trig_mby:9; // debug trigger mby 1186*53ee8cc1Swenshuai.xi }; 1187*53ee8cc1Swenshuai.xi MS_U16 reg72; 1188*53ee8cc1Swenshuai.xi }; 1189*53ee8cc1Swenshuai.xi union { 1190*53ee8cc1Swenshuai.xi struct { 1191*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_debug_trig:1; // reg trigger (write one clear) 1192*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_debug_trig_mode:2; // debug trigger mode; 0/1/2/3: reg_trigger/3rd stage (mbx, mby)/frame start 1193*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_debug_en:1; // debug enable 1194*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_crc_mode:4; //'h0: Disable,��hc: bsp obuf, 'hd: mc obuf, 'hd: mc obuf 1195*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_debug_tcycle_chk_en:1; //enable total cycle check 1196*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_debug_tcycle_chk_sel:1; //select total cycle and report it on reg_mfe_g_crc_result[15:0] 1197*53ee8cc1Swenshuai.xi #if defined(_MFE_M1_)||defined(_MFE_AGATE_) 1198*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_sw_buffer_mode:1; // 0/1: hw/sw buffer mode 1199*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_sw_row_done:1; // sw row done (1T clk_jpe) (write one clear) 1200*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_sw_vs:1; // sw vsync (1T clk_jpe) (write one clear) 1201*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_pat_gen_en:1; // enable pattern generation 1202*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_row_down_irq_en:1; // row done irq enable; 0: disable, 1: enable 1203*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_vs_irq_en:1; // vs irq enable; 0: disable, 1: enable 1204*53ee8cc1Swenshuai.xi #endif 1205*53ee8cc1Swenshuai.xi }; 1206*53ee8cc1Swenshuai.xi MS_U16 reg73; 1207*53ee8cc1Swenshuai.xi }; 1208*53ee8cc1Swenshuai.xi union { 1209*53ee8cc1Swenshuai.xi struct { 1210*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_debug_state0:16; // "debug state for TXIP/ECDB submodule {txip2q_en, txip2iq_en, txip2mbr_en, txip2zmem_en, txip2dpcm_en, 1211*53ee8cc1Swenshuai.xi // txip2mve_en, txip2mcobuf_en, txip2mbldr_en, ecdb2mdc_en, 1212*53ee8cc1Swenshuai.xi // ecdb2rlc_en, ecdb2vlc_en, 5'd0}" 1213*53ee8cc1Swenshuai.xi }; 1214*53ee8cc1Swenshuai.xi MS_U16 reg74; 1215*53ee8cc1Swenshuai.xi }; 1216*53ee8cc1Swenshuai.xi union { 1217*53ee8cc1Swenshuai.xi struct { 1218*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_debug_state1; // "debug state for ME submodule {3'd0, load_w4_ok, load_w3_ok, load_w2_ok, load_w1_ok, load_w0_ok, 2'd0, 1219*53ee8cc1Swenshuai.xi // busy_ime, busy_fme, busy_mesr, busy_iacost, end_this_mb, init_this_mb" 1220*53ee8cc1Swenshuai.xi }; 1221*53ee8cc1Swenshuai.xi MS_U16 reg75; 1222*53ee8cc1Swenshuai.xi }; 1223*53ee8cc1Swenshuai.xi union { 1224*53ee8cc1Swenshuai.xi struct { 1225*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_crc_result0:16; // CRC64[15..0] 1226*53ee8cc1Swenshuai.xi }; 1227*53ee8cc1Swenshuai.xi MS_U16 reg76; 1228*53ee8cc1Swenshuai.xi }; 1229*53ee8cc1Swenshuai.xi union { 1230*53ee8cc1Swenshuai.xi struct { 1231*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_crc_result1:16; // CRC64[31..16] 1232*53ee8cc1Swenshuai.xi }; 1233*53ee8cc1Swenshuai.xi MS_U16 reg77; 1234*53ee8cc1Swenshuai.xi }; 1235*53ee8cc1Swenshuai.xi union { 1236*53ee8cc1Swenshuai.xi struct { 1237*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_crc_result2:16; // CRC64[47..32] 1238*53ee8cc1Swenshuai.xi }; 1239*53ee8cc1Swenshuai.xi MS_U16 reg78; 1240*53ee8cc1Swenshuai.xi }; 1241*53ee8cc1Swenshuai.xi union { 1242*53ee8cc1Swenshuai.xi struct { 1243*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_crc_result3:16; // CRC64[63..48] 1244*53ee8cc1Swenshuai.xi }; 1245*53ee8cc1Swenshuai.xi MS_U16 reg79; 1246*53ee8cc1Swenshuai.xi }; 1247*53ee8cc1Swenshuai.xi union { 1248*53ee8cc1Swenshuai.xi struct { 1249*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_bist_fail0; 1250*53ee8cc1Swenshuai.xi }; 1251*53ee8cc1Swenshuai.xi MS_U16 reg7a; 1252*53ee8cc1Swenshuai.xi }; 1253*53ee8cc1Swenshuai.xi union { 1254*53ee8cc1Swenshuai.xi struct { 1255*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_bist_fail1; 1256*53ee8cc1Swenshuai.xi }; 1257*53ee8cc1Swenshuai.xi MS_U16 reg7b; 1258*53ee8cc1Swenshuai.xi }; 1259*53ee8cc1Swenshuai.xi union { 1260*53ee8cc1Swenshuai.xi struct { 1261*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_bist_fail2; 1262*53ee8cc1Swenshuai.xi }; 1263*53ee8cc1Swenshuai.xi MS_U16 reg7c; 1264*53ee8cc1Swenshuai.xi }; 1265*53ee8cc1Swenshuai.xi union { 1266*53ee8cc1Swenshuai.xi struct { 1267*53ee8cc1Swenshuai.xi #ifdef _MFE_M1_ 1268*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_txip_eco0:1;//0: original, 1: fix mbldr_cry_done, mbldr_crc_done bug 1269*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_txip_eco1:1; //reserved registers 1270*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_rsv0:14; //reserved registers 1271*53ee8cc1Swenshuai.xi #elif defined(_MFE_MUJI_) || defined(_MFE_MONET_) || defined(_MFE_MESSI_) || defined(_MFE_MANHATTAN_) || defined(_MFE_MASERATI_) || defined(_MFE_MAXIM_) || defined(_MFE_KANO_) || defined(_MFE_K6_) 1272*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_txip_eco0:1; //0: fix mbldr_cry_done, mbldr_crc_done bug, 1: original 1273*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_dummy0:1; 1274*53ee8cc1Swenshuai.xi MS_U16 reg_eco_mreq_stallgo:1; 1275*53ee8cc1Swenshuai.xi MS_U16 reg_eco_marb_stallgo:1; 1276*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_dummy1:1; 1277*53ee8cc1Swenshuai.xi MS_U16 reg_eco_bsp_stuffing:1; 1278*53ee8cc1Swenshuai.xi MS_U16 reg_eco_bsp_rdy_fix:1; 1279*53ee8cc1Swenshuai.xi MS_U16 reg_eco_bsp_multi_slice_fix:1; 1280*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_reserved2:6; 1281*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_secure_obufadr:1; 1282*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_secure_miu_sel:1; 1283*53ee8cc1Swenshuai.xi #else 1284*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_txip_eco0:1; //0: original, 1: fix mbldr_cry_done, mbldr_crc_done bug 1285*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_txip_eco1:1; //reserved registers 1286*53ee8cc1Swenshuai.xi MS_U16 reg_eco_mreq_stallgo:1; //reg_eco_mreq_stallgo 1287*53ee8cc1Swenshuai.xi MS_U16 reg_eco_marb_stallgo:1; //reg_eco_marb_stallgo 1288*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_dummy:2; 1289*53ee8cc1Swenshuai.xi MS_U16 reg_eco_bsp_rdy_fix:1; 1290*53ee8cc1Swenshuai.xi MS_U16 reg_eco_bsp_multi_slice_fix:1; 1291*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_reg7d_dummy2:6; 1292*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_secure_obufadr:1; 1293*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_secure_miu_sel:1; 1294*53ee8cc1Swenshuai.xi #endif 1295*53ee8cc1Swenshuai.xi }; 1296*53ee8cc1Swenshuai.xi MS_U16 reg7d; 1297*53ee8cc1Swenshuai.xi }; 1298*53ee8cc1Swenshuai.xi union { 1299*53ee8cc1Swenshuai.xi struct { 1300*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_rsv1; 1301*53ee8cc1Swenshuai.xi }; 1302*53ee8cc1Swenshuai.xi MS_U16 reg7e; 1303*53ee8cc1Swenshuai.xi }; 1304*53ee8cc1Swenshuai.xi union { 1305*53ee8cc1Swenshuai.xi struct { 1306*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_rsv2:12; 1307*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_mcc_prldr_mode:4; 1308*53ee8cc1Swenshuai.xi }; 1309*53ee8cc1Swenshuai.xi MS_U16 reg7f; 1310*53ee8cc1Swenshuai.xi }; 1311*53ee8cc1Swenshuai.xi 1312*53ee8cc1Swenshuai.xi } MFE_REG; 1313*53ee8cc1Swenshuai.xi 1314*53ee8cc1Swenshuai.xi typedef struct _mfe_reg1_ { 1315*53ee8cc1Swenshuai.xi // [GLOBAL SETTING] 1316*53ee8cc1Swenshuai.xi union { 1317*53ee8cc1Swenshuai.xi struct { 1318*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_pp_en:1; // Video Stabilization Enable, 1: on, 0: off 1319*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_pp_mw_burst_thd:5; // MI write burst bunch up threshold 1320*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_pp_mw_timeout:3; // IMI write burst timeout 1321*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_pp_mw_timeout_ref:1; // IMI write burst timeout count start point 1322*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_pp_burst_split:2; // 0: disable; N: MIU Request IDLE ��N�� cycles with every last signal 1323*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_pp_32b_ad_nswap:1; // 32bits miu address not swap. only for 32bits mode 1324*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_00_dummy:3; // dummy bits 1325*53ee8cc1Swenshuai.xi }; 1326*53ee8cc1Swenshuai.xi MS_U16 reg00; 1327*53ee8cc1Swenshuai.xi }; 1328*53ee8cc1Swenshuai.xi union { 1329*53ee8cc1Swenshuai.xi struct { 1330*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_pp_mwlast_thd:5; // auto mfepp2imi_wlast threshold 1331*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_pp_mwpriority_sw:2; // mfepp2imi_wpriority software programmable 1332*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_pp_mwpriority_thd:4; // hardware mfepp2imi_wpriority threshold 1333*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_pp_mrlast_thd:5; // auto mfepp2mi_rlast threshold 1334*53ee8cc1Swenshuai.xi }; 1335*53ee8cc1Swenshuai.xi MS_U16 reg01; 1336*53ee8cc1Swenshuai.xi }; 1337*53ee8cc1Swenshuai.xi union { 1338*53ee8cc1Swenshuai.xi struct { 1339*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_pp_mrpriority_sw:2; // mfepp2mi_rpriority software programmable 1340*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_pp_mrpriority_thd:4; // hardware mfepp2mi_rpriority threshold 1341*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_02_dummy:10; 1342*53ee8cc1Swenshuai.xi }; 1343*53ee8cc1Swenshuai.xi MS_U16 reg02; 1344*53ee8cc1Swenshuai.xi }; 1345*53ee8cc1Swenshuai.xi union { 1346*53ee8cc1Swenshuai.xi struct { 1347*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_pp_buf0_badr_y_low:16; // Current Y IMI buffer 0 base address( 256 bytes aligned ) 1348*53ee8cc1Swenshuai.xi }; 1349*53ee8cc1Swenshuai.xi MS_U16 reg03; 1350*53ee8cc1Swenshuai.xi }; 1351*53ee8cc1Swenshuai.xi union { 1352*53ee8cc1Swenshuai.xi struct { 1353*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_pp_buf0_badr_y_high:8; // Current Y IMI buffer 0 base address( 256 bytes aligned ) 1354*53ee8cc1Swenshuai.xi }; 1355*53ee8cc1Swenshuai.xi MS_U16 reg04; 1356*53ee8cc1Swenshuai.xi }; 1357*53ee8cc1Swenshuai.xi union { 1358*53ee8cc1Swenshuai.xi struct { 1359*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_pp_buf0_badr_c_low:16; // Current CbCr IMI buffer 0 base address( 256 bytes aligned ) 1360*53ee8cc1Swenshuai.xi }; 1361*53ee8cc1Swenshuai.xi MS_U16 reg05; 1362*53ee8cc1Swenshuai.xi }; 1363*53ee8cc1Swenshuai.xi union { 1364*53ee8cc1Swenshuai.xi struct { 1365*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_pp_buf0_badr_c_high:8; // Current CbCr IMI buffer 0 base address( 256 bytes aligned ) 1366*53ee8cc1Swenshuai.xi }; 1367*53ee8cc1Swenshuai.xi MS_U16 reg06; 1368*53ee8cc1Swenshuai.xi }; 1369*53ee8cc1Swenshuai.xi union { 1370*53ee8cc1Swenshuai.xi struct { 1371*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_pp_buf1_badr_y_low:16; // Current Y IMI buffer 1 base address( 256 bytes aligned ) 1372*53ee8cc1Swenshuai.xi }; 1373*53ee8cc1Swenshuai.xi MS_U16 reg07; 1374*53ee8cc1Swenshuai.xi }; 1375*53ee8cc1Swenshuai.xi union { 1376*53ee8cc1Swenshuai.xi struct { 1377*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_pp_buf1_badr_y_high:8; // Current Y IMI buffer 1 base address( 256 bytes aligned ) 1378*53ee8cc1Swenshuai.xi }; 1379*53ee8cc1Swenshuai.xi MS_U16 reg08; 1380*53ee8cc1Swenshuai.xi }; 1381*53ee8cc1Swenshuai.xi union { 1382*53ee8cc1Swenshuai.xi struct { 1383*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_pp_buf1_badr_c_low:16; // Current CbCr IMI buffer 1 base address( 256 bytes aligned ) 1384*53ee8cc1Swenshuai.xi }; 1385*53ee8cc1Swenshuai.xi MS_U16 reg09; 1386*53ee8cc1Swenshuai.xi }; 1387*53ee8cc1Swenshuai.xi union { 1388*53ee8cc1Swenshuai.xi struct { 1389*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_pp_buf1_badr_c_high:8; // Current CbCr IMI buffer 1 base address( 256 bytes aligned ) 1390*53ee8cc1Swenshuai.xi }; 1391*53ee8cc1Swenshuai.xi MS_U16 reg0a; 1392*53ee8cc1Swenshuai.xi }; 1393*53ee8cc1Swenshuai.xi union { 1394*53ee8cc1Swenshuai.xi struct { 1395*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_mb_pitch:12; // mb pitch (x-direction) 1396*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_mb_pitch_en:1; // 0: mb pitch off, 1: mb pitch enabled 1397*53ee8cc1Swenshuai.xi }; 1398*53ee8cc1Swenshuai.xi MS_U16 reg0b; 1399*53ee8cc1Swenshuai.xi }; 1400*53ee8cc1Swenshuai.xi union { 1401*53ee8cc1Swenshuai.xi struct { 1402*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_capture_width_y:12; // Capture input frame width (Luma Pels) 1403*53ee8cc1Swenshuai.xi }; 1404*53ee8cc1Swenshuai.xi MS_U16 reg10; 1405*53ee8cc1Swenshuai.xi }; 1406*53ee8cc1Swenshuai.xi union { 1407*53ee8cc1Swenshuai.xi struct { 1408*53ee8cc1Swenshuai.xi #if defined(HW_SUPPORT_ANDROID_YV12) 1409*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_capture_width_c:12; // Capture input frame width (Chroma Pels) 1410*53ee8cc1Swenshuai.xi #else 1411*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_capture_hright_y:12; // Capture input frame height (Luma Pels) 1412*53ee8cc1Swenshuai.xi #endif 1413*53ee8cc1Swenshuai.xi }; 1414*53ee8cc1Swenshuai.xi MS_U16 reg11; 1415*53ee8cc1Swenshuai.xi }; 1416*53ee8cc1Swenshuai.xi union { 1417*53ee8cc1Swenshuai.xi struct { 1418*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_enc_cury_offset:3; // Encoding frame Y shift 1419*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_enc_cury_adr_low:13; // Encoding frame Y base address (8 bytes aligned) 1420*53ee8cc1Swenshuai.xi }; 1421*53ee8cc1Swenshuai.xi MS_U16 reg12; 1422*53ee8cc1Swenshuai.xi }; 1423*53ee8cc1Swenshuai.xi union { 1424*53ee8cc1Swenshuai.xi struct { 1425*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_enc_cury_adr_high:16; // Encoding frame Y base address (8 bytes aligned) 1426*53ee8cc1Swenshuai.xi }; 1427*53ee8cc1Swenshuai.xi MS_U16 reg13; 1428*53ee8cc1Swenshuai.xi }; 1429*53ee8cc1Swenshuai.xi union { 1430*53ee8cc1Swenshuai.xi struct { 1431*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_enc_curcb_offset:3; // Encoding frame Cb shift 1432*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_enc_curcb_adr_low:13; // Encoding frame Cb base address (8 bytes aligned) 1433*53ee8cc1Swenshuai.xi }; 1434*53ee8cc1Swenshuai.xi MS_U16 reg14; 1435*53ee8cc1Swenshuai.xi }; 1436*53ee8cc1Swenshuai.xi union { 1437*53ee8cc1Swenshuai.xi struct { 1438*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_enc_curcb_adr_high:16; // Encoding frame Cb base address (8 bytes aligned) 1439*53ee8cc1Swenshuai.xi }; 1440*53ee8cc1Swenshuai.xi MS_U16 reg15; 1441*53ee8cc1Swenshuai.xi }; 1442*53ee8cc1Swenshuai.xi union { 1443*53ee8cc1Swenshuai.xi struct { 1444*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_enc_curcr_offset:3; // Encoding frame Cr shift 1445*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_enc_curcr_adr_low:13; // Encoding frame Cr base address (8 bytes aligned) 1446*53ee8cc1Swenshuai.xi }; 1447*53ee8cc1Swenshuai.xi MS_U16 reg16; 1448*53ee8cc1Swenshuai.xi }; 1449*53ee8cc1Swenshuai.xi union { 1450*53ee8cc1Swenshuai.xi struct { 1451*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_enc_curcr_adr_high:16; // Encoding frame Cr base address (8 bytes aligned) 1452*53ee8cc1Swenshuai.xi }; 1453*53ee8cc1Swenshuai.xi MS_U16 reg17; 1454*53ee8cc1Swenshuai.xi }; 1455*53ee8cc1Swenshuai.xi union { 1456*53ee8cc1Swenshuai.xi struct { 1457*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_pp_semiplaner:1; // 0: y, cb, cr palner mode 1: y, cb/cr semiplaner mode 1458*53ee8cc1Swenshuai.xi }; 1459*53ee8cc1Swenshuai.xi MS_U16 reg18; 1460*53ee8cc1Swenshuai.xi }; 1461*53ee8cc1Swenshuai.xi union { 1462*53ee8cc1Swenshuai.xi struct { 1463*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_jpe_rst_mcu_cnt_low:16; // JPE MCU count for restart marker 1464*53ee8cc1Swenshuai.xi }; 1465*53ee8cc1Swenshuai.xi MS_U16 reg20; 1466*53ee8cc1Swenshuai.xi }; 1467*53ee8cc1Swenshuai.xi union { 1468*53ee8cc1Swenshuai.xi struct { 1469*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_jpe_rst_mcu_cnt_high:10; // JPE MCU count for restart marker 1470*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_jpe_rst_en:1; // JPE restart marker enable 1471*53ee8cc1Swenshuai.xi }; 1472*53ee8cc1Swenshuai.xi MS_U16 reg21; 1473*53ee8cc1Swenshuai.xi }; 1474*53ee8cc1Swenshuai.xi union { 1475*53ee8cc1Swenshuai.xi struct { 1476*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_cabac_bin_count_low:16; // CABAC total bin counts 1477*53ee8cc1Swenshuai.xi }; 1478*53ee8cc1Swenshuai.xi MS_U16 reg30; 1479*53ee8cc1Swenshuai.xi }; 1480*53ee8cc1Swenshuai.xi union { 1481*53ee8cc1Swenshuai.xi struct { 1482*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_cabac_bin_count_high:16; // CABAC total bin counts 1483*53ee8cc1Swenshuai.xi }; 1484*53ee8cc1Swenshuai.xi MS_U16 reg31; 1485*53ee8cc1Swenshuai.xi }; 1486*53ee8cc1Swenshuai.xi union { 1487*53ee8cc1Swenshuai.xi struct { 1488*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_cabac_bit_count_low:16; // CABAC total bit counts 1489*53ee8cc1Swenshuai.xi }; 1490*53ee8cc1Swenshuai.xi MS_U16 reg32; 1491*53ee8cc1Swenshuai.xi }; 1492*53ee8cc1Swenshuai.xi union { 1493*53ee8cc1Swenshuai.xi struct { 1494*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_cabac_bit_count_high:16; // CABAC total bit counts 1495*53ee8cc1Swenshuai.xi }; 1496*53ee8cc1Swenshuai.xi MS_U16 reg33; 1497*53ee8cc1Swenshuai.xi }; 1498*53ee8cc1Swenshuai.xi 1499*53ee8cc1Swenshuai.xi union { 1500*53ee8cc1Swenshuai.xi struct { 1501*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_bspobuf_low:16; // bsp obuf start address 1502*53ee8cc1Swenshuai.xi }; 1503*53ee8cc1Swenshuai.xi MS_U16 reg34; 1504*53ee8cc1Swenshuai.xi }; 1505*53ee8cc1Swenshuai.xi union { 1506*53ee8cc1Swenshuai.xi struct { 1507*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_bspobuf_high:(MFE_MIAW-16); // bsp obuf address high 1508*53ee8cc1Swenshuai.xi MS_U16 reg35_dummy_bits:(16-(MFE_MIAW-16)-2); 1509*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_obuf_id:2; // 00: s0, 01: e0, 10: s1, 11: e1 1510*53ee8cc1Swenshuai.xi 1511*53ee8cc1Swenshuai.xi }; 1512*53ee8cc1Swenshuai.xi MS_U16 reg35; 1513*53ee8cc1Swenshuai.xi }; 1514*53ee8cc1Swenshuai.xi union { 1515*53ee8cc1Swenshuai.xi struct { 1516*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_obuf_write_id_adr:1; //write to this address to enable witring of bspobuf address 1517*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_miu_sel:2; //select miu bank; 0: bank0, 1:bank1 1518*53ee8cc1Swenshuai.xi #if defined(MFE_SUPPORT_TLB) 1519*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_tlb:1; // MIU TLB remap enable 1520*53ee8cc1Swenshuai.xi MS_U16 reg36_dummy_bits:12; 1521*53ee8cc1Swenshuai.xi #else 1522*53ee8cc1Swenshuai.xi MS_U16 reg36_dummy_bits:13; 1523*53ee8cc1Swenshuai.xi #endif 1524*53ee8cc1Swenshuai.xi }; 1525*53ee8cc1Swenshuai.xi MS_U16 reg36; 1526*53ee8cc1Swenshuai.xi }; 1527*53ee8cc1Swenshuai.xi union { 1528*53ee8cc1Swenshuai.xi struct { 1529*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_secure_obufadr:1; // Enable security control (Obuf adr) 1530*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_secure_miu_sel:1; // Enable security control (MIU sel) 1531*53ee8cc1Swenshuai.xi MS_U16 reg37_dummy_bits:14; 1532*53ee8cc1Swenshuai.xi }; 1533*53ee8cc1Swenshuai.xi MS_U16 reg37; 1534*53ee8cc1Swenshuai.xi }; 1535*53ee8cc1Swenshuai.xi union { 1536*53ee8cc1Swenshuai.xi struct { 1537*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_secure_bank_sel:1; // select security bank; 0: bank0, 1:bank1 1538*53ee8cc1Swenshuai.xi MS_U16 reg38_dummy_bits:15; 1539*53ee8cc1Swenshuai.xi }; 1540*53ee8cc1Swenshuai.xi MS_U16 reg38; 1541*53ee8cc1Swenshuai.xi }; 1542*53ee8cc1Swenshuai.xi union { 1543*53ee8cc1Swenshuai.xi struct { 1544*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_whist_en:1; // Write histogram enable 1545*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_whist_count_range:1; // Write histogram count range or total 1546*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_whist_mode:2; // Write histogram mode 0: Request count 1: Reserved 2: Latch count 3: Latch count without first data 1547*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_whist_burst_mode:1; //Write histogram burst count mode 0: Count request 1: Count burs 1548*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_whist_upper_bound_en:1; //Write histogram upper bound enable 1549*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_whist_lower_bound_en:1; //Write histogram lower bound enable 1550*53ee8cc1Swenshuai.xi MS_U16 reg40_dummy_bits:9; 1551*53ee8cc1Swenshuai.xi }; 1552*53ee8cc1Swenshuai.xi MS_U16 reg40; 1553*53ee8cc1Swenshuai.xi }; 1554*53ee8cc1Swenshuai.xi union { 1555*53ee8cc1Swenshuai.xi struct { 1556*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_whist_upper_bound:16; // Write histogram upper bound 1557*53ee8cc1Swenshuai.xi }; 1558*53ee8cc1Swenshuai.xi MS_U16 reg41; 1559*53ee8cc1Swenshuai.xi }; 1560*53ee8cc1Swenshuai.xi union { 1561*53ee8cc1Swenshuai.xi struct { 1562*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_whist_lower_bound:16; // Write histogram lower bound 1563*53ee8cc1Swenshuai.xi }; 1564*53ee8cc1Swenshuai.xi MS_U16 reg42; 1565*53ee8cc1Swenshuai.xi }; 1566*53ee8cc1Swenshuai.xi union { 1567*53ee8cc1Swenshuai.xi struct { 1568*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_whist_count_bubble:16; // Write histogram bubble count 1569*53ee8cc1Swenshuai.xi }; 1570*53ee8cc1Swenshuai.xi MS_U16 reg43; 1571*53ee8cc1Swenshuai.xi }; 1572*53ee8cc1Swenshuai.xi union { 1573*53ee8cc1Swenshuai.xi struct { 1574*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_whist_count_burst:16; // Write histogram burst count 1575*53ee8cc1Swenshuai.xi }; 1576*53ee8cc1Swenshuai.xi MS_U16 reg44; 1577*53ee8cc1Swenshuai.xi }; 1578*53ee8cc1Swenshuai.xi union { 1579*53ee8cc1Swenshuai.xi struct { 1580*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_rhist_en:1; // Read histogram enable 1581*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_rhist_count_range:1; // Read histogram count range or total 1582*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_rhist_mode:2; // Read histogram mode 0: Request count 1: Reserved 2: Latch count 3: Latch count without first data 1583*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_rhist_burst_mode:1; //Read histogram burst count mode 0: Count request 1: Count burs 1584*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_rhist_upper_bound_en:1; //Read histogram upper bound enable 1585*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_rhist_lower_bound_en:1; //Read histogram lower bound enable 1586*53ee8cc1Swenshuai.xi MS_U16 reg45_dummy_bits:9; 1587*53ee8cc1Swenshuai.xi }; 1588*53ee8cc1Swenshuai.xi MS_U16 reg45; 1589*53ee8cc1Swenshuai.xi }; 1590*53ee8cc1Swenshuai.xi union { 1591*53ee8cc1Swenshuai.xi struct { 1592*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_rhist_upper_bound:16; // Read histogram upper bound 1593*53ee8cc1Swenshuai.xi }; 1594*53ee8cc1Swenshuai.xi MS_U16 reg46; 1595*53ee8cc1Swenshuai.xi }; 1596*53ee8cc1Swenshuai.xi union { 1597*53ee8cc1Swenshuai.xi struct { 1598*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_rhist_lower_bound:16; // Read histogram lower bound 1599*53ee8cc1Swenshuai.xi }; 1600*53ee8cc1Swenshuai.xi MS_U16 reg47; 1601*53ee8cc1Swenshuai.xi }; 1602*53ee8cc1Swenshuai.xi union { 1603*53ee8cc1Swenshuai.xi struct { 1604*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_rhist_count_bubble:16; // Read histogram bubble count 1605*53ee8cc1Swenshuai.xi }; 1606*53ee8cc1Swenshuai.xi MS_U16 reg48; 1607*53ee8cc1Swenshuai.xi }; 1608*53ee8cc1Swenshuai.xi union { 1609*53ee8cc1Swenshuai.xi struct { 1610*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_rhist_count_burst:16; // Read histogram burst count 1611*53ee8cc1Swenshuai.xi }; 1612*53ee8cc1Swenshuai.xi MS_U16 reg49; 1613*53ee8cc1Swenshuai.xi }; 1614*53ee8cc1Swenshuai.xi union { 1615*53ee8cc1Swenshuai.xi struct { 1616*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_jpd_hsk_en:1; // JPD handshake enable 1617*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_packed422_en:1; // MFE YUV422 input enable 1618*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_packed422_endian:1; // Endianness of YUV422 1619*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_packed422_yc_swap:1; // YUV422 YC swap mode 1620*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_packed422_uv_swap:1; // YUV422 UV swap mode 1621*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_s_packed422_delta:8; // 8-bit, Delta between JPD counter and MFE counter 1622*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_jpd_hsk_shot:1; // Shot for JPD handshake enable 1623*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_jpd_hsk_mfe:1; // JPD handshake enable in MFE 1624*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_jpd_frame_done_mask:1; // 0: Monitor JPD framedone when handshake enable 1: Disable JPD framedone monitor 1625*53ee8cc1Swenshuai.xi }; 1626*53ee8cc1Swenshuai.xi MS_U16 reg52; 1627*53ee8cc1Swenshuai.xi }; 1628*53ee8cc1Swenshuai.xi 1629*53ee8cc1Swenshuai.xi #if defined(MFE_YUV_LOADER) 1630*53ee8cc1Swenshuai.xi union { 1631*53ee8cc1Swenshuai.xi struct { 1632*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_yuvldr_en:1; // YUV data loader 1633*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_hevd_tile:1; // EVD tile (32x16) 1634*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_hevd_tile32:1; // 32x32 tile 1635*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_yuv420_semi:1; // YUV420 semi-planar 1636*53ee8cc1Swenshuai.xi MS_U16 reg_mfe_g_yuv420_semi_uv_swap:1; // YUV420 semi-planar uv-swap 1637*53ee8cc1Swenshuai.xi MS_U16 reg56_dummy_bits:11; 1638*53ee8cc1Swenshuai.xi }; 1639*53ee8cc1Swenshuai.xi MS_U16 reg56; 1640*53ee8cc1Swenshuai.xi }; 1641*53ee8cc1Swenshuai.xi #endif 1642*53ee8cc1Swenshuai.xi } MFE_REG1; 1643*53ee8cc1Swenshuai.xi 1644*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////// 1645*53ee8cc1Swenshuai.xi // PERFORMANCE 1646*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////// 1647*53ee8cc1Swenshuai.xi 1648*53ee8cc1Swenshuai.xi #define CLOCK_GATING // Enable clock gating 1649*53ee8cc1Swenshuai.xi 1650*53ee8cc1Swenshuai.xi #define FME_PIPELINE_OPEN // Enable David's FME speedup version 1651*53ee8cc1Swenshuai.xi 1652*53ee8cc1Swenshuai.xi //#define DONT_PUT_FDC 1653*53ee8cc1Swenshuai.xi 1654*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////// 1655*53ee8cc1Swenshuai.xi // DEBUG Flags: FDC && QTable 1656*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////// 1657*53ee8cc1Swenshuai.xi 1658*53ee8cc1Swenshuai.xi //#define CHECK_FDC_DONE // Verify if hw receives the fdc command 1659*53ee8cc1Swenshuai.xi 1660*53ee8cc1Swenshuai.xi //#define CHECK_WriteQTable_DONE // Verify if hw receives the WriteQTable command 1661*53ee8cc1Swenshuai.xi 1662*53ee8cc1Swenshuai.xi //#define QTABLE_READBACK_CHECK // Verify all WriteQTable Value 1663*53ee8cc1Swenshuai.xi 1664*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////// 1665*53ee8cc1Swenshuai.xi // DEBUG Flags: StopAndGo series 1666*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////// 1667*53ee8cc1Swenshuai.xi 1668*53ee8cc1Swenshuai.xi #define STOP_FRAME 0UL 1669*53ee8cc1Swenshuai.xi #define STOP_MBX 7UL 1670*53ee8cc1Swenshuai.xi #define STOP_MBY 7UL 1671*53ee8cc1Swenshuai.xi // #define TEST_MB_STOPANDGO 1672*53ee8cc1Swenshuai.xi // #define TEST_MB_STOPANDDROP 1673*53ee8cc1Swenshuai.xi 1674*53ee8cc1Swenshuai.xi // #define TEST_STOPANDGO 1675*53ee8cc1Swenshuai.xi // #define TEST_STOPANDDROP 1676*53ee8cc1Swenshuai.xi 1677*53ee8cc1Swenshuai.xi 1678*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////// 1679*53ee8cc1Swenshuai.xi // DEBUG Flags: test miu protection 1680*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////// 1681*53ee8cc1Swenshuai.xi 1682*53ee8cc1Swenshuai.xi 1683*53ee8cc1Swenshuai.xi #define TEST_MIU_PROTECTION_MODE 0UL 1684*53ee8cc1Swenshuai.xi 1685*53ee8cc1Swenshuai.xi 1686*53ee8cc1Swenshuai.xi 1687*53ee8cc1Swenshuai.xi 1688*53ee8cc1Swenshuai.xi 1689*53ee8cc1Swenshuai.xi #ifdef REG_JPEG_CMODEL 1690*53ee8cc1Swenshuai.xi 1691*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////// 1692*53ee8cc1Swenshuai.xi // DEBUG Flags: continuous shot test (JPEG only) 1693*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////// 1694*53ee8cc1Swenshuai.xi 1695*53ee8cc1Swenshuai.xi //#define TEST_CONTINUOUS_SHOT 1696*53ee8cc1Swenshuai.xi //#define CONTINUOUS_SHOT_NUMBER 5UL //number of test shot 1697*53ee8cc1Swenshuai.xi 1698*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////// 1699*53ee8cc1Swenshuai.xi // DEBUG Flags: input row mode test (JPEG only) 1700*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////// 1701*53ee8cc1Swenshuai.xi //JPEG row mode only! 1702*53ee8cc1Swenshuai.xi // #define TEST_INPUT_ROW_MODE_HW 1703*53ee8cc1Swenshuai.xi 1704*53ee8cc1Swenshuai.xi #ifdef TEST_INPUT_ROW_MODE_HW 1705*53ee8cc1Swenshuai.xi #ifndef DONT_PUT_FDC 1706*53ee8cc1Swenshuai.xi #define DONT_PUT_FDC 1707*53ee8cc1Swenshuai.xi #endif 1708*53ee8cc1Swenshuai.xi 1709*53ee8cc1Swenshuai.xi #define NUM_OF_ROW_DONE_BEFORE_FS 1UL 1710*53ee8cc1Swenshuai.xi #endif 1711*53ee8cc1Swenshuai.xi 1712*53ee8cc1Swenshuai.xi //JPEG row mode only! only check fs_fail_irq 1713*53ee8cc1Swenshuai.xi //#define TEST_INPUT_ROW_MODE_SW_HW 1714*53ee8cc1Swenshuai.xi #ifdef TEST_INPUT_ROW_MODE_SW_HW 1715*53ee8cc1Swenshuai.xi #define NUM_OF_ROW_DONE_BEFORE_FS 1UL 1716*53ee8cc1Swenshuai.xi #endif 1717*53ee8cc1Swenshuai.xi #endif // REG_JPEG_CMODEL 1718*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////// 1719*53ee8cc1Swenshuai.xi // DEBUG Flags: test CRC mode 1720*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////// 1721*53ee8cc1Swenshuai.xi #define TEST_CRC_MODE 1722*53ee8cc1Swenshuai.xi 1723*53ee8cc1Swenshuai.xi #endif 1724*53ee8cc1Swenshuai.xi 1725