⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tmhdvopriv.h

📁 用于TM1300/PNX1300系列DSP(主要用于视频处理)的设备库的源码
💻 H
字号:
/*
 *  +-------------------------------------------------------------------+
 *  | Copyright (c) 1998-1999 by TriMedia Technologies.                 |
 *  |                                                                   |
 *  | This software  is furnished under a license  and may only be used |
 *  | and copied in accordance with the terms  and conditions of such a |
 *  | license  and with  the inclusion of this  copyright notice.  This |
 *  | software or any other copies of this software may not be provided |
 *  | or otherwise  made available  to any other person.  The ownership |
 *  | and title of this software is not transferred.                    |
 *  |                                                                   |
 *  | The information  in this software  is subject  to change  without |
 *  | any  prior notice  and should not be construed as a commitment by |
 *  | TriMedia Technologies.                                            |
 *  |                                                                   |
 *  | This  code  and  information  is  provided  "as is"  without  any |
 *  | warranty of any kind,  either expressed or implied, including but |
 *  | not limited  to the implied warranties  of merchantability and/or |
 *  | fitness for any particular purpose.                               |
 *  +-------------------------------------------------------------------+
 *
 *
 *  Module name : tmHDVOpriv.h     1.1
 *
 *  Last update : 15:51:40  -  98/08/29
 *
 *  Description :
 *	
 *      This is a private HDVO device library file.
 *
 *  Revision                 :
 *
 */

#ifndef _TMHDVO_PRIVATE_H_
#define _TMHDVO_PRIVATE_H_

/*-----------------------------includes-------------------------------------*/

#include <tm1/tmHDVO.h>


#if defined(__cplusplus)
extern "C" {

#endif

/*-----------------------------defines---------------------------------------*/

/*------------------------------types----------------------------------------*/
/* 
 * DMA-HWY I/F RWn
 */
typedef enum {
  HDVO_DMA_HWY_SDRAM_WRITE  = 0,
  HDVO_DMA_HWY_SDRAM_READ   = 1
} hdvoDMA_HWY_RW_t;

typedef enum {
  HDVO_DMA_HWY_NO_SWAP = 0,
  HDVO_DMA_HWY_BSW     = 1,
  HDVO_DMA_HWY_BSH     = 2
} hdvoDMA_HWY_SWAP_TYPE_t;

typedef enum {
  HDVO_DMA_HWY_PLANE_0      = 0,
  HDVO_DMA_HWY_PLANE_1      = 1,
  HDVO_DMA_HWY_PLANE_2      = 2,
  HDVO_DMA_HWY_PLANE_3      = 3,
  HDVO_DMA_HWY_PLANE_4      = 4,
  HDVO_DMA_HWY_PLANE_5      = 5,
  HDVO_DMA_HWY_PLANE_6      = 6,
  HDVO_DMA_HWY_PLANE_7      = 7,
  HDVO_DMA_HWY_PLANE_8      = 8,
  HDVO_DMA_HWY_PLANE_9      = 9,
  HDVO_DMA_HWY_PLANE_10     = 10,
  HDVO_DMA_HWY_PLANE_11     = 11,
  HDVO_DMA_HWY_PLANE_12     = 12,
  HDVO_DMA_HWY_PLANE_13     = 13,
  HDVO_DMA_HWY_PLANE_14     = 14,
  HDVO_DMA_HWY_PLANE_15     = 15,
  HDVO_DMA_HWY_GLOBAL_PLANE = 16,
  HDVO_DMA_HWY_SAVE_CONTEXT = 31
} hdvoDMA_HWY_PLANE_t;

/*
 * XBUS
 */

typedef enum {
  HDVO_XBUS_XBAR_WRITE = 0,
  HDVO_XBUS_XBAR_READ  = 1
} hdvoXBUS_RW_t;

typedef enum {
  HDVO_XBUS_A = 0,      /* xbus A        */
  HDVO_XBUS_B = 1       /* xbus B        */
} hdvoXBUS_t;

typedef enum {
  HDVO_XBAR_FLTR1 = 1,  /* filter 1 xbar */
  HDVO_XBAR_FLTR2 = 2,  /* filter 2 xbar */
  HDVO_XBAR_CTRL  = 4   /* control xbar  */
} hdvoXBAR_t;

typedef enum {
  HDVO_8_Bit = 0,
  HDVO_16_Bit = 1
} hdvoWordSize_t;

/*
 * Memory blocks
 */

typedef enum {
  HDVO_MEMORY_MODULE_WRITE = 0,
  HDVO_MEMORY_MODULE_READ  = 1
} hdvoMEMORY_RW_t;

typedef enum {
 HDVO_MEMORY_BLOCK_RESET_ADDRESS    = 0,  /* 8 bit address is reset, page
					     is read from page register */
 HDVO_MEMORY_BLOCK_USE_PAGE_ADDRESS = 1,  /* load from page and memory
					     start register */
 HDVO_MEMORY_BLOCK_CONTINUE         = 2,  /* continue with current address  */
 HDVO_MEMORY_BLOCK_USE_PAGE         = 3   /* load from page register but
					     use current address */
} hdvoMemoryBlockCtrl_t;

/*
 * Streaming out
 */
typedef enum {
  HDVO_STM_LOAD_PARAM = 0,                /* Load parameters              */
  HDVO_STM_LOAD_LUT   = 1,                /* Load LUT                     */
  HDVO_STM_LOAD_PIXEL = 2,                /* Load image pixels            */
  HDVO_STM_LOAD_DATA  = 3,                /* load data                    */
  HDVO_STM_FREE_LINES = 4,                /* free run for number of lines */
  HDVO_STM_NO_LOAD    = 6,                /* no load                      */
  HDVO_STM_FREE_RUN   = 7                 /* Free run                     */
} hdvoSTM_Load_Mode_t;

/*
 * Processing step issue
 */
typedef enum {
  HDVO_ASYNCHRONOUS_ISSUE           = 0,  /* PS is asynchronous */
  HDVO_SYNCHRONOUS_ISSUE            = 1   /* PS is asynchronous */
} hdvoIssuePS_t;

/*
 * MDX mode
 */
typedef enum {
  HDVO_MDX_CONTROL           = 0,  /* control mode used for loading coeffs */
  HDVO_MDX_DATA              = 1   /* data mode */
} hdvoMDX_Mode_t;

/* ----------- types used for test only ----------- */
/*
 * Transfer Unit (XFR)
 */
typedef enum {
  HDVO_XFR_REPEAT_EVERY_4_CLOCKS = 0,
  HDVO_XFR_REPEAT_EVERY_CLOCK    = 1,
  HDVO_XFR_REPEAT_EVERY_2_CLOCKS = 2,
  HDVO_XFR_REPEAT_EVERY_3_CLOCKS = 3
} hdvoXFRCycles_t;

typedef enum {
  HDVO_XFR_PATTERN_DISABLED       = 0,
  HDVO_XFR_PATTERN_OUTPUT_CYCLE_1 = 1,
  HDVO_XFR_PATTERN_OUTPUT_CYCLE_2 = 2,
  HDVO_XFR_PATTERN_OUTPUT_CYCLE_3 = 3,
  HDVO_XFR_PATTERN_OUTPUT_CYCLE_4 = 4
} hdvoXFRPattern_t;    /* can be or'd */


/*--------------------------- externs ---------------------------------------*/
#ifndef DISABLE_LOAD_STM_GAMMA
extern tmLibdevErr_t
hdvoLoadSTMGamma(UInt8 *gammaTable);
#endif

#ifndef DISABLE_LOAD_STM_PARAMS
extern tmLibdevErr_t
#ifdef HDVO_STM16
hdvoLoadSTMParameters(UInt16 *stmParameters);
#else
hdvoLoadSTMParameters(UInt8 *stmParameters);
#endif
#endif

extern tmLibdevErr_t
hdvoLoadContext(phdvoContext_t pcontext);

extern tmLibdevErr_t
hdvoLoadDataSegment(UInt16 * dataSegment, 
		    UInt16 dataSegmentSize);

#ifndef HDVO_UNFORMATED_UCODE
extern tmLibdevErr_t
hdvoLoadMicroCode(UInt8 * microCode, UInt16  microCodeSize);
#else
tmLibdevErr_t
hdvoLoadMicroCode(UInt8 * microCode0, UInt8 * microCode1,
		  UInt8 * microCode2, UInt16  microCodeSize);
#endif

extern tmLibdevErr_t
hdvoLoadMDXParameters(UInt8 *mdxParameters);

extern tmLibdevErr_t 
hdvoReset(void);

extern tmLibdevErr_t 
hdvoIssueProcessingStep(hdvoIssuePS_t mode);

extern tmLibdevErr_t 
hdvoSetupMemory(UInt32 module, hdvoMEMORY_RW_t readWrite, UInt8 page,
		UInt8 startAddress, Bool keepPage,
		hdvoMemoryBlockCtrl_t control);

extern tmLibdevErr_t 
hdvoDisableMemory(UInt32 module, hdvoMEMORY_RW_t readWrite);

extern tmLibdevErr_t 
hdvoSetupCtrlInXbar( UInt8 functionUnitPort, UInt8 memoryModule);

extern tmLibdevErr_t 
hdvoSetupCtrlOutXbar(UInt8 memoryModule, UInt8 functionUnitPort);

extern tmLibdevErr_t 
hdvoDMA_HWY_IF_LH_INSTR(UInt8 * addressSDRAM, UInt8 count, 
			hdvoDMA_HWY_RW_t readWrite,
			UInt16 addressIRAM, Bool priority);

extern tmLibdevErr_t 
hdvoDMA_HWY_IF_NH_INSTR(UInt8 count, Bool updateAddress,
			Bool validIRAM, UInt16 addressIRAM);

extern tmLibdevErr_t 
hdvoDMA_HWY_IF_CH_INSTR(Bool resetIRAM, UInt8 plane,
			UInt8 incType);

extern tmLibdevErr_t 
hdvoDMA_HWY_IF_LX_INSTR(hdvoXBUS_t xbus, hdvoXBAR_t crossbar, Bool merge,
			Bool oddEven, hdvoXBUS_RW_t readWrite, 
			UInt16 addressIRAM, Bool interleaved, 
			hdvoWordSize_t wordSize, UInt8 count);

#if defined (HDVO_DEBUG_FUNCTIONS)
extern tmLibdevErr_t 
hdvoDMA_HWY_IF_LCX_INSTR(hdvoXBUS_t xbus, Bool oddEven, 
			 hdvoXBUS_RW_t readWrite, UInt16 addressIRAM,
			 Bool interleaved, hdvoWordSize_t wordSize,
			 Bool validIRAM);
#endif

extern tmLibdevErr_t 
hdvoDMA_HWY_IF_NX_INSTR(hdvoXBUS_t xbus, Bool merge, UInt8 count);

#if defined (HDVO_DEBUG_FUNCTIONS)
extern tmLibdevErr_t 
hdvoDMA_HWY_IF_CX_INSTR(hdvoXBUS_t xbus, hdvoXBAR_t crossbar, Bool oddEven,
			UInt8 plane);
#endif

#if defined (HDVO_DEBUG_FUNCTIONS)
extern tmLibdevErr_t 
hdvoDMA_HWY_IF_SX_INSTR(hdvoXBUS_t xbus, UInt8 plane);
#endif

extern tmLibdevErr_t
hdvoLoadMCPDataMemory(UInt16 * addressSDRAM, UInt16 size,
		      UInt8 page);

extern tmLibdevErr_t
hdvoSDRAMTransfer(hdvoDMA_HWY_RW_t readWrite,
		  Bool initialTransfer,
		  UInt8 * addressSDRAM,
		  Bool   validIRAM,
		  UInt16 addressIRAM,
		  UInt16 size,
		  hdvoDMA_HWY_SWAP_TYPE_t swapType);

extern tmLibdevErr_t
hdvoTransferIRAMtoCTRL(hdvoXBUS_t xbus,
		       UInt16 addressIRAM,
		       UInt32 memoryModule,
		       UInt16 size,
		       hdvoWordSize_t wordSize);

extern tmLibdevErr_t
hdvoTransferCTRLtoMCPData(UInt32 memoryModule,
			  UInt8  page,
			  UInt16 size);

extern tmLibdevErr_t
hdvoTransferCTRLtoMCPProgram(UInt32 boMemoryModule,
			     UInt32 b1MemoryModule,
			     UInt32 b2MemoryModule,
			     UInt8  page,
			     UInt16 size);

#if !defined (DISABLE_LOAD_STM_GAMMA) || !defined(DISABLE_LOAD_STM_PARAMS)
extern tmLibdevErr_t
hdvoTransferCTRLtoSTM(hdvoSTM_Load_Mode_t loadMode, 
		      UInt32 memoryModule,
		      UInt8 size);
#endif

/* TEST/DEBUG Functions */
#if defined (HDVO_DEBUG_FUNCTIONS)
extern tmLibdevErr_t
hdvoTransferCTRLtoIRAM(hdvoXBUS_t xbus,
		       UInt16 addressIRAM,
		       UInt32 memoryModule,
		       UInt16 size,
		       hdvoWordSize_t wordSize);

extern tmLibdevErr_t
hdvoTransferMCPDataToCTRL(UInt32 memoryModule,
			  UInt8  page,
			  UInt16 size);


extern tmLibdevErr_t
hdvoSetupXFR(hdvoXBAR_t crossbar,
	     UInt8 totalCount,
	     Bool enableMuxing,
	     hdvoXFRCycles_t cycles,
	     Bool enableOutput1,
	     hdvoXFRPattern_t port1Pattern,
	     Bool enableOutput2,
	     hdvoXFRPattern_t port2Pattern,
	     Bool enableOutput3,
	     hdvoXFRPattern_t port3Pattern,
	     Bool enableOutput4,
	     hdvoXFRPattern_t port4Pattern,
	     UInt8 port1Count);

extern tmLibdevErr_t
hdvoDisableXFR(hdvoXBAR_t crossbar);

extern tmLibdevErr_t
hdvoTransferCrossbar(hdvoXBAR_t readCrossbar,
		     UInt32     readMemory,
		     hdvoXBAR_t writeCrossbar,
		     UInt32     writeMemory,
		     UInt16 size);

extern tmLibdevErr_t 
hdvoSetupFilterInXbar(hdvoXBAR_t filterCrossbar,
		      UInt8 functionUnitPort,
		      UInt8 memoryModule) ;

extern tmLibdevErr_t 
hdvoSetupFilterOutXbar(hdvoXBAR_t filterCrossbar,
		       UInt8 memoryModule,
		       UInt8 functionUnitPort);

extern tmLibdevErr_t
hdvoTransferIRAMtoFILTER(hdvoXBAR_t filterCrossbar,
			 hdvoXBUS_t xbus,
			 UInt16 addressIRAM,
			 UInt32 memoryModule,
			 UInt16 size,
			 hdvoWordSize_t wordSize);

extern tmLibdevErr_t
hdvoTransferFILTERtoIRAM(hdvoXBAR_t filterCrossbar,
			 hdvoXBUS_t xbus,
			 UInt16 addressIRAM,
			 UInt32 memoryModule,
			 UInt16 size,
			 hdvoWordSize_t wordSize);
#endif

#if defined(__cplusplus)
}
#endif

#endif	/* #ifndef _TMHDVO_PRIVATE_H_ */

/* ************************************************************************* */





⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -