I know this is an old thread, but so am I
I've be away from the forum for a while but have something to offer here I hope. The I2C bus in general, can get locked up for a variety of reasons, particularly during development and debug. If you breakpoint while an I2C bus transaction is in progress and you decide it's best to exit the debugger, edit, recompile, redownload, etc. then it's possible the I2C bus is in an unknown state and requires a reset.
I've dealt with this issue on both Zilog and another architecture. I'm enclosing some references to "other" sites (sorry Zilog) regarding details on reset rationale and methods. Hope they help.
Silicon Labs Forum
Microchip Application Notes AN572 and AN709.
Best regards,
Steve C.