122851890Sopenharmony_ci/*
222851890Sopenharmony_ci * This header was generated from the Linux kernel headers by update_headers.py,
322851890Sopenharmony_ci * to provide necessary information from kernel to userspace, such as constants,
422851890Sopenharmony_ci * structures, and macros, and thus, contains no copyrightable information.
522851890Sopenharmony_ci */
622851890Sopenharmony_ci#ifndef _UAPI_LINUX_I2C_H
722851890Sopenharmony_ci#define _UAPI_LINUX_I2C_H
822851890Sopenharmony_ci#include <linux/types.h>
922851890Sopenharmony_cistruct i2c_msg {
1022851890Sopenharmony_ci	__u16 addr;
1122851890Sopenharmony_ci	__u16 flags;
1222851890Sopenharmony_ci#define I2C_M_RD		0x0001
1322851890Sopenharmony_ci
1422851890Sopenharmony_ci#define I2C_M_TEN		0x0010
1522851890Sopenharmony_ci#define I2C_M_DMA_SAFE		0x0200
1622851890Sopenharmony_ci
1722851890Sopenharmony_ci
1822851890Sopenharmony_ci#define I2C_M_RECV_LEN		0x0400
1922851890Sopenharmony_ci#define I2C_M_NO_RD_ACK		0x0800
2022851890Sopenharmony_ci#define I2C_M_IGNORE_NAK	0x1000
2122851890Sopenharmony_ci#define I2C_M_REV_DIR_ADDR	0x2000
2222851890Sopenharmony_ci#define I2C_M_NOSTART		0x4000
2322851890Sopenharmony_ci#define I2C_M_STOP		0x8000
2422851890Sopenharmony_ci	__u16 len;
2522851890Sopenharmony_ci	__u8 *buf;
2622851890Sopenharmony_ci};
2722851890Sopenharmony_ci#define I2C_FUNC_I2C			0x00000001
2822851890Sopenharmony_ci#define I2C_FUNC_10BIT_ADDR		0x00000002
2922851890Sopenharmony_ci#define I2C_FUNC_PROTOCOL_MANGLING	0x00000004
3022851890Sopenharmony_ci#define I2C_FUNC_SMBUS_PEC		0x00000008
3122851890Sopenharmony_ci#define I2C_FUNC_NOSTART		0x00000010
3222851890Sopenharmony_ci#define I2C_FUNC_SLAVE			0x00000020
3322851890Sopenharmony_ci#define I2C_FUNC_SMBUS_BLOCK_PROC_CALL	0x00008000
3422851890Sopenharmony_ci#define I2C_FUNC_SMBUS_QUICK		0x00010000
3522851890Sopenharmony_ci#define I2C_FUNC_SMBUS_READ_BYTE	0x00020000
3622851890Sopenharmony_ci#define I2C_FUNC_SMBUS_WRITE_BYTE	0x00040000
3722851890Sopenharmony_ci#define I2C_FUNC_SMBUS_READ_BYTE_DATA	0x00080000
3822851890Sopenharmony_ci#define I2C_FUNC_SMBUS_WRITE_BYTE_DATA	0x00100000
3922851890Sopenharmony_ci#define I2C_FUNC_SMBUS_READ_WORD_DATA	0x00200000
4022851890Sopenharmony_ci#define I2C_FUNC_SMBUS_WRITE_WORD_DATA	0x00400000
4122851890Sopenharmony_ci#define I2C_FUNC_SMBUS_PROC_CALL	0x00800000
4222851890Sopenharmony_ci#define I2C_FUNC_SMBUS_READ_BLOCK_DATA	0x01000000
4322851890Sopenharmony_ci#define I2C_FUNC_SMBUS_WRITE_BLOCK_DATA 0x02000000
4422851890Sopenharmony_ci#define I2C_FUNC_SMBUS_READ_I2C_BLOCK	0x04000000
4522851890Sopenharmony_ci#define I2C_FUNC_SMBUS_WRITE_I2C_BLOCK	0x08000000
4622851890Sopenharmony_ci#define I2C_FUNC_SMBUS_HOST_NOTIFY	0x10000000
4722851890Sopenharmony_ci#define I2C_FUNC_SMBUS_BYTE		(I2C_FUNC_SMBUS_READ_BYTE | \
4822851890Sopenharmony_ci					 I2C_FUNC_SMBUS_WRITE_BYTE)
4922851890Sopenharmony_ci#define I2C_FUNC_SMBUS_BYTE_DATA	(I2C_FUNC_SMBUS_READ_BYTE_DATA | \
5022851890Sopenharmony_ci					 I2C_FUNC_SMBUS_WRITE_BYTE_DATA)
5122851890Sopenharmony_ci#define I2C_FUNC_SMBUS_WORD_DATA	(I2C_FUNC_SMBUS_READ_WORD_DATA | \
5222851890Sopenharmony_ci					 I2C_FUNC_SMBUS_WRITE_WORD_DATA)
5322851890Sopenharmony_ci#define I2C_FUNC_SMBUS_BLOCK_DATA	(I2C_FUNC_SMBUS_READ_BLOCK_DATA | \
5422851890Sopenharmony_ci					 I2C_FUNC_SMBUS_WRITE_BLOCK_DATA)
5522851890Sopenharmony_ci#define I2C_FUNC_SMBUS_I2C_BLOCK	(I2C_FUNC_SMBUS_READ_I2C_BLOCK | \
5622851890Sopenharmony_ci					 I2C_FUNC_SMBUS_WRITE_I2C_BLOCK)
5722851890Sopenharmony_ci#define I2C_FUNC_SMBUS_EMUL		(I2C_FUNC_SMBUS_QUICK | \
5822851890Sopenharmony_ci					 I2C_FUNC_SMBUS_BYTE | \
5922851890Sopenharmony_ci					 I2C_FUNC_SMBUS_BYTE_DATA | \
6022851890Sopenharmony_ci					 I2C_FUNC_SMBUS_WORD_DATA | \
6122851890Sopenharmony_ci					 I2C_FUNC_SMBUS_PROC_CALL | \
6222851890Sopenharmony_ci					 I2C_FUNC_SMBUS_WRITE_BLOCK_DATA | \
6322851890Sopenharmony_ci					 I2C_FUNC_SMBUS_I2C_BLOCK | \
6422851890Sopenharmony_ci					 I2C_FUNC_SMBUS_PEC)
6522851890Sopenharmony_ci#define I2C_SMBUS_BLOCK_MAX	32
6622851890Sopenharmony_ciunion i2c_smbus_data {
6722851890Sopenharmony_ci	__u8 byte;
6822851890Sopenharmony_ci	__u16 word;
6922851890Sopenharmony_ci	__u8 block[I2C_SMBUS_BLOCK_MAX + 2];
7022851890Sopenharmony_ci
7122851890Sopenharmony_ci};
7222851890Sopenharmony_ci#define I2C_SMBUS_READ	1
7322851890Sopenharmony_ci#define I2C_SMBUS_WRITE	0
7422851890Sopenharmony_ci#define I2C_SMBUS_QUICK		    0
7522851890Sopenharmony_ci#define I2C_SMBUS_BYTE		    1
7622851890Sopenharmony_ci#define I2C_SMBUS_BYTE_DATA	    2
7722851890Sopenharmony_ci#define I2C_SMBUS_WORD_DATA	    3
7822851890Sopenharmony_ci#define I2C_SMBUS_PROC_CALL	    4
7922851890Sopenharmony_ci#define I2C_SMBUS_BLOCK_DATA	    5
8022851890Sopenharmony_ci#define I2C_SMBUS_I2C_BLOCK_BROKEN  6
8122851890Sopenharmony_ci#define I2C_SMBUS_BLOCK_PROC_CALL   7
8222851890Sopenharmony_ci#define I2C_SMBUS_I2C_BLOCK_DATA    8
8322851890Sopenharmony_ci#endif
84