On 20-11-19 15:12:57, Pawel Laszczak wrote: > This patch introduce new Cadence USBSS DRD driver to linux kernel. > > The Cadence USBSS DRD Controller is 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 side of USBSS-DRD controller is compliance with XHCI > specification, so it works with standard XHCI Linux driver. > > The device side of USBSS DRD controller is compliant with XHCI. > The architecture for device side is almost the same as for host side, > and most of the XHCI specification can be used to understand how > this controller operates. > > This controller and driver support Full Speed, Hight Speed, Supper Speed > and Supper Speed Plus USB protocol. > > The prefix cdnsp used in driver has chosen by analogy to cdn3 driver. > The last letter of this acronym means PLUS. The formal name of controller > is USBSSP but it's to generic so I've decided to use CDNSP. > > The patch 1: adds support for DRD CDNSP. > The patch 2: separates common code that can be reusable by cdnsp driver. > The patch 3: moves reusable code to separate module. > The patch 4: changes prefixes in reusable code from cdns3 to common cdns. > The patch 5: adopts gadget_dev pointer in cdns structure to make possible > use it in both drivers. > The patches 6-8: add the main part of driver and has been intentionally > split into 3 part. In my opinion such division should not > affect understanding and reviewing the driver, and cause that > main patch (7/8) is little smaller. Patch 6 introduces main > header file for driver, 7 is the main part that implements all > functionality of driver and 8 introduces tracepoints. > The patch 9: Adds cdns3 prefixes to files related with USBSS driver. > the patch 10: Adds USBSSP DRD IP driver entry to MAINTAINERS file. > > Changlog from v2: > - removed not used pdev parameter from cdnsp_read/wite_64 functions > - fixed incorrect value assigned to CDNSP_ENDPOINTS_NUM (32 -> 31) > - replaced some constant value with CDNSP_ENDPOINTS_NUM macro > - replaced 'true' with '1' in bits description in cdnsp-gadget.h file > - fixed some typos > - some other less important changes suggested by Peter Chen Hi Pawel, I have updated my -next tree as the latest usb-next tree which v5.10-rc4 is included, would you please rebase my tree and send again, I could apply your patches and test, if test could pass, I will apply it to my -next tree. You don't need to rebase again since it is a huge patch set, will take some efforts for rebase. Peter > > Changlog from v1: > - updated common code to latest cdns3 driver > - moved cdnsp driver files to cdns3 as sugested by Peter Chan > - removed duplicate code from cdnsp_ep0_set_config function > - added cdns3 prefixes to file related with USBSS driver > - updated MAINTAINERS file > - fixed issue with U1 > - fixed issue with L1 > - some less improtant changes sugested by Chunfeng Yun > --- > > Pawel Laszczak (10): > usb: cdns3: Add support for DRD CDNSP > usb: cdns3: Split core.c into cdns3-plat and core.c file > usb: cdns3: Moves reusable code to separate module > usb: cdns3: Refactoring names in reusable code > usb: cdns3: Changed type of gadget_dev in cdns structure > usb: cdnsp: Device side header file for CDNSP driver > usb: cdnsp: cdns3 Add main part of Cadence USBSSP DRD Driver > usb: cdnsp: Add tracepoints for CDNSP driver > usb: cdns3: Change file names for cdns3 driver. > MAINTAINERS: add Cadence USBSSP DRD IP driver entry > > MAINTAINERS | 8 + > drivers/usb/Makefile | 2 + > drivers/usb/cdns3/Kconfig | 61 +- > drivers/usb/cdns3/Makefile | 30 +- > drivers/usb/cdns3/{debug.h => cdns3-debug.h} | 0 > drivers/usb/cdns3/{ep0.c => cdns3-ep0.c} | 4 +- > .../usb/cdns3/{gadget.c => cdns3-gadget.c} | 28 +- > .../usb/cdns3/{gadget.h => cdns3-gadget.h} | 0 > drivers/usb/cdns3/cdns3-imx.c | 2 +- > drivers/usb/cdns3/cdns3-plat.c | 315 +++ > drivers/usb/cdns3/{trace.c => cdns3-trace.c} | 2 +- > drivers/usb/cdns3/{trace.h => cdns3-trace.h} | 6 +- > drivers/usb/cdns3/cdnsp-debug.h | 583 ++++ > drivers/usb/cdns3/cdnsp-ep0.c | 495 ++++ > drivers/usb/cdns3/cdnsp-gadget.c | 2017 ++++++++++++++ > drivers/usb/cdns3/cdnsp-gadget.h | 1600 +++++++++++ > drivers/usb/cdns3/cdnsp-mem.c | 1325 +++++++++ > drivers/usb/cdns3/cdnsp-pci.c | 255 ++ > drivers/usb/cdns3/cdnsp-ring.c | 2439 +++++++++++++++++ > drivers/usb/cdns3/cdnsp-trace.c | 12 + > drivers/usb/cdns3/cdnsp-trace.h | 840 ++++++ > drivers/usb/cdns3/core.c | 454 +-- > drivers/usb/cdns3/core.h | 54 +- > drivers/usb/cdns3/drd.c | 222 +- > drivers/usb/cdns3/drd.h | 94 +- > drivers/usb/cdns3/gadget-export.h | 22 +- > drivers/usb/cdns3/host-export.h | 13 +- > drivers/usb/cdns3/host.c | 22 +- > 28 files changed, 10398 insertions(+), 507 deletions(-) > rename drivers/usb/cdns3/{debug.h => cdns3-debug.h} (100%) > rename drivers/usb/cdns3/{ep0.c => cdns3-ep0.c} (99%) > rename drivers/usb/cdns3/{gadget.c => cdns3-gadget.c} (99%) > rename drivers/usb/cdns3/{gadget.h => cdns3-gadget.h} (100%) > create mode 100644 drivers/usb/cdns3/cdns3-plat.c > rename drivers/usb/cdns3/{trace.c => cdns3-trace.c} (89%) > rename drivers/usb/cdns3/{trace.h => cdns3-trace.h} (99%) > create mode 100644 drivers/usb/cdns3/cdnsp-debug.h > create mode 100644 drivers/usb/cdns3/cdnsp-ep0.c > create mode 100644 drivers/usb/cdns3/cdnsp-gadget.c > create mode 100644 drivers/usb/cdns3/cdnsp-gadget.h > create mode 100644 drivers/usb/cdns3/cdnsp-mem.c > create mode 100644 drivers/usb/cdns3/cdnsp-pci.c > create mode 100644 drivers/usb/cdns3/cdnsp-ring.c > create mode 100644 drivers/usb/cdns3/cdnsp-trace.c > create mode 100644 drivers/usb/cdns3/cdnsp-trace.h > > -- > 2.17.1 > -- Thanks, Peter Chen