This patch set introduce new Cadence USBSS DRD driver to linux kernel. The Cadence USBSS DRD Driver s a highly configurable IP Core which can be instantiated as Dual-Role Device (DRD), Peripheral Only and Host Only (XHCI) configurations. The current driver has been validated with FPGA burned. We have support for PCIe bus, which is used on FPGA prototyping. The host site of USBSS controller is compliance with XHCI specification, so it works with standard XHCI linux driver. Changes since v1: - Reorganize patch 3, 5, 6 as suggested by Roger Quadros. - Remove inline in debug.c file according with Joe Perches suggestion. - Fix condition with no effect in drd.c file. - Remove compiler warning generated by sh4-linux-gnu-gcc. - Fix bug with xhci_suspend/resume undefined, that appeared for PM disabled. - Add CONFIG_OF support in core.c file and dt-binding documentation. - Add template function related to CONFIG_PM configuration option. - Fix bug: CONFIG_USB_CDNS3_DEVICE instead of CONFIG_USB_CDNS3_ - Correct depend on condition in Kconfig as suggested by Roger Quadros. - Remove Config options from cdns3_pci_wrap.c as suggested by Roger Quadros. - Replace dev_info with dev_dbg in cdns3_pci_wrap.c file as suggested by Roger. - Change cdns3_role to cnds3_get_current_role_driver as suggested by Roger. - Addressed other review comments from Roger. - Fix issues with ENABLE_U1/U2 Set/Clear_Fature request. - Fix issues with Cycle State bit. - Some other minor code changes related to readability. TODO: - Test isochronous transfer with some class or tester. - Test changing role according to ID pin. - Resolve issue related with shared on-chip buffer for OUT direction. - Add tracepoint. - Implement suspend/resume functionality. --- Pawel Laszczak (15): usb:cdns3: add pci to platform driver wrapper. usb:cdns3: Device side header file. dt-bindings: add binding for USBSS-DRD controller. usb:cdns3: Driver initialization code. usb:cdns3: Added DRD support usb:cdns3: Adds Host support usb:cdns3: Adds Device mode support - initialization. usb:cdns3: Implements device operations part of the API usb:cdns3: EpX operations part of the API usb:cdns3: Ep0 operations part of the API usb:cdns3: Implements ISR functionality. usb:cdns3: Adds enumeration related function. usb:cdns3: Adds transfer related function. usb:cdns3: Adds debugging function. usb:cdns3: Feature for changing role .../devicetree/bindings/usb/cdns3-usb.txt | 17 + drivers/usb/Kconfig | 2 + drivers/usb/Makefile | 2 + drivers/usb/cdns3/Kconfig | 44 + drivers/usb/cdns3/Makefile | 7 + drivers/usb/cdns3/cdns3-pci-wrap.c | 157 ++ drivers/usb/cdns3/core.c | 434 +++++ drivers/usb/cdns3/core.h | 100 + drivers/usb/cdns3/debug.c | 128 ++ drivers/usb/cdns3/debugfs.c | 93 + drivers/usb/cdns3/drd.c | 229 +++ drivers/usb/cdns3/drd.h | 125 ++ drivers/usb/cdns3/ep0.c | 859 +++++++++ drivers/usb/cdns3/gadget-export.h | 27 + drivers/usb/cdns3/gadget.c | 1665 +++++++++++++++++ drivers/usb/cdns3/gadget.h | 1104 +++++++++++ drivers/usb/cdns3/host-export.h | 30 + drivers/usb/cdns3/host.c | 256 +++ 18 files changed, 5279 insertions(+) create mode 100644 Documentation/devicetree/bindings/usb/cdns3-usb.txt create mode 100644 drivers/usb/cdns3/Kconfig create mode 100644 drivers/usb/cdns3/Makefile create mode 100644 drivers/usb/cdns3/cdns3-pci-wrap.c create mode 100644 drivers/usb/cdns3/core.c create mode 100644 drivers/usb/cdns3/core.h create mode 100644 drivers/usb/cdns3/debug.c create mode 100644 drivers/usb/cdns3/debugfs.c create mode 100644 drivers/usb/cdns3/drd.c create mode 100644 drivers/usb/cdns3/drd.h create mode 100644 drivers/usb/cdns3/ep0.c create mode 100644 drivers/usb/cdns3/gadget-export.h create mode 100644 drivers/usb/cdns3/gadget.c create mode 100644 drivers/usb/cdns3/gadget.h create mode 100644 drivers/usb/cdns3/host-export.h create mode 100644 drivers/usb/cdns3/host.c -- 2.17.1