23,7 → 23,7 |
/* With some changes from Kyösti Mälkki <kmalkki@cc.hut.fi> and |
Frodo Looijaard <frodol@dds.nl> */ |
|
/* $Id: i2c.h,v 1.1 2004-01-28 15:25:29 giacomo Exp $ */ |
/* $Id: i2c.h,v 1.2 2006-09-20 05:28:07 tullio Exp $ */ |
|
#ifndef _LINUX_I2C_H |
#define _LINUX_I2C_H |
53,10 → 53,6 |
extern int i2c_master_send(struct i2c_client *,const char* ,int); |
extern int i2c_master_recv(struct i2c_client *,char* ,int); |
|
/* Transfer num messages. |
*/ |
extern int i2c_transfer(struct i2c_adapter *adap, struct i2c_msg msg[],int num); |
|
/* |
* Some adapter types (i.e. PCF 8584 based ones) may support slave behaviuor. |
* This is not tested/implemented yet and will change in the future. |
188,37 → 184,6 |
} |
|
/* |
* The following structs are for those who like to implement new bus drivers: |
* i2c_algorithm is the interface to a class of hardware solutions which can |
* be addressed using the same bus algorithms - i.e. bit-banging or the PCF8584 |
* to name two of the most common. |
*/ |
struct i2c_algorithm { |
char name[32]; /* textual description */ |
unsigned int id; |
|
/* If an adapter algorithm can't to I2C-level access, set master_xfer |
to NULL. If an adapter algorithm can do SMBus access, set |
smbus_xfer. If set to NULL, the SMBus protocol is simulated |
using common I2C messages */ |
int (*master_xfer)(struct i2c_adapter *adap,struct i2c_msg msgs[], |
int num); |
int (*smbus_xfer) (struct i2c_adapter *adap, u16 addr, |
unsigned short flags, char read_write, |
u8 command, int size, union i2c_smbus_data * data); |
|
/* --- these optional/future use for some adapter types.*/ |
int (*slave_send)(struct i2c_adapter *,char*,int); |
int (*slave_recv)(struct i2c_adapter *,char*,int); |
|
/* --- ioctl like call to set div. parameters. */ |
int (*algo_control)(struct i2c_adapter *, unsigned int, unsigned long); |
|
/* To determine what the adapter supports */ |
u32 (*functionality) (struct i2c_adapter *); |
}; |
|
/* |
* i2c_adapter is the structure used to identify a physical i2c bus along |
* with the access algorithms necessary to access it. |
*/ |
401,6 → 366,42 |
__u8 *buf; /* pointer to msg data */ |
}; |
|
// moved here for gcc4 compatibility |
/* Transfer num messages. */ |
extern int i2c_transfer(struct i2c_adapter *adap, struct i2c_msg msg[],int num); |
|
// moved here for gcc4 compatibility |
/* |
* The following structs are for those who like to implement new bus drivers: |
* i2c_algorithm is the interface to a class of hardware solutions which can |
* be addressed using the same bus algorithms - i.e. bit-banging or the PCF8584 |
* to name two of the most common. |
*/ |
struct i2c_algorithm { |
char name[32]; /* textual description */ |
unsigned int id; |
|
/* If an adapter algorithm can't to I2C-level access, set master_xfer |
to NULL. If an adapter algorithm can do SMBus access, set |
smbus_xfer. If set to NULL, the SMBus protocol is simulated |
using common I2C messages */ |
int (*master_xfer)(struct i2c_adapter *adap,struct i2c_msg msgs[], |
int num); |
int (*smbus_xfer) (struct i2c_adapter *adap, u16 addr, |
unsigned short flags, char read_write, |
u8 command, int size, union i2c_smbus_data * data); |
|
/* --- these optional/future use for some adapter types.*/ |
int (*slave_send)(struct i2c_adapter *,char*,int); |
int (*slave_recv)(struct i2c_adapter *,char*,int); |
|
/* --- ioctl like call to set div. parameters. */ |
int (*algo_control)(struct i2c_adapter *, unsigned int, unsigned long); |
|
/* To determine what the adapter supports */ |
u32 (*functionality) (struct i2c_adapter *); |
}; |
|
/* To determine what functionality is present */ |
|
#define I2C_FUNC_I2C 0x00000001 |