Home | History | Annotate | Download | only in linux
      1 /****************************************************************************
      2  ****************************************************************************
      3  ***
      4  ***   This header was automatically generated from a Linux kernel header
      5  ***   of the same name, to make information necessary for userspace to
      6  ***   call into the kernel available to libc.  It contains only constants,
      7  ***   structures, and macros generated from the original header, and thus,
      8  ***   contains no copyrightable information.
      9  ***
     10  ***
     11  ****************************************************************************
     12  ****************************************************************************/
     13 #ifndef _UAPI_LINUX_I2C_DEV_H
     14 #define _UAPI_LINUX_I2C_DEV_H
     15 #include <linux/types.h>
     16 #include "compiler.h"
     17 
     18 #define I2C_RETRIES 0x0701
     19 #define I2C_TIMEOUT 0x0702
     20 #define I2C_SLAVE 0x0703
     21 #define I2C_SLAVE_FORCE 0x0706
     22 
     23 #define I2C_TENBIT 0x0704
     24 #define I2C_FUNCS 0x0705
     25 #define I2C_RDWR 0x0707
     26 #define I2C_PEC 0x0708
     27 
     28 #define I2C_SMBUS 0x0720
     29 
     30 struct i2c_smbus_ioctl_data {
     31  char read_write;
     32  __u8 command;
     33  int size;
     34  union i2c_smbus_data __user *data;
     35 };
     36 struct i2c_rdwr_ioctl_data {
     37  struct i2c_msg __user *msgs;
     38  int nmsgs;
     39 };
     40 
     41 #define I2C_SMBUS_BLOCK_MAX	32
     42 #define I2C_SMBUS_I2C_BLOCK_MAX	32
     43 union i2c_smbus_data {
     44  __u8 byte;
     45  __u16 word;
     46  __u8 block[I2C_SMBUS_BLOCK_MAX + 2];
     47 };
     48 
     49 #define I2C_RDRW_IOCTL_MAX_MSGS 42
     50 
     51 struct i2c_msg {
     52  __u16 addr;
     53  unsigned short flags;
     54 #define I2C_M_TEN 0x10
     55 #define I2C_M_RD 0x01
     56 #define I2C_M_NOSTART 0x4000
     57 #define I2C_M_REV_DIR_ADDR 0x2000
     58 #define I2C_M_IGNORE_NAK 0x1000
     59 #define I2C_M_NO_RD_ACK 0x0800
     60  short len;
     61  char *buf;
     62 };
     63 
     64 #define I2C_NOCMD 0
     65 #define I2C_SMBUS_READ	1
     66 #define I2C_SMBUS_WRITE	0
     67 
     68 #define I2C_SMBUS_QUICK 0
     69 #define I2C_SMBUS_BYTE 1
     70 #define I2C_SMBUS_BYTE_DATA 2
     71 #define I2C_SMBUS_WORD_DATA 3
     72 #define I2C_SMBUS_PROC_CALL 4
     73 #define I2C_SMBUS_BLOCK_DATA 5
     74 #define I2C_SMBUS_I2C_BLOCK_BROKEN 6
     75 #define I2C_SMBUS_BLOCK_PROC_CALL 7
     76 #define I2C_SMBUS_I2C_BLOCK_DATA 8
     77 
     78 #define I2C_FUNC_I2C 0x00000001
     79 #define I2C_FUNC_10BIT_ADDR 0x00000002
     80 #define I2C_FUNC_PROTOCOL_MANGLING 0x00000004
     81 #define I2C_FUNC_SMBUS_PEC 0x00000008
     82 #define I2C_FUNC_SMBUS_BLOCK_PROC_CALL 0x00008000
     83 #define I2C_FUNC_SMBUS_QUICK 0x00010000
     84 #define I2C_FUNC_SMBUS_READ_BYTE 0x00020000
     85 #define I2C_FUNC_SMBUS_WRITE_BYTE 0x00040000
     86 #define I2C_FUNC_SMBUS_READ_BYTE_DATA 0x00080000
     87 #define I2C_FUNC_SMBUS_WRITE_BYTE_DATA 0x00100000
     88 #define I2C_FUNC_SMBUS_READ_WORD_DATA 0x00200000
     89 #define I2C_FUNC_SMBUS_WRITE_WORD_DATA 0x00400000
     90 #define I2C_FUNC_SMBUS_PROC_CALL 0x00800000
     91 #define I2C_FUNC_SMBUS_READ_BLOCK_DATA 0x01000000
     92 #define I2C_FUNC_SMBUS_WRITE_BLOCK_DATA 0x02000000
     93 #define I2C_FUNC_SMBUS_READ_I2C_BLOCK 0x04000000
     94 #define I2C_FUNC_SMBUS_WRITE_I2C_BLOCK 0x08000000
     95 
     96 #endif
     97