From: Christopher H. <ch...@us...> - 2002-04-25 22:46:19
|
Update of /cvsroot/blob/blob/include/blob In directory usw-pr-cvs1:/tmp/cvs-serv23553/include/blob Added Files: i2c.h i2c-gpio.h Log Message: simple i2c implementation -- useful for reading DRAM size and timing info out of SPD roms on SIMMs --- NEW FILE: i2c.h --- #ifndef _I2C_H_ #define _I2C_H_ #include <blob/types.h> struct i2c_bus { int (*init_bus)(struct i2c_bus *); int (*set_scl)(struct i2c_bus *, unsigned sense); int (*set_sda)(struct i2c_bus *, unsigned sense); int (*get_scl)(struct i2c_bus *); int (*get_sda)(struct i2c_bus *); void *private; }; //////////////////////////////////////////////////////////////////////// /* high-level operators */ extern int i2c_init(struct i2c_bus *); extern int i2c_read_device_byte(struct i2c_bus *, u8); extern int i2c_read_device_byte_at(struct i2c_bus *bus, u8, u8); extern int i2c_read_device_bytes(struct i2c_bus *, u8, u8, u8 *, unsigned long); extern int i2c_write_device_byte_at(struct i2c_bus *, u8, u8, u8); extern int i2c_write_device_bytes_at(struct i2c_bus *, u8, u8, const u8 *, unsigned long); extern int i2c_scan(struct i2c_bus *bus, u8 map[256]); /* low-level operators */ extern int i2c_start(struct i2c_bus *); extern int i2c_stop(struct i2c_bus *); extern int i2c_send_ack(struct i2c_bus *); extern int i2c_get_ack(struct i2c_bus *); extern int i2c_get_ack_quietly(struct i2c_bus *); extern int i2c_write_byte(struct i2c_bus *, u8); extern int i2c_read_byte(struct i2c_bus *); #endif --- NEW FILE: i2c-gpio.h --- #ifndef _I2C_GPIO_H_ #define _I2C_GPIO_H_ #include <blob/types.h> struct i2c_bus_gpio_private { unsigned sda_gpio; unsigned scl_gpio; unsigned delay; }; extern int init_bus_gpio(struct i2c_bus *); extern int set_sda_gpio(struct i2c_bus *, unsigned); extern int get_sda_gpio(struct i2c_bus *); extern int set_scl_gpio(struct i2c_bus *, unsigned); extern int get_scl_gpio(struct i2c_bus *); #endif |