blob: 21b3a649051636743e65fa6d0c34757c8b57a606 [file] [log] [blame]
/*
* (C) Copyright 2015 Google, Inc.
* All rights reserved.
*
*/
#ifndef VENDOR_GOOGLE_DIAGS_SPACECAST_I2C_H_
#define VENDOR_GOOGLE_DIAGS_SPACECAST_I2C_H_
#include <inttypes.h>
#define I2C_DEV_FILE "/dev/i2c-%d"
#define I2C_PAGE_SIZE 16
#define I2C_M_RD 0x01
#define FILENAME_SIZE 64
/*
* I2C Message - used for pure i2c transaction, also from /dev interface
*/
struct i2c_msg {
uint16_t addr; /* slave address */
uint16_t flags;
uint16_t len; /* msg length */
uint8_t* buf; /* pointer to msg data */
};
/* This is the structure as used in the I2C_RDWR ioctl call */
struct i2c_rdwr_ioctl_data {
struct i2c_msg* msgs; /* pointers to i2c_msgs */
uint32_t nmsgs; /* number of i2c_msgs */
};
#define I2C_SLAVE 0x0703 /* Change slave address */
#define I2C_SLAVE_FORCE \
0x0706 /* Use this slave address, even if it \
is already in use by a driver! */
#define I2C_RDWR 0x0707 /* Combined R/W transfer (one stop only) */
int i2cr(int controller, uint8_t device_addr, uint32_t cell_addr,
uint32_t addr_len, uint32_t data_len, uint8_t* buf);
int i2cw(int controller, uint8_t device_addr, uint32_t cell_addr,
uint32_t addr_len, uint32_t data_len, uint8_t* buf);
#endif // VENDOR_GOOGLE_DIAGS_SPACECAST_I2C_H_