10 #include <soc/periph.h>
13 #define I2C_TIMEOUT_US (1000 * USECS_PER_MSEC)
60 .regs = (
void *)0x12c60000,
65 .regs = (
void *)0x12c70000,
70 .regs = (
void *)0x12c80000,
75 .regs = (
void *)0x12c90000,
80 .regs = (
void *)0x12ca0000,
85 .regs = (
void *)0x12cb0000,
90 .regs = (
void *)0x12cc0000,
95 .regs = (
void *)0x12cd0000,
182 for (i = 0; i < len; i++) {
205 for (i = 0; i < len; i++) {
232 for (i = 0; i < seg_count; i++) {
233 struct i2c_msg *seg = &segments[i];
253 unsigned long freq, pres = 16, div;
258 if ((
freq / pres / (16 + 1)) > speed)
264 while ((
freq / pres / (div + 1)) > speed)
268 val = (div & 0x0f) | 0xa0 | ((pres == 512) ? 0x40 : 0);
static void write8(void *addr, uint8_t val)
static void write32(void *addr, uint32_t val)
static uint8_t read8(const void *addr)
#define DIV_ROUND_UP(x, y)
#define printk(level,...)
static struct tpm_chip chip
#define BIOS_INFO
BIOS_INFO - Expected events.
#define BIOS_ERR
BIOS_ERR - System in incomplete state.
int platform_i2c_transfer(unsigned int bus, struct i2c_msg *segment, int seg_count)
void i2c_init(unsigned int bus)
unsigned long clock_get_periph_rate(enum periph_id peripheral)
get the clk frequency of the required peripheral
static void i2c_ack_enable(struct i2c_regs *regs)
static int i2c_got_ack(struct i2c_regs *regs)
static void i2c_clear_int(struct i2c_regs *regs)
static int i2c_xmit_buf(struct i2c_regs *regs, uint8_t *data, int len)
static int i2c_int_pending(struct i2c_regs *regs)
static int i2c_send_stop(struct i2c_regs *regs)
static struct s3c24x0_i2c_bus i2c_busses[]
static int i2c_wait_for_idle(struct i2c_regs *regs, int timeout_us)
static int i2c_recv_buf(struct i2c_regs *regs, uint8_t *data, int len)
static int i2c_send_start(struct i2c_regs *regs, int read, int chip)
static void i2c_ack_disable(struct i2c_regs *regs)
static int i2c_wait_for_int(struct i2c_regs *regs, int timeout_us)
struct i2c_msg - an I2C transaction segment beginning with START @addr: Slave address,...