On Thu, Jan 14, 2021 at 05:27:11PM -0800, Kevin Herbert wrote: > The loop sends either one or two events to the slave driver. If the > state is I2C_SLAVE_READ_REQUESTED, we synthesize the > I2C_SLAVE_READ_PROCESSED event, and then our state becomes > I2C_SLAVE_READ_PROCESSED. In all other states, we transition to > I2C_SLAVE_STOP and exit the loop. > > It is not a busy loop at all. It is calling the callback handler (that > already expects to be in IRQ context) one or two times, and then it > exits the loop. Oleksij, does this answer your question?