Looking through the iMX7 Linux/MQX/FreeRTOS code and iMX7 datasheet it appears that there is only a single byte TX data register available for the I2C peripherals. I just wanted to make sure that I was not missing something, because this represents a pretty huge bottle-neck having to switch in/out of interrupt context for sending every single byte when using an interrupt driven I2C driver? In our system we employ four I2C peripherals configured for the M-core, and attempting to service a single I2C device on each individual bus is extremely inefficient due to the single-byte HW data register.
On every other microprocessor I have every used (8-bit/16-bit/32-bit, many manufacturers) there has been at least an 8-byte HW FIFO on the I2C peripheral. So I am asking if I am missing something in the datasheet, or if there is a way to increase the size of the HW data FIFO beyond a single byte?