(This is actually a re-review, but it has been too long since the first one for me to feel comfortable relying on it.)
Read IIC-HID reports as a single I²C transaction, instead of reading first the two byte length field, holding the bus, and then the rest of the report in a separate transaction.
While technically legal, I²C bus split transactions are not universally supported, and in particular the "Snapdragon Elite" ARM CPU does not seem to support them.
It is also not obvious that they are beneficial in this case, given the overhead of controller setup, interrupts and tear-down.