| ((rw == 1) ? AT91C_TWI_MREAD : 0);
/* Set TWI Internal Address Register with first messages data field */
- /* only one address byte is supported */
if (alen > 0)
- twi->TWI_IADR = addr & 0xff;
+ twi->TWI_IADR = addr;
length = len;
buf = buffer;
int
i2c_probe(unsigned char chip)
{
- char buffer[1];
+ unsigned char buffer[1];
return at91_xfer(chip, 0, 0, buffer, 1, 1);
}
int
i2c_write(unsigned char chip, unsigned int addr, int alen,
- unsigned char *buffer, int len)
+ unsigned char *buffer, int len)
{
+#ifdef CFG_I2C_EEPROM_ADDR_OVERFLOW
int i;
unsigned char *buf;
-#ifdef CFG_I2C_EEPROM_ADDR_OVERFLOW
/* we only allow one address byte */
if (alen > 1)
return 1;
debug ("Found AT91 i2c\n");
return;
}
+
+uchar i2c_reg_read(uchar i2c_addr, uchar reg)
+{
+ unsigned char buf;
+
+ i2c_read(i2c_addr, reg, 1, &buf, 1);
+
+ return(buf);
+}
+
+void i2c_reg_write(uchar i2c_addr, uchar reg, uchar val)
+{
+ i2c_write(i2c_addr, reg, 1, &val, 1);
+}
+
#endif /* CONFIG_HARD_I2C */