source: rtems/cpukit/dev/include/linux/i2c-dev.h @ b6f21886

4.115
Last change on this file since b6f21886 was b6f21886, checked in by Sebastian Huber <sebastian.huber@…>, on 11/05/14 at 09:21:34

Add RTEMS port of Linux I2C user-space API

  • Property mode set to 100644
File size: 2.5 KB
Line 
1/**
2 * @file
3 *
4 * @brief RTEMS Port of Linux I2C Device API
5 *
6 * @ingroup I2CLinux
7 */
8
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_DEV_H
24#define _UAPI_LINUX_I2C_DEV_H
25
26#include <stdint.h>
27
28/**
29 * @addtogroup I2CLinux
30 *
31 * @{
32 */
33
34/**
35 * @name I2C IO Control Commands
36 *
37 * @{
38 */
39
40/**
41 * @brief Sets the count of transfer retries in case a slave
42 * device does not acknowledge a transaction.
43 *
44 * The argument type is unsigned long.
45 */
46#define I2C_RETRIES 0x701
47
48/**
49 * @brief Sets the transfer timeout in 10ms units.
50 *
51 * The argument type is unsigned long.
52 */
53#define I2C_TIMEOUT 0x702
54
55/**
56 * @brief Sets the slave address.
57 *
58 * It is an error to set a slave address already used by another slave device.
59 *
60 * The argument type is unsigned long.
61 */
62#define I2C_SLAVE 0x703
63
64/**
65 * @brief Forces setting the slave address.
66 *
67 * The argument type is unsigned long.
68 */
69#define I2C_SLAVE_FORCE 0x706
70
71/**
72 * @brief Enables 10-bit addresses if argument is non-zero, otherwise
73 * disables 10-bit addresses.
74 *
75 * The argument type is unsigned long.
76 */
77#define I2C_TENBIT 0x704
78
79/**
80 * @brief Gets the I2C controller functionality information.
81 *
82 * The argument type is a pointer to an unsigned long.
83 */
84#define I2C_FUNCS 0x705
85
86/**
87 * @brief Performs a combined read/write transfer.
88 *
89 * Only one stop condition is signalled.
90 *
91 * The argument type is a pointer to struct i2c_rdwr_ioctl_data.
92 */
93#define I2C_RDWR 0x707
94
95/**
96 * @brief Enables System Management Bus (SMBus) Packet Error Checking (PEC)
97 * if argument is non-zero, otherwise disables PEC.
98 *
99 * The argument type is unsigned long.
100 */
101#define I2C_PEC 0x708
102
103/**
104 * @brief Performs an SMBus transfer.
105 *
106 * The argument type is a pointer to struct i2c_smbus_ioctl_data.
107 */
108#define I2C_SMBUS 0x720
109
110/** @} */
111
112/**
113 * @brief Argument type for I2C_SMBUS IO control call.
114 */
115struct i2c_smbus_ioctl_data {
116  uint8_t read_write;
117  uint8_t command;
118  uint32_t size;
119  union i2c_smbus_data *data;
120};
121
122/**
123 * @brief Argument type for I2C_RDWR IO control call.
124 */
125struct i2c_rdwr_ioctl_data {
126  struct i2c_msg *msgs;
127  uint32_t nmsgs;
128};
129
130/**
131 * @brief Maximum count of messages for one IO control call.
132 */
133#define I2C_RDRW_IOCTL_MAX_MSGS 42
134
135/** @} */
136
137#endif /* _UAPI_LINUX_I2C_DEV_H */
Note: See TracBrowser for help on using the repository browser.