RTEMS CPU Kit with SuperCore  4.11.3
i2c.h
Go to the documentation of this file.
1 
9 /*
10  * Copyright (c) 2014 embedded brains GmbH. All rights reserved.
11  *
12  * embedded brains GmbH
13  * Dornierstr. 4
14  * 82178 Puchheim
15  * Germany
16  * <rtems@embedded-brains.de>
17  *
18  * The license and distribution terms for this file may be
19  * found in the file LICENSE in this distribution or at
20  * http://www.rtems.org/license/LICENSE.
21  */
22 
23 #ifndef _UAPI_LINUX_I2C_H
24 #define _UAPI_LINUX_I2C_H
25 
26 #include <stdint.h>
27 
58 #define I2C_M_TEN 0x0010
59 
65 #define I2C_M_RD 0x0001
66 
76 #define I2C_M_STOP 0x8000
77 
86 #define I2C_M_NOSTART 0x4000
87 
96 #define I2C_M_REV_DIR_ADDR 0x2000
97 
106 #define I2C_M_IGNORE_NAK 0x1000
107 
117 #define I2C_M_NO_RD_ACK 0x0800
118 
130 #define I2C_M_RECV_LEN 0x0400
131 
137 struct i2c_msg {
144  uint16_t addr;
145 
159  uint16_t flags;
160 
164  uint16_t len;
165 
169  uint8_t *buf;
170 };
171 
178 #define I2C_FUNC_I2C 0x00000001
179 #define I2C_FUNC_10BIT_ADDR 0x00000002
180 #define I2C_FUNC_PROTOCOL_MANGLING 0x00000004
181 #define I2C_FUNC_SMBUS_PEC 0x00000008
182 #define I2C_FUNC_NOSTART 0x00000010
183 #define I2C_FUNC_SMBUS_BLOCK_PROC_CALL 0x00008000
184 #define I2C_FUNC_SMBUS_QUICK 0x00010000
185 #define I2C_FUNC_SMBUS_READ_BYTE 0x00020000
186 #define I2C_FUNC_SMBUS_WRITE_BYTE 0x00040000
187 #define I2C_FUNC_SMBUS_READ_BYTE_DATA 0x00080000
188 #define I2C_FUNC_SMBUS_WRITE_BYTE_DATA 0x00100000
189 #define I2C_FUNC_SMBUS_READ_WORD_DATA 0x00200000
190 #define I2C_FUNC_SMBUS_WRITE_WORD_DATA 0x00400000
191 #define I2C_FUNC_SMBUS_PROC_CALL 0x00800000
192 #define I2C_FUNC_SMBUS_READ_BLOCK_DATA 0x01000000
193 #define I2C_FUNC_SMBUS_WRITE_BLOCK_DATA 0x02000000
194 #define I2C_FUNC_SMBUS_READ_I2C_BLOCK 0x04000000
195 #define I2C_FUNC_SMBUS_WRITE_I2C_BLOCK 0x08000000
196 
197 #define I2C_FUNC_SMBUS_BYTE \
198  (I2C_FUNC_SMBUS_READ_BYTE | I2C_FUNC_SMBUS_WRITE_BYTE)
199 
200 #define I2C_FUNC_SMBUS_BYTE_DATA \
201  (I2C_FUNC_SMBUS_READ_BYTE_DATA | I2C_FUNC_SMBUS_WRITE_BYTE_DATA)
202 
203 #define I2C_FUNC_SMBUS_WORD_DATA \
204  (I2C_FUNC_SMBUS_READ_WORD_DATA | I2C_FUNC_SMBUS_WRITE_WORD_DATA)
205 
206 #define I2C_FUNC_SMBUS_BLOCK_DATA \
207  (I2C_FUNC_SMBUS_READ_BLOCK_DATA | I2C_FUNC_SMBUS_WRITE_BLOCK_DATA)
208 
209 #define I2C_FUNC_SMBUS_I2C_BLOCK \
210  (I2C_FUNC_SMBUS_READ_I2C_BLOCK | I2C_FUNC_SMBUS_WRITE_I2C_BLOCK)
211 
212 #define I2C_FUNC_SMBUS_EMUL \
213  (I2C_FUNC_SMBUS_QUICK | I2C_FUNC_SMBUS_BYTE | I2C_FUNC_SMBUS_BYTE_DATA \
214  | I2C_FUNC_SMBUS_WORD_DATA | I2C_FUNC_SMBUS_PROC_CALL \
215  | I2C_FUNC_SMBUS_WRITE_BLOCK_DATA | I2C_FUNC_SMBUS_I2C_BLOCK \
216  | I2C_FUNC_SMBUS_PEC)
217 
223 #define I2C_SMBUS_BLOCK_MAX 32
224 
229  uint8_t byte;
230  uint16_t word;
231  uint8_t block[I2C_SMBUS_BLOCK_MAX + 2];
232 };
233 
240 #define I2C_SMBUS_READ 1
241 
242 #define I2C_SMBUS_WRITE 0
243 
252 #define I2C_SMBUS_QUICK 0
253 
254 #define I2C_SMBUS_BYTE 1
255 
256 #define I2C_SMBUS_BYTE_DATA 2
257 
258 #define I2C_SMBUS_WORD_DATA 3
259 
260 #define I2C_SMBUS_PROC_CALL 4
261 
262 #define I2C_SMBUS_BLOCK_DATA 5
263 
264 #define I2C_SMBUS_I2C_BLOCK_BROKEN 6
265 
266 #define I2C_SMBUS_BLOCK_PROC_CALL 7
267 
268 #define I2C_SMBUS_I2C_BLOCK_DATA 8
269 
274 #endif /* _UAPI_LINUX_I2C_H */
uint16_t addr
The slave address.
Definition: i2c.h:144
SMBus data.
Definition: i2c.h:228
I2C transfer message.
Definition: i2c.h:137
uint16_t len
The message data length in bytes.
Definition: i2c.h:164
uint16_t flags
The message flags.
Definition: i2c.h:159
uint8_t * buf
Pointer to the message data.
Definition: i2c.h:169
#define I2C_SMBUS_BLOCK_MAX
Maximum SMBus data block count.
Definition: i2c.h:223