Ktam3874/pitx software guide – Kontron KTAM3874-pITX User Manual
Page 53

KTD-S0057-I
Page 49 Linux® Programming Examples (DebianTM)
KTAM3874/pITX Software Guide
#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
#define I2C_SMBUS_WRITE
0
#define I2C_SMBUS_BYTE
1
#define I2C_SLAVE
0x0703
#define I2C_SMBUS
0x0720
#define I2C_SMBUS_BLOCK_MAX 32
#define EDIP128_ADDR
0x6F
static const char *device = "/dev/i2c-3";
static int fd;
union i2c_smbus_data
{
__u8
byte;
__u16
word;
__u8 block[I2C_SMBUS_BLOCK_MAX + 2];
};
struct i2c_smbus_ioctl_data
{
char
read_write;
__u8
command;
int
size;
union i2c_smbus_data *data;
};
static inline __s32 i2c_smbus_access (int file, char read_write, __u8 command,
int size, union i2c_smbus_data *data)
{
struct i2c_smbus_ioctl_data args;
args.read_write = read_write;
args.command = command;
args.size = size;
args.data = data;
return ioctl (file, I2C_SMBUS, &args);
}
static inline __s32 i2c_smbus_write_byte (int file, __u8 value)
{
return i2c_smbus_access (file, I2C_SMBUS_WRITE, value, I2C_SMBUS_BYTE, NULL);
}
static int transmit_i2c_test_string (void)
{
int
i;
__u8 tx[] = {
0x11,
/*
DC1
*/
0x05,
/* Data len */
0x48, 0x65, 0x6C, 0x6C, 0x6F,
/* Data = 'Hello' */
0x0A
/*
Checksum
*/
};