How not to write I2C device drivers
Deciding not to write the device driver consists of writing the appropriate user code to deal with the underlying hardware. Though it is user code, the kernel always intervenes to ease the development process. I2C adapters are exposed by the kernel in the user space as character devices in the form of /dev/i2c-<X>
, where <X>
is the bus number. Once you have opened the character device file that corresponds to the adapter your device sits on, there is a series of commands you can execute.
First, the required headers for dealing with I2C devices from the user space are as follows:
#include <linux/i2c-dev.h> #include <i2c/smbus.h> #include <linux/i2c.h>
The following are the possible commands:
ioctl(file, I2C_FUNCS, unsigned long *funcs)
: This command is probably the first command you should issue. It is the equivalent ofi2c_check_functionality()
in the kernel, which returns the necessary adapter functionality...