|
@@ -23,11 +23,6 @@ First, you need to include these two headers:
|
|
#include <linux/i2c-dev.h>
|
|
#include <linux/i2c-dev.h>
|
|
#include <i2c/smbus.h>
|
|
#include <i2c/smbus.h>
|
|
|
|
|
|
-(Please note that there are two files named "i2c-dev.h" out there. One is
|
|
|
|
-distributed with the Linux kernel and the other one is included in the
|
|
|
|
-source tree of i2c-tools. They used to be different in content but since 2012
|
|
|
|
-they're identical. You should use "linux/i2c-dev.h").
|
|
|
|
-
|
|
|
|
Now, you have to decide which adapter you want to access. You should
|
|
Now, you have to decide which adapter you want to access. You should
|
|
inspect /sys/class/i2c-dev/ or run "i2cdetect -l" to decide this.
|
|
inspect /sys/class/i2c-dev/ or run "i2cdetect -l" to decide this.
|
|
Adapter numbers are assigned somewhat dynamically, so you can not
|
|
Adapter numbers are assigned somewhat dynamically, so you can not
|
|
@@ -140,8 +135,8 @@ ioctl(file, I2C_RDWR, struct i2c_rdwr_ioctl_data *msgset)
|
|
set in each message, overriding the values set with the above ioctl's.
|
|
set in each message, overriding the values set with the above ioctl's.
|
|
|
|
|
|
ioctl(file, I2C_SMBUS, struct i2c_smbus_ioctl_data *args)
|
|
ioctl(file, I2C_SMBUS, struct i2c_smbus_ioctl_data *args)
|
|
- Not meant to be called directly; instead, use the access functions
|
|
|
|
- below.
|
|
|
|
|
|
+ If possible, use the provided i2c_smbus_* methods described below instead
|
|
|
|
+ of issuing direct ioctls.
|
|
|
|
|
|
You can do plain i2c transactions by using read(2) and write(2) calls.
|
|
You can do plain i2c transactions by using read(2) and write(2) calls.
|
|
You do not need to pass the address byte; instead, set it through
|
|
You do not need to pass the address byte; instead, set it through
|
|
@@ -166,10 +161,9 @@ what happened. The 'write' transactions return 0 on success; the
|
|
returns the number of values read. The block buffers need not be longer
|
|
returns the number of values read. The block buffers need not be longer
|
|
than 32 bytes.
|
|
than 32 bytes.
|
|
|
|
|
|
-The above functions are all inline functions, that resolve to calls to
|
|
|
|
-the i2c_smbus_access function, that on its turn calls a specific ioctl
|
|
|
|
-with the data in a specific format. Read the source code if you
|
|
|
|
-want to know what happens behind the screens.
|
|
|
|
|
|
+The above functions are made available by linking against the libi2c library,
|
|
|
|
+which is provided by the i2c-tools project. See:
|
|
|
|
+https://git.kernel.org/pub/scm/utils/i2c-tools/i2c-tools.git/.
|
|
|
|
|
|
|
|
|
|
Implementation details
|
|
Implementation details
|