[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