USB device-initiated data transfers and platform offload capabilities
Various systems and methods for USB Device-initiated data transfers and platform offload capabilities, and related processing and communication capabilities in a USB Host, are discussed. An example method for data offloading of data from a USB Device to a USB Host includes: receiving a data available notification from a USB Device connected to a USB Host via a USB interface; using a USB Host Controller to read buffered data from a buffer of the USB Device, in response to the data available notification; and providing the buffered data from the USB Host Controller to an Offload Engine of the USB Host.
1 . At least one non-transitory machine-readable medium capable of storing instructions, wherein the instructions, when executed by circuitry of a Universal Serial Bus (USB) Host, cause the circuitry to:
determine that the USB Host includes functionality to receive a data available notification from a USB Device and perform data offloading to an Offload Engine of the USB Host in response to the data available notification;
receive the data available notification from the USB Device via a USB interface, the data available notification initiated by the USB Device, and the USB Device connected to the USB Host via the USB interface;
read buffered data from a buffer of the USB Device, in response to the data available notification; and
provide the buffered data to the Offload Engine of the USB Host.
2 . The non-transitory machine-readable medium of claim 1 , wherein the instructions, when executed by the circuitry, cause the circuitry to:
process the buffered data with the Offload Engine; and
provide the processed buffered data to a USB Software Stack or a software application of the USB Host.
3 . The non-transitory machine-readable medium of claim 1 , wherein the data available notification is a defined data structure that includes:
a first data value to identify a type of the data available notification, and
a second data value to identify a size of the buffered data available to be read from the USB Device.
4 . The non-transitory machine-readable medium of claim 1 , wherein the data available notification is received at a USB Host Controller of the USB Host, and wherein the USB Host Controller is in a sleep state until receipt of the data available notification.
5 . The non-transitory machine-readable medium of claim 1 , wherein the instructions, when executed by the circuitry, cause the circuitry to:
enable use of the data available notification using a USB Software Stack of the USB Host, in response to determining that the USB Host includes the functionality to receive the data available notification from the USB Device and perform the data offloading to the Offload Engine of the USB Host.
6 . The non-transitory machine-readable medium of claim 5 , wherein the instructions, when executed by the circuitry, cause the circuitry to:
configure a USB Host Controller to read the buffered data and provide the buffered data to the Offload Engine, based on the data available notification.
7 . The non-transitory machine-readable medium of claim 6 , wherein the instructions, when executed by the circuitry, cause the circuitry to:
enable a configuration of a data transfer mechanism between the Offload Engine and the USB Host Controller.
8 . The non-transitory machine-readable medium of claim 6 , wherein the Offload Engine is used to provide the buffered data to acceleration circuitry.
9 . The non-transitory machine-readable medium of claim 5 , wherein the instructions, when executed by the circuitry, cause the circuitry to:
determine that the USB Device includes functionality to provide the data available notification to the USB Host.
10 . The non-transitory machine-readable medium of claim 9 , wherein the functionality to provide the data available notification to the USB Host is enabled based on a USB device class.
11 . A computing system configured as a Universal Serial Bus (USB) Host, the computing system comprising:
processing circuitry configured to:
determine that the USB Host includes functionality to receive a data available notification from a USB Device and perform data offloading to an Offload Engine of the USB Host in response to the data available notification;
a USB interface; and
a USB Host Controller, configured to:
receive the data available notification from the USB Device connected to the USB Host via the USB interface, the data available notification communicated to the USB Host from the USB Device;
read buffered data from a buffer of the USB Device, in response to the data available notification; and
provide the buffered data to the Offload Engine of the USB Host.
12 . The computing system of claim 11 , wherein the processing circuitry is further configured to:
process the buffered data with the Offload Engine; and
provide the processed buffered data to a USB Software Stack or a software application of the USB Host.
13 . The computing system of claim 11 , wherein the data available notification is a defined data structure that includes: a first data value to identify a type of the data available notification, and a second data value to identify a size of the buffered data available to be read from the USB Device.
14 . The computing system of claim 11 , wherein the data available notification is received at the USB Host Controller, and wherein the USB Host Controller is in a sleep state until receipt of the data available notification.
15 . The computing system of claim 11 , further comprising wherein the processing circuitry is further configured to:
enable use of the data available notification using a USB Software Stack of the USB Host, in response to determining that the USB Host includes the functionality to receive the data available notification from the USB Device and perform the data offloading to the Offload Engine of the USB Host.
16 . The computing system of claim 15 , wherein the processing circuitry is further configured to:
configure the USB Host Controller to read the buffered data and provide the buffered data to the Offload Engine, based on the data available notification.
17 . The computing system of claim 16 , wherein to configure the USB Host Controller, the processing circuitry is further configured to enable a configuration of a data transfer mechanism between the Offload Engine and the USB Host Controller.
18 . The computing system of claim 16 , wherein the Offload Engine is used to provide the buffered data to acceleration circuitry.
19 . The computing system of claim 15 , wherein the processing circuitry is further configured to:
determine that the USB Device includes functionality to provide the data available notification to the USB Host.
20 . The computing system of claim 19 , wherein the functionality to provide the data available notification to the USB Host is enabled based on a USB device class.