diff options
Diffstat (limited to 'drivers/mxc/vpu-decoder-b0/mediasys_types.h')
-rw-r--r-- | drivers/mxc/vpu-decoder-b0/mediasys_types.h | 773 |
1 files changed, 773 insertions, 0 deletions
diff --git a/drivers/mxc/vpu-decoder-b0/mediasys_types.h b/drivers/mxc/vpu-decoder-b0/mediasys_types.h new file mode 100644 index 000000000000..aae9fe59bfab --- /dev/null +++ b/drivers/mxc/vpu-decoder-b0/mediasys_types.h @@ -0,0 +1,773 @@ +/* + * This file is provided under a dual BSD/GPLv2 license. When using or + * redistributing this file, you may do so under either license. + * + * GPL LICENSE SUMMARY + * + * Copyright(c) 2018 NXP. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. + * The full GNU General Public License is included in this distribution + * in the file called LICENSE.GPL. + * + * BSD LICENSE + * + * Copyright(c) 2018 NXP. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _MEDIASYS_TYPES_H_ +#define _MEDIASYS_TYPES_H_ + +typedef unsigned int u_int32; +typedef unsigned char u_int8; +typedef unsigned long u_int64; +typedef unsigned int BOOL; +#define FALSE 0 +#define TRUE 1 +#define VPU_MAX_NUM_STREAMS 3 +#define VID_API_NUM_STREAMS 4 +#define VID_API_MAX_BUF_PER_STR 3 +#define VID_API_MAX_NUM_MVC_VIEWS 4 +#define MEDIAIP_MAX_NUM_MALONES 2 +#define MEDIAIP_MAX_NUM_MALONE_IRQ_PINS 2 +#define MEDIAIP_MAX_NUM_WINDSORS 1 +#define MEDIAIP_MAX_NUM_WINDSOR_IRQ_PINS 2 +#define MEDIAIP_MAX_NUM_CMD_IRQ_PINS 2 +#define MEDIAIP_MAX_NUM_MSG_IRQ_PINS 1 +#define MEDIAIP_MAX_NUM_TIMER_IRQ_PINS 4 +#define MEDIAIP_MAX_NUM_TIMER_IRQ_SLOTS 4 +#define VID_API_COMMAND_LIMIT 64 +#define VID_API_MESSAGE_LIMIT 256 + +#define API_CMD_AVAILABLE 0x0 +#define API_CMD_INCOMPLETE 0x1 +#define API_CMD_BUFFER_ERROR 0x2 +#define API_CMD_UNAVAILABLE 0x3 +#define API_MSG_AVAILABLE 0x0 +#define API_MSG_INCOMPLETE 0x1 +#define API_MSG_BUFFER_ERROR 0x2 +#define API_MSG_UNAVAILABLE 0x3 + +typedef enum { + FRAME_ALLOC = 0, + FRAME_FREE, + FRAME_DECODED, + FRAME_READY, + FRAME_RELEASE, +} FRAME_BUFFER_STAT; + +typedef enum { + VPU_APP, + VPU_DRIVER, + VPU_DECODER, +} FRAME_BUFFER_OWNER; + +typedef enum { + MEDIAIP_FRAME_REQ = 0, + MEDIAIP_MBI_REQ, + MEDIAIP_DCP_REQ, + MEDIAIP_REQ_LAST = MEDIAIP_DCP_REQ + +} MEDIAIP_MEM_REQ; + +typedef struct { + u_int32 uNum; + MEDIAIP_MEM_REQ eType; +} MEDIA_PLAYER_FSREQ; + +typedef struct { + u_int32 uFSIdx; + MEDIAIP_MEM_REQ eType; + BOOL bNotDisplayed; +} MEDIA_PLAYER_FSREL; + +typedef enum { + /* Non-Stream Specific messages */ + MEDIA_PLAYER_API_MODE_INVALID = 0x00, + MEDIA_PLAYER_API_MODE_PARSE_STEP = 0x01, + MEDIA_PLAYER_API_MODE_DECODE_STEP = 0x02, + MEDIA_PLAYER_API_MODE_CONTINUOUS = 0x03 +} MEDIA_PLAYER_API_MODE; + +typedef enum { + /* Non-Stream Specific messages */ + MEDIA_PLAYER_FS_CTRL_MODE_INTERNAL = 0x00, + MEDIA_PLAYER_FS_CTRL_MODE_EXTERNAL = 0x01 +} MEDIA_PLAYER_FS_CTRL_MODE; + +typedef enum { + /* Non-Stream Specific messages */ + VID_API_CMD_NULL = 0x00, + VID_API_CMD_PARSE_NEXT_SEQ = 0x01, + VID_API_CMD_PARSE_NEXT_I = 0x02, + VID_API_CMD_PARSE_NEXT_IP = 0x03, + VID_API_CMD_PARSE_NEXT_ANY = 0x04, + VID_API_CMD_DEC_PIC = 0x05, + VID_API_CMD_UPDATE_ES_WR_PTR = 0x06, + VID_API_CMD_UPDATE_ES_RD_PTR = 0x07, + VID_API_CMD_UPDATE_UDATA = 0x08, + VID_API_CMD_GET_FSINFO = 0x09, + VID_API_CMD_SKIP_PIC = 0x0a, + VID_API_CMD_DEC_CHUNK = 0x0b, + VID_API_CMD_START = 0x10, + VID_API_CMD_STOP = 0x11, + VID_API_CMD_ABORT = 0x12, + VID_API_CMD_RST_BUF = 0x13, + VID_API_CMD_FS_RELEASE = 0x15, + VID_API_CMD_MEM_REGION_ATTACH = 0x16, + VID_API_CMD_MEM_REGION_DETACH = 0x17, + VID_API_CMD_MVC_VIEW_SELECT = 0x18, + VID_API_CMD_FS_ALLOC = 0x19, + VID_API_CMD_DBG_GET_STATUS = 0x1C, + VID_API_CMD_DBG_START_LOG = 0x1D, + VID_API_CMD_DBG_STOP_LOG = 0x1E, + VID_API_CMD_DBG_DUMP_LOG = 0x1F, + /* Begin Encode CMDs */ + VID_API_CMD_YUV_READY = 0x20, +#if BOOT_ARCH == REBOOT + VID_API_CMD_SNAPSHOT = 0xAA, + VID_API_CMD_ROLL_SNAPSHOT = 0xAB, + VID_API_CMD_LOCK_SCHEDULER = 0xAC, + VID_API_CMD_UNLOCK_SCHEDULER = 0xAD, +#endif + VID_API_CMD_CQ_FIFO_DUMP = 0xAE, + VID_API_CMD_DBG_FIFO_DUMP = 0xAF, + VID_API_CMD_SVC_ILP = 0xBB, + VID_API_CMD_INVALID = 0xFF + +} TB_API_DEC_CMD; + +typedef enum { + /* Non-Stream Specific messages */ + VID_API_EVENT_NULL = 0x00, + VID_API_EVENT_RESET_DONE = 0x01, + VID_API_EVENT_SEQ_HDR_FOUND = 0x02, + VID_API_EVENT_PIC_HDR_FOUND = 0x03, + VID_API_EVENT_PIC_DECODED = 0x04, + VID_API_EVENT_FIFO_LOW = 0x05, + VID_API_EVENT_FIFO_HIGH = 0x06, + VID_API_EVENT_FIFO_EMPTY = 0x07, + VID_API_EVENT_FIFO_FULL = 0x08, + VID_API_EVENT_BS_ERROR = 0x09, + VID_API_EVENT_UDATA_FIFO_UPTD = 0x0A, + VID_API_EVENT_RES_CHANGE = 0x0B, + VID_API_EVENT_FIFO_OVF = 0x0C, + VID_API_EVENT_CHUNK_DECODED = 0x0D, + VID_API_EVENT_REQ_FRAME_BUFF = 0x10, + VID_API_EVENT_FRAME_BUFF_RDY = 0x11, + VID_API_EVENT_REL_FRAME_BUFF = 0x12, + VID_API_EVENT_STR_BUF_RST = 0x13, + VID_API_EVENT_RET_PING = 0x14, /* Temp here - rationalise debug events at bottom */ + VID_API_EVENT_QMETER = 0x15, + VID_API_EVENT_STR_FMT_CHANGE = 0x16, + VID_API_EVENT_FIRMWARE_XCPT = 0x17, + VID_API_EVENT_START_DONE = 0x18, + VID_API_EVENT_STOPPED = 0x19, + VID_API_EVENT_ABORT_DONE = 0x1A, + VID_API_EVENT_FINISHED = 0x1B, + VID_API_EVENT_DBG_STAT_UPDATE = 0x1C, + VID_API_EVENT_DBG_LOG_STARTED = 0x1D, + VID_API_EVENT_DBG_LOG_STOPPED = 0x1E, + VID_API_EVENT_DBG_LOG_UPDATED = 0x1F, + VID_API_EVENT_DBG_MSG_DEC = 0x20, + VID_API_EVENT_DEC_SC_ERR = 0x21, + VID_API_EVENT_CQ_FIFO_DUMP = 0x22, + VID_API_EVENT_DBG_FIFO_DUMP = 0x23, + VID_API_EVENT_DEC_CHECK_RES = 0x24, + VID_API_EVENT_DEC_CFG_INFO = 0x25, + VID_API_EVENT_SNAPSHOT_DONE = 0x40, + VID_API_EVENT_INVALID = 0xFF + +} TB_API_DEC_EVENT; + +typedef enum { + MEDIAIP_PLAYMODE_CONNECTIVITY = 0, + MEDIAIP_PLAYMODE_BROADCAST, + MEDIAIP_PLAYMODE_BROADCAST_DSS, + MEDIAIP_PLAYMODE_LAST = MEDIAIP_PLAYMODE_BROADCAST_DSS + +} MEDIA_IP_PLAYMODE; + +typedef enum { + MEDIA_IP_FMT_NULL = 0x0, + MEDIA_IP_FMT_AVC = 0x1, + MEDIA_IP_FMT_VC1 = 0x2, + MEDIA_IP_FMT_MP2 = 0x3, + MEDIA_IP_FMT_AVS = 0x4, + MEDIA_IP_FMT_ASP = 0x5, + MEDIA_IP_FMT_JPG = 0x6, + MEDIA_IP_FMT_RV = 0x7, + MEDIA_IP_FMT_VP6 = 0x8, + MEDIA_IP_FMT_SPK = 0x9, + MEDIA_IP_FMT_VP8 = 0xA, + MEDIA_IP_FMT_MVC = 0xB, + MEDIA_IP_FMT_VP3 = 0xC, + MEDIA_IP_FMT_HEVC = 0xD, + MEDIA_IP_FMT_AUTO_DETECT = 0xAD00, + MEDIA_IP_FMT_ALL = (int)0xAAAAAAAA, + MEDIA_IP_FMT_UNSUPPORTED = (int)0xFFFFFFFF, + MEDIA_IP_FMT_LAST = MEDIA_IP_FMT_UNSUPPORTED + +} MEDIA_IP_FORMAT; + +typedef enum { + VSys_FrmtNull = 0x0, + VSys_AvcFrmt = 0x1, + VSys_Mp2Frmt = 0x2, + VSys_Vc1Frmt = 0x3, + VSys_AvsFrmt = 0x4, + VSys_AspFrmt = 0x5, + VSys_JpgFrmt = 0x6, + VSys_RvFrmt = 0x7, + VSys_Vp6Frmt = 0x8, + VSys_SpkFrmt = 0x9, + VSys_Vp8Frmt = 0xA, + VSys_HevcFrmt = 0xB, + VSys_LastFrmt = VSys_HevcFrmt +} TB_API_DEC_FMT; + +typedef struct { + u_int32 bTopFldFirst; + u_int32 bRptFstField; + u_int32 uDispVerRes; + u_int32 uDispHorRes; + u_int32 uCentreVerOffset; + u_int32 uCentreHorOffset; + u_int32 uCropLeftRightOffset; + u_int32 uCropTopBotOffset; + +} MediaIPFW_Video_PicDispInfo; + +typedef struct MediaIPFW_PicPerfInfo { + u_int32 uMemCRC; + u_int32 uBSCRC; + u_int32 uSlcActiveCnt; + u_int32 uIBEmptyCnt; + u_int32 uBaseMemCRC; + + u_int32 uBaseCRCSkip; + u_int32 uBaseCRCDrop; + BOOL bBaseCRCValid; + + u_int32 uCRC0; + u_int32 uCRC1; + u_int32 uCRC2; + u_int32 uCRC3; + u_int32 uCRC4; + u_int32 uCRC5; + + u_int32 uFrameActCount; + u_int32 uRbspBytesCount; + u_int32 uDpbReadCount; + u_int32 uMprWaitCount; + u_int32 uAccQP; + u_int32 uCacheStat; + u_int32 mbq_full; + u_int32 mbq_empty; + u_int32 slice_cnt; + u_int32 mb_count; + + u_int32 uTotalTime_us; + u_int32 uTotalFwTime_us; + + u_int32 uProcIaccTotRdCnt; + u_int32 uProcDaccTotRdCnt; + u_int32 uProcDaccTotWrCnt; + u_int32 uProcDaccRegRdCnt; + u_int32 uProcDaccRegWrCnt; + u_int32 uProcDaccRngRdCnt; + u_int32 uProcDaccRngWrCnt; + +} MediaIPFW_Video_PicPerfInfo; + +typedef struct { + u_int32 mb_count; + u_int32 slice_cnt; + + /* Front End Metrics */ + u_int32 uDFEBinsUsed; + u_int32 uDFECycleCount; + u_int32 uDFESliceCycleCount; + u_int32 uDFEIBWaitCount; + u_int32 uDFENumBytes; + + u_int32 uProcIaccTotRdCnt; + u_int32 uProcDaccTotRdCnt; + u_int32 uProcDaccTotWrCnt; + u_int32 uProcDaccRegRdCnt; + u_int32 uProcDaccRegWrCnt; + u_int32 uProcDaccRngRdCnt; + u_int32 uProcDaccRngWrCnt; + + /* Back End metrics */ + u_int32 uNumBEUsed; + u_int32 uTotalTime_us; + u_int32 uTotalFwTime_us; + u_int32 uDBECycleCount[0x2]; + u_int32 uDBESliceCycleCount[0x2]; + u_int32 uDBEMprWaitCount[0x2]; + u_int32 uDBEWaitCount[0x2]; + u_int32 uDBECRC[0x2]; + u_int32 uDBETotalTime_us[0x2]; + + u_int32 uDBEMPRPRXWaitCount[0x2]; + u_int32 uDBEPXDPRXWaitCount[0x2]; + u_int32 uDBEFCHPLQWaitCount[0x2]; + u_int32 uDBEPXDPLQWaitCount[0x2]; + + u_int32 uDBEFchWordsCount[0x2]; + u_int32 uDBEDpbCRC[0x2]; + u_int32 uDBEDpbReadCount[0x2]; + u_int32 uDBECacheStats[0x2]; + +} MediaIPFW_Video_PicPerfDcpInfo, *pMediaIPFW_Video_PicPerfDcpInfo; + +typedef struct { + u_int32 uPicType; + u_int32 uPicStruct; + u_int32 bLastPicNPF; + u_int32 uPicStAddr; + u_int32 uFrameStoreID; + MediaIPFW_Video_PicDispInfo DispInfo; + MediaIPFW_Video_PicPerfInfo PerfInfo; + MediaIPFW_Video_PicPerfDcpInfo PerfDcpInfo; + u_int32 bUserDataAvail; + u_int32 uPercentInErr; + + u_int32 uBbdHorActive; + u_int32 uBbdVerActive; + u_int32 uBbdLogoActive; + u_int32 uBbdBotPrev; + u_int32 uBbdMinColPrj; + u_int32 uBbdMinRowPrj; + u_int32 uFSBaseAddr; + + /* Only for RealVideo RPR */ + u_int32 uRprPicWidth; + u_int32 uRprPicHeight; + + /*only for divx3*/ + u_int32 uFrameRate; + +} MediaIPFW_Video_PicInfo; + + +typedef struct { + u_int32 bClosedGop; + u_int32 bBrokenLink; +} MediaIPFW_Video_GopInfo; + +typedef struct { + u_int32 uIQuant; + u_int32 uIQuantAvail; + u_int32 uGopBitRate; + u_int32 uGopBitRateAvail; + +} MediaIPFW_Video_QMeterInfo; + +typedef struct { + u_int32 pPicInfoArrayBase; + u_int32 uNumSizeDescriptors; +} MediaIPFW_Video_PicInfoBuffTabDesc; + +typedef struct { + u_int32 pGopInfoArrayBase; + u_int32 uNumSizeDescriptors; +} MediaIPFW_Video_GopInfoBuffTabDesc; + +typedef struct { + u_int32 pQMeterInfoArrayBase; + u_int32 uNumSizeDescriptors; +} MediaIPFW_Video_QMeterInfoTabDesc; + +typedef struct { + u_int32 uMemChunkBase; + u_int32 uMemChunkSize; + +} MediaIPFW_Video_FrameBuffer; + +typedef struct { + u_int32 uUDataBase; + u_int32 uUDataTotalSize; + u_int32 uUDataSlotSize; + +} MediaIPFW_Video_UData; + +typedef struct { + u_int32 uDecStatusLogBase; + u_int32 uDecStatusLogSize; + u_int32 uDTVLogBase[VID_API_NUM_STREAMS]; + u_int32 uDTVLogSize[VID_API_NUM_STREAMS]; + +} MediaIPFW_Video_DbgLogDesc; + +typedef struct { + u_int32 uDTVLogBase[VID_API_NUM_STREAMS]; + u_int32 uDTVLogSize[VID_API_NUM_STREAMS]; + +} MediaIPFW_Video_EngAccessLogDesc; + +typedef struct MediaIPFW_FrameStore { + u_int32 uFrameStoreLumaBase; + u_int32 uFrameStoreChromaBase; + +} MediaIPFW_Video_FrameStore; + +typedef struct { + u_int32 uAddrFirstDescriptor; + u_int32 uNumSizeDescriptors; + +} MediaIPFW_Video_StreamBuffTabDesc; + +typedef struct { + u_int32 uAddrFirstDescriptor; + u_int32 uNumSizeDescriptors; +} MediaIPFW_Video_UserDataBuffTabDesc; + +typedef struct { + u_int32 uNumRefFrms; + u_int32 uNumDPBFrms; + u_int32 uNumDFEAreas; + u_int32 uColorDesc; + u_int32 uProgressive; + u_int32 uVerRes; + u_int32 uHorRes; + u_int32 uParWidth; + u_int32 uParHeight; + u_int32 FrameRate; + u_int32 UDispAspRatio; + u_int32 uLevelIDC; + u_int32 uVerDecodeRes; + u_int32 uHorDecodeRes; + u_int32 uOverScan; + u_int32 uChromaFmt; + u_int32 uPAFF; + u_int32 uMBAFF; + u_int32 uBitDepthLuma; + u_int32 uBitDepthChroma; + u_int32 uMVCNumViews; + u_int32 uMVCViewList[VID_API_MAX_NUM_MVC_VIEWS]; + u_int32 uFBCInUse; + u_int32 uFrameCropValid; + u_int32 uFrameCropLeftOffset; + u_int32 uFrameCropRightOffset; + u_int32 uFrameCropTopOffset; + u_int32 uFrameCropBottomOffset; + +} MediaIPFW_Video_SeqInfo; + +typedef struct { + u_int32 pSeqInfoArrayBase; + u_int32 uNumSizeDescriptors; +} MediaIPFW_Video_SeqInfoBuffTabDesc; + +typedef struct { + u_int32 wptr; + u_int32 rptr; + u_int32 start; + u_int32 end; + +} BUFFER_DESCRIPTOR_TYPE, *pBUFFER_DESCRIPTOR_TYPE; + +typedef struct { + volatile u_int32 wptr; + volatile u_int32 rptr; + volatile u_int32 start; + volatile u_int32 end; + volatile u_int32 LWM; + +} STREAM_BUFFER_DESCRIPTOR_TYPE, *pSTREAM_BUFFER_DESCRIPTOR_TYPE; + +typedef struct { + u_int32 uRotationAngle; + u_int32 uHorizScaleFactor; + u_int32 uVertScaleFactor; + u_int32 uRotationMode; + u_int32 uRGBMode; + u_int32 uChunkMode; /* 0 ~ 1 */ + u_int32 uLastChunk; /* 0 ~ 1 */ + u_int32 uChunkRows; /* 0 ~ 255 */ + u_int32 uNumBytes; + u_int32 uJpgCropXStart; + u_int32 uJpgCropYStart; + u_int32 uJpgCropWidth; + u_int32 uJpgCropHeight; + u_int32 uJpgMjpegMode; + u_int32 uJpgMjpegInterlaced; + +} MediaIPFW_Video_JpegParams; + +typedef struct { + u_int32 pJpegParamArrayBase; + u_int32 uNumSizeDescriptors; + +} MediaIPFW_Video_JpegParamTabDesc; + +typedef struct { + u_int32 uDispImm; + u_int32 uFourCC; + u_int32 uCodecVersion; + u_int32 uFrameRate; + u_int32 bbd_logo_width; + u_int32 bbd_lum_thr; + u_int32 bbd_coring; + u_int32 bbd_s_thr_row; + u_int32 bbd_p_thr_row; + u_int32 bbd_s_thr_logo_row; + u_int32 bbd_p_thr_logo_row; + u_int32 bbd_s_thr_col; + u_int32 bbd_p_thr_col; + u_int32 bbd_chr_thr_row; + u_int32 bbd_chr_thr_col; + u_int32 bbd_uv_mid_level; + u_int32 bbd_excl_win_mb_left; + u_int32 bbd_excl_win_mb_right; + +} MediaIPFW_Video_CodecParams; + +typedef struct { + u_int32 uFramePitch; + +} MediaIPFW_Video_PitchInfo; + +typedef struct { + u_int32 uWrPtr; + u_int32 uRdPtr; + u_int32 uStart; + u_int32 uEnd; + u_int32 uLo; + u_int32 uHi; + +} MediaIPFW_Video_BufDesc; + +typedef struct { + u_int32 pCodecParamArrayBase; + u_int32 uNumSizeDescriptors; + +} MediaIPFW_Video_CodecParamTabDesc; + +typedef struct { + u_int32 uRC4Key[0x8]; + u_int32 uMemObfuscVal; + +} MediaIPFW_Video_Encrypt_Info, *pMediaIPFW_Video_Encrypt_Info; + +typedef struct { + u_int32 uCfgCookie; + + u_int32 uNumMalones; + u_int32 uMaloneBaseAddress[MEDIAIP_MAX_NUM_MALONES]; + u_int32 uHifOffset[MEDIAIP_MAX_NUM_MALONES]; + u_int32 uMaloneIrqPin[MEDIAIP_MAX_NUM_MALONES][MEDIAIP_MAX_NUM_MALONE_IRQ_PINS]; + u_int32 uMaloneIrqTarget[MEDIAIP_MAX_NUM_MALONES][MEDIAIP_MAX_NUM_MALONE_IRQ_PINS]; + + u_int32 uNumWindsors; + u_int32 uWindsorBaseAddress[MEDIAIP_MAX_NUM_WINDSORS]; + u_int32 uWindsorIrqPin[MEDIAIP_MAX_NUM_WINDSORS][MEDIAIP_MAX_NUM_WINDSOR_IRQ_PINS]; + u_int32 uWindsorIrqTarget[MEDIAIP_MAX_NUM_WINDSORS][MEDIAIP_MAX_NUM_WINDSOR_IRQ_PINS]; + + u_int32 uCmdIrqPin[MEDIAIP_MAX_NUM_CMD_IRQ_PINS]; + u_int32 uCmdIrqTarget[MEDIAIP_MAX_NUM_CMD_IRQ_PINS]; + + u_int32 uMsgIrqPin[MEDIAIP_MAX_NUM_MSG_IRQ_PINS]; + u_int32 uMsgIrqTarget[MEDIAIP_MAX_NUM_MSG_IRQ_PINS]; + + u_int32 uSysClkFreq; + u_int32 uNumTimers; + u_int32 uTimerBaseAddr; + u_int32 uTimerIrqPin[MEDIAIP_MAX_NUM_TIMER_IRQ_PINS]; + u_int32 uTimerIrqTarget[MEDIAIP_MAX_NUM_TIMER_IRQ_PINS]; + u_int32 uTimerSlots[MEDIAIP_MAX_NUM_TIMER_IRQ_SLOTS]; + + u_int32 uGICBaseAddr; + u_int32 uUartBaseAddr; + + u_int32 uDPVBaseAddr; + u_int32 uDPVIrqPin; + u_int32 uDPVIrqTarget; + + u_int32 uPixIfBaseAddr; + + u_int32 pal_trace_level; + u_int32 pal_trace_destination; + + u_int32 pal_trace_level1; + u_int32 pal_trace_destination1; + + u_int32 uHeapBase; + u_int32 uHeapSize; + + u_int32 uFSLCacheBaseAddr[2]; + +} MEDIAIP_FW_SYSTEM_CONFIG, *pMEDIAIP_FW_SYSTEM_CONFIG; + +typedef struct { + u_int32 FwExecBaseAddr; + u_int32 FwExecAreaSize; + MediaIPFW_Video_BufDesc StreamCmdBufferDesc; + MediaIPFW_Video_BufDesc StreamMsgBufferDesc; + u_int32 StreamCmdIntEnable[VID_API_NUM_STREAMS]; + MediaIPFW_Video_PitchInfo StreamPitchInfo[VID_API_NUM_STREAMS]; + u_int32 StreamConfig[VID_API_NUM_STREAMS]; + MediaIPFW_Video_CodecParamTabDesc CodecParamTabDesc; /* TODO-KMC should we just go ahead and remove the concept of tabdesc? It is basicaly a bad coding style used for pinkys anyway */ + MediaIPFW_Video_JpegParamTabDesc JpegParamTabDesc; +#ifdef COREPLAY_API + pBUFFER_DESCRIPTOR_TYPE pStreamBuffDesc[VID_API_NUM_STREAMS][VID_API_MAX_BUF_PER_STR]; +#else + u_int32 pStreamBuffDesc[VID_API_NUM_STREAMS][VID_API_MAX_BUF_PER_STR]; +#endif + MediaIPFW_Video_SeqInfoBuffTabDesc SeqInfoTabDesc; + MediaIPFW_Video_PicInfoBuffTabDesc PicInfoTabDesc; + MediaIPFW_Video_GopInfoBuffTabDesc GopInfoTabDesc; + MediaIPFW_Video_QMeterInfoTabDesc QMeterInfoTabDesc; + u_int32 StreamError[VID_API_NUM_STREAMS]; + u_int32 FWVersion; + u_int32 uMVDMipsOffset; + u_int32 uMaxDecoderStreams; + MediaIPFW_Video_DbgLogDesc DbgLogDesc; + MediaIPFW_Video_FrameBuffer StreamFrameBuffer[VID_API_NUM_STREAMS]; + MediaIPFW_Video_FrameBuffer StreamDCPBuffer[VID_API_NUM_STREAMS]; + MediaIPFW_Video_UData UDataBuffer[VID_API_NUM_STREAMS]; + MediaIPFW_Video_BufDesc DebugBufferDesc; + MediaIPFW_Video_BufDesc EngAccessBufferDesc[VID_API_NUM_STREAMS]; + u_int32 ptEncryptInfo[VID_API_NUM_STREAMS]; + MEDIAIP_FW_SYSTEM_CONFIG sSystemCfg; + u_int32 uApiVersion; +} DEC_RPC_HOST_IFACE, *pDEC_RPC_HOST_IFACE; + +//x means source data , y means destination data +#define VID_STREAM_CONFIG_FORMAT_MASK 0x0000000F +#define VID_STREAM_CONFIG_FORMAT_POS 0 +#define VID_STREAM_CONFIG_FORMAT_SET(x, y) (*y = (*y | ((x << VID_STREAM_CONFIG_FORMAT_POS)&VID_STREAM_CONFIG_FORMAT_MASK))) + +#define VID_STREAM_CONFIG_STRBUFIDX_MASK 0x00000300 +#define VID_STREAM_CONFIG_STRBUFIDX_POS 8 +#define VID_STREAM_CONFIG_STRBUFIDX_SET(x, y) (*y = (*y | ((x << VID_STREAM_CONFIG_STRBUFIDX_POS)&VID_STREAM_CONFIG_STRBUFIDX_MASK))) + +#define VID_STREAM_CONFIG_NOSEQ_MASK 0x00000400 +#define VID_STREAM_CONFIG_NOSEQ_POS 10 +#define VID_STREAM_CONFIG_NOSEQ_SET(x, y) (*y = (*y | ((x << VID_STREAM_CONFIG_NOSEQ_POS)&VID_STREAM_CONFIG_NOSEQ_MASK))) + +#define VID_STREAM_CONFIG_DEBLOCK_MASK 0x00000800 +#define VID_STREAM_CONFIG_DEBLOCK_POS 11 +#define VID_STREAM_CONFIG_DEBLOCK_SET(x, y) (*y = (*y | ((x << VID_STREAM_CONFIG_DEBLOCK_POS)&VID_STREAM_CONFIG_DEBLOCK_MASK))) + +#define VID_STREAM_CONFIG_DERING_MASK 0x00001000 +#define VID_STREAM_CONFIG_DERING_POS 12 +#define VID_STREAM_CONFIG_DERING_SET(x, y) (*y = (*y | ((x << VID_STREAM_CONFIG_DERING_POS)&VID_STREAM_CONFIG_DERING_MASK))) + +#define VID_STREAM_CONFIG_IBWAIT_MASK 0x00002000 +#define VID_STREAM_CONFIG_IBWAIT_POS 13 +#define VID_STREAM_CONFIG_IBWAIT_SET(x, y) (*y = (*y | ((x << VID_STREAM_CONFIG_IBWAIT_POS)&VID_STREAM_CONFIG_IBWAIT_MASK))) + +#define VID_STREAM_CONFIG_FBC_MASK 0x00004000 +#define VID_STREAM_CONFIG_FBC_POS 14 +#define VID_STREAM_CONFIG_FBC_SET(x, y) (*y = (*y | ((x << VID_STREAM_CONFIG_FBC_POS)&VID_STREAM_CONFIG_FBC_MASK))) + +#define VID_STREAM_CONFIG_PLAY_MODE_MASK 0x00030000 +#define VID_STREAM_CONFIG_PLAY_MODE_POS 16 +#define VID_STREAM_CONFIG_PLAY_MODE_SET(x, y) (*y = (*y | ((x << VID_STREAM_CONFIG_PLAY_MODE_POS)&VID_STREAM_CONFIG_PLAY_MODE_MASK))) + +#define VID_STREAM_CONFIG_ENABLE_DCP_MASK 0x00100000 +#define VID_STREAM_CONFIG_ENABLE_DCP_POS 20 +#define VID_STREAM_CONFIG_ENABLE_DCP_SET(x, y) (*y = (*y | ((x << VID_STREAM_CONFIG_ENABLE_DCP_POS)&VID_STREAM_CONFIG_ENABLE_DCP_MASK))) + +#define VID_STREAM_CONFIG_NUM_STR_BUF_MASK 0x00600000 +#define VID_STREAM_CONFIG_NUM_STR_BUF_POS 21 +#define VID_STREAM_CONFIG_NUM_STR_BUF_SET(x, y) (*y = (*y | ((x << VID_STREAM_CONFIG_NUM_STR_BUF_POS)&VID_STREAM_CONFIG_NUM_STR_BUF_MASK))) + +#define VID_STREAM_CONFIG_MALONE_USAGE_MASK 0x01800000 +#define VID_STREAM_CONFIG_MALONE_USAGE_POS 23 +#define VID_STREAM_CONFIG_MALONE_USAGE_SET(x, y) (*y = (*y | ((x << VID_STREAM_CONFIG_MALONE_USAGE_POS)&VID_STREAM_CONFIG_MALONE_USAGE_MASK))) + +#define VID_STREAM_CONFIG_MULTI_VID_MASK 0x02000000 +#define VID_STREAM_CONFIG_MULTI_VID_POS 25 +#define VID_STREAM_CONFIG_MULTI_VID_SET(x, y) (*y = (*y | ((x << VID_STREAM_CONFIG_MULTI_VID_POS)&VID_STREAM_CONFIG_MULTI_VID_MASK))) + +#define VID_STREAM_CONFIG_OBFUSC_EN_MASK 0x04000000 +#define VID_STREAM_CONFIG_OBFUSC_EN_POS 26 +#define VID_STREAM_CONFIG_OBFUSC_EN_SET(x, y) (*y = (*y | ((x << VID_STREAM_CONFIG_OBFUSC_EN_POS)&VID_STREAM_CONFIG_OBFUSC_EN_MASK))) + +#define VID_STREAM_CONFIG_RC4_EN_MASK 0x08000000 +#define VID_STREAM_CONFIG_RC4_EN_POS 27 +#define VID_STREAM_CONFIG_RC4_EN_SET(x, y) (*y = (*y | ((x << VID_STREAM_CONFIG_RC4_EN_POS)&VID_STREAM_CONFIG_RC4_EN_MASK))) + +#define VID_STREAM_CONFIG_MCX_MASK 0x10000000 +#define VID_STREAM_CONFIG_MCX_POS 28 +#define VID_STREAM_CONFIG_MCX_SET(x, y) (*y = (*y | ((x << VID_STREAM_CONFIG_MCX_POS)&VID_STREAM_CONFIG_MCX_MASK))) + +#define VID_STREAM_CONFIG_PES_MASK 0x20000000 +#define VID_STREAM_CONFIG_PES_POS 29 +#define VID_STREAM_CONFIG_PES_SET(x, y) ((*y = (*y | ((x << VID_STREAM_CONFIG_PES_POS)&VID_STREAM_CONFIG_PES_MASK)))) + +#define VID_STREAM_CONFIG_NUM_DBE_MASK 0x40000000 +#define VID_STREAM_CONFIG_NUM_DBE_POS 30 +#define VID_STREAM_CONFIG_NUM_DBE_SET(x, y) (*y = (*y | ((x << VID_STREAM_CONFIG_NUM_DBE_POS)&VID_STREAM_CONFIG_NUM_DBE_MASK))) + +#define VID_STREAM_CONFIG_FS_CTRL_MODE_MASK 0x80000000 +#define VID_STREAM_CONFIG_FS_CTRL_MODE_POS 31 +#define VID_STREAM_CONFIG_FS_CTRL_MODE_SET(x, y) (*y = (*y | ((x << VID_STREAM_CONFIG_FS_CTRL_MODE_POS)&VID_STREAM_CONFIG_FS_CTRL_MODE_MASK))) + +#define SCB_XREG_SLV_BASE 0x00000000 +#define SCB_SCB_BLK_CTRL 0x00070000 +#define SCB_BLK_CTRL_XMEM_RESET_SET 0x00000090 +#define SCB_BLK_CTRL_CACHE_RESET_SET 0x000000A0 +#define SCB_BLK_CTRL_CACHE_RESET_CLR 0x000000A4 +#define SCB_BLK_CTRL_SCB_CLK_ENABLE_SET 0x00000100 + +#define XMEM_CONTROL 0x00041000 + +#define DEC_MFD_XREG_SLV_BASE 0x00180000 + +#define MFD_HIF 0x0001C000 +#define MFD_HIF_MSD_REG_INTERRUPT_STATUS 0x00000018 +#define MFD_SIF 0x0001D000 +#define MFD_SIF_CTRL_STATUS 0x000000F0 +#define MFD_SIF_INTR_STATUS 0x000000F4 +#define MFD_MCX 0x00020800 +#define MFD_MCX_OFF 0x00000020 + +#define MFD_BLK_CTRL 0x00030000 +#define MFD_BLK_CTRL_MFD_SYS_RESET_SET 0x00000000 +#define MFD_BLK_CTRL_MFD_SYS_RESET_CLR 0x00000004 +#define MFD_BLK_CTRL_MFD_SYS_CLOCK_ENABLE_SET 0x00000100 +#define MFD_BLK_CTRL_MFD_SYS_CLOCK_ENABLE_CLR 0x00000104 + +#endif |