Hi, This is the 4th version of the patchset, it has changed its title on the way since it's more about reworking the driver's structure than supporting langwell/penwell. With this patchset, the driver also supports an older version of chipidea found in Marvell's Feroceon SoC, that is, it works with sheevaplug (provided you can find or make a USB A-to-A cable). This patchset fixes several bugs in the udc driver and addresses some of the style issues. This patchset also includes conversion to platform_device, which in case if msm is only compile-tested. While at it, I have also converted "choice" of UDC controllers into a menu, since we can probably have more than one UDC in the system, at least theoretically. It also converts ci13xxx_udc to the "new style", so that we can finally get rid of the global _udc pointer and theoretically can now have as many chipidea gadgets in the system as we please. Then, it proceeds to move the driver to drivers/usb/chipidea and turn it into a dual-role controller driver, complete with role switching (manual and ID-pin based) and both device and host roles. Tested on both sheevaplug and penwell. The former requires modifications to the platform code in arch/arm, which are not part of these series. The latter just works. I'm dropping "RFC" from the subject like Felipe suggested, and also to attract more attention to the series. New since the previous version: * more cleanups * fixed _msm platform driver to not request platform resources and actually add the platform device -- found by Heikki's review; now it should really work * added Michael's fix and also fixed another problem that he pointed out * made to work on sheevaplug * moved the driver to drivers/usb/chipidea as it's really a dual role controller * implemented separate host and gadget roles and switching between them on devices that support both; host-only and gadget-only versions of chipidea are also supported Alexander Shishkin (23): usb: gadget: ci13xxx: drop needless parens usb: gadget: ci13xxx: fix ep list removal in gadget unregistering code usb: gadget: ci13xxx: initialize ep0{out,in} dynamically usb: gadget: ci13xxx: rename register layouts usb: gadget: ci13xxx_pci: add langwell/penwell pci ids usb: gadget: ci13xxx: move global variables inside struct ci13xxx usb: gadget: ci13xxx: redo register access usb: gadget: conversion of controllers choice to menu usb: gadget: ci13xxx: convert to platform device usb: gadget: ci13xxx: replace home-brewed logging with dev_{err,warn,info} usb: gadget: ci13xxx: convert to new style usb: gadget: ci13xxx: make tracing slightly more useful usb: gadget: ci13xxx: don't use "advance" feature when setting address usb: gadget: ci13xxx: print basic device info when probing usb: move ci13xxx and related code to drivers/usb/chipidea usb: chipidea: split the driver code into units usb: chipidea: add support for roles usb: chipidea: remove unused field regs usb: chipidea: brush up structure definitions usb: chipidea: drop redundant NULL check usb: chipidea: drop unused msm register definitions usb: chipidea: add host role usb: chipidea: add power_budget limit for ehci to platform data Michael Grzeschik (1): usb: chipidea: isr_reset_handler fix missing locking drivers/usb/Kconfig | 2 + drivers/usb/Makefile | 1 + drivers/usb/chipidea/Kconfig | 32 + drivers/usb/chipidea/Makefile | 14 + drivers/usb/chipidea/ci.h | 352 +++ drivers/usb/{gadget => chipidea}/ci13xxx_msm.c | 60 +- drivers/usb/{gadget => chipidea}/ci13xxx_pci.c | 118 +- drivers/usb/chipidea/core.c | 446 ++++ drivers/usb/chipidea/debug.c | 825 +++++++ drivers/usb/chipidea/debug.h | 76 + drivers/usb/chipidea/host.c | 173 ++ drivers/usb/chipidea/host.h | 17 + drivers/usb/chipidea/udc.c | 1902 +++++++++++++++ drivers/usb/chipidea/udc.h | 109 + drivers/usb/gadget/Kconfig | 39 +- drivers/usb/gadget/Makefile | 2 - drivers/usb/gadget/ci13xxx_udc.c | 2999 ------------------------ drivers/usb/gadget/ci13xxx_udc.h | 227 -- drivers/usb/host/ehci-hcd.c | 8 + include/linux/usb/chipidea.h | 28 + 20 files changed, 4074 insertions(+), 3356 deletions(-) create mode 100644 drivers/usb/chipidea/Kconfig create mode 100644 drivers/usb/chipidea/Makefile create mode 100644 drivers/usb/chipidea/ci.h rename drivers/usb/{gadget => chipidea}/ci13xxx_msm.c (69%) rename drivers/usb/{gadget => chipidea}/ci13xxx_pci.c (60%) create mode 100644 drivers/usb/chipidea/core.c create mode 100644 drivers/usb/chipidea/debug.c create mode 100644 drivers/usb/chipidea/debug.h create mode 100644 drivers/usb/chipidea/host.c create mode 100644 drivers/usb/chipidea/host.h create mode 100644 drivers/usb/chipidea/udc.c create mode 100644 drivers/usb/chipidea/udc.h delete mode 100644 drivers/usb/gadget/ci13xxx_udc.c delete mode 100644 drivers/usb/gadget/ci13xxx_udc.h create mode 100644 include/linux/usb/chipidea.h -- 1.7.10 -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html