usba should read the device binary object store
In USB 3.0, the binary object store became a set of device capability descriptors that are now required for each device. While there are a varying number of capabilities that exist, there are several that are interesting for us:
1. The SuperSpeed capability which describes the speeds the device can operate at and its minimum speed
2. The Container capability which provides us a means to map between one or more devices that are operating at the same time at different speeds, such as a USB hub.
3. The SuperSpeedPlus capability which describes USB 3.1+ devices
The kernel should read and store this for all such devices that it encounters and finds that it has support for. At the moment, we'll expose aspects of the SuperSpeed and Container capabilities for topo. Once we have hardware to test various aspects of the SuperSpeedPlus hardware, we'll go through and do a better job of exposing that.
To test this I used several USB 3.x devices including both USB hubs and USB mass storage devices (the only USB 3.x devices we had) and verified that we parsed all of the capabilities that they presented correctly. I made sure that the devices devinfo properties matched what we expected. I also went through and verified that we still ask for these properties when we're behind a USB 2.x hub, meaning that our bcdUSB is 0x2010. I also used several USB 2.0 and 1.x devices to make sure that this didn't introduce any regressions during attach. This was also tested with 11176.
Updated by Electric Monk about 1 month ago
- Status changed from New to Closed
commit 0d2006e4703eda0f88de2e571bf9fb317552faa2 Author: Robert Mustacchi <firstname.lastname@example.org> Date: 2019-06-14T22:23:14.000Z 11177 usba should read the device binary object store 11178 USB topology could know about supported, minimum speeds 11179 usba parsing code should take const data pointers 11176 usba kernel module should be CERRWARN and smatch clean Reviewed by: John Levon <email@example.com> Reviewed by: Rob Johnston <firstname.lastname@example.org> Approved by: Gordon Ross <email@example.com>