summaryrefslogtreecommitdiffstats
path: root/cpukit/include/linux/i2c-dev.h
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2017-12-23 18:18:56 +1100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-01-25 08:45:26 +0100
commit2afb22b7e1ebcbe40373ff7e0efae7d207c655a9 (patch)
tree44759efe9374f13200a97e96d91bd9a2b7e5ce2a /cpukit/include/linux/i2c-dev.h
parentMAINTAINERS: Add myself to Write After Approval. (diff)
downloadrtems-2afb22b7e1ebcbe40373ff7e0efae7d207c655a9.tar.bz2
Remove make preinstall
A speciality of the RTEMS build system was the make preinstall step. It copied header files from arbitrary locations into the build tree. The header files were included via the -Bsome/build/tree/path GCC command line option. This has at least seven problems: * The make preinstall step itself needs time and disk space. * Errors in header files show up in the build tree copy. This makes it hard for editors to open the right file to fix the error. * There is no clear relationship between source and build tree header files. This makes an audit of the build process difficult. * The visibility of all header files in the build tree makes it difficult to enforce API barriers. For example it is discouraged to use BSP-specifics in the cpukit. * An introduction of a new build system is difficult. * Include paths specified by the -B option are system headers. This may suppress warnings. * The parallel build had sporadic failures on some hosts. This patch removes the make preinstall step. All installed header files are moved to dedicated include directories in the source tree. Let @RTEMS_CPU@ be the target architecture, e.g. arm, powerpc, sparc, etc. Let @RTEMS_BSP_FAMILIY@ be a BSP family base directory, e.g. erc32, imx, qoriq, etc. The new cpukit include directories are: * cpukit/include * cpukit/score/cpu/@RTEMS_CPU@/include * cpukit/libnetworking The new BSP include directories are: * bsps/include * bsps/@RTEMS_CPU@/include * bsps/@RTEMS_CPU@/@RTEMS_BSP_FAMILIY@/include There are build tree include directories for generated files. The include directory order favours the most general header file, e.g. it is not possible to override general header files via the include path order. The "bootstrap -p" option was removed. The new "bootstrap -H" option should be used to regenerate the "headers.am" files. Update #3254.
Diffstat (limited to 'cpukit/include/linux/i2c-dev.h')
-rw-r--r--cpukit/include/linux/i2c-dev.h137
1 files changed, 137 insertions, 0 deletions
diff --git a/cpukit/include/linux/i2c-dev.h b/cpukit/include/linux/i2c-dev.h
new file mode 100644
index 0000000000..c0db3fe06c
--- /dev/null
+++ b/cpukit/include/linux/i2c-dev.h
@@ -0,0 +1,137 @@
+/**
+ * @file
+ *
+ * @brief RTEMS Port of Linux I2C Device API
+ *
+ * @ingroup I2CLinux
+ */
+
+/*
+ * Copyright (c) 2014 embedded brains GmbH. All rights reserved.
+ *
+ * embedded brains GmbH
+ * Dornierstr. 4
+ * 82178 Puchheim
+ * Germany
+ * <rtems@embedded-brains.de>
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+#ifndef _UAPI_LINUX_I2C_DEV_H
+#define _UAPI_LINUX_I2C_DEV_H
+
+#include <stdint.h>
+
+/**
+ * @addtogroup I2CLinux
+ *
+ * @{
+ */
+
+/**
+ * @name I2C IO Control Commands
+ *
+ * @{
+ */
+
+/**
+ * @brief Sets the count of transfer retries in case a slave
+ * device does not acknowledge a transaction.
+ *
+ * The argument type is unsigned long.
+ */
+#define I2C_RETRIES 0x701
+
+/**
+ * @brief Sets the transfer timeout in 10ms units.
+ *
+ * The argument type is unsigned long.
+ */
+#define I2C_TIMEOUT 0x702
+
+/**
+ * @brief Sets the slave address.
+ *
+ * It is an error to set a slave address already used by another slave device.
+ *
+ * The argument type is unsigned long.
+ */
+#define I2C_SLAVE 0x703
+
+/**
+ * @brief Forces setting the slave address.
+ *
+ * The argument type is unsigned long.
+ */
+#define I2C_SLAVE_FORCE 0x706
+
+/**
+ * @brief Enables 10-bit addresses if argument is non-zero, otherwise
+ * disables 10-bit addresses.
+ *
+ * The argument type is unsigned long.
+ */
+#define I2C_TENBIT 0x704
+
+/**
+ * @brief Gets the I2C controller functionality information.
+ *
+ * The argument type is a pointer to an unsigned long.
+ */
+#define I2C_FUNCS 0x705
+
+/**
+ * @brief Performs a combined read/write transfer.
+ *
+ * Only one stop condition is signalled.
+ *
+ * The argument type is a pointer to struct i2c_rdwr_ioctl_data.
+ */
+#define I2C_RDWR 0x707
+
+/**
+ * @brief Enables System Management Bus (SMBus) Packet Error Checking (PEC)
+ * if argument is non-zero, otherwise disables PEC.
+ *
+ * The argument type is unsigned long.
+ */
+#define I2C_PEC 0x708
+
+/**
+ * @brief Performs an SMBus transfer.
+ *
+ * The argument type is a pointer to struct i2c_smbus_ioctl_data.
+ */
+#define I2C_SMBUS 0x720
+
+/** @} */
+
+/**
+ * @brief Argument type for I2C_SMBUS IO control call.
+ */
+struct i2c_smbus_ioctl_data {
+ uint8_t read_write;
+ uint8_t command;
+ uint32_t size;
+ union i2c_smbus_data *data;
+};
+
+/**
+ * @brief Argument type for I2C_RDWR IO control call.
+ */
+struct i2c_rdwr_ioctl_data {
+ struct i2c_msg *msgs;
+ uint32_t nmsgs;
+};
+
+/**
+ * @brief Maximum count of messages for one IO control call.
+ */
+#define I2C_RDRW_IOCTL_MAX_MSGS 42
+
+/** @} */
+
+#endif /* _UAPI_LINUX_I2C_DEV_H */