mbox series

[RFC,v2,00/15] Introduced new Cadence USBSS DRD Driver

Message ID 1542535751-16079-1-git-send-email-pawell@cadence.com (mailing list archive)
Headers show
Series Introduced new Cadence USBSS DRD Driver | expand

Message

Pawel Laszczak Nov. 18, 2018, 10:08 a.m. UTC
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