// //****************************************************************************** // MStar Software // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved. // All software, firmware and related documentation herein ("MStar Software") are // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by // law, including, but not limited to, copyright law and international treaties. // Any use, modification, reproduction, retransmission, or republication of all // or part of MStar Software is expressly prohibited, unless prior written // permission has been granted by MStar. // // By accessing, browsing and/or using MStar Software, you acknowledge that you // have read, understood, and agree, to be bound by below terms ("Terms") and to // comply with all applicable laws and regulations: // // 1. MStar shall retain any and all right, ownership and interest to MStar // Software and any modification/derivatives thereof. // No right, ownership, or interest to MStar Software and any // modification/derivatives thereof is transferred to you under Terms. // // 2. You understand that MStar Software might include, incorporate or be // supplied together with third party`s software and the use of MStar // Software may require additional licenses from third parties. // Therefore, you hereby agree it is your sole responsibility to separately // obtain any and all third party right and license necessary for your use of // such third party`s software. // // 3. MStar Software and any modification/derivatives thereof shall be deemed as // MStar`s confidential information and you agree to keep MStar`s // confidential information in strictest confidence and not disclose to any // third party. // // 4. MStar Software is provided on an "AS IS" basis without warranties of any // kind. Any warranties are hereby expressly disclaimed by MStar, including // without limitation, any warranties of merchantability, non-infringement of // intellectual property rights, fitness for a particular purpose, error free // and in conformity with any international standard. You agree to waive any // claim against MStar for any loss, damage, cost or expense that you may // incur related to your use of MStar Software. // In no event shall MStar be liable for any direct, indirect, incidental or // consequential damages, including without limitation, lost of profit or // revenues, lost or damage of data, and unauthorized system use. // You agree that this Section 4 shall still apply without being affected // even if MStar Software has been modified by MStar in accordance with your // request or instruction for your use, except otherwise agreed by both // parties in writing. // // 5. If requested, MStar may from time to time provide technical supports or // services in relation with MStar Software to you for your use of // MStar Software in conjunction with your or your customer`s product // ("Services"). // You understand and agree that, except otherwise agreed by both parties in // writing, Services are provided on an "AS IS" basis and the warranty // disclaimer set forth in Section 4 above shall apply. // // 6. Nothing contained herein shall be construed as by implication, estoppels // or otherwise: // (a) conferring any license or right to use MStar name, trademark, service // mark, symbol or any other identification; // (b) obligating MStar or any of its affiliates to furnish any person, // including without limitation, you and your customers, any assistance // of any kind whatsoever, or any information; or // (c) conferring any license or right under any intellectual property right. // // 7. These terms shall be governed by and construed in accordance with the laws // of Taiwan, R.O.C., excluding its conflict of law rules. // Any and all dispute arising out hereof or related hereto shall be finally // settled by arbitration referred to the Chinese Arbitration Association, // Taipei in accordance with the ROC Arbitration Law and the Arbitration // Rules of the Association by three (3) arbitrators appointed in accordance // with the said Rules. // The place of arbitration shall be in Taipei, Taiwan and the language shall // be English. // The arbitration award shall be final and binding to both parties. // //****************************************************************************** // //////////////////////////////////////////////////////////////////////////////// // // Copyright (c) 2008-2009 MStar Semiconductor, Inc. // All rights reserved. // // Unless otherwise stipulated in writing, any and all information contained // herein regardless in any format shall remain the sole proprietary of // MStar Semiconductor Inc. and be kept in strict confidence // ("MStar Confidential Information") by the recipient. // Any unauthorized act including without limitation unauthorized disclosure, // copying, use, reproduction, sale, distribution, modification, disassembling, // reverse engineering and compiling of the contents of MStar Confidential // Information is unlawful and strictly prohibited. MStar hereby reserves the // rights to any and all damages, losses, costs and expenses resulting therefrom. // //////////////////////////////////////////////////////////////////////////////// #ifndef _HAL_HVD_H_ #define _HAL_HVD_H_ #if !defined(MSOS_TYPE_NUTTX) || defined(SUPPORT_X_MODEL_FEATURE) //------------------------------------------------------------------------------------------------- // Macro and Define //------------------------------------------------------------------------------------------------- // Feature #define HAL_HVD_ENABLE_MUTEX_PROTECT HVD_ENABLE_MUTEX_PROTECT #define HAL_HVD_ENABLE_MIU_PROTECT HVD_ENABLE_MIU_RST_PROTECT #define HAL_HVD_ENABLE_VPU_CMD 1 // MBox type of FW cmd #if (HAL_HVD_ENABLE_VPU_CMD) #define HAL_HVD_CMD_MBOX E_HVD_VPU_HI_0 #define HAL_HVD_CMD_ARG_MBOX E_HVD_VPU_HI_1 #else #define HAL_HVD_CMD_MBOX E_HVD_HI_0 #define HAL_HVD_CMD_ARG_MBOX E_HVD_HI_1 #endif // MBox other usages #define HAL_HVD_REG_ISR_VPU E_HVD_VPU_RISC_1 #define HAL_HVD_REG_FW_STATE E_HVD_RISC_0 #define HAL_HVD_REG_ISR_HVD E_HVD_RISC_1 #define HAL_HVD_REG_DISP_INFO_COPYED E_HVD_RISC_1 #define HAL_HVD_REG_DISP_INFO_CHANGE E_HVD_RISC_1 #define HAL_HVD_REG_DISP_CTL E_HVD_HI_0 #define PRESET_ONE_PENDING_BUFFER (1 << 0) /// For AVC, one pending buffer mode, reduce from two to one #define PRESET_FRAMERATE_HANDLING (1 << 1) /// For AVC, Handle frame rate by input frame rate when sequence did not have frame rate info. #define PRESET_TSP_IN_BBU_MODE (1 << 2) /// For AVS/AVS+ only. Raw data comes from TSP while HVD HW engine triggers decode according to BBU table #if defined(CHIP_T3) // patch for HW bug #define HVD_MIU1_BASE_ADDRESS 0x08000000UL//0x10000000UL #else // CHIP_U3 #define HVD_MIU1_BASE_ADDRESS 0x08000000UL #endif #define HVD_RV_BROKENBYUS_BIT 29 //------------------------------------------------------------------------------------------------- // Type and Structure //------------------------------------------------------------------------------------------------- typedef enum { E_HVD_HI_0, E_HVD_HI_1, E_HVD_RISC_0, E_HVD_RISC_1, E_HVD_VPU_HI_0, E_HVD_VPU_HI_1, E_HVD_VPU_RISC_0, E_HVD_VPU_RISC_1, } HVD_MBOX_TYPE; typedef enum { //Support TSP/TS/File mode E_HAL_HVD_MAIN_STREAM, //Only support file mode E_HAL_HVD_SUB_STREAM, //Only support MVC mode E_HAL_HVD_MVC_STREAM, } HAL_HVD_StreamType; typedef struct { HAL_HVD_StreamId eStreamId; MS_BOOL bUsed; MS_BOOL bDispOutSide; MS_U32 u32PTSPreWptr; MS_U32 u32PTSByteCnt; MS_U32 u32BBUWptr; MS_U32 u32BBUEntryNum; MS_U32 u32BBUEntryNumTH; MS_U32 u32DispQIndex; MS_U32 u32PrivateData; MS_U32 u32FreeData; MS_U32 u32RegBase; } HVD_EX_Stream; typedef struct { MS_BOOL bColocateBBUMode; }HVD_EX_PreSet; //------------------------------------------------------------------------------------------------- // Function and Variable //------------------------------------------------------------------------------------------------- MS_BOOL HAL_HVD_EX_InitHW(MS_U32 u32Id,VPU_EX_DecoderType DecoderType); MS_BOOL HAL_HVD_EX_DeinitHW(void); void HAL_HVD_EX_FlushMemory(void); void HAL_HVD_EX_ReadMemory(void); void HAL_HVD_EX_SetDrvCtrlsBase(HVD_EX_Drv_Ctrl *pHVDCtrlsBase); void HAL_HVD_EX_CheckMIUSel(MS_BOOL bChange); MS_U32 HAL_HVD_EX_GetHWVersionID(void); HAL_HVD_StreamId HAL_HVD_EX_GetFreeStream(HAL_HVD_StreamType eStreamType); void HAL_HVD_EX_PowerCtrl(MS_BOOL bEnable); void HAL_HVD_EX_InitRegBase(MS_U32 u32RegBase); HVD_Return HAL_HVD_EX_InitVariables(MS_U32 u32Id); HVD_Return HAL_HVD_EX_InitShareMem(MS_U32 u32Id); HVD_Return HAL_HVD_EX_InitRegCPU(MS_U32 u32Id); HVD_Return HAL_HVD_EX_SetData(MS_U32 u32Id, HVD_SetData u32type, MS_U32 u32Data); MS_U32 HAL_HVD_EX_GetData(MS_U32 u32Id, HVD_GetData eType); MS_S64 HAL_HVD_EX_GetData_EX(MS_U32 u32Id, HVD_GetData eType); MS_U32 HAL_HVD_EX_GetShmAddr(MS_U32 u32Id); MS_BOOL HAL_HVD_EX_GetFrmRateIsSupported(MS_U32 u32Id, MS_U16 u16HSize, MS_U16 u16VSize, MS_U32 u32FrmRate); HVD_Return HAL_HVD_EX_SetCmd(MS_U32 u32Id, HVD_User_Cmd eUsrCmd, MS_U32 u32CmdArg); HVD_Return HAL_HVD_EX_DeInit(MS_U32 u32Id); HVD_Return HAL_HVD_EX_PushPacket(MS_U32 u32Id, HVD_BBU_Info *pInfo); void HAL_HVD_EX_EnableISR(MS_U32 u32Id, MS_BOOL bEnable); void HAL_HVD_EX_SetForceISR(MS_U32 u32Id, MS_BOOL bEnable); void HAL_HVD_EX_SetClearISR(MS_U32 u32Id); MS_BOOL HAL_HVD_EX_IsISROccured(MS_U32 u32Id); MS_BOOL HAL_HVD_EX_IsEnableISR(MS_U32 u32Id); MS_BOOL HAL_HVD_EX_IsAlive(MS_U32 u32Id); MS_BOOL HAL_HVD_EX_RstPTSCtrlVariable(MS_U32 u32Id); MS_BOOL HAL_HVD_EX_FlushRstShareMem(MS_U32 u32Id); void HAL_HVD_EX_UartSwitch2FW(MS_BOOL bEnable); MS_U32 HAL_HVD_EX_GetData_Dbg(MS_VIRT u32Addr); void HAL_HVD_EX_SetData_Dbg(MS_VIRT u32Addr, MS_U32 u32Data); MS_U16 HAL_HVD_EX_GetCorretClock(MS_U16 u16Clock); void HAL_HVD_EX_UpdateESWptr_Fire(MS_U32 u32Id); void HAL_HVD_EX_MVD_PowerCtrl(MS_BOOL bEnable); void HAL_HVD_EX_Dump_FW_Status(MS_U32 u32Id); void HAL_HVD_EX_Dump_HW_Status(MS_U32 u32Num); void HAL_HVD_EX_SetMiuBurstLevel(HVD_EX_Drv_Ctrl *pDrvCtrl, HVD_MIU_Burst_Cnt_Ctrl eMiuBurstCntCtrl); #ifdef SUPPORT_X_MODEL_FEATURE //We using the common compile option to handle X model void HVD_EX_SetRstFlag(MS_BOOL bRst); #endif MS_BOOL HAL_HVD_EX_DispFrameAllViewed(MS_U32 u32Id); #if HVD_ENABLE_MVC MS_BOOL HAL_HVD_EX_CheckMVCID(MS_U32 u32Id); VDEC_EX_View HAL_HVD_EX_GetView(MS_U32 u32Id); #endif ///HVD_ENABLE_MVC MS_BOOL HAL_HVD_EX_Init_Share_Mem(void); void HAL_HVD_EX_SpareBandwidth(MS_U32 u32Id); MS_U32 HAL_HVD_EX_GetDispFrmNum(MS_U32 u32Id); HVD_Return HAL_HVD_EX_SetHVDColBBUMode(MS_U32 u32Id, MS_BOOL bEnable); void HAL_HVD_EX_SetHwRegBase(MS_U32 u32Id, MS_U32 u32ModeFlag); MS_BOOL HAL_HVD_EX_GetSupport2ndMVOPInterface(void); void HAL_HVD_EX_SetBufferAddr(MS_U32 u32Id); void HAL_HVD_EX_SetPreCtrlVariables(MS_U32 u32Id,MS_U32 drvprectrl); typedef enum { E_BBU_FSM_START = 0, E_BBU_FSM_0, E_BBU_FSM_00, E_BBU_FSM_001, } VDEC_EX_BBU_FSM_STATE; MS_BOOL _HVD_EX_IS_BBU_TSP_MODE(MS_U32 u32Id); MS_BOOL _HVD_EX_BBU_Get_TaskRunning(MS_U32 u32Id); void _HVD_EX_BBU_Set_TaskRunning(MS_U32 u32Id,MS_BOOL val); MS_U32 _HVD_EX_GetESOffsetIncrease(MS_U32 u32Id, MS_U32 inc, MS_U32 offset); MS_U32 _HVD_EX_GetESOffsetMinus(MS_U32 u32Id, MS_U32 mis, MS_U32 offset); void _HVD_EX_ES_DBG_PRINT(MS_U32 u32Id, MS_U32 offset, MS_U32 length); MS_U32 _HVD_EX_ES_Read(MS_U32 u32Id, MS_U32 offset); MS_BOOL _HVD_EX_CheckWaterLevel(MS_U32 u32Id, MS_U32 u32ESRptr, MS_U32 u32ESWptr); MS_BOOL _HVD_EX_BBU_FindStartCode(MS_U32 u32Id,MS_U32* u32Offset, MS_U32 u32ESRptr, MS_U32 u32ESWptr); void HAL_HVD_EX_BBU_Proc(MS_U32 u32Id); void HAL_HVD_EX_BBU_StopProc(MS_U32 u32Id); #endif #endif // _HAL_HVD_H_