303 lines
9.1 KiB
C
303 lines
9.1 KiB
C
/**
|
|
Copyright (C) 2008 NXP B.V., All Rights Reserved.
|
|
This source code and any compilation or derivative thereof is the proprietary
|
|
information of NXP B.V. and is confidential in nature. Under no circumstances
|
|
is this software to be exposed to or placed under an Open Source License of
|
|
any type without the expressed written permission of NXP B.V.
|
|
*
|
|
* \file tmdlI2C.h
|
|
* %version: 4 %
|
|
*
|
|
* \date %date_modified%
|
|
*
|
|
* \brief Describe briefly the purpose of this file.
|
|
*
|
|
* REFERENCE DOCUMENTS :
|
|
*
|
|
* Detailed description may be added here.
|
|
*
|
|
* \section info Change Information
|
|
*
|
|
* \verbatim
|
|
Date Modified by CRPRNr TASKNr Maintenance description
|
|
-------------|-----------|-------|-------|-----------------------------------
|
|
9-JULY-2007 | A.TANT | | | CREATION OF I2C ARCHITECTURE 2.0.0
|
|
-------------|-----------|-------|-------|-----------------------------------
|
|
| | | |
|
|
-------------|-----------|-------|-------|-----------------------------------
|
|
\endverbatim
|
|
*
|
|
*/
|
|
|
|
|
|
#ifndef TMDLI2C_H
|
|
#define TMDLI2C_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
/*============================================================================*/
|
|
/* INCLUDE FILES */
|
|
/*============================================================================*/
|
|
|
|
/*============================================================================*/
|
|
/* MACRO DEFINITION */
|
|
/*============================================================================*/
|
|
|
|
/* SW Error codes */
|
|
#define I2C_ERR_BASE (CID_COMP_PARPORT | CID_LAYER_HWAPI)
|
|
#define I2C_ERR_COMP (CID_COMP_PARPORT | CID_LAYER_HWAPI | TM_ERR_COMP_UNIQUE_START)
|
|
|
|
#define I2C_ERR_BAD_UNIT_NUMBER (I2C_ERR_BASE + TM_ERR_BAD_UNIT_NUMBER)
|
|
#define I2C_ERR_NOT_INITIALIZED (I2C_ERR_BASE + TM_ERR_NOT_INITIALIZED)
|
|
//#define I2C_ERR_INIT_FAILED (I2C_ERR_BASE + TM_ERR_INIT_FAILED)
|
|
#define I2C_ERR_BAD_PARAMETER (I2C_ERR_BASE + TM_ERR_BAD_PARAMETER)
|
|
#define I2C_ERR_NOT_SUPPORTED (I2C_ERR_BASE + TM_ERR_NOT_SUPPORTED)
|
|
#define I2C_ERR_NOT_INSTALLED (I2C_ERR_COMP + 0x0001)
|
|
#define I2C_ERR_FAILED (I2C_ERR_COMP + 0x0002)
|
|
#define I2C_ERR_HW (I2C_ERR_COMP + 0x0003)
|
|
//#define I2C_ERR_NOT_READY (I2C_ERR_COMP + 0x0002)
|
|
//#define I2C_ERR_BAD_CRC (I2C_ERR_COMP + 0x0003)
|
|
//#define I2C_ERR_BAD_VERSION (I2C_ERR_COMP + 0x0004)
|
|
|
|
typedef enum _tmI2CInterfaceType_t {
|
|
tmI2CInterfaceUnknown = 0, /* No I2C Interface Defined */
|
|
tmI2CInterfaceURTParallel, /* URT Parallel I2C Interface */
|
|
tmI2CInterfaceURTUSB, /* URT USB I2C Interface */
|
|
tmI2CInterfaceMMPParallel, /* MMP Parallel I2C Interface */
|
|
tmI2CInterfaceCypressUSB, /* Cypress USB I2C Interface */
|
|
tmI2CInterfaceCustomer, /* Customer I2C Interface */
|
|
tmI2CInterfaceSienaUSB, /* Siena USB I2C Interface */
|
|
tmI2CInterfaceSimuSamba, /* Simu Samba I2C Interface */
|
|
tmI2CInterfaceMax
|
|
} tmI2CInterfaceType_t, *ptmI2CInterfaceType_t;
|
|
|
|
typedef enum _tmI2CPortType_t {
|
|
tmI2CPortUnknown = 0, /* No Port Type Defined */
|
|
tmI2CPortLPT1, /* LPT1 Port Type */
|
|
tmI2CPortLPT2, /* LPT2 Port Type */
|
|
tmI2CPortLPT3, /* LPT3 Port Type */
|
|
tmI2CPortUSB, /* USB Port Type */
|
|
tmI2CPortMax
|
|
} tmI2CPortType_t, *ptmI2CPortType_t;
|
|
|
|
typedef enum _tmI2CAction_t
|
|
{
|
|
tmI2CActionUnknown,
|
|
tmI2CActionWrite = 0,
|
|
tmI2CActionRead,
|
|
tmI2CActionMax
|
|
} tmI2CAction_t, *ptmI2CAction_t;
|
|
|
|
typedef enum
|
|
{
|
|
tmI2CIdentModeUnknown = 0,
|
|
tmI2CIdentModePosition,
|
|
tmI2CIdentModeInstanceIndex,
|
|
tmI2CIdentModeSerialNumber,
|
|
tmI2CIdentModeMax
|
|
} tmI2CIdentMode_t, *ptmI2CIdentMode_t;
|
|
|
|
typedef struct _tmI2CLLDriverVersion
|
|
{
|
|
UInt32 major;
|
|
UInt32 minor;
|
|
UInt32 build;
|
|
UInt32 revision;
|
|
} tmI2CLLDriverVersion, *ptmI2CLLDriverVersion;
|
|
|
|
// Serial Number
|
|
typedef struct _tmI2CSerialNumber
|
|
{
|
|
Bool biSerialNumberAvailable;
|
|
UInt8 iSerialNumber[32];
|
|
UInt32 dwInstanceIndex;
|
|
} tmI2CSerialNumber, *ptmI2CSerialNumber;
|
|
|
|
// Enumeration
|
|
typedef struct _tmI2CEnumDevices
|
|
{
|
|
UInt32 dwInstanceCount;
|
|
tmI2CSerialNumber devices[8];
|
|
} tmI2CEnumDevices, *ptmI2CEnumDevices;
|
|
|
|
typedef struct _tmI2CInterfaceConfig_t
|
|
{
|
|
tmI2CInterfaceType_t eInterfaceType; /* Interface Type */
|
|
tmI2CPortType_t ePortType; /* Port Type */
|
|
tmI2CIdentMode_t tIdentificationMode;
|
|
union
|
|
{
|
|
UInt8 position;
|
|
UInt32 dwInstanceIndex;
|
|
UInt8 serialNumber[32];
|
|
}Identification;
|
|
UInt32 dwAdditionalDataSize; /* Additional Data Size */
|
|
void* pAdditionalData; /* Additional Data Pointer */
|
|
} tmI2CInterfaceConfig_t, *ptmI2CInterfaceConfig_t;
|
|
|
|
// Callback for I2C Log
|
|
typedef tmErrorCode_t (*w_tmdlI2CCallBack) (tmUnitSelect_t tUnit, CUInt32 uHwAddress, CUInt32 addrSize, CUInt8* pAddr, CUInt32 dataSize, CUInt8* pData, tmErrorCode_t err, tmI2CAction_t i2cAction, Bool bHwAddrAsWriteAddr);
|
|
|
|
/*============================================================================*/
|
|
/* ENUM OR TYPE DEFINITION */
|
|
/*============================================================================*/
|
|
|
|
|
|
/*============================================================================*/
|
|
/* EXTERN DATA DEFINITION */
|
|
/*============================================================================*/
|
|
|
|
|
|
|
|
/*============================================================================*/
|
|
/* EXTERN FUNCTION PROTOTYPES */
|
|
/*============================================================================*/
|
|
|
|
|
|
extern tmErrorCode_t
|
|
tmdlI2CGetSWVersion
|
|
(
|
|
ptmSWVersion_t pSWVersion /* O: Receives SW Version */
|
|
);
|
|
|
|
extern tmErrorCode_t
|
|
tmdlI2CGetLowLevelSWVersion
|
|
(
|
|
tmUnitSelect_t tUnit,
|
|
ptmSWVersion_t pSWVersion, /* O: Receives SW Version */
|
|
ptmI2CLLDriverVersion pLLSWVersion /* O: Receives LL SW Version */
|
|
);
|
|
|
|
extern tmErrorCode_t
|
|
tmdlI2CGetLowLevelDevices
|
|
(
|
|
tmUnitSelect_t tUnit,
|
|
ptmI2CEnumDevices pDevices /* O: Receives LL Devices */
|
|
);
|
|
|
|
extern tmErrorCode_t
|
|
tmdlI2CInit
|
|
(
|
|
tmUnitSelect_t tUnit, /* I: FrontEnd unit number */
|
|
tmbslFrontEndDependency_t* psSrvFunc
|
|
);
|
|
|
|
extern tmErrorCode_t
|
|
tmdlI2CDeInit
|
|
(
|
|
tmUnitSelect_t tUnit
|
|
);
|
|
|
|
extern tmErrorCode_t
|
|
tmdlI2CSetInterface
|
|
(
|
|
tmUnitSelect_t tUnit,
|
|
ptmI2CInterfaceConfig_t psI2CInterface
|
|
);
|
|
|
|
extern tmErrorCode_t
|
|
tmdlI2CSetPath
|
|
(
|
|
tmUnitSelect_t tUnit,
|
|
int pPath_length,
|
|
wchar_t* My_path
|
|
);
|
|
|
|
extern tmErrorCode_t
|
|
tmdlI2CGetInterface
|
|
(
|
|
tmUnitSelect_t tUnit,
|
|
ptmI2CInterfaceConfig_t psI2CInterface
|
|
);
|
|
|
|
extern tmErrorCode_t
|
|
tmdlI2CWrite
|
|
(
|
|
tmUnitSelect_t tUnit,
|
|
UInt32 uHwAddress,
|
|
UInt32 AddrSize,
|
|
UInt8* pAddr,
|
|
UInt32 WriteLen,
|
|
UInt8* pData
|
|
);
|
|
|
|
extern tmErrorCode_t
|
|
tmdlI2CRead
|
|
(
|
|
tmUnitSelect_t tUnit,
|
|
UInt32 uHwAddress,
|
|
UInt32 AddrSize,
|
|
UInt8* pAddr,
|
|
UInt32 ReadLen,
|
|
UInt8* pData
|
|
);
|
|
|
|
extern tmErrorCode_t
|
|
tmdlI2CSetErrorEnable
|
|
(
|
|
tmUnitSelect_t tUnit,
|
|
Bool bErrorEnable
|
|
);
|
|
|
|
extern tmErrorCode_t
|
|
tmdlI2CGetErrorEnable
|
|
(
|
|
tmUnitSelect_t tUnit,
|
|
Bool* pbErrorEnable
|
|
);
|
|
|
|
extern tmErrorCode_t
|
|
tmdlI2CSetPortType
|
|
(
|
|
tmUnitSelect_t tUnit,
|
|
tmI2CPortType_t dwPortType
|
|
);
|
|
|
|
extern tmErrorCode_t
|
|
tmdlI2CGetPortType
|
|
(
|
|
tmUnitSelect_t tUnit,
|
|
ptmI2CPortType_t pdwPortType
|
|
);
|
|
|
|
extern tmErrorCode_t
|
|
tmdlI2CSetBitrate
|
|
(
|
|
tmUnitSelect_t tUnit,
|
|
UInt32 dwBitrate
|
|
);
|
|
|
|
extern tmErrorCode_t
|
|
tmdlI2CGetBitrate
|
|
(
|
|
tmUnitSelect_t tUnit,
|
|
UInt32* pdwBitrate
|
|
);
|
|
|
|
extern tmErrorCode_t
|
|
tmdlI2CSetHwAddrAsWriteAddr
|
|
(
|
|
tmUnitSelect_t tUnit,
|
|
Bool bHwAddrAsWriteAddr
|
|
);
|
|
|
|
extern tmErrorCode_t
|
|
tmdlI2CGetHwAddrAsWriteAddr
|
|
(
|
|
tmUnitSelect_t tUnit,
|
|
Bool* pbHwAddrAsWriteAddr
|
|
);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* TMDLI2C_H */
|
|
/*============================================================================*/
|
|
/* END OF FILE */
|
|
/*============================================================================*/
|
|
|