From patchwork Thu Oct 17 01:58:35 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Damien Le Moal X-Patchwork-Id: 13839268 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 42A01D2F7DA for ; Thu, 17 Oct 2024 01:59:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=yZgHvfXiYDmUK9fECWdzBxgXEJvrvzT/EiRFUDO2ZCQ=; b=UB9hhI6bLRniA1 mMyjs6R2BeDsdG5fDoU8vaxmS3QL4xzbulx1zXcLgxch5PCNp4WB214mMChySJ3pbHigSCabR4G7P k+W/4saS0L+OBTK/VIdLoHrdfn1EfyJaXbpuUxzzWTQ8QshBwUgaNxKzqGWhJ9mnrPbsqdOGEOtDP Evt7Lqpass40qSNe/J03kDO3pmOJLLWNBqhs8BnTGIfWjfyiQoSYNelh1MwwuM2TVa/BklhBeuhpQ l4mivoxUB3pIT6ZT7+8BMz86CojegVwgbuQ0aPzHlFA2sgh5wV1GoZyD6VPs9DSgVuxKEU1hxfyRY RRRpU2M/5islzTi2MkIA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1t1Fmx-0000000DUfz-2sEY; Thu, 17 Oct 2024 01:58:55 +0000 Received: from dfw.source.kernel.org ([2604:1380:4641:c500::1]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1t1Fmv-0000000DUfM-0u3A for linux-rockchip@lists.infradead.org; Thu, 17 Oct 2024 01:58:54 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 0B91E5C1D94; Thu, 17 Oct 2024 01:58:48 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6C879C4CEC5; Thu, 17 Oct 2024 01:58:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1729130332; bh=lARG9evqlHd4IXGRQKdVmMfZMk2GD5Jo3kWsnqF+zLg=; h=From:To:Cc:Subject:Date:From; b=GfQeCbbxHixLrE/Vrv0Y8wpe8YmEf+CByNAuWQKPpLHKBpjBMbtHUi0XuTHYVXX6b 6GLBtLBZnzD7KAIBnywUvSg0GYQc9no1BKVX1xZ/SRNJ84OmXRpXhTvXGRHpJDsejF PU4Rv5/ep3mvq/kif8YzbnPz0wdv80slFUs85BTxoe8tyhVixazH/dSMtXgnKsOTfD RBWAtachfLbh467OUQNsr03JPFdG03uDhDmTRRYEqV9NvgEET7cjwr7cqTVhvnFMe0 dT/h6sD3FarCsL/VosNuhPLYC/crcSsqKwqlf1WSIL9HdCwABmxX5O1vGFTFbxi4So zqCkMqloJgzqA== From: Damien Le Moal To: Manivannan Sadhasivam , Lorenzo Pieralisi , Kishon Vijay Abraham I , Shawn Lin , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Bjorn Helgaas , linux-pci@vger.kernel.org, Rob Herring , Krzysztof Kozlowski , Conor Dooley , Heiko Stuebner , devicetree@vger.kernel.org Cc: linux-rockchip@lists.infradead.org, Rick Wertenbroek , Niklas Cassel Subject: [PATCH v5 00/14] Fix and improve the Rockchip endpoint driver Date: Thu, 17 Oct 2024 10:58:35 +0900 Message-ID: <20241017015849.190271-1-dlemoal@kernel.org> X-Mailer: git-send-email 2.47.0 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241016_185853_362666_D870C4DF X-CRM114-Status: GOOD ( 14.59 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org 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