218 lines
9.2 KiB
C
Executable File
218 lines
9.2 KiB
C
Executable File
/**
|
|
Header file for TS MUXER/TS DEMUXER/HWCOPY Engine Integration module
|
|
|
|
This file is the header file for TS MUXER/TS DEMUXER/HWCOPY Engine Integration module driver
|
|
The user can reference this section for the detail description of the each driver API usage
|
|
and also the parameter descriptions and its limitations.
|
|
The overall combinational usage flow is introduced in the application note document,
|
|
and the user must reference to the application note for the driver usage flow.
|
|
|
|
@file tse.h
|
|
@ingroup mIDrvMisc_TSE
|
|
@note Nothing
|
|
|
|
Copyright Novatek Microelectronics Corp. 2016. All rights reserved.
|
|
*/
|
|
|
|
/**
|
|
@addtogroup mIDrvMisc_TSE
|
|
*/
|
|
//@{
|
|
|
|
#ifndef _TSE_H
|
|
#define _TSE_H
|
|
|
|
#include "kwrap/type.h"
|
|
|
|
#define DRV_LIMIT_ALIGN_BYTE 0x00000001 // Byte alignment
|
|
#define DRV_LIMIT_ALIGN_HALFWORD 0x00000002 // Half-word (2 Bytes) alignment
|
|
#define DRV_LIMIT_ALIGN_WORD 0x00000004 // Word ( 4 bytes) alignment
|
|
#define DRV_LIMIT_ALIGN_2WORD 0x00000008 // 2 words ( 8 bytes) alignment
|
|
#define DRV_LIMIT_ALIGN_4WORD 0x00000010 // 4 words (16 bytes) alignment
|
|
#define DRV_LIMIT_ALIGN_8WORD 0x00000020 // 8 words (32 bytes) alignment
|
|
|
|
/**************** TSE_MODE_TSMUX ****************/
|
|
#define TSE_MUX_SRC_ADDR_ALIGN DRV_LIMIT_ALIGN_WORD
|
|
#define TSE_MUX_SRC_BUF_BLK_SIZE_ALIGN DRV_LIMIT_ALIGN_WORD
|
|
#define TSE_MUX_SRC_BUF_LAST_BLK_SIZE_ALIGN DRV_LIMIT_ALIGN_BYTE
|
|
|
|
#define TSE_MUX_DST_ADDR_ALIGN DRV_LIMIT_ALIGN_WORD
|
|
#define TSE_MUX_DST_BUF_BLK_SIZE_ALIGN DRV_LIMIT_ALIGN_WORD
|
|
|
|
/**************** TSE_MODE_TSDEMUX ****************/
|
|
#define TSE_DEMUX_SRC_ADDR_ALIGN DRV_LIMIT_ALIGN_WORD
|
|
#define TSE_DEMUX_SRC_BUF_BLK_SIZE_ALIGN DRV_LIMIT_ALIGN_WORD
|
|
#define TSE_DEMUX_SRC_BUF_LAST_BLK_SIZE_ALIGN DRV_LIMIT_ALIGN_WORD
|
|
|
|
#define TSE_DEMUX_DST_ADDR_ALIGN DRV_LIMIT_ALIGN_WORD
|
|
#define TSE_DEMUX_DST_BUF_BLK_SIZE_ALIGN DRV_LIMIT_ALIGN_WORD
|
|
#define TSE_DEMUX_DST_BUF_LAST_BLK_SIZE_ALIGN DRV_LIMIT_ALIGN_BYTE
|
|
|
|
/**************** TSE_MODE_HWCOPY ****************/
|
|
//HWCOPY_LINEAR_COPY
|
|
#define TSE_LINEAR_CPY_SRC_ADDR_ALIGN DRV_LIMIT_ALIGN_BYTE
|
|
#define TSE_LINEAR_CPY_SRC_SIZE_ALIGN DRV_LIMIT_ALIGN_BYTE
|
|
#define TSE_LINEAR_CPY_DST_ADDR_ALIGN DRV_LIMIT_ALIGN_BYTE
|
|
|
|
//HWCOPY_LINEAR_SET
|
|
#define TSE_LINEAR_SET_DST_ADDR_ALIGN DRV_LIMIT_ALIGN_WORD
|
|
#define TSE_LINEAR_SET_DST_SIZE_ALIGN DRV_LIMIT_ALIGN_WORD
|
|
|
|
#define TSE_CFG_MASK 0x10000000
|
|
#define TSE_MUX_MASK 0x20000000
|
|
#define TSE_DEMUX_MASK 0x40000000
|
|
#define TSE_HWCPY_MASK 0x80000000
|
|
/**
|
|
TSE module general configuration Selection
|
|
|
|
This is used in tse_setConfig()/tse_getConfig() to specify which of the function is selected to assign new configuration.
|
|
*/
|
|
typedef enum {
|
|
TSE_CFG_ID_FREQ = TSE_CFG_MASK, ///< TSE operating frequency (unit: MHz). Context can be:
|
|
///< - @b 240 MHz
|
|
///< - @b 320 MHz
|
|
///< - @b 360 MHz
|
|
TSE_CFG_ID_MAX,
|
|
|
|
TSMUX_CFG_ID_PAYLOADSIZE = TSE_MUX_MASK, ///< Configure the TS packet payload size.
|
|
///< - @b 184 bytes
|
|
///< - @b 176 bytes
|
|
///< - @b 160 bytes
|
|
TSMUX_CFG_ID_SRC_INFO, ///< Muxing input buffer information. data type TSE_BUF_INFO
|
|
TSMUX_CFG_ID_DST_INFO, ///< Muxing output buffer information. data type TSE_BUF_INFO
|
|
///< it would output warning messages as notifications.
|
|
TSMUX_CFG_ID_MUXING_LEN, ///< Get Last Mux output size.
|
|
TSMUX_CFG_ID_SYNC_BYTE, ///< TS Stream header's Field: Sync Byte.
|
|
TSMUX_CFG_ID_CONTINUITY_CNT, ///< TS Stream header's Field: continuity counter initial value. Valid value 0x0 ~ 0xF.
|
|
TSMUX_CFG_ID_PID, ///< TS Stream header's Field: 13-bits Packet ID. Valid value 0x0 ~ 0x1FFF.
|
|
TSMUX_CFG_ID_TEI, ///< TS Stream header's Field: Transport Error Indicator. Valid value 0 or 1.
|
|
TSMUX_CFG_ID_TP, ///< TS Stream header's Field: Transport Priority. Valid value 0 or 1.
|
|
TSMUX_CFG_ID_SCRAMBLECTRL, ///< TS Stream header's Field: Scrambling Control. Valid value 0~3. The value 0 means Not Scrambled.
|
|
TSMUX_CFG_ID_START_INDICTOR, ///< TS Stream header's Field: Payload Unit Start Indicator bit.
|
|
TSMUX_CFG_ID_STUFF_VAL, ///< Set Stuff values. Default value is 0x00.
|
|
TSMUX_CFG_ID_ADAPT_FLAGS, ///< Set 8bits adaptation field flags.
|
|
TSMUX_CFG_ID_CON_CURR_CNT, ///< Get continue current counter value.
|
|
TSMUX_CFG_ID_LAST_DATA_MUX_MODE, ///< Select muxing data into 1 or 2 TS packet, only valid at remaining data is equal to 183 bytes(528)
|
|
///< - @b 0: 2ts packets
|
|
///< - @b 1: 1ts packets
|
|
TSMUX_CFG_ID_PHY_ADDR_EN, ///< Set PHY address enable
|
|
TSMUX_CFG_ID_MAX,
|
|
|
|
TSDEMUX_CFG_ID_SYNC_BYTE = TSE_DEMUX_MASK, ///< Set SYNC Byte checking value. Default is 0x47.
|
|
TSDEMUX_CFG_ID_ADAPTATION_FLAG, ///< Set Adaptation Flag checking value. Default is 0x00.
|
|
TSDEMUX_CFG_ID_PID0_ENABLE, ///< Enable/Disable of the filtering for TS packet's payload with PID0.
|
|
TSDEMUX_CFG_ID_PID1_ENABLE, ///< Enable/Disable of the filtering for TS packet's payload with PID1.
|
|
TSDEMUX_CFG_ID_PID2_ENABLE, ///< Enable/Disable of the filtering for TS packet's payload with PID2.
|
|
TSDEMUX_CFG_ID_PID0_VALUE, ///< 13bits PID-0 value.
|
|
TSDEMUX_CFG_ID_PID1_VALUE, ///< 13bits PID-1 value.
|
|
TSDEMUX_CFG_ID_PID2_VALUE, ///< 13bits PID-2 value.
|
|
TSDEMUX_CFG_ID_CONTINUITY0_MODE, ///<
|
|
TSDEMUX_CFG_ID_CONTINUITY1_MODE, ///<
|
|
TSDEMUX_CFG_ID_CONTINUITY2_MODE, ///<
|
|
TSDEMUX_CFG_ID_CONTINUITY0_VALUE, ///<
|
|
TSDEMUX_CFG_ID_CONTINUITY1_VALUE, ///<
|
|
TSDEMUX_CFG_ID_CONTINUITY2_VALUE, ///<
|
|
TSDEMUX_CFG_ID_CONTINUITY0_LAST, ///< Get the last continuity counter value after previous operation done.
|
|
TSDEMUX_CFG_ID_CONTINUITY1_LAST, ///< Get the last continuity counter value after previous operation done.
|
|
TSDEMUX_CFG_ID_CONTINUITY2_LAST, ///< Get the last continuity counter value after previous operation done.
|
|
TSDEMUX_CFG_ID_IN_INFO, ///< Set Input buffer info. data type TSE_BUF_INFO
|
|
TSDEMUX_CFG_ID_OUT0_INFO, ///< Set Out0 buffer info. data type TSE_BUF_INFO
|
|
TSDEMUX_CFG_ID_OUT1_INFO, ///< Set Out1 buffer info. data type TSE_BUF_INFO
|
|
TSDEMUX_CFG_ID_OUT2_INFO, ///< Set Out2 buffer info. data type TSE_BUF_INFO
|
|
TSDEMUX_CFG_ID_OUT0_TOTAL_LEN, ///< Get Last output size.
|
|
TSDEMUX_CFG_ID_OUT1_TOTAL_LEN, ///< Get Last output size.
|
|
TSDEMUX_CFG_ID_OUT2_TOTAL_LEN, ///< Get Last output size.
|
|
TSDEMUX_CFG_ID_PHY_ADDR_EN, ///< Set PHY address enable
|
|
TSDEMUX_CFG_ID_MAX,
|
|
|
|
HWCOPY_CFG_ID_CMD = TSE_HWCPY_MASK, ///< Set hwcopy command
|
|
HWCOPY_CFG_ID_CTEX, ///< Set constant value
|
|
HWCOPY_CFG_ID_SRC_ADDR, ///< Set Input Start Address
|
|
HWCOPY_CFG_ID_DST_ADDR, ///< Set Output Start Address
|
|
HWCOPY_CFG_ID_SRC_LEN, ///< Set Input Size
|
|
HWCOPY_CFG_ID_TOTAL_LEN, ///< Get Output Size
|
|
HWCOPY_CFG_ID_CACHE_FLUSH, ///< Set cache flush
|
|
HWCOPY_CFG_ID_PHY_ADDR_EN, ///< Set PHY address enable
|
|
HWCOPY_CFG_ID_MAX,
|
|
|
|
ENUM_DUMMY4WORD(TSE_CFG_ID)
|
|
} TSE_CFG_ID;
|
|
|
|
/**
|
|
HwCopy operation cmmand
|
|
|
|
Select which HwCopy operation command for HwCopy engine operation.
|
|
|
|
*/
|
|
typedef enum {
|
|
HWCOPY_LINEAR_SET, //0x0 ///< linear set constant to addressed memory
|
|
HWCOPY_LINEAR_COPY, //0x1 ///< linear copy to addressed memory
|
|
ENUM_DUMMY4WORD(HWCOPY_CMD)
|
|
} HWCOPY_CMD;
|
|
|
|
|
|
typedef struct _TSE_BUF_INFO {
|
|
UINT32 addr;
|
|
UINT32 size;
|
|
struct _TSE_BUF_INFO *pnext; ///< Link to next property description. (Fill NULL if this is last item)
|
|
} TSE_BUF_INFO;
|
|
|
|
/*
|
|
TSE_MODE
|
|
*/
|
|
typedef enum {
|
|
TSE_MODE_TSMUX,
|
|
TSE_MODE_TSDEMUX,
|
|
TSE_MODE_HWCOPY,
|
|
TSE_MODE_MAX_NUM,
|
|
ENUM_DUMMY4WORD(TSE_MODE_NUM)
|
|
} TSE_MODE_NUM;
|
|
|
|
typedef enum {
|
|
INT_STS_COMPLETE = (1 << 0),
|
|
INT_STS_INPUT_END = (1 << 1),
|
|
|
|
INT_STS_OUT0_FULL = (1 << 4),
|
|
INT_STS_OUT1_FULL = (1 << 5),
|
|
INT_STS_OUT2_FULL = (1 << 6),
|
|
|
|
INT_STS_CONTY0_ERR = (1 << 8),
|
|
INT_STS_TEI0 = (1 << 9),
|
|
INT_STS_SYNC0_ERR = (1 << 10),
|
|
INT_STS_ADAPFLG0_ERR = (1 << 11),
|
|
|
|
INT_STS_CONTY1_ERR = (1 << 16),
|
|
INT_STS_TEI1 = (1 << 17),
|
|
INT_STS_SYNC1_ERR = (1 << 18),
|
|
INT_STS_ADAPFLG1_ERR = (1 << 19),
|
|
|
|
INT_STS_CONTY2_ERR = (1 << 24),
|
|
INT_STS_TEI2 = (1 << 25),
|
|
INT_STS_SYNC2_ERR = (1 << 26),
|
|
INT_STS_ADAPFLG2_ERR = (1 << 27),
|
|
|
|
ENUM_DUMMY4WORD(TSE_INT_STS)
|
|
} TSE_INT_STS;
|
|
|
|
#define TSE_INT_ERR0_STS (INT_STS_CONTY0_ERR | INT_STS_TEI0 | INT_STS_SYNC0_ERR | INT_STS_ADAPFLG0_ERR)
|
|
#define TSE_INT_ERR1_STS (INT_STS_CONTY1_ERR | INT_STS_TEI1 | INT_STS_SYNC1_ERR | INT_STS_ADAPFLG1_ERR)
|
|
#define TSE_INT_ERR2_STS (INT_STS_CONTY2_ERR | INT_STS_TEI2 | INT_STS_SYNC2_ERR | INT_STS_ADAPFLG2_ERR)
|
|
|
|
//
|
|
// Extern APIs
|
|
//
|
|
extern ER tse_open(void);
|
|
extern ER tse_close(void);
|
|
extern BOOL tse_isOpened(void);
|
|
|
|
extern ER tse_start(BOOL bWait, TSE_MODE_NUM OP_MODE);
|
|
extern ER tse_waitDone(void);
|
|
extern ER tse_setConfig(TSE_CFG_ID CfgID, UINT32 uiCfgValue);
|
|
extern UINT32 tse_getConfig(TSE_CFG_ID CfgID);
|
|
extern UINT32 tse_getIntStatus(void);
|
|
extern UINT32 tse_init(void);
|
|
extern UINT32 tse_uninit(void);
|
|
//@}
|
|
#endif
|
|
|