JAJSHM9 June 2019 TUSB8043A
PRODUCTION DATA.
Report length includes overhead bytes (1 byte of opcode, 1 byte of device address and 2 bytes of data length) and must match the number of bytes sent in the data stage or the request is stalled.
Set Report status stage reports only the status of the receipt and validity of the request, not the status of the I2C transaction. As long as the fields construct a valid request, the status stage is Acked by a null packet. Otherwise, it is STALLed. For example, if the report_length does not match the amount of data sent before the status stage or the wLength does not match the number of bytes of data sent in the data stage, the status stage is STALLed.
Software shall ensure properly formatted commands and data responses. The sum of the start address and wLength shall be less than the total size of the address range of the target device in a properly formatted command. Hardware shall wrap any data addresses above FFFFh and shall discard any data transmitted greater than wLength and return STALL. A STALL is returned if opcode is 00h.
The I2C master that performs the I2C reads and writes initiated through USB HID interface supports clock stretching. It operates at 400 kHz by default, but can be configured for 100 kHz through eFuse or register or by opcode.
If the TUSB8043A is suspended (L2) by the USB host, the USB HID interface must enter suspend, but the I2C master shall remain active while attempting to complete an active I2C write request. An active I2C read request may be aborted if the TUSB8043A enters USB suspend state. Per the USB specification, the USB host should not suspend the HID interface while an I2C read or write is still in progress. The USB HID interface shall refuse requests to enter USB 2.0 sleep mode (L1) while an I2C read or write is in progress.