I can’t answer most of that, but it may help to understand that there are two drivers involved in using any USB end point. The first driver is the USB controller and its operations…but this just deals with the device as a data pipe. Aside from transferring data the pipe is also used for announcing changes to the hot plug layer…the hot plug layer may recognize the device, and a driver will take ownership if you want to know about where the data goes.
Some drivers which might take ownership are standardized classes which use standardized commands for interacting…these are the classes like HID (keyboard, mouse, joystick), USB Video Class (UVC cameras and similar with standard functionality), USB Mass storage (hard drives or bulk transfer), so on. The drivers which service standardized classes are not actually dealing with the USB controller…they’re separate drivers which happen to have knowledge of certain devices as a convenience so every device doesn’t need a custom driver.
If a device is not a standardized class, then it has to have its own custom driver. When the USB subsystem announces a device plugging in to and enumerating on USB, then a custom device driver might take ownership in the same way as a standard class. The drivers which take ownership of the specific device store and deal with most of the information you are interested in. Aside from possibly buffering the data pipe, you need to investigate the driver which specifically takes ownership.
If it’s a standardized class like HID or UVC, then you are in luck because the code and information is available in many places. If the driver is a custom driver, then perhaps it is open source, or perhaps not…if not open source, then you’re going to do some guessing.
The TRM describes the controller, but you’d have to go somewhere like usb.org to understand what the software must accomplish.
The end software which consumes the data tells you more about behavior, e.g., if you are in the GUI, then the XInput extension to the Xorg server decides what to do with a mouse, joystick, keyboard, so on. There is a different Xorg extension for talking to the video driver…an ABI (Application Binary Interface) defines what the server expects, and a video driver fulfills that ABI’s requirements…this could be over PCIe, but it could be over USB. If video is over USB or PCIe the Xorg server does not care…the driver handling the video is separate from the data pipe of PCIe or USB.