blob: 7c5e67889e6219d2572ed610e3ea917eed5c8f34 [file] [log] [blame]
#include <linux/i2c-dev.h>
#include <linux/i2c.h>
#include <linux/types.h>
#include <sys/ioctl.h>
#define I2C_DATA_MAX 256
static inline __s32 i2c_read_after_write(int file, __u8 slave_addr, __u8 tx_len,
__u8* tx_buf, int rx_len, __u8* rx_buf)
{
struct i2c_rdwr_ioctl_data msgst;
struct i2c_msg msg[2];
int ret;
msg[0].addr = slave_addr & 0xFF;
msg[0].flags = 0;
msg[0].buf = (__u8*)tx_buf;
msg[0].len = tx_len;
msg[1].addr = slave_addr & 0xFF;
msg[1].flags = I2C_M_RD;
msg[1].buf = (__u8*)rx_buf;
msg[1].len = rx_len;
msgst.msgs = msg;
msgst.nmsgs = 2;
ret = ioctl(file, I2C_RDWR, &msgst);
if (ret < 0)
return ret;
return ret;
}