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
|