#ifndef _i2c_h #define _i2c_h #include /* copy from sis516/sisi2c.h */ typedef enum { ADDRESS_TYPE_BYTE, ADDRESS_TYPE_WORD, ADDRESS_TYPE_NONE, ADDRESS_TYPE_MULTIPLE, ADDRESS_TYPE_INVALID }ADDRESS_TYPE,*PADDRESS_TYPE; #define I2C_SPEED_100K 0x30 #define I2C_SPEED_400K 0x0b typedef enum { I2C_STATUS_SUCCESS, I2C_STATUS_DEVICE_ID_ERROR, I2C_STATUS_DATA_ERROR, I2C_STATUS_SYSTEM_ERROR, I2C_STATUS_HARDWARE_CRASH }I2C_STATUS,*PI2C_STATUS; /* i2c misc */ #if 0 #define ___swab16(x) \ ({ \ WORD __x = (x); \ ((WORD)( \ (((WORD)(__x) & (WORD)0x00ff) << 8) | \ (((WORD)(__x) & (WORD)0xff00) >> 8) )); \ }) #define ___swab32(x) \ ({ \ DWORD __x = (x); \ ((DWORD)( \ (((DWORD)(__x) & (DWORD)0x000000ff) << 24) | \ (((DWORD)(__x) & (DWORD)0x0000ff00) << 8) | \ (((DWORD)(__x) & (DWORD)0x00ff0000) >> 8) | \ (((DWORD)(__x) & (DWORD)0xff000000) >> 24) )); \ }) #else #define ___swab16(x) (((x&0xff)<<8)|((x&0xff00)>>8)) #define ___swab32(x) (((x&0xff)<<24)|((x&0xff00)<<8)|((x&0xff0000)>>8)|((x&0xff000000)>>24)) #endif void I2CWriteFun(u8 MasterIndex,u8 Device_ID,u8 addrtype,u32 Address,u8 *pData,u16 Length,u8 Speed,u8 *pStatus); void I2CReadFun(u8 MasterIndex, u8 Device_ID, u8 addrtype, u32 Address, u8 *pData, u16 Length, u8 Speed, u8 *pStatus); void HWI2CInit(u8 MasterIndex); #endif //_i2c_h