]> git.sur5r.net Git - u-boot/blobdiff - cpu/arm920t/at91rm9200/i2c.c
Merge branch 'origin'
[u-boot] / cpu / arm920t / at91rm9200 / i2c.c
index 433dd32a23112057fcc3602a20f6a50e573db798..826cea8e2641a7a6dc832bc955943cc403b3558f 100644 (file)
@@ -65,9 +65,8 @@ at91_xfer(unsigned char chip, unsigned int addr, int alen,
                | ((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;
@@ -112,7 +111,7 @@ at91_xfer(unsigned char chip, unsigned int addr, int alen,
 int
 i2c_probe(unsigned char chip)
 {
-       char buffer[1];
+       unsigned char buffer[1];
 
        return at91_xfer(chip, 0, 0, buffer, 1, 1);
 }
@@ -138,12 +137,12 @@ i2c_read (unsigned char chip, unsigned int addr, int alen,
 
 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;
@@ -189,4 +188,19 @@ i2c_init(int speed, int slaveaddr)
        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 */