AR# 23232

8.1i EDK Sp2 - The iic_v1_01_d IIC master driver produces an extra ack when reading 16 bytes


When reading 16 bytes from an I2C device, the device driver (xiic_master.c in the function XIic_MasterRecv) acknowledges the last byte instead of ignoring the last byte (so the target can release the bus). Consequently, the slave device continues to hold down the SDA line because it is expecting to transmit more data; which causes the bus to be locked.


This problem has been fixed in the latest EDK 8.1i Service Pack, available at:
The first service pack containing the fix is EDK 8.1i Service Pack 2.

AR# 23232
Date 12/15/2012
Status Active
Type General Article