1*83b4b9b9SFrançois Tigeot /* 2*83b4b9b9SFrançois Tigeot * Copyright (c) 2013-2016 François Tigeot 3*83b4b9b9SFrançois Tigeot * All rights reserved. 4*83b4b9b9SFrançois Tigeot * 5*83b4b9b9SFrançois Tigeot * Redistribution and use in source and binary forms, with or without 6*83b4b9b9SFrançois Tigeot * modification, are permitted provided that the following conditions 7*83b4b9b9SFrançois Tigeot * are met: 8*83b4b9b9SFrançois Tigeot * 1. Redistributions of source code must retain the above copyright 9*83b4b9b9SFrançois Tigeot * notice unmodified, this list of conditions, and the following 10*83b4b9b9SFrançois Tigeot * disclaimer. 11*83b4b9b9SFrançois Tigeot * 2. Redistributions in binary form must reproduce the above copyright 12*83b4b9b9SFrançois Tigeot * notice, this list of conditions and the following disclaimer in the 13*83b4b9b9SFrançois Tigeot * documentation and/or other materials provided with the distribution. 14*83b4b9b9SFrançois Tigeot * 15*83b4b9b9SFrançois Tigeot * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 16*83b4b9b9SFrançois Tigeot * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 17*83b4b9b9SFrançois Tigeot * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 18*83b4b9b9SFrançois Tigeot * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 19*83b4b9b9SFrançois Tigeot * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20*83b4b9b9SFrançois Tigeot * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 21*83b4b9b9SFrançois Tigeot * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22*83b4b9b9SFrançois Tigeot * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23*83b4b9b9SFrançois Tigeot * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24*83b4b9b9SFrançois Tigeot * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25*83b4b9b9SFrançois Tigeot */ 26*83b4b9b9SFrançois Tigeot 27*83b4b9b9SFrançois Tigeot #ifndef _UAPI_UAPI_I2C_H_ 28*83b4b9b9SFrançois Tigeot #define _UAPI_UAPI_I2C_H_ 29*83b4b9b9SFrançois Tigeot 30*83b4b9b9SFrançois Tigeot #include <linux/types.h> 31*83b4b9b9SFrançois Tigeot 32*83b4b9b9SFrançois Tigeot struct i2c_msg { 33*83b4b9b9SFrançois Tigeot uint16_t addr; 34*83b4b9b9SFrançois Tigeot uint16_t flags; 35*83b4b9b9SFrançois Tigeot uint16_t len; 36*83b4b9b9SFrançois Tigeot uint8_t *buf; 37*83b4b9b9SFrançois Tigeot }; 38*83b4b9b9SFrançois Tigeot 39*83b4b9b9SFrançois Tigeot #define I2C_M_TEN 0x0010 40*83b4b9b9SFrançois Tigeot #define I2C_M_RECV_LEN 0x0400 41*83b4b9b9SFrançois Tigeot #define I2C_M_NO_RD_ACK 0x0800 42*83b4b9b9SFrançois Tigeot #define I2C_M_IGNORE_NAK 0x1000 43*83b4b9b9SFrançois Tigeot #define I2C_M_REV_DIR_ADDR 0x2000 44*83b4b9b9SFrançois Tigeot 45*83b4b9b9SFrançois Tigeot #define I2C_FUNC_I2C 0x00000001 46*83b4b9b9SFrançois Tigeot #define I2C_FUNC_10BIT_ADDR 0x00000002 47*83b4b9b9SFrançois Tigeot #define I2C_FUNC_PROTOCOL_MANGLING 0x00000004 48*83b4b9b9SFrançois Tigeot #define I2C_FUNC_SMBUS_PEC 0x00000008 49*83b4b9b9SFrançois Tigeot #define I2C_FUNC_NOSTART 0x00000010 50*83b4b9b9SFrançois Tigeot #define I2C_FUNC_SMBUS_BLOCK_PROC_CALL 0x00008000 51*83b4b9b9SFrançois Tigeot #define I2C_FUNC_SMBUS_QUICK 0x00010000 52*83b4b9b9SFrançois Tigeot #define I2C_FUNC_SMBUS_READ_BYTE 0x00020000 53*83b4b9b9SFrançois Tigeot #define I2C_FUNC_SMBUS_WRITE_BYTE 0x00040000 54*83b4b9b9SFrançois Tigeot #define I2C_FUNC_SMBUS_READ_BYTE_DATA 0x00080000 55*83b4b9b9SFrançois Tigeot #define I2C_FUNC_SMBUS_WRITE_BYTE_DATA 0x00100000 56*83b4b9b9SFrançois Tigeot #define I2C_FUNC_SMBUS_READ_WORD_DATA 0x00200000 57*83b4b9b9SFrançois Tigeot #define I2C_FUNC_SMBUS_WRITE_WORD_DATA 0x00400000 58*83b4b9b9SFrançois Tigeot #define I2C_FUNC_SMBUS_PROC_CALL 0x00800000 59*83b4b9b9SFrançois Tigeot #define I2C_FUNC_SMBUS_READ_BLOCK_DATA 0x01000000 60*83b4b9b9SFrançois Tigeot #define I2C_FUNC_SMBUS_WRITE_BLOCK_DATA 0x02000000 61*83b4b9b9SFrançois Tigeot #define I2C_FUNC_SMBUS_READ_I2C_BLOCK 0x04000000 62*83b4b9b9SFrançois Tigeot #define I2C_FUNC_SMBUS_WRITE_I2C_BLOCK 0x08000000 63*83b4b9b9SFrançois Tigeot 64*83b4b9b9SFrançois Tigeot 65*83b4b9b9SFrançois Tigeot 66*83b4b9b9SFrançois Tigeot #define I2C_FUNC_SMBUS_BYTE (I2C_FUNC_SMBUS_READ_BYTE | \ 67*83b4b9b9SFrançois Tigeot I2C_FUNC_SMBUS_WRITE_BYTE) 68*83b4b9b9SFrançois Tigeot 69*83b4b9b9SFrançois Tigeot #define I2C_FUNC_SMBUS_BYTE_DATA (I2C_FUNC_SMBUS_READ_BYTE_DATA | \ 70*83b4b9b9SFrançois Tigeot I2C_FUNC_SMBUS_WRITE_BYTE_DATA) 71*83b4b9b9SFrançois Tigeot 72*83b4b9b9SFrançois Tigeot #define I2C_FUNC_SMBUS_WORD_DATA (I2C_FUNC_SMBUS_READ_WORD_DATA | \ 73*83b4b9b9SFrançois Tigeot I2C_FUNC_SMBUS_WRITE_WORD_DATA) 74*83b4b9b9SFrançois Tigeot 75*83b4b9b9SFrançois Tigeot #define I2C_FUNC_SMBUS_I2C_BLOCK (I2C_FUNC_SMBUS_READ_I2C_BLOCK | \ 76*83b4b9b9SFrançois Tigeot I2C_FUNC_SMBUS_WRITE_I2C_BLOCK) 77*83b4b9b9SFrançois Tigeot 78*83b4b9b9SFrançois Tigeot #define I2C_FUNC_SMBUS_EMUL (I2C_FUNC_SMBUS_QUICK | \ 79*83b4b9b9SFrançois Tigeot I2C_FUNC_SMBUS_BYTE | \ 80*83b4b9b9SFrançois Tigeot I2C_FUNC_SMBUS_BYTE_DATA | \ 81*83b4b9b9SFrançois Tigeot I2C_FUNC_SMBUS_WORD_DATA | \ 82*83b4b9b9SFrançois Tigeot I2C_FUNC_SMBUS_PROC_CALL | \ 83*83b4b9b9SFrançois Tigeot I2C_FUNC_SMBUS_WRITE_BLOCK_DATA | \ 84*83b4b9b9SFrançois Tigeot I2C_FUNC_SMBUS_I2C_BLOCK | \ 85*83b4b9b9SFrançois Tigeot I2C_FUNC_SMBUS_PEC) 86*83b4b9b9SFrançois Tigeot 87*83b4b9b9SFrançois Tigeot #define I2C_SMBUS_BLOCK_MAX 32 88*83b4b9b9SFrançois Tigeot 89*83b4b9b9SFrançois Tigeot #endif /* _UAPI_LINUX_I2C_H_ */ 90