linux_dsm_epyc7002/Documentation/usb
Andrey Konovalov 97df5e5758 usb: raw-gadget: fix gadget endpoint selection
Currently automatic gadget endpoint selection based on required features
doesn't work. Raw Gadget tries iterating over the list of available
endpoints and finding one that has the right direction and transfer type.
Unfortunately selecting arbitrary gadget endpoints (even if they satisfy
feature requirements) doesn't work, as (depending on the UDC driver) they
might have fixed addresses, and one also needs to provide matching
endpoint addresses in the descriptors sent to the host.

The composite framework deals with this by assigning endpoint addresses
in usb_ep_autoconfig() before enumeration starts. This approach won't work
with Raw Gadget as the endpoints are supposed to be enabled after a
set_configuration/set_interface request from the host, so it's too late to
patch the endpoint descriptors that had already been sent to the host.

For Raw Gadget we take another approach. Similarly to GadgetFS, we allow
the user to make the decision as to which gadget endpoints to use.

This patch adds another Raw Gadget ioctl USB_RAW_IOCTL_EPS_INFO that
exposes information about all non-control endpoints that a currently
connected UDC has. This information includes endpoints addresses, as well
as their capabilities and limits to allow the user to choose the most
fitting gadget endpoint.

The USB_RAW_IOCTL_EP_ENABLE ioctl is updated to use the proper endpoint
validation routine usb_gadget_ep_match_desc().

These changes affect the portability of the gadgets that use Raw Gadget
when running on different UDCs. Nevertheless, as long as the user relies
on the information provided by USB_RAW_IOCTL_EPS_INFO to dynamically
choose endpoint addresses, UDC-agnostic gadgets can still be written with
Raw Gadget.

Fixes: f2c2e71764 ("usb: gadget: add raw-gadget interface")
Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
Signed-off-by: Felipe Balbi <balbi@kernel.org>
2020-05-14 12:30:17 +03:00
..
acm.rst docs: usb: rename files to .rst and add them to drivers-api 2019-06-20 14:28:36 +02:00
authorization.rst docs: usb: rename files to .rst and add them to drivers-api 2019-06-20 14:28:36 +02:00
chipidea.rst docs: usb: rename files to .rst and add them to drivers-api 2019-06-20 14:28:36 +02:00
CREDITS documentation: convert the Documentation directory to UTF-8 2007-05-09 08:58:19 +02:00
dwc3.rst docs: usb: rename files to .rst and add them to drivers-api 2019-06-20 14:28:36 +02:00
ehci.rst docs: usb: rename files to .rst and add them to drivers-api 2019-06-20 14:28:36 +02:00
functionfs.rst docs: usb: rename files to .rst and add them to drivers-api 2019-06-20 14:28:36 +02:00
gadget_configfs.rst docs: usb: rename files to .rst and add them to drivers-api 2019-06-20 14:28:36 +02:00
gadget_hid.rst docs: usb: rename files to .rst and add them to drivers-api 2019-06-20 14:28:36 +02:00
gadget_multi.rst docs: usb: rename files to .rst and add them to drivers-api 2019-06-20 14:28:36 +02:00
gadget_printer.rst docs: usb: rename files to .rst and add them to drivers-api 2019-06-20 14:28:36 +02:00
gadget_serial.rst docs: usb: rename files to .rst and add them to drivers-api 2019-06-20 14:28:36 +02:00
gadget-testing.rst docs: usb: rename files to .rst and add them to drivers-api 2019-06-20 14:28:36 +02:00
index.rst usb: gadget: add raw-gadget interface 2020-03-15 11:34:48 +02:00
iuu_phoenix.rst docs: usb: rename files to .rst and add them to drivers-api 2019-06-20 14:28:36 +02:00
linux-cdc-acm.inf USB: linux-cdc-acm.inf: add support for the acm_ms gadget 2011-11-29 09:59:29 +09:00
linux.inf USB: gadget: g_multi: fixed vendor and product ID in inf files 2011-04-29 16:45:22 -07:00
mass-storage.rst docs: usb: rename files to .rst and add them to drivers-api 2019-06-20 14:28:36 +02:00
misc_usbsevseg.rst docs: usb: rename files to .rst and add them to drivers-api 2019-06-20 14:28:36 +02:00
mtouchusb.rst docs: usb: rename files to .rst and add them to drivers-api 2019-06-20 14:28:36 +02:00
ohci.rst docs: usb: rename files to .rst and add them to drivers-api 2019-06-20 14:28:36 +02:00
raw-gadget.rst usb: raw-gadget: fix gadget endpoint selection 2020-05-14 12:30:17 +03:00
text_files.rst docs: usb: remove some broken references 2020-01-28 13:41:22 -07:00
usb-help.rst docs: usb: rename files to .rst and add them to drivers-api 2019-06-20 14:28:36 +02:00
usb-serial.rst docs: usb: rename files to .rst and add them to drivers-api 2019-06-20 14:28:36 +02:00
usbdevfs-drop-permissions.c usb: devio: Add ioctl to disallow detaching kernel USB drivers. 2016-03-05 12:05:01 -08:00
usbip_protocol.rst docs: usb: rename files to .rst and add them to drivers-api 2019-06-20 14:28:36 +02:00
usbmon.rst docs: usb: rename files to .rst and add them to drivers-api 2019-06-20 14:28:36 +02:00