[PATCH v5 00/14] Fix and improve the Rockchip endpoint driver

Damien Le Moal dlemoal at kernel.org
Wed Oct 16 18:58:35 PDT 2024


This patch series fix the PCI address mapping handling of the Rockchip
PCI endpoint driver, refactor some of its code, improves link training
and adds handling of the PERST# signal.

This series is organized as follows:
 - Patch 1 fixes the rockchip ATU programming
 - Patch 2, 3 and 4 introduce small code improvments
 - Patch 5 implements the .align_addr() operation to make the RK3399
   endpoint controller driver fully functional with the new
   pci_epc_mem_map() function
 - Patch 6 uses the new align_addr operation function to fix the ATU
   programming for MSI IRQ data mapping
 - Patch 7, 8, 9 and 10 refactor the driver code to make it more
   readable
 - Patch 11 introduces the .stop() endpoint controller operation to
   correctly disable the endpopint controller after use
 - Patch 12 improves link training
 - Patch 13 implements handling of the #PERST signal
 - Patch 14 adds a DT overlay file to enable EP mode and define the
   PERST# GPIO (reset-gpios) property.

These patches were tested using a Pine Rockpro64 board used as an
endpoint with the test endpoint function driver and a prototype nvme
endpoint function driver.

Changes from v4:
 - Added patch 6
 - Added comments to patch 12 and 13 to clarify link training handling
   and PERST# GPIO use.
 - Added patch 14

Changes from v3:
 - Addressed Mani's comments (see mailing list for details).
 - Removed old patch 11 (dt-binding changes) and instead use in patch 12
   the already defined reset_gpios property.
 - Added patch 6
 - Added review tags

Changes from v2:
 - Split the patch series
 - Corrected patch 11 to add the missing "maxItem"

Changes from v1:
 - Changed pci_epc_check_func() to pci_epc_function_is_valid() in patch
   1.
 - Removed patch "PCI: endpoint: Improve pci_epc_mem_alloc_addr()"
   (former patch 2 of v1)
 - Various typos cleanups all over. Also fixed some blank space
   indentation.
 - Added review tags

Damien Le Moal (14):
  PCI: rockchip-ep: Fix address translation unit programming
  PCI: rockchip-ep: Use a macro to define EP controller .align feature
  PCI: rockchip-ep: Improve rockchip_pcie_ep_unmap_addr()
  PCI: rockchip-ep: Improve rockchip_pcie_ep_map_addr()
  PCI: rockchip-ep: Implement the pci_epc_ops::align_addr() operation
  PCI: rockchip-ep: Fix MSI IRQ data mapping
  PCI: rockchip-ep: Rename rockchip_pcie_parse_ep_dt()
  PCI: rockchip-ep: Refactor rockchip_pcie_ep_probe() memory allocations
  PCI: rockchip-ep: Refactor rockchip_pcie_ep_probe() MSI-X hiding
  PCI: rockchip-ep: Refactor endpoint link training enable
  PCI: rockship-ep: Implement the pci_epc_ops::stop_link() operation
  PCI: rockchip-ep: Improve link training
  PCI: rockchip-ep: Handle PERST# signal in endpoint mode
  arm64: dts: rockchip: Add rockpro64 overlay for PCIe endpoint mode

 arch/arm64/boot/dts/rockchip/Makefile         |   1 +
 .../rockchip/rk3399-rockpro64-pcie-ep.dtso    |  20 +
 drivers/pci/controller/pcie-rockchip-ep.c     | 432 ++++++++++++++----
 drivers/pci/controller/pcie-rockchip-host.c   |   4 +-
 drivers/pci/controller/pcie-rockchip.c        |  21 +-
 drivers/pci/controller/pcie-rockchip.h        |  24 +-
 6 files changed, 406 insertions(+), 96 deletions(-)
 create mode 100644 arch/arm64/boot/dts/rockchip/rk3399-rockpro64-pcie-ep.dtso

-- 
2.47.0




More information about the Linux-rockchip mailing list