Skip to content

Removing USB_GADGET_*SPEED macros

Michal Nazarewicz lkml 3 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v5 Latest4 patches 14 repliesIn review
  2. v44 patches 10 repliesSuperseded
  3. v34 patches 36 repliesSuperseded

Patches in v5 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/4usb: Provide usb_speed_string() functiondrivers/usb/Makefile drivers/usb/common.c drivers/usb/core/hub.c +14 more+109 -1956 replies
1/4usb: Provide usb_speed_string() functiondrivers/usb/Kconfig drivers/usb/Makefile drivers/usb/core/hub.c +15 more+125 -1950 replies
2/4usb: gadget: replace "is_dualspeed" with "max_speed"Documentation/feature-removal-schedule.txt drivers/usb/dwc3/gadget.c drivers/usb/gadget/amd5536udc.c +22 more+65 -346 replies
3/4usb: gadget: rename usb_gadget_driver::speed to max_speeddrivers/usb/gadget/amd5536udc.c drivers/usb/gadget/at91_udc.c drivers/usb/gadget/ci13xxx_udc.c +26 more+47 -481 reply
4/4usb: gadget: get rid of USB_GADGET_{DUAL,SUPER}SPEEDdrivers/usb/gadget/Kconfig drivers/usb/gadget/composite.c drivers/usb/gadget/file_storage.c +4 more+12 -1111 reply

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v5 yet.

Read the v5 thread

Cover letter [PATCHv5 0/4] Removing USB_GADGET_*SPEED macros

From: Michal Nazarewicz <[email protected]>

Michal Nazarewicz (4):
usb: Provide usb_speed_string() function

Just a little helper.

Also removes some code duplication.

usb: gadget: replace "is_dualspeed" with "max_speed"

This replaces "is_dualspeed" with "max_speed" so that one can encode in the field whether given UDC is super speed as well.

Without this change, we would have to add a "is_superspeed" field since after removal of USB_GADGET_SUPERSPEED Kconfig option current implementation of gadget_is_superspeed() won't work.

usb: gadget: rename usb_gadget_driver::speed to max_speed

I don't have strong feelings about this patch, but the current name of the usb_gadget_driver::speed field may lead to some confusion.

Changing it to "max_speed" should be apparent that it describes the maximum speed the gadget driver supports.

This comes in pair with usb_gadget::max_speed and usb_composite_driver::max_speed.

usb: gadget: get rid of USB_GADGET_{DUAL,SUPER}SPEED

Removes the USB_GADGET_DUALSPEED and USB_GADGET_SUPERSPEED Kconfig options. In most cases, they were checked just for optimisation (ie. if UDC was not dual speed, gadget drivers could skip some of the logic) so in the end this change was just about deleting #ifdefs.

Making those changes has exposed problems with some UDC drivers, namely:

$ g grep -A3 'max_speed.*[=!]=.*USB_SPEED_HIGH'
drivers/usb/gadget/amd5536udc.c:                        || driver->max_speed != USB_SPEED_HIGH)
drivers/usb/gadget/amd5536udc.c-                return -EINVAL;
drivers/usb/gadget/amd5536udc.c-        if (!dev)
drivers/usb/gadget/amd5536udc.c-                return -ENODEV;
--
drivers/usb/gadget/m66592-udc.c:                        || driver->max_speed != USB_SPEED_HIGH
drivers/usb/gadget/m66592-udc.c-                        || !bind
drivers/usb/gadget/m66592-udc.c-                        || !driver->setup)
drivers/usb/gadget/m66592-udc.c-                return -EINVAL;
--
drivers/usb/gadget/net2272.c:       driver->max_speed != USB_SPEED_HIGH)
drivers/usb/gadget/net2272.c-           return -EINVAL;
drivers/usb/gadget/net2272.c-   if (!dev)
drivers/usb/gadget/net2272.c-           return -ENODEV;
--
drivers/usb/gadget/net2280.c:                   || driver->max_speed != USB_SPEED_HIGH
drivers/usb/gadget/net2280.c-                   || !bind || !driver->setup)
drivers/usb/gadget/net2280.c-           return -EINVAL;
drivers/usb/gadget/net2280.c-   if (!dev)
--
drivers/usb/gadget/r8a66597-udc.c:                      || driver->max_speed != USB_SPEED_HIGH
drivers/usb/gadget/r8a66597-udc.c-                      || !bind
drivers/usb/gadget/r8a66597-udc.c-                      || !driver->setup)
drivers/usb/gadget/r8a66597-udc.c-              return -EINVAL;

All those drivers require usb_gadget_driver::max_speed to be set to USB_SPEED_HIGH. This basically means that gmidi (which sets it to USB_SPEED_FULL), g_ether and g_zero (which set it to USB_SPEED_SUPER) won't work with those UDCs:

$ g grep -e '\.max_speed.*=.*USB_SPEED_SUPER' -e '\.max_speed.*=.*USB_SPEED_FULL'
dummy_hcd.c:    dum->gadget.max_speed = USB_SPEED_SUPER;;
ether.c:        .max_speed      = USB_SPEED_SUPER,
gmidi.c:        .max_speed      = USB_SPEED_FULL,
goku_udc.c:     dev->gadget.max_speed = USB_SPEED_FULL;
omap_udc.c:     udc->gadget.max_speed = USB_SPEED_FULL;
zero.c: .max_speed      = USB_SPEED_SUPER,

So as far as I can tell, UDC drivers for those need to be fixed (but that's probably scope for another patchset). Or am I missing something?

Like before, this has been compile-tested only.

 Documentation/feature-removal-schedule.txt |    8 ++++
 drivers/usb/Makefile                       |    2 +
 drivers/usb/common.c                       |   24 +++++++++++
 drivers/usb/core/hub.c                     |   27 ++++--------
 drivers/usb/dwc3/gadget.c                  |    2 +-
 drivers/usb/gadget/Kconfig                 |   32 ---------------
 drivers/usb/gadget/amd5536udc.c            |   13 ++----
 drivers/usb/gadget/at91_udc.c              |    2 +-
 drivers/usb/gadget/atmel_usba_udc.c        |   11 ++---
 drivers/usb/gadget/ci13xxx_udc.c           |    9 +++-
 drivers/usb/gadget/composite.c             |   31 ++-------------
 drivers/usb/gadget/dbgp.c                  |    2 +-
 drivers/usb/gadget/dummy_hcd.c             |   15 +++----
 drivers/usb/gadget/epautoconf.c            |    6 +-
 drivers/usb/gadget/file_storage.c          |   21 ++-------
 drivers/usb/gadget/fsl_qe_udc.c            |    6 +-
 drivers/usb/gadget/fsl_udc_core.c          |   59 ++++++++++-----------------
 drivers/usb/gadget/fusb300_udc.c           |    4 +-
 drivers/usb/gadget/gmidi.c                 |   13 +-----
 drivers/usb/gadget/goku_udc.c              |    3 +-
 drivers/usb/gadget/imx_udc.c               |    2 +-
 drivers/usb/gadget/inode.c                 |   17 ++------
 drivers/usb/gadget/langwell_udc.c          |   52 ++++++++----------------
 drivers/usb/gadget/m66592-udc.c            |    4 +-
 drivers/usb/gadget/mv_udc_core.c           |    2 +-
 drivers/usb/gadget/net2272.c               |    8 ++--
 drivers/usb/gadget/net2280.c               |    8 +--
 drivers/usb/gadget/omap_udc.c              |    3 +-
 drivers/usb/gadget/pch_udc.c               |    4 +-
 drivers/usb/gadget/printer.c               |   55 +++++---------------------
 drivers/usb/gadget/pxa25x_udc.c            |    2 +-
 drivers/usb/gadget/pxa27x_udc.c            |    2 +-
 drivers/usb/gadget/r8a66597-udc.c          |    4 +-
 drivers/usb/gadget/s3c-hsotg.c             |   14 ++----
 drivers/usb/gadget/s3c-hsudc.c             |    6 +-
 drivers/usb/gadget/s3c2410_udc.c           |    4 +-
 drivers/usb/gadget/u_ether.c               |    7 ---
 drivers/usb/gadget/udc-core.c              |   43 +++++++++++---------
 drivers/usb/misc/usbtest.c                 |   21 +---------
 drivers/usb/musb/musb_gadget.c             |    4 +-
 drivers/usb/renesas_usbhs/mod_gadget.c     |    4 +-
 include/linux/usb/ch9.h                    |   12 ++++++
 include/linux/usb/gadget.h                 |   29 +++----------
 43 files changed, 221 insertions(+), 376 deletions(-)
 create mode 100644 drivers/usb/common.c
Signature · 1 line
1.7.3.1