i2c.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #ifndef _i2c_h
  2. #define _i2c_h
  3. #include <asm/types.h>
  4. /* copy from sis516/sisi2c.h */
  5. typedef enum
  6. {
  7. ADDRESS_TYPE_BYTE,
  8. ADDRESS_TYPE_WORD,
  9. ADDRESS_TYPE_NONE,
  10. ADDRESS_TYPE_MULTIPLE,
  11. ADDRESS_TYPE_INVALID
  12. }ADDRESS_TYPE,*PADDRESS_TYPE;
  13. #define I2C_SPEED_100K 0x30
  14. #define I2C_SPEED_400K 0x0b
  15. typedef enum
  16. {
  17. I2C_STATUS_SUCCESS,
  18. I2C_STATUS_DEVICE_ID_ERROR,
  19. I2C_STATUS_DATA_ERROR,
  20. I2C_STATUS_SYSTEM_ERROR,
  21. I2C_STATUS_HARDWARE_CRASH
  22. }I2C_STATUS,*PI2C_STATUS;
  23. /* i2c misc */
  24. #if 0
  25. #define ___swab16(x) \
  26. ({ \
  27. WORD __x = (x); \
  28. ((WORD)( \
  29. (((WORD)(__x) & (WORD)0x00ff) << 8) | \
  30. (((WORD)(__x) & (WORD)0xff00) >> 8) )); \
  31. })
  32. #define ___swab32(x) \
  33. ({ \
  34. DWORD __x = (x); \
  35. ((DWORD)( \
  36. (((DWORD)(__x) & (DWORD)0x000000ff) << 24) | \
  37. (((DWORD)(__x) & (DWORD)0x0000ff00) << 8) | \
  38. (((DWORD)(__x) & (DWORD)0x00ff0000) >> 8) | \
  39. (((DWORD)(__x) & (DWORD)0xff000000) >> 24) )); \
  40. })
  41. #else
  42. #define ___swab16(x) (((x&0xff)<<8)|((x&0xff00)>>8))
  43. #define ___swab32(x) (((x&0xff)<<24)|((x&0xff00)<<8)|((x&0xff0000)>>8)|((x&0xff000000)>>24))
  44. #endif
  45. void I2CWriteFun(u8 MasterIndex,u8 Device_ID,u8 addrtype,u32 Address,u8 *pData,u16 Length,u8 Speed,u8 *pStatus);
  46. void I2CReadFun(u8 MasterIndex, u8 Device_ID, u8 addrtype, u32 Address, u8 *pData, u16 Length, u8 Speed, u8 *pStatus);
  47. void HWI2CInit(u8 MasterIndex);
  48. #endif //_i2c_h