Initial import of NFC GNSS SDK project
This commit is contained in:
@@ -0,0 +1,373 @@
|
||||
/*------------------------------------------------------------
|
||||
(C) Copyright [2006-2008] Marvell International Ltd.
|
||||
All Rights Reserved
|
||||
------------------------------------------------------------*/
|
||||
|
||||
#ifndef _DTC_H_
|
||||
#define _DTC_H_
|
||||
|
||||
// CQ00092184 begin
|
||||
#if defined DTC_TEST_MODE
|
||||
#define DTC_ENABLE_PRINTS
|
||||
#endif
|
||||
// CQ00092184 end
|
||||
#include "dtc_config.h"
|
||||
#ifdef UPGRADE_DTC_DRIVER
|
||||
|
||||
#include "global_types.h"
|
||||
|
||||
typedef unsigned char Int8;
|
||||
typedef unsigned short Int16;
|
||||
typedef unsigned long Int32;
|
||||
typedef unsigned long long Int64; // CQ00092184 add
|
||||
|
||||
/////// MACROS for descriptor handling ///////
|
||||
#define DTC_EXTRACT_HEADER_SIZE(reg) (((reg) >> 28) & 0xF)
|
||||
#define DTC_EXTRACT_HEADER_DATA(reg,size) ( ((reg) << (32-(size))) >> (32-(size)))
|
||||
#define DTC_EXTRACT_CONT(reg) (((reg) >> 4) & 1)
|
||||
#define DTC_EXTRACT_CB(reg) (((reg) >> 5) & 1)
|
||||
#define DTC_EXTRACT_RCS(reg) (((reg) >> 6) & 1)
|
||||
#define DTC_EXTRACT_CIPHER_OFFSET(reg) ((reg) & 7)
|
||||
// CQ00092184 begin
|
||||
#if defined (DTC_TEST_MODE)
|
||||
#define DIR_BIT_OFFSET 11
|
||||
#define DTC_TEST_MAX_CHAIN_LIST_SIZE (255)
|
||||
#define MAX_BYTE_SIZE_FOR_OUTPUT_IN_CONT_MODE (2000)
|
||||
/**************************** Functions prototypes *****************************/
|
||||
//CQ00096634 begin
|
||||
#if defined (DTC_ENABLE_PRINTS)
|
||||
void dtcTestPrintChainListArray(void);
|
||||
#endif /* DTC_ENABLE_PRINTS */
|
||||
#endif /* DTC_TEST_MODE */
|
||||
|
||||
#define DTC_EEA_BIT_IN_16BITS (0x8000)
|
||||
#define DTC_DIR_BIT_OFFSET_IN_16BITS (11)
|
||||
#define DTC_ALG_BIT_OFFSET_IN_16BITS (6)
|
||||
#define DTC_TATA_BIT_LENGTH_MASK_IN_32BITS (0x0000ffff)
|
||||
#define DTC_EXTRACT_SRC_BIT_OFFSET_FROM_DESCRIPTOR(A) ((A&0xffff0000)>>16)
|
||||
#define DTC_EXTRACT_DST_BIT_OFFSET_FROM_DESCRIPTOR(A) (A&0x0000ffff)
|
||||
#define DTC_EXTRACT_CB_BIT_FROM_DESCRIPTOR(A) ((A&0x2000) != 0)
|
||||
|
||||
#define DTC_CTRL_START_BIT_OFFSET (5)
|
||||
#define DTC_CTRL_MODE_BIT_OFFSET (6)
|
||||
#define DTC_SW_BYPASS_SET_COMMON_MODE(A) (A=A&0x07ffffff)
|
||||
#define DTC_UNSET_ALG_16_BITS(A) (A=A&0xff3f)
|
||||
#define DTC_CLEAR_CB_BIT_FROM_DESCRIPTOR(A) (A=A&0xdfff)
|
||||
|
||||
|
||||
extern void dtcPrintHwRegisters(void);
|
||||
// CQ00092184 end
|
||||
//CQ00096634 end
|
||||
enum
|
||||
{
|
||||
DTC_HEADER_SIZE_PARAM_0 = 0,
|
||||
DTC_HEADER_SIZE_PARAM_1 = 4,
|
||||
DTC_HEADER_SIZE_PARAM_2 = 6,
|
||||
DTC_HEADER_SIZE_PARAM_3 = 8,
|
||||
DTC_HEADER_SIZE_PARAM_4 = 12,
|
||||
DTC_HEADER_SIZE_PARAM_5 = 14,
|
||||
DTC_HEADER_SIZE_PARAM_6 = 16,
|
||||
DTC_HEADER_SIZE_PARAM_7 = 20,
|
||||
DTC_HEADER_SIZE_PARAM_8 = 22,
|
||||
// CQ00092184 begin
|
||||
#if defined DTC_TEST_MODE
|
||||
DTC_HEADER_SIZE_PARAM_9 = 24,
|
||||
DTC_HEADER_SIZE_PARAM_10 = 32,
|
||||
#else
|
||||
DTC_HEADER_SIZE_PARAM_9 = 0,
|
||||
DTC_HEADER_SIZE_PARAM_10 = 0,
|
||||
#endif
|
||||
// CQ00092184 end
|
||||
DTC_HEADER_SIZE_PARAM_11 = 0,
|
||||
DTC_HEADER_SIZE_PARAM_12 = 0,
|
||||
DTC_HEADER_SIZE_PARAM_13 = 0,
|
||||
DTC_HEADER_SIZE_PARAM_14 = 0,
|
||||
DTC_HEADER_SIZE_PARAM_15 = 0
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
DTC_CIPHER_OFFSET_PARAM_0 = 0,
|
||||
DTC_CIPHER_OFFSET_PARAM_1 = 4,
|
||||
DTC_CIPHER_OFFSET_PARAM_2 = 8,
|
||||
DTC_CIPHER_OFFSET_PARAM_3 = 12,
|
||||
DTC_CIPHER_OFFSET_PARAM_4 = 16,
|
||||
DTC_CIPHER_OFFSET_PARAM_5 = 20,
|
||||
DTC_CIPHER_OFFSET_PARAM_6 = 0,
|
||||
DTC_CIPHER_OFFSET_PARAM_7 = 0
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////
|
||||
|
||||
/////// I/F types ///////
|
||||
enum dtcTransferEndStatusTag
|
||||
{
|
||||
DTC_TRANSFER_END_SUCCESS,
|
||||
DTC_TRANSFER_END_ERROR
|
||||
};
|
||||
|
||||
typedef UINT8 DtcF8F9Select;
|
||||
enum DtcF8F9SelectTag
|
||||
{
|
||||
DTC_SELECT_F9 = 0,
|
||||
DTC_SELECT_F8 = 2
|
||||
};
|
||||
|
||||
typedef UINT8 DtcDirection;
|
||||
enum DtcDirectionTag
|
||||
{
|
||||
DTC_DIR_UL = 0,
|
||||
DTC_DIR_DL = 1
|
||||
};
|
||||
|
||||
typedef UINT8 DtcChainEndEvent;
|
||||
enum
|
||||
{
|
||||
DTC_CEE_NONE = 0,
|
||||
DTC_CEE_TRIG_EDCH_HW = 8
|
||||
};
|
||||
|
||||
typedef UINT8 DtcPriority;
|
||||
enum
|
||||
{
|
||||
DTC_PRIORITY_NORMAL = 0,
|
||||
DTC_PRIORITY_HIGH = 1
|
||||
};
|
||||
|
||||
typedef UINT8 DtcBlockingMode;
|
||||
enum
|
||||
{
|
||||
DTC_MODE_BLOCKING = 0,
|
||||
DTC_MODE_NON_BLOCKING = 1
|
||||
};
|
||||
|
||||
typedef enum
|
||||
{
|
||||
DTC_SUCCESS,
|
||||
DTC_ERROR
|
||||
} dtcReqStatus;
|
||||
|
||||
//CQ00096634 begin
|
||||
typedef UINT8 DtcModeSelect;
|
||||
enum
|
||||
{
|
||||
DTC_MODE_3G = 0,
|
||||
DTC_MODE_4G = 1
|
||||
};
|
||||
//CQ00096634 end
|
||||
|
||||
//#if defined (L1_UPGRADE_R7)
|
||||
typedef UINT8 cipherType_te;
|
||||
//CQ00092184 begin
|
||||
//ICAT EXPORTED ENUM
|
||||
enum
|
||||
{
|
||||
#if defined (DTC_TEST_MODE)
|
||||
UEA1_UIA1 = 0x0,
|
||||
UEA2_UIA2 = 0x20,
|
||||
EEA2_EIA2 = 0x40,
|
||||
EEA3_EIA3 = 0x80
|
||||
#else
|
||||
UEA1_UIA1 = 0,
|
||||
UEA2_UIA2 = 0x40
|
||||
#endif
|
||||
};
|
||||
// CQ00092184 end
|
||||
//#endif
|
||||
|
||||
//F8 descriptor
|
||||
//ICAT EXPORTED STRUCT
|
||||
typedef struct UdtcF8DescriptorTag
|
||||
{
|
||||
struct UdtcF8DescriptorTag *next_p;
|
||||
UINT8 *srcData_p;
|
||||
UINT8 *dstData_p;
|
||||
UINT16 bitLength;
|
||||
UINT8 bearer;
|
||||
UINT8 dtcModeReg;
|
||||
UINT32 headerReg;
|
||||
UINT16 dstBitOffset;
|
||||
UINT16 srcBitOffset;
|
||||
UINT32 countC;
|
||||
UINT8 *key_p;
|
||||
} dtcF8DescriptorInfo;
|
||||
|
||||
//F9 descriptor
|
||||
//ICAT EXPORTED STRUCT
|
||||
typedef struct UdtcF9DescriptorTag
|
||||
{
|
||||
UINT32 reserved0;
|
||||
UINT8 *srcData_p;
|
||||
UINT32 bitLength;
|
||||
UINT32 fresh;
|
||||
UINT32 countI;
|
||||
UINT8 *key_p;
|
||||
UINT16 srcBitOffset;
|
||||
UINT16 reserved1;
|
||||
UINT32 reserved2;
|
||||
} dtcF9DescriptorInfo;
|
||||
|
||||
// CQ00092184 begin
|
||||
#if defined DTC_TEST_MODE
|
||||
//List Chain test info - the input type of chainList tests as in dtc_test_data.c.
|
||||
// holds up to 8 chains to request
|
||||
//ICAT EXPORTED STRUCT
|
||||
typedef struct dtcListChainTestInfoTag
|
||||
{
|
||||
UINT16 listLength;
|
||||
UINT32 reserve[2];
|
||||
} dtcListChainTestInfo;
|
||||
#endif
|
||||
// CQ00092184 end
|
||||
|
||||
//ICAT EXPORTED STRUCT
|
||||
typedef struct dtcTransferEndTag
|
||||
{
|
||||
UINT32 status;
|
||||
UINT32 macIF9Result;
|
||||
UINT32 requestID;
|
||||
} dtcTransferEnd_ts;
|
||||
|
||||
|
||||
|
||||
//ICAT EXPORTED STRUCT
|
||||
typedef struct LteDtcDesTag
|
||||
{
|
||||
struct LteDtcDesTag *next; //pointer to the next description
|
||||
Int8 *dataPtr; // Pointer to the source data address
|
||||
Int8 *des_addr; // Pointer to the destination data address
|
||||
Int16 dataBitLen;
|
||||
Int16 shareBufPara; // include Algorithom, Retain Cipher State, Cipher Bypass, RB ID, Bcontinued, Cipher Offset and isSrb(for RLC mask 0x0800)
|
||||
Int32 headerAndFresh; // include HDR size and Header Data
|
||||
Int32 bitOffset; // include input bit offset and output bit offset
|
||||
Int32 count;
|
||||
Int8 *key_addr;
|
||||
}LteDtcDes;
|
||||
|
||||
|
||||
typedef void (*dtcTransferEndCallback)(dtcTransferEnd_ts *);
|
||||
// CQ00092184 begin
|
||||
#if defined DTC_TEST_MODE
|
||||
//holds the test information about a chain in the list
|
||||
//ICAT EXPORTED STRUCT
|
||||
typedef struct dtcTestListChainInfoTag
|
||||
{
|
||||
UINT32 testNum;
|
||||
dtcTransferEndCallback callback;
|
||||
dtcTransferEnd_ts transferEndData;
|
||||
} dtcTestListChainInfo;
|
||||
|
||||
// holds END info for all the list
|
||||
//ICAT EXPORTED STRUCT
|
||||
typedef struct dtcListTransferEndTag
|
||||
{
|
||||
UINT8 chainListChRequestIndex; // holds the index for the next chain request in the list mode array (lteChainBaseAddressCh0) and the dtc list mode end array ChainListCh0EndInfo
|
||||
Int8 lastReportDoneIndexCh;
|
||||
dtcTestListChainInfo chainInfo[DTC_TEST_MAX_CHAIN_LIST_SIZE];
|
||||
} dtcListTransferEnd_ts;
|
||||
#endif /* DTC_TEST_MODE */
|
||||
// CQ00092184 end
|
||||
#if 0
|
||||
//Dtc request structure
|
||||
typedef struct dtcTransferReqTag
|
||||
{
|
||||
DtcF8F9Select select;
|
||||
DtcChainEndEvent cee;
|
||||
DtcPriority priority;
|
||||
DtcBlockingMode blockingMode;
|
||||
DtcDirection dir;
|
||||
UINT8 reserved[3];
|
||||
UINT32 requestID;
|
||||
void *firstDescriptor_p;
|
||||
dtcTransferEndCallback callback;
|
||||
} dtcTransferReq_ts;
|
||||
#endif
|
||||
|
||||
//ICAT EXPORTED STRUCT
|
||||
typedef struct dtcTransferReqTag
|
||||
{
|
||||
DtcF8F9Select select;
|
||||
DtcChainEndEvent cee;
|
||||
DtcPriority priority;
|
||||
DtcBlockingMode blockingMode;
|
||||
DtcDirection dir;
|
||||
//#if defined (L1_UPGRADE_R7)
|
||||
cipherType_te cipherAlgorithm;
|
||||
UINT8 reserved[2];
|
||||
//#else
|
||||
//UINT8 reserved[3];
|
||||
//#endif
|
||||
UINT32 requestID;
|
||||
void *firstDescriptor_p;
|
||||
dtcTransferEndCallback callback;
|
||||
} dtcTransferReq_ts;
|
||||
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
/////// function prototype ///////
|
||||
|
||||
//generator I/F func
|
||||
extern void dtc
|
||||
(void *Desc_p,
|
||||
UINT32 *input_p,
|
||||
UINT32 *output_p,
|
||||
UINT8 *key_p,
|
||||
DtcDirection dir,
|
||||
DtcF8F9Select select
|
||||
);
|
||||
|
||||
extern void dtcF9CallbackFunction(dtcTransferEnd_ts *TransferEndData);
|
||||
|
||||
extern dtcReqStatus dtcTransferReq (dtcTransferReq_ts *dtcRequest);
|
||||
|
||||
extern void dtcPreF8TransferReq(UINT8 savedBuff[], UINT8 chainLen, dtcF8DescriptorInfo *firstF8Desc_p);
|
||||
|
||||
extern void dtcPostF8TransferReq(UINT8 savedBuff[], UINT8 chainLen, dtcF8DescriptorInfo *firstF8Desc_p);
|
||||
|
||||
extern dtcReqStatus dtcPahse1Init(void);
|
||||
|
||||
extern dtcReqStatus dtcPahse2Init(void);
|
||||
|
||||
extern dtcReqStatus InitDtc(void); //CQ00096760 modify
|
||||
#ifndef UPGRADE_DTC_SIMULATOR
|
||||
extern void dtcSetDtcResetAfterRequest (UINT8 val);
|
||||
void dtcD2Register(void);
|
||||
#endif
|
||||
|
||||
#if defined (PHS_SW_DEMO_TTC)
|
||||
#if 0
|
||||
UINT32 f9
|
||||
(UINT8 * key_p,
|
||||
UINT32 countI,
|
||||
UINT32 fresh,
|
||||
UINT8 dir,
|
||||
UINT8 * data_p,
|
||||
UINT16 bitLength
|
||||
);
|
||||
void f8(
|
||||
UINT8 * key_p,
|
||||
UINT32 countC,
|
||||
UINT32 bearer,
|
||||
UINT8 dir,
|
||||
UINT8 * data_p,
|
||||
UINT16 bitLength,
|
||||
UINT16 bitOffset
|
||||
);
|
||||
void f8Enhanced(
|
||||
UINT8 * key_p,
|
||||
UINT32 countC,
|
||||
UINT32 bearer,
|
||||
UINT8 dir,
|
||||
UINT8 * srcData_p,
|
||||
UINT8 * dstData_p,
|
||||
UINT16 bitLength,
|
||||
UINT16 srcBitOffset,
|
||||
UINT16 dstBitOffset
|
||||
);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif //UPGRADE_DTC_DRIVER
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user