[PATCH 00/37] usb: gadget: rework ep matching and claiming mechanism

From: Robert Baldyga
Date: Wed Jul 08 2015 - 07:09:57 EST


Hello,

This patch series reworks endpoint matching and claiming mechanism in
epautoconf.

The patch (1) introduces new safer endpoint claiming method, basing on
new 'claimed' flag. It was discussed here [1]. I proposed this solution
over year ago and it was accepted, but apparently I forgot to send the
final version of patch.

Patches (2-3) add the 'capabilities flags' structure and helper macros.
This solution is inspired by the 'feature flags' originally proposed
by Felipe Balbi in 2013 [2], but unfortunately implementation of this
feature has never been completed.

Patches (4-36) add' capabilites flags' support to all UDC drivers present
in the kernel tree. It's needed to be done before replacing old endpoint
matching mechanism, otherwise UDC drivers which doesn't set 'capabilities
flags' won't work with new autoconfig.

Patch (37) finally replaces old endpoint matching method with the new
one basing on capabilities flags.

These changes aims to get rid of code, which guesses endpoint capabilities
basing on it's name, and introduce new better replacement. In result
we have better way to describe types and directions supported by each
endpoint.

For example the old name-based method didn't allow to have endpoint
supporing two types of transfers - there were only ability to support
one or all endpoint types. The 'capabilities flags' feature supply
precise, flexible and extendible mechanism of description of endpoint
hardware limitations, which is desired for proper endpoint matching.

Best regards,
Robert Baldyga

[1] https://lkml.org/lkml/2014/6/16/94
[2] http://www.spinics.net/lists/linux-usb/msg99662.html

Robert Baldyga (37):
usb: gadget: encapsulate endpoint claiming mechanism
usb: gadget: add endpoint capabilities flags
usb: gadget: add endpoint capabilities helper macros
staging: emxx_udc: add ep capabilities support
usb: chipidea: udc: add ep capabilities support
usb: dwc2: gadget: add ep capabilities support
usb: dwc3: gadget: add ep capabilities support
usb: gadget: amd5536udc: add ep capabilities support
usb: gadget: at91_udc: add ep capabilities support
usb: gadget: bcm63xx_udc: add ep capabilities support
usb: gadget: bdc: add ep capabilities support
usb: gadget: dummy-hcd: add ep capabilities support
usb: gadget: fotg210-udc: add ep capabilities support
usb: gadget: fsl_qe_udc: add ep capabilities support
usb: gadget: fsl_udc_core: add ep capabilities support
usb: gadget: fusb300_udc: add ep capabilities support
usb: gadget: goku_udc: add ep capabilities support
usb: gadget: gr_udc: add ep capabilities support
usb: gadget: lpc32xx_udc: add ep capabilities support
usb: gadget: m66592-udc: add ep capabilities support
usb: gadget: mv_u3d_core: add ep capabilities support
usb: gadget: mv_udc_core: add ep capabilities support
usb: gadget: net2272: add ep capabilities support
usb: gadget: net2280: add ep capabilities support
usb: gadget: omap_udc: add ep capabilities support
usb: gadget: pch_ud: add ep capabilities support
usb: gadget: pxa25x_udc: add ep capabilities support
usb: gadget: pxa27x_udc: add ep capabilities support
usb: gadget: r8a66597-udc: add ep capabilities support
usb: gadget: s3c-hsudc: add ep capabilities support
usb: gadget: s3c2410_udc: add ep capabilities support
usb: gadget: udc-xilinx: add ep capabilities support
usb: isp1760: udc: add ep capabilities support
usb: musb: gadget: add ep capabilities support
usb: renesas: gadget: add ep capabilities support
usb: gadget: atmel_usba_udc: add ep capabilities support
usb: gadget: epautoconf: add endpoint capabilities flags verification

drivers/staging/emxx_udc/emxx_udc.c | 60 ++++++++++++------------
drivers/usb/chipidea/udc.c | 14 ++++++
drivers/usb/dwc2/gadget.c | 13 ++++++
drivers/usb/dwc3/gadget.c | 13 ++++++
drivers/usb/gadget/epautoconf.c | 83 +++++++++++----------------------
drivers/usb/gadget/udc/amd5536udc.c | 57 ++++++++++++++++++----
drivers/usb/gadget/udc/at91_udc.c | 33 +++++++++----
drivers/usb/gadget/udc/atmel_usba_udc.c | 11 +++++
drivers/usb/gadget/udc/bcm63xx_udc.c | 25 ++++++++--
drivers/usb/gadget/udc/bdc/bdc_ep.c | 9 ++++
drivers/usb/gadget/udc/dummy_hcd.c | 65 ++++++++++++++++++++------
drivers/usb/gadget/udc/fotg210-udc.c | 11 +++++
drivers/usb/gadget/udc/fsl_qe_udc.c | 11 +++++
drivers/usb/gadget/udc/fsl_udc_core.c | 13 ++++++
drivers/usb/gadget/udc/fusb300_udc.c | 11 +++++
drivers/usb/gadget/udc/goku_udc.c | 8 ++++
drivers/usb/gadget/udc/gr_udc.c | 11 +++++
drivers/usb/gadget/udc/lpc32xx_udc.c | 32 +++++++++++++
drivers/usb/gadget/udc/m66592-udc.c | 11 +++++
drivers/usb/gadget/udc/mv_u3d_core.c | 9 ++++
drivers/usb/gadget/udc/mv_udc_core.c | 9 ++++
drivers/usb/gadget/udc/net2272.c | 11 +++++
drivers/usb/gadget/udc/net2280.c | 50 +++++++++++++++-----
drivers/usb/gadget/udc/omap_udc.c | 22 +++++++++
drivers/usb/gadget/udc/pch_udc.c | 14 +++++-
drivers/usb/gadget/udc/pxa25x_udc.c | 32 +++++++++++++
drivers/usb/gadget/udc/pxa27x_udc.h | 33 +++++++------
drivers/usb/gadget/udc/r8a66597-udc.c | 10 ++++
drivers/usb/gadget/udc/s3c-hsudc.c | 15 ++++++
drivers/usb/gadget/udc/s3c2410_udc.c | 10 ++++
drivers/usb/gadget/udc/udc-xilinx.c | 9 ++++
drivers/usb/isp1760/isp1760-udc.c | 11 +++++
drivers/usb/musb/musb_gadget.c | 12 +++++
drivers/usb/renesas_usbhs/mod_gadget.c | 6 +++
include/linux/usb/gadget.h | 42 +++++++++++++++++
35 files changed, 633 insertions(+), 153 deletions(-)

--
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/