Index: firmware/target/arm/i2c-pp.c =================================================================== --- firmware/target/arm/i2c-pp.c (revision 16006) +++ firmware/target/arm/i2c-pp.c (working copy) @@ -148,11 +148,13 @@ unsigned int temp; int i; mutex_lock(&i2c_mtx); + DEV_EN |= DEV_I2C; pp_i2c_send_byte(dev_addr, addr); for (i = 0; i < len; i++) { pp_i2c_read_byte(dev_addr, &temp); data[i] = temp; } + DEV_EN &= ~DEV_I2C; mutex_unlock(&i2c_mtx); return i; } @@ -162,8 +164,10 @@ int data; mutex_lock(&i2c_mtx); + DEV_EN |= DEV_I2C; pp_i2c_send_byte(dev_addr, addr); pp_i2c_read_byte(dev_addr, &data); + DEV_EN &= ~DEV_I2C; mutex_unlock(&i2c_mtx); return data; @@ -178,7 +182,9 @@ data[1] = data1; mutex_lock(&i2c_mtx); + DEV_EN |= DEV_I2C; retval = pp_i2c_send_bytes(addr, 2, data); + DEV_EN &= ~DEV_I2C; mutex_unlock(&i2c_mtx); return retval; @@ -234,4 +240,6 @@ mutex_init(&i2c_mtx); i2c_readbyte(0x8, 0); + + DEV_EN &= ~DEV_I2C; }