Code was using the size of the Rx buffer instead of the Tx buffer when registering. Buffers are currently the same size so wasn't causing any issues.
HID driver was incorrectly giving back the HID interface descriptor when asked for the HID descriptor. This should let OP boards interact better with generic HID layer drivers and also gives us nicer output in lsusb once the HID descriptor is read.
all used.