u-boot/include/linux
Li Jun b524637d50 MLK-18376-3 usb: gadget: OS Feature Descriptors support
This is a proting patch from linux kernel: 37a3a533429e
("usb: gadget: OS Feature Descriptors support"), the original commit
log see below:

There is a custom (non-USB IF) extension to the USB standard:

http://msdn.microsoft.com/library/windows/hardware/gg463182

They grant permission to use the specification - there is
"Microsoft OS Descriptor Specification License Agreement"
under the link mentioned above, and its Section 2 "Grant
of License", letter (b) reads:

"Patent license. Microsoft hereby grants to You a nonexclusive,
royalty-free, nontransferable, worldwide license under Microsoft’s
patents embodied solely within the Specification and that are owned
or licensable by Microsoft to make, use, import, offer to sell,
sell and distribute directly or indirectly to Your Licensees Your
Implementation. You may sublicense this patent license to Your
Licensees under the same terms and conditions."

The said extension is maintained by Microsoft for Microsoft.

Yet it is fairly common for various devices to use it, and a
popular proprietary operating system expects devices to provide
"OS descriptors", so Linux-based USB gadgets whishing to be able
to talk to a variety of operating systems should be able to provide
the "OS descriptors".

This patch adds optional support for gadgets whishing to expose
the so called "OS Feature Descriptors", that is "Extended Compatibility ID"
and "Extended Properties".

Hosts which do request "OS descriptors" from gadgets do so during
the enumeration phase and before the configuration is set with
SET_CONFIGURATION. What is more, those hosts never ask for configurations
at indices other than 0. Therefore, gadgets whishing to provide
"OS descriptors" must designate one configuration to be used with
this kind of hosts - this is what os_desc_config is added for in
struct usb_composite_dev. There is an additional advantage to it:
if a gadget provides "OS descriptors" and designates one configuration
to be used with such non-USB-compliant hosts it can invoke
"usb_add_config" in any order because the designated configuration
will be reported to be at index 0 anyway.

This patch also adds handling vendor-specific requests addressed
at device or interface and related to handling "OS descriptors"."

Signed-off-by: Li Jun <jun.li@nxp.com>
(cherry picked from commit 859be2fc12dbd1b99e140641f2d7fa14df29c9dd)
2018-06-13 19:43:37 -07:00
..
byteorder
mtd MLK-16034-01: change the maximum oob size 2018-04-27 06:14:41 -07:00
unaligned
usb MLK-18376-3 usb: gadget: OS Feature Descriptors support 2018-06-13 19:43:37 -07:00
apm_bios.h
arm-smccc.h ARM: adjust arm-smccc code for use in U-Boot 2017-04-18 10:29:17 -04:00
bch.h
bitfield.h linux/bitfield.h: import <linux/bitfield.h> from Linux 4.13 2017-10-04 12:00:21 -04:00
bitops.h bitops: collect BIT macros to include/linux/bitops.h 2017-11-29 00:28:57 +09:00
bitrev.h
bug.h bug.h: move runtime BUG/WARN macros into <linux/bug.h> 2017-10-04 12:00:20 -04:00
build_bug.h bug.h: sync BUILD_BUG stuff with Linux 4.13 2017-10-04 12:00:19 -04:00
compat.h dm: define dev_*() log functions in DM header 2017-10-04 12:00:20 -04:00
compiler-clang.h
compiler-gcc.h
compiler-intel.h
compiler.h bug.h: sync BUILD_BUG stuff with Linux 4.13 2017-10-04 12:00:19 -04:00
crc7.h
crc8.h
crc32.h
ctype.h
delay.h delay: collect {m, n, u}delay declarations to include/linux/delay.h 2017-01-14 16:46:28 -05:00
dma-direction.h dma: import linux/dma-direction.h to consolidate enum dma_data_direction 2017-09-12 18:02:23 -04:00
drm_dp_helper.h
edd.h
err.h
errno.h
ethtool.h
fb.h avr32: Retire AVR32 for good 2017-07-06 16:17:19 -04:00
immap_qe.h armv7: ls1021a: Drop macro CONFIG_LS102XA 2017-04-17 09:03:30 -07:00
input.h
io.h linux/io.h: import generic ioread* / iowrite* accessors from Linux 2017-09-12 18:02:23 -04:00
ioctl.h
iopoll.h iopoll: import include/linux/iopoll.h from Linux 4.9 2017-01-14 16:46:30 -05:00
ioport.h
kbuild.h
kconfig.h spl: dm: use CONFIG_IS_ENABLED to test for the DM option 2017-08-13 17:12:20 +02:00
kernel.h linux/kernel.h: Add ALIGN_DOWN macro 2018-01-10 08:05:51 -05:00
libfdt.h libfdt: move headers to <linux/libfdt.h> and <linux/libfdt_env.h> 2018-03-05 10:16:28 -05:00
libfdt_env.h libfdt: move headers to <linux/libfdt.h> and <linux/libfdt_env.h> 2018-03-05 10:16:28 -05:00
linkage.h
linux_string.h
list.h
list_sort.h
log2.h
lzo.h lzo: add a function to check the validity of the header 2017-10-05 21:31:04 -04:00
math64.h lib: div64: sync with Linux 2017-04-13 09:41:10 -04:00
mbus.h
mc146818rtc.h
mdio.h
mii.h net: Add mii_resolve_flowctrl_fdx() 2017-08-14 12:47:32 -05:00
netdevice.h
poison.h
posix_types.h
printk.h printk: collect printk stuff into <linux/printk.h> with loglevel support 2017-10-04 10:31:17 -04:00
psci.h sysreset: psci: support system reset in a generic way with PSCI 2017-04-18 10:29:19 -04:00
rbtree.h
rbtree_augmented.h
screen_info.h
serial_reg.h
sizes.h
stat.h avr32: Retire AVR32 for good 2017-07-06 16:17:19 -04:00
stddef.h
string.h string: Add strcspn() 2017-06-01 07:03:12 -06:00
stringify.h
time.h linux/time.h: Remove dead code 2017-10-16 09:42:51 -04:00
typecheck.h typecheck: import include/linux/typecheck.h from Linux 4.9 2017-01-14 16:46:29 -05:00
types.h linux/types.h: add typedef of uintptr_t 2017-11-17 07:44:13 -05:00
utf.h MLK-18376-2 usb: gadget: move utf8_to_utf16le to header file 2018-06-13 19:43:26 -07:00