RE: [PATCH v3 00/10] Introduced new Cadence USBSSP DRD Driver.

From: Pawel Laszczak
Date: Tue Nov 24 2020 - 04:22:20 EST


Peter,

>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.
>

I'll try to post it tomorrow.

>>
>> 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
Pawel