i2c.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:2k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /* $Id$
  2.  *
  3.  * This file is subject to the terms and conditions of the GNU General Public
  4.  * License.  See the file "COPYING" in the main directory of this archive
  5.  * for more details.
  6.  *
  7.  * Copyright (C) 1992 - 1997, 2000 Silicon Graphics, Inc.
  8.  * Copyright (C) 2000 by Colin Ngam
  9.  */
  10. #ifndef _ASM_SN_KSYS_I2C_H
  11. #define _ASM_SN_KSYS_I2C_H
  12. #if _STANDALONE
  13. # include "rtc.h"
  14. #else
  15. # define rtc_time() (GET_LOCAL_RTC * NSEC_PER_CYCLE / 1000)
  16. # define rtc_sleep us_delay
  17. # define rtc_time_t uint64_t
  18. #endif
  19. typedef u_char i2c_addr_t; /* 7-bit address            */
  20. int i2c_init(nasid_t);
  21. int i2c_probe(nasid_t nasid, rtc_time_t timeout);
  22. int i2c_arb(nasid_t, rtc_time_t timeout, rtc_time_t *token_start);
  23. int i2c_master_xmit(nasid_t,
  24. i2c_addr_t addr,
  25. u_char *buf,
  26. int len_max,
  27. int *len_ptr,
  28. rtc_time_t timeout,
  29. int only_if_message);
  30. int i2c_master_recv(nasid_t,
  31. i2c_addr_t addr,
  32. u_char *buf,
  33. int len_max,
  34. int *len_ptr,
  35. int emblen,
  36. rtc_time_t timeout,
  37. int only_if_message);
  38. int i2c_master_xmit_recv(nasid_t,
  39.      i2c_addr_t addr,
  40.      u_char *xbuf,
  41.      int xlen_max,
  42.      int *xlen_ptr,
  43.      u_char *rbuf,
  44.      int rlen_max,
  45.      int *rlen_ptr,
  46.      int emblen,
  47.      rtc_time_t timeout,
  48.      int only_if_message);
  49. char        *i2c_errmsg(int code);
  50. /*
  51.  * Error codes
  52.  */
  53. #define I2C_ERROR_NONE  0
  54. #define I2C_ERROR_INIT -1 /* Initialization error             */
  55. #define I2C_ERROR_STATE -2 /* Unexpected chip state     */
  56. #define I2C_ERROR_NAK -3 /* Addressed slave not responding   */
  57. #define I2C_ERROR_TO_ARB -4 /* Timeout waiting for sysctlr arb  */
  58. #define I2C_ERROR_TO_BUSY -5 /* Timeout waiting for busy bus     */
  59. #define I2C_ERROR_TO_SENDA -6 /* Timeout sending address byte     */
  60. #define I2C_ERROR_TO_SENDD -7 /* Timeout sending data byte        */
  61. #define I2C_ERROR_TO_RECVA -8 /* Timeout receiving address byte   */
  62. #define I2C_ERROR_TO_RECVD -9 /* Timeout receiving data byte      */
  63. #define I2C_ERROR_NO_MESSAGE -10 /* No message was waiting     */
  64. #define I2C_ERROR_NO_ELSC -11 /* ELSC is disabled for access      */ 
  65. #endif /* _ASM_SN_KSYS_I2C_H */