From patchwork Thu Feb 23 18:05:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Elad Nachman X-Patchwork-Id: 61041 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp452102wrd; Thu, 23 Feb 2023 10:07:37 -0800 (PST) X-Google-Smtp-Source: AK7set+RZeTja69z/RojYzQKjTs4rstVLyy2kWLns3iQjzOslhXN4eOgQicb7HVCmv4od1rAv5FA X-Received: by 2002:a17:906:51d4:b0:878:4bda:2011 with SMTP id v20-20020a17090651d400b008784bda2011mr15486645ejk.4.1677175657249; Thu, 23 Feb 2023 10:07:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1677175657; cv=none; d=google.com; s=arc-20160816; b=dpYVrZTGu46IH9dIZAOGw0UqgYuTXlf8bXZDE1Guo7xs5RpFBhAVpI95UzxojM8t62 9MIIr05fy8PVpiYH0TwUkQCjjJkJJS3zuZ6R3ctlmHNefiHniKwt7SW0lN8KxpUR3Ox1 qXj0oDzBVzTsuAdSnuUniyOYl93HVzZFaDLvfDwCAMPy1CR72kFnQIk46DEFIO7vUjaV ykLVkErq8E2N3caH8i4zockFBEoEqv/EXTWuySKdpjrzuxx9oXiGS+pQgl6m1ScZR8CI 4RW6YSN9lkYK/YP+kHYeuvih1S0CpZOpNM0RPAu5exdSmJyQbQiGeitrBnj9DOMxOJCV x9tg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=QJOWFJmvLNjPQ3cK/VFiHx9zeHs9QVtLszvjB+5MdRM=; b=D6jnEFPoLzfkj53Ay/8F9cEN/I6Y/SSIoN3P4Rr7MaUqYiadd/XPuvSzE+T4yCFuyy W2Lx5ZgwxkWaCdinKGxvgMX5wTg6IFjT0NIReYXG9/F+5b41qUUDRmPBZzNwow3UTSsx PR5QWVdPeOFGPd9EijCbjsfE+8I19Lx0xBVRs79miVBF5ltIP+0RJEf0DOqgumTebgnM qawM8DTK23/NYzRCxeaEh5EekFC06/a61FPmTTVbAZm3L27hI3VW4godUJHNRSc0peYJ Zx0kmpjO2G39c6ieX/nAyGDbdVBP2gcOARNzEbAsH2S9b8DO0i6LnqcPpYDNnylMlU2f 0Ang== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0220 header.b=Eag5Vm1F; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=REJECT dis=NONE) header.from=marvell.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id 26-20020a170906029a00b008d17b125784si17571332ejf.30.2023.02.23.10.07.13; Thu, 23 Feb 2023 10:07:37 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0220 header.b=Eag5Vm1F; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=REJECT dis=NONE) header.from=marvell.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230474AbjBWSGV (ORCPT + 99 others); Thu, 23 Feb 2023 13:06:21 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47580 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230466AbjBWSGN (ORCPT ); Thu, 23 Feb 2023 13:06:13 -0500 Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EACAC580FF; Thu, 23 Feb 2023 10:06:11 -0800 (PST) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 31NHUZqV027017; Thu, 23 Feb 2023 10:05:54 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=pfpt0220; bh=QJOWFJmvLNjPQ3cK/VFiHx9zeHs9QVtLszvjB+5MdRM=; b=Eag5Vm1FUQVc9LL2QOsZL5j8oAiKWo95jXAkZZiJ9szRRSG/khqTNHb7StHZ8pVXdLAE rF/QlSCRVoXxuwMzGs5F8nHmcfj7rqnup7wb+manf6q4tI01hryHklr5SIKB5gYpJzdE JM/TQa/1FP8lU4elUSrfaj8sJW3xLxeyuNjFM7aZwt+iHDtqhyJNHUH0hNXU0rp44vNV X0h9lBXn4WUcwq2V4l6tY5nnUBZbOOrPCo8/BTfLIw1chc/8q+Wntaw69lssuh1HhmkB VY0iijC/DkEuibu9+ksfBjp/L2Mh/M2Zh5FVJMtyqHnw1/RSvc3Q4e3v9nCBwIKBaLxS pA== Received: from dc5-exch02.marvell.com ([199.233.59.182]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 3nwy5h2cv6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Thu, 23 Feb 2023 10:05:54 -0800 Received: from DC5-EXCH01.marvell.com (10.69.176.38) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Thu, 23 Feb 2023 10:05:52 -0800 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server id 15.0.1497.42 via Frontend Transport; Thu, 23 Feb 2023 10:05:52 -0800 Received: from jupiter073.il.marvell.com (unknown [10.5.116.85]) by maili.marvell.com (Postfix) with ESMTP id 369FB3F708C; Thu, 23 Feb 2023 10:05:50 -0800 (PST) From: Elad Nachman To: , , , , , , , , , CC: Vadym Kochan Subject: [PATCH v3 1/7] dt-bindings: PCI: armada8k: Add compatible string for AC5 SoC Date: Thu, 23 Feb 2023 20:05:25 +0200 Message-ID: <20230223180531.15148-2-enachman@marvell.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20230223180531.15148-1-enachman@marvell.com> References: <20230223180531.15148-1-enachman@marvell.com> MIME-Version: 1.0 X-Proofpoint-GUID: r_4iGGjlhGyVKxlNajb7L28XPQ-x3psJ X-Proofpoint-ORIG-GUID: r_4iGGjlhGyVKxlNajb7L28XPQ-x3psJ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.170.22 definitions=2023-02-23_11,2023-02-23_01,2023-02-09_01 X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_LOW,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1758646142037960930?= X-GMAIL-MSGID: =?utf-8?q?1758646142037960930?= From: Vadym Kochan AC5 SoC has armada8k PCIe IP so add compatible string for it. Signed-off-by: Vadym Kochan Acked-by: Krzysztof Kozlowski --- Documentation/devicetree/bindings/pci/pci-armada8k.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/pci/pci-armada8k.txt b/Documentation/devicetree/bindings/pci/pci-armada8k.txt index ff25a134befa..b272fa4f08b5 100644 --- a/Documentation/devicetree/bindings/pci/pci-armada8k.txt +++ b/Documentation/devicetree/bindings/pci/pci-armada8k.txt @@ -4,7 +4,9 @@ This PCIe host controller is based on the Synopsys DesignWare PCIe IP and thus inherits all the common properties defined in snps,dw-pcie.yaml. Required properties: -- compatible: "marvell,armada8k-pcie" +- compatible: Should be set to one of the following: + - "marvell,armada8k-pcie" : For A7K/8K family of SoCs + - "marvell,ac5-pcie" : For AC5 family of SoCs - reg: must contain two register regions - the control register region - the config space region From patchwork Thu Feb 23 18:05:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Elad Nachman X-Patchwork-Id: 61040 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp451763wrd; Thu, 23 Feb 2023 10:07:04 -0800 (PST) X-Google-Smtp-Source: AK7set+6WZ4qBX0mmHNO3Z+QaALtt/FNqrm/PuqStwNDBrDlaOKCsFMJkTJJ4Yjt1Sdcj07YyGJQ X-Received: by 2002:a05:6a20:7f9c:b0:cc:4118:65c4 with SMTP id d28-20020a056a207f9c00b000cc411865c4mr2040687pzj.5.1677175623940; Thu, 23 Feb 2023 10:07:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1677175623; cv=none; d=google.com; s=arc-20160816; b=QG8su9Te2cNFBA59oXU+vcIT+7YneOyqc1pbaRlgmC0qs80zN7bZawmbkpgFKFxbni 5LkQL3jYZUO3w5rueCqdvndQrngeZsd9FFhamgvmk3P8+KmGfgrPNOqmCUNeYd/61OKf 9oZ/7fLiUM0gOIUHzYmjEknf6rZHTtSoJGBnqpijmxtMMtWKrzVxf2SAGAmXysJfUHAp iu1ZVcEoc0inuTRDMEmtYXt/xpR0HysA9Q8nv+zQJZ0wn6yopMbRYh6DYYFwH8XQL4tW LXdxuCD7fCNTm6b+YvWlvuEZn7vlyKSa82FT+USaXQZzIqo1MY5tVELJwScUN5Hhuq/X LMCA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=qDCZ7zFyU4bHlmdw+iEtezqf0gOsQQPNRg0V800jwlo=; b=xO3KesyV/AD95hDgzsKI7aXpDth7BLZZFMxIybFCCs/BS4tf2Hi0joA2BN1XuDEMMv dPqRq8PVxZTdUjxn9hA/SlKQos+dT52cHoCg6XuKZsrzA1fuzzwaLqf2b+4LdCQGxeCl tbjeWXCaJ32h5mdrNeh70m9Z0qrdNXIvHwAoFIxGc7kDFjoTFlQDOQcC/snPJSR7jzUn q9TA3AyrHixptHPmH3UYEZzBwx98xGN0ZeAjDbZs1raE7Ulk3NSVzMjEaU9FwbzcgYYw I3Pe7YQ+oonzgOxiCvnSYsf5LXga03r4g8yACXPa44bz3f1eyL6r0kband1w8jqK5lpE TU4g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0220 header.b=fIrnrXzQ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=REJECT dis=NONE) header.from=marvell.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id w9-20020a628209000000b005a91590751csi8171224pfd.35.2023.02.23.10.06.49; Thu, 23 Feb 2023 10:07:03 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0220 header.b=fIrnrXzQ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=REJECT dis=NONE) header.from=marvell.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230426AbjBWSGK (ORCPT + 99 others); Thu, 23 Feb 2023 13:06:10 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47318 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229472AbjBWSGI (ORCPT ); Thu, 23 Feb 2023 13:06:08 -0500 Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2C8BD166EE; Thu, 23 Feb 2023 10:06:07 -0800 (PST) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 31NHSAqW023951; Thu, 23 Feb 2023 10:05:58 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=pfpt0220; bh=qDCZ7zFyU4bHlmdw+iEtezqf0gOsQQPNRg0V800jwlo=; b=fIrnrXzQr/poe1TrgzvA+XINTOsyqt3jnVGIRWdUrVaM8JaHHMtAMrRVNaDtF3huf4gK 8yjhJ0RPFN68L7Tafw4LtkAtDZxJzbCxfUe7y4bWbWaKdbixWQg9qfCqIV3+Bbdo3o7d znD4hASnxOQzxpqzFdeSrCOih4YDVvj5ObgrSQ37ZkbHLjVVoVhqbpZD/6aDBxcqkAg4 dIl3gzrtA/ok8pK4uXC1ALSFkzEZldS29WldBJkzqpKlNbpFvDX7IQ3X7oBIhFBaPorL riqOMz/6l2mjljkpYpnR79xX8RqSoFj+t/caRYtbefQkEzUMc4PvlvGeLioK+RTHNGdB 0Q== Received: from dc5-exch01.marvell.com ([199.233.59.181]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 3nwy5h2cvk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Thu, 23 Feb 2023 10:05:57 -0800 Received: from DC5-EXCH01.marvell.com (10.69.176.38) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Thu, 23 Feb 2023 10:05:55 -0800 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server id 15.0.1497.42 via Frontend Transport; Thu, 23 Feb 2023 10:05:55 -0800 Received: from jupiter073.il.marvell.com (unknown [10.5.116.85]) by maili.marvell.com (Postfix) with ESMTP id 4A25B3F7096; Thu, 23 Feb 2023 10:05:53 -0800 (PST) From: Elad Nachman To: , , , , , , , , , CC: Raz Adashi Subject: [PATCH v3 2/7] PCI: armada8k: Add AC5 SoC support Date: Thu, 23 Feb 2023 20:05:26 +0200 Message-ID: <20230223180531.15148-3-enachman@marvell.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20230223180531.15148-1-enachman@marvell.com> References: <20230223180531.15148-1-enachman@marvell.com> MIME-Version: 1.0 X-Proofpoint-GUID: V5_5YJzk6wDT7CHcc6ge76BTsjN5umI5 X-Proofpoint-ORIG-GUID: V5_5YJzk6wDT7CHcc6ge76BTsjN5umI5 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.170.22 definitions=2023-02-23_11,2023-02-23_01,2023-02-09_01 X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_LOW,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1758646107029550737?= X-GMAIL-MSGID: =?utf-8?q?1758646107029550737?= From: Raz Adashi pcie-armada8k driver is utilized to serve also AC5. Driver assumes interrupt mask registers are located in the same address inboth CPUs. This assumption is incorrect - fix it for AC5. Co-developed-by: Yuval Shaia Signed-off-by: Yuval Shaia Signed-off-by: Raz Adashi Signed-off-by: Vadym Kochan --- v2: 1) fix W1 warnings which caused by unused leftover code 2) Use one xlate function to translate ac5 dbi access. Also add mode description in comments about this translation. 3) Use correct name of Raz 4) Use matching data to pass the SoC specific params (type & ops) drivers/pci/controller/dwc/pcie-armada8k.c | 145 +++++++++++++++++---- 1 file changed, 120 insertions(+), 25 deletions(-) diff --git a/drivers/pci/controller/dwc/pcie-armada8k.c b/drivers/pci/controller/dwc/pcie-armada8k.c index 5c999e15c357..b9fb1375dc58 100644 --- a/drivers/pci/controller/dwc/pcie-armada8k.c +++ b/drivers/pci/controller/dwc/pcie-armada8k.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -26,15 +27,26 @@ #define ARMADA8K_PCIE_MAX_LANES PCIE_LNK_X4 +enum armada8k_pcie_type { + ARMADA8K_PCIE_TYPE_A8K, + ARMADA8K_PCIE_TYPE_AC5 +}; + struct armada8k_pcie { struct dw_pcie *pci; struct clk *clk; struct clk *clk_reg; struct phy *phy[ARMADA8K_PCIE_MAX_LANES]; unsigned int phy_count; + enum armada8k_pcie_type pcie_type; }; -#define PCIE_VENDOR_REGS_OFFSET 0x8000 +struct armada8k_pcie_of_data { + enum armada8k_pcie_type pcie_type; + const struct dw_pcie_ops *pcie_ops; +}; + +#define PCIE_VENDOR_REGS_OFFSET 0x8000 /* in ac5 is 0x10000 */ #define PCIE_GLOBAL_CONTROL_REG (PCIE_VENDOR_REGS_OFFSET + 0x0) #define PCIE_APP_LTSSM_EN BIT(2) @@ -48,10 +60,17 @@ struct armada8k_pcie { #define PCIE_GLOBAL_INT_CAUSE1_REG (PCIE_VENDOR_REGS_OFFSET + 0x1C) #define PCIE_GLOBAL_INT_MASK1_REG (PCIE_VENDOR_REGS_OFFSET + 0x20) +#define PCIE_GLOBAL_INT_MASK2_REG (PCIE_VENDOR_REGS_OFFSET + 0x28) #define PCIE_INT_A_ASSERT_MASK BIT(9) #define PCIE_INT_B_ASSERT_MASK BIT(10) #define PCIE_INT_C_ASSERT_MASK BIT(11) #define PCIE_INT_D_ASSERT_MASK BIT(12) +#define PCIE_INT_A_ASSERT_MASK_AC5 BIT(12) +#define PCIE_INT_B_ASSERT_MASK_AC5 BIT(13) +#define PCIE_INT_C_ASSERT_MASK_AC5 BIT(14) +#define PCIE_INT_D_ASSERT_MASK_AC5 BIT(15) + +#define PCIE_ATU_ACCESS_MASK_AC5 GENMASK(21, 20) #define PCIE_ARCACHE_TRC_REG (PCIE_VENDOR_REGS_OFFSET + 0x50) #define PCIE_AWCACHE_TRC_REG (PCIE_VENDOR_REGS_OFFSET + 0x54) @@ -169,6 +188,7 @@ static int armada8k_pcie_host_init(struct dw_pcie_rp *pp) { u32 reg; struct dw_pcie *pci = to_dw_pcie_from_pp(pp); + struct armada8k_pcie *pcie = to_armada8k_pcie(pci); if (!dw_pcie_link_up(pci)) { /* Disable LTSSM state machine to enable configuration */ @@ -177,32 +197,41 @@ static int armada8k_pcie_host_init(struct dw_pcie_rp *pp) dw_pcie_writel_dbi(pci, PCIE_GLOBAL_CONTROL_REG, reg); } - /* Set the device to root complex mode */ - reg = dw_pcie_readl_dbi(pci, PCIE_GLOBAL_CONTROL_REG); - reg &= ~(PCIE_DEVICE_TYPE_MASK << PCIE_DEVICE_TYPE_SHIFT); - reg |= PCIE_DEVICE_TYPE_RC << PCIE_DEVICE_TYPE_SHIFT; - dw_pcie_writel_dbi(pci, PCIE_GLOBAL_CONTROL_REG, reg); + if (pcie->pcie_type == ARMADA8K_PCIE_TYPE_A8K) { + /* Set the device to root complex mode */ + reg = dw_pcie_readl_dbi(pci, PCIE_GLOBAL_CONTROL_REG); + reg &= ~(PCIE_DEVICE_TYPE_MASK << PCIE_DEVICE_TYPE_SHIFT); + reg |= PCIE_DEVICE_TYPE_RC << PCIE_DEVICE_TYPE_SHIFT; + dw_pcie_writel_dbi(pci, PCIE_GLOBAL_CONTROL_REG, reg); - /* Set the PCIe master AxCache attributes */ - dw_pcie_writel_dbi(pci, PCIE_ARCACHE_TRC_REG, ARCACHE_DEFAULT_VALUE); - dw_pcie_writel_dbi(pci, PCIE_AWCACHE_TRC_REG, AWCACHE_DEFAULT_VALUE); + /* Set the PCIe master AxCache attributes */ + dw_pcie_writel_dbi(pci, PCIE_ARCACHE_TRC_REG, ARCACHE_DEFAULT_VALUE); + dw_pcie_writel_dbi(pci, PCIE_AWCACHE_TRC_REG, AWCACHE_DEFAULT_VALUE); - /* Set the PCIe master AxDomain attributes */ - reg = dw_pcie_readl_dbi(pci, PCIE_ARUSER_REG); - reg &= ~(AX_USER_DOMAIN_MASK << AX_USER_DOMAIN_SHIFT); - reg |= DOMAIN_OUTER_SHAREABLE << AX_USER_DOMAIN_SHIFT; - dw_pcie_writel_dbi(pci, PCIE_ARUSER_REG, reg); + /* Set the PCIe master AxDomain attributes */ + reg = dw_pcie_readl_dbi(pci, PCIE_ARUSER_REG); + reg &= ~(AX_USER_DOMAIN_MASK << AX_USER_DOMAIN_SHIFT); + reg |= DOMAIN_OUTER_SHAREABLE << AX_USER_DOMAIN_SHIFT; + dw_pcie_writel_dbi(pci, PCIE_ARUSER_REG, reg); - reg = dw_pcie_readl_dbi(pci, PCIE_AWUSER_REG); - reg &= ~(AX_USER_DOMAIN_MASK << AX_USER_DOMAIN_SHIFT); - reg |= DOMAIN_OUTER_SHAREABLE << AX_USER_DOMAIN_SHIFT; - dw_pcie_writel_dbi(pci, PCIE_AWUSER_REG, reg); + reg = dw_pcie_readl_dbi(pci, PCIE_AWUSER_REG); + reg &= ~(AX_USER_DOMAIN_MASK << AX_USER_DOMAIN_SHIFT); + reg |= DOMAIN_OUTER_SHAREABLE << AX_USER_DOMAIN_SHIFT; + dw_pcie_writel_dbi(pci, PCIE_AWUSER_REG, reg); + } /* Enable INT A-D interrupts */ - reg = dw_pcie_readl_dbi(pci, PCIE_GLOBAL_INT_MASK1_REG); - reg |= PCIE_INT_A_ASSERT_MASK | PCIE_INT_B_ASSERT_MASK | - PCIE_INT_C_ASSERT_MASK | PCIE_INT_D_ASSERT_MASK; - dw_pcie_writel_dbi(pci, PCIE_GLOBAL_INT_MASK1_REG, reg); + if (pcie->pcie_type == ARMADA8K_PCIE_TYPE_AC5) { + reg = dw_pcie_readl_dbi(pci, PCIE_GLOBAL_INT_MASK2_REG); + reg |= PCIE_INT_A_ASSERT_MASK_AC5 | PCIE_INT_B_ASSERT_MASK_AC5 | + PCIE_INT_C_ASSERT_MASK_AC5 | PCIE_INT_D_ASSERT_MASK_AC5; + dw_pcie_writel_dbi(pci, PCIE_GLOBAL_INT_MASK2_REG, reg); + } else { + reg = dw_pcie_readl_dbi(pci, PCIE_GLOBAL_INT_MASK1_REG); + reg |= PCIE_INT_A_ASSERT_MASK | PCIE_INT_B_ASSERT_MASK | + PCIE_INT_C_ASSERT_MASK | PCIE_INT_D_ASSERT_MASK; + dw_pcie_writel_dbi(pci, PCIE_GLOBAL_INT_MASK1_REG, reg); + } return 0; } @@ -258,9 +287,61 @@ static int armada8k_add_pcie_port(struct armada8k_pcie *pcie, return 0; } -static const struct dw_pcie_ops dw_pcie_ops = { +static u32 ac5_xlate_dbi_reg(u32 reg) +{ + /* Handle AC5 ATU access */ + if ((reg & ~0xfffff) == PCIE_ATU_ACCESS_MASK_AC5) { + reg &= 0xfffff; + /* ATU registers offset is 0xC00 + 0x200 * n, + * from RFU registers. + */ + reg = 0xc000 | (0x200 * (reg >> 9)) | (reg & 0xff); + } else if ((reg & 0xfffff000) == PCIE_VENDOR_REGS_OFFSET) { + /* PCIe RFU registers in A8K are at offset 0x8000 from base + * (0xf2600000) while in AC5 offset is 0x10000 from base + * (0x800a0000) therefore need the addition of 0x8000. + */ + reg += PCIE_VENDOR_REGS_OFFSET; + } + + return reg; +} + +static u32 ac5_pcie_read_dbi(struct dw_pcie *pci, void __iomem *base, + u32 reg, size_t size) +{ + u32 val; + + dw_pcie_read(base + ac5_xlate_dbi_reg(reg), size, &val); + return val; +} + +static void ac5_pcie_write_dbi(struct dw_pcie *pci, void __iomem *base, + u32 reg, size_t size, u32 val) +{ + dw_pcie_write(base + ac5_xlate_dbi_reg(reg), size, val); +} + +static const struct dw_pcie_ops armada8k_dw_pcie_ops = { + .link_up = armada8k_pcie_link_up, + .start_link = armada8k_pcie_start_link, +}; + +static const struct dw_pcie_ops ac5_dw_pcie_ops = { .link_up = armada8k_pcie_link_up, .start_link = armada8k_pcie_start_link, + .read_dbi = ac5_pcie_read_dbi, + .write_dbi = ac5_pcie_write_dbi, +}; + +static const struct armada8k_pcie_of_data a8k_pcie_of_data = { + .pcie_type = ARMADA8K_PCIE_TYPE_A8K, + .pcie_ops = &armada8k_dw_pcie_ops, +}; + +static const struct armada8k_pcie_of_data ac5_pcie_of_data = { + .pcie_type = ARMADA8K_PCIE_TYPE_AC5, + .pcie_ops = &ac5_dw_pcie_ops, }; static int armada8k_pcie_probe(struct platform_device *pdev) @@ -268,9 +349,15 @@ static int armada8k_pcie_probe(struct platform_device *pdev) struct dw_pcie *pci; struct armada8k_pcie *pcie; struct device *dev = &pdev->dev; + const struct armada8k_pcie_of_data *data; struct resource *base; int ret; + data = of_device_get_match_data(dev); + if (!data) + return -EINVAL; + + pcie = devm_kzalloc(dev, sizeof(*pcie), GFP_KERNEL); if (!pcie) return -ENOMEM; @@ -279,9 +366,10 @@ static int armada8k_pcie_probe(struct platform_device *pdev) if (!pci) return -ENOMEM; + pci->ops = data->pcie_ops; pci->dev = dev; - pci->ops = &dw_pcie_ops; + pcie->pcie_type = data->pcie_type; pcie->pci = pci; pcie->clk = devm_clk_get(dev, NULL); @@ -334,7 +422,14 @@ static int armada8k_pcie_probe(struct platform_device *pdev) } static const struct of_device_id armada8k_pcie_of_match[] = { - { .compatible = "marvell,armada8k-pcie", }, + { + .compatible = "marvell,armada8k-pcie", + .data = &a8k_pcie_of_data, + }, + { + .compatible = "marvell,ac5-pcie", + .data = &ac5_pcie_of_data, + }, {}, }; From patchwork Thu Feb 23 18:05:27 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Elad Nachman X-Patchwork-Id: 61042 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp452180wrd; Thu, 23 Feb 2023 10:07:45 -0800 (PST) X-Google-Smtp-Source: AK7set8XmWr1+9nnIHmdciLND04/9g2Cj66+YBwwMnyfRLaIW7R6geYjZkigcV5aE4C+CxPM8ZNI X-Received: by 2002:a17:906:7488:b0:8a9:e5c2:e3b8 with SMTP id e8-20020a170906748800b008a9e5c2e3b8mr19197449ejl.2.1677175665173; Thu, 23 Feb 2023 10:07:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1677175665; cv=none; d=google.com; s=arc-20160816; b=brwJoRbSthXecZiXFWhezXZO9U/Q10/2Jc1rgTNis12dliribNFHjH8AK75AVGTKHD gOOue6gw+V0Otc9hgQXBfSwaluapLgkJOPVG298L2vqHjzUcekFXIzNJCYeXp1V011Hc oJ524LpIkhYphDlM15RA0xEtPrEdJNdYGXQtuKJsePNbBvVH2awWsVbuxrSB5Bb8bOPj uuZ3KCh4lyuOJRZ6El/UUtH7S3UtDc7vFLDX8x0PbA2HwX9Rtxf+BhNROvBB4BbNhLUU WZyT2oKoQQKppX/g5ZN4KcaDWgsnMfmn5g4Z1oTNHFdilgrIidzgeXuuXQYV5oiV2pcP 2YKw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=Bs5K6DWJG7CI20ovumSdg/wFmZR4Ty0H43WJ6J4Bil4=; b=M9by0iHSENQRmvOBRszhohsnBEiijxl+8om/PiDDLwHKCNyq4UQXk6bE43t9rcAThc /a8iYpZk3Mt2ftqamU2Wj3DKtrP0076oXvsoOQOqdudMeAbW5T/e08QHKwb2p6IcFpNY jAkjQseqp7U9sdGJKdLcJ+awDX1g+n7TLbydLDl2KLVRqI+bb87yYThWuvgEPbt3632s a6mKr7PCgG8c1WhuqUM0RX8Fx7NfSRTVoGtnQZhmjQK4HWXSpxVlBvRdbIVUgF1WG11E JGdMf1PwrOt9bVAGKESuggQLKg51uMOTXN98vbbW/dEI2hZT3m8Bx7YgCOpXnWudi6d8 m6QA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0220 header.b=ISYHPHfg; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=REJECT dis=NONE) header.from=marvell.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id vl24-20020a17090730d800b008b223acdc5esi18556314ejb.226.2023.02.23.10.07.21; Thu, 23 Feb 2023 10:07:45 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0220 header.b=ISYHPHfg; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=REJECT dis=NONE) header.from=marvell.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229765AbjBWSGM (ORCPT + 99 others); Thu, 23 Feb 2023 13:06:12 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47402 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230448AbjBWSGK (ORCPT ); Thu, 23 Feb 2023 13:06:10 -0500 Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 58E8159E42; Thu, 23 Feb 2023 10:06:09 -0800 (PST) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 31NBuLWx007788; Thu, 23 Feb 2023 10:06:01 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=pfpt0220; bh=Bs5K6DWJG7CI20ovumSdg/wFmZR4Ty0H43WJ6J4Bil4=; b=ISYHPHfgMG71IM0NY2MyyYqiQ+aKMDAn+qBENzC3ef8EXstLdppCcU709PQgw07HOhHp FfRO3cNN+8wl99ib3YrSGI/2+OBUXaqlIxHogvv3oD8m9/yYqo9WLDq7WiRt8YRH3hHB THH7RFX86SZA1t5lJPIThNU111y/xylDEf52rRyNXbzN7r6lW0ZDZkpGRk3YAgMiTdQI S+Nv0GoAoQHIv+LdMQCYEsuomfoEwX1wzYBQaOBtDurZbqP+Ho04qgIgxfPtWLClQkXY ex8aJHgD48vMJ10bD8r+oiw2QBdciSRljkHvmlYvzKGqxnxfRY9KSVJiDtVm7Nq/SeDL ug== Received: from dc5-exch01.marvell.com ([199.233.59.181]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3nwy8qktdd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Thu, 23 Feb 2023 10:06:00 -0800 Received: from DC5-EXCH02.marvell.com (10.69.176.39) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Thu, 23 Feb 2023 10:05:59 -0800 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server id 15.0.1497.42 via Frontend Transport; Thu, 23 Feb 2023 10:05:58 -0800 Received: from jupiter073.il.marvell.com (unknown [10.5.116.85]) by maili.marvell.com (Postfix) with ESMTP id 527FA3F7095; Thu, 23 Feb 2023 10:05:56 -0800 (PST) From: Elad Nachman To: , , , , , , , , , CC: Yuval Shaia Subject: [PATCH v3 3/7] PCI: armada8k: Add MSI support for AC5 SoC Date: Thu, 23 Feb 2023 20:05:27 +0200 Message-ID: <20230223180531.15148-4-enachman@marvell.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20230223180531.15148-1-enachman@marvell.com> References: <20230223180531.15148-1-enachman@marvell.com> MIME-Version: 1.0 X-Proofpoint-GUID: BWmPvui4gNwcnlDfRUOsQuJQsP0Yucni X-Proofpoint-ORIG-GUID: BWmPvui4gNwcnlDfRUOsQuJQsP0Yucni X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.170.22 definitions=2023-02-23_11,2023-02-23_01,2023-02-09_01 X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_LOW,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1758646150472192177?= X-GMAIL-MSGID: =?utf-8?q?1758646150472192177?= From: Yuval Shaia AC5 requires different handling for MSI as with armada8k. Fix it by: 1. Enabling the relevant bits in init phase 2. Dispatch virtual IRQ handlers when MSI interrupts are received Also enable/disable PCIE_APP_LTSSM for AC5. Signed-off-by: Yuval Shaia Signed-off-by: Vadym Kochan --- v2: 1) fix W1 warnings which caused by unused leftover code 2) fix type in "requieres" word in the description drivers/pci/controller/dwc/pcie-armada8k.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/drivers/pci/controller/dwc/pcie-armada8k.c b/drivers/pci/controller/dwc/pcie-armada8k.c index b9fb1375dc58..02481ecadd25 100644 --- a/drivers/pci/controller/dwc/pcie-armada8k.c +++ b/drivers/pci/controller/dwc/pcie-armada8k.c @@ -50,6 +50,7 @@ struct armada8k_pcie_of_data { #define PCIE_GLOBAL_CONTROL_REG (PCIE_VENDOR_REGS_OFFSET + 0x0) #define PCIE_APP_LTSSM_EN BIT(2) +#define PCIE_APP_LTSSM_EN_AC5 BIT(24) #define PCIE_DEVICE_TYPE_SHIFT 4 #define PCIE_DEVICE_TYPE_MASK 0xF #define PCIE_DEVICE_TYPE_RC 0x4 /* Root complex */ @@ -69,6 +70,7 @@ struct armada8k_pcie_of_data { #define PCIE_INT_B_ASSERT_MASK_AC5 BIT(13) #define PCIE_INT_C_ASSERT_MASK_AC5 BIT(14) #define PCIE_INT_D_ASSERT_MASK_AC5 BIT(15) +#define PCIE_MSI_MASK_AC5 BIT(11) #define PCIE_ATU_ACCESS_MASK_AC5 GENMASK(21, 20) @@ -184,6 +186,16 @@ static int armada8k_pcie_start_link(struct dw_pcie *pci) return 0; } +static void ac5_pcie_msi_init(struct dw_pcie *pci) +{ + u32 val; + + /* Set MSI bit in interrupt mask */ + val = dw_pcie_readl_dbi(pci, PCIE_GLOBAL_INT_MASK1_REG); + val |= PCIE_MSI_MASK_AC5; + dw_pcie_writel_dbi(pci, PCIE_GLOBAL_INT_MASK1_REG, val); +} + static int armada8k_pcie_host_init(struct dw_pcie_rp *pp) { u32 reg; @@ -193,7 +205,10 @@ static int armada8k_pcie_host_init(struct dw_pcie_rp *pp) if (!dw_pcie_link_up(pci)) { /* Disable LTSSM state machine to enable configuration */ reg = dw_pcie_readl_dbi(pci, PCIE_GLOBAL_CONTROL_REG); - reg &= ~(PCIE_APP_LTSSM_EN); + if (pcie->pcie_type == ARMADA8K_PCIE_TYPE_AC5) + reg &= ~(PCIE_APP_LTSSM_EN_AC5); + else + reg &= ~(PCIE_APP_LTSSM_EN); dw_pcie_writel_dbi(pci, PCIE_GLOBAL_CONTROL_REG, reg); } @@ -233,6 +248,9 @@ static int armada8k_pcie_host_init(struct dw_pcie_rp *pp) dw_pcie_writel_dbi(pci, PCIE_GLOBAL_INT_MASK1_REG, reg); } + if (IS_ENABLED(CONFIG_PCI_MSI) && (pcie->pcie_type == ARMADA8K_PCIE_TYPE_AC5)) + ac5_pcie_msi_init(pci); + return 0; } @@ -249,6 +267,8 @@ static irqreturn_t armada8k_pcie_irq_handler(int irq, void *arg) */ val = dw_pcie_readl_dbi(pci, PCIE_GLOBAL_INT_CAUSE1_REG); dw_pcie_writel_dbi(pci, PCIE_GLOBAL_INT_CAUSE1_REG, val); + if ((PCIE_MSI_MASK_AC5 & val) && (pcie->pcie_type == ARMADA8K_PCIE_TYPE_AC5)) + dw_handle_msi_irq(&pci->pp); return IRQ_HANDLED; } From patchwork Thu Feb 23 18:05:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Elad Nachman X-Patchwork-Id: 61043 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp452585wrd; Thu, 23 Feb 2023 10:08:38 -0800 (PST) X-Google-Smtp-Source: AK7set9K8Vm7LTtN4A7gC3LPNRwMP5qgzKWj5lDjwhqDXBwBhHafAKFO12wR7YYhtW7Pjr1jt5LK X-Received: by 2002:a17:906:150:b0:894:4341:77d6 with SMTP id 16-20020a170906015000b00894434177d6mr19459384ejh.1.1677175718597; Thu, 23 Feb 2023 10:08:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1677175718; cv=none; d=google.com; s=arc-20160816; b=u+S/RhKqP3Ic+jdJgbX9ogwsp90yc3oFXO+QgD5nPqRtNyR3zXQXYQpDaOQHNX9TD3 vZwgqtVEYUYnoWPB+s1VvwGcBhbQWFyVXsynpvIKnPj2JYjMMbHiV9xsL3HLYU/QrYrf Gi8th+v5cfnEPmyfDdG24k7I9TDKWw6dUGAUYOCFi6dDIwKgWOBOY8tVmyNtbohsMykt w66cSbLXnkV77S/WRcVu+aTefiU+aQhFjemenUWHf2gLEDdhK+2lZo79klVPs3FvuDGh QacM7sCTNMSkALU9McCGpprR4iW+WkcrLD+k+SYoZakmV9616oGjiOaTUrS5sYBnbP+1 0PdA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=mlHi/Pr6AkJvbTefmm/F5tsWvHitizUD82E7QAHPtR0=; b=uKUtQChLVpFsMkZiSPk7u0r/SjIzEqn7qXGfJWXZixw54tcAKicZQ6ePhCIO0TofHT 1rfQ0J2qCQhK5n8G4W9NCLNq7LwXwtvX2G01+jZvVW4xXYv6Nq67K4c9Wpx6tjzEXsXa nmc4ewQjk4QqwkujY2yTxE4EAkFOzzKtz8rrZQz/vkPfYhWAuyqk9+9ckrV0w4/NRDJO 0q9mw8weoWoldMhCBYL3b+LtQxggJJy2b+NsqFBvwPY4E0taAOo6C2OZCtrlCDrOcZeg RMEY/Ll1C6jniJh5efxKZqrIxTfVAA5nLx+vnILtTe0+EjUh9JeK1rfRFYeuV4NVO7vq /Adg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0220 header.b=gOleKfJ9; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=REJECT dis=NONE) header.from=marvell.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id v28-20020a17090651dc00b008d0378ec19fsi18031640ejk.650.2023.02.23.10.08.14; Thu, 23 Feb 2023 10:08:38 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0220 header.b=gOleKfJ9; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=REJECT dis=NONE) header.from=marvell.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230497AbjBWSGW (ORCPT + 99 others); Thu, 23 Feb 2023 13:06:22 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47968 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230490AbjBWSGU (ORCPT ); Thu, 23 Feb 2023 13:06:20 -0500 Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B57F85AB48; Thu, 23 Feb 2023 10:06:13 -0800 (PST) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 31NHUj4E027047; Thu, 23 Feb 2023 10:06:04 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=pfpt0220; bh=mlHi/Pr6AkJvbTefmm/F5tsWvHitizUD82E7QAHPtR0=; b=gOleKfJ9c4zg4oaYDhF8F4pJm3VZVyVhbuhea/ld3FPzzcFtD5T3AeaBQwwm/W5GIADz WJxYegeYoHuX2y2Y/1cWG/Q1yubuKZJQ2bPBCt2nsgtm/M6ffuWv8bcytzvfjjAt2gQH A0qJrFlT5sRhahEhnWEH1QWIngn0fCNGtsa81Nx5qVtPRQuyCPDdnUOC0Hsm75C9MtVD AAO/DgDFu+NRCb1oe8ZZzwQWgSbqMCWUTAEJaZ4T2EGvev7JsV6qyLLDeZzv+PPOfYCZ d1r+qOrU+5m4xjWNFJ5qsG2s016NMln0pLHVfOg6NPy5099HsI8zD8e+F5IGrNN+8tGl fg== Received: from dc5-exch02.marvell.com ([199.233.59.182]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 3nwy5h2cwc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Thu, 23 Feb 2023 10:06:03 -0800 Received: from DC5-EXCH02.marvell.com (10.69.176.39) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Thu, 23 Feb 2023 10:06:02 -0800 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server id 15.0.1497.42 via Frontend Transport; Thu, 23 Feb 2023 10:06:02 -0800 Received: from jupiter073.il.marvell.com (unknown [10.5.116.85]) by maili.marvell.com (Postfix) with ESMTP id 5A5DF3F709A; Thu, 23 Feb 2023 10:05:59 -0800 (PST) From: Elad Nachman To: , , , , , , , , , CC: Elad Nachman Subject: [PATCH v3 4/7] dt-bindings: PCI: dwc: add DMA, region mask bits Date: Thu, 23 Feb 2023 20:05:28 +0200 Message-ID: <20230223180531.15148-5-enachman@marvell.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20230223180531.15148-1-enachman@marvell.com> References: <20230223180531.15148-1-enachman@marvell.com> MIME-Version: 1.0 X-Proofpoint-GUID: SK_ePFW_FMStnAg1H46EK2rEnVYzUGLn X-Proofpoint-ORIG-GUID: SK_ePFW_FMStnAg1H46EK2rEnVYzUGLn X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.170.22 definitions=2023-02-23_11,2023-02-23_01,2023-02-09_01 X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_LOW,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1758646206569783465?= X-GMAIL-MSGID: =?utf-8?q?1758646206569783465?= From: Elad Nachman Add properties to support configurable DMA mask bits and region mask bits. configurable DMA mask bits is needed for Marvell AC5/AC5X SOCs which have their physical DDR memory start at address 0x2_0000_0000. Configurable region mask bits is needed for the Marvell Armada 7020/7040/8040 SOCs when the DT file places the PCIe window above the 4GB region. The Synopsis Designware PCIe IP in these SOCs is too old to specify the highest memory location supported by the PCIe, but practically supports such locations. Allow these locations to be specified in the DT file. First DT property is called num-dmamask, and can range between 33 and 64. Second DT property is called num-regionmask, and can range between 33 and 64. Signed-off-by: Elad Nachman --- .../devicetree/bindings/pci/snps,dw-pcie-common.yaml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Documentation/devicetree/bindings/pci/snps,dw-pcie-common.yaml b/Documentation/devicetree/bindings/pci/snps,dw-pcie-common.yaml index d87e13496834..a1b06ff19ca7 100644 --- a/Documentation/devicetree/bindings/pci/snps,dw-pcie-common.yaml +++ b/Documentation/devicetree/bindings/pci/snps,dw-pcie-common.yaml @@ -261,6 +261,16 @@ properties: dma-coherent: true + num-dmamask: + description: | + number of dma mask bits to use, if different than default 32 + maximum: 64 + + num-regionmask: + description: | + number of region limit mask bits to use, if different than default 32 + maximum: 64 + additionalProperties: true ... From patchwork Thu Feb 23 18:05:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Elad Nachman X-Patchwork-Id: 61045 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp452592wrd; Thu, 23 Feb 2023 10:08:39 -0800 (PST) X-Google-Smtp-Source: AK7set+PDGqPF6sc/wFTId1s1diEGmSAcMJNC4/5Jz2t8J4BMwjVDUMG5J6uCsWN0wX8Vv+ajlUR X-Received: by 2002:a05:6402:35d0:b0:4ad:6f56:a362 with SMTP id z16-20020a05640235d000b004ad6f56a362mr15033120edc.4.1677175719108; Thu, 23 Feb 2023 10:08:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1677175719; cv=none; d=google.com; s=arc-20160816; b=krTG5dtY11r0bOciSBaoea41qm2+7cL4aK6SyRzuH7ZnqmzXBQ+/nA7D3kJdpTz34Z q+AG4a+aiZ/bBR2KcCR1OVZvvbUbVqzx6x8Yod84b+WtHRQgOwpWhv1FNvJcFIYuOSnQ oJzTV0kMApzo3qqvka3EAXPcBQPTu5i3ROIDI8W5bzDDKRXLyemw9EtLbYL3EXThacZ5 FDcbuMRG6HRNDqkKIjCNcxZdbDCB7OUN1KBvQkE92xQ2zXcrVwPJaK0lO93H/Gv2CSjf huqUqV9A1XghL0amUrNd+g9MfszgGeSW+S22ZNMQUsvFN9u01XQwZmyNj/wNl6w49SJv pZDQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=p1+M9tISj/cvvWGhHk9rRBGqNYmcNWd4k8imRw9gF2U=; b=WBeOQlY2mAvvXIzy2jIQ/bGT2ES0yciopEufguF8PhS3jSyfg5otGrHTiXb/3hcrtX a30u6f14M19UZleq2WvrwzVDYFPiZVPG4oU1ML7kZQvXB1S/57bc0gcROBNjDoxRctP8 MwTfZ9ooz6D4pTOjIBBK46YZ2lC4UiQcvUcXGBXwRfXRfkswwcoQTT11cWEy0TGAGocv dTrGl5C8vT7qIxUpbj47Os/l+uiAImulu1L5wG5QTsb3tW3yr0CzmqmC8gg2RIPeBKB6 v43kw7D2TMdy5OFRDewBl+gIg4h6gedOpjp+HTatKX2CqMckjVa/6TKOgyOa1QKUFeDh Jumg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0220 header.b=YdQDIDkW; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=REJECT dis=NONE) header.from=marvell.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id mq48-20020a170907833000b008c9eb8758dfsi15277567ejc.219.2023.02.23.10.08.15; Thu, 23 Feb 2023 10:08:39 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0220 header.b=YdQDIDkW; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=REJECT dis=NONE) header.from=marvell.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230471AbjBWSG0 (ORCPT + 99 others); Thu, 23 Feb 2023 13:06:26 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47982 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229843AbjBWSGU (ORCPT ); Thu, 23 Feb 2023 13:06:20 -0500 Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5FC545AB59; Thu, 23 Feb 2023 10:06:14 -0800 (PST) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 31NHUPQG026389; Thu, 23 Feb 2023 10:06:07 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=pfpt0220; bh=p1+M9tISj/cvvWGhHk9rRBGqNYmcNWd4k8imRw9gF2U=; b=YdQDIDkWT/Iu0WIQZOA7uev9/onYM5lMeRbvZCHy3fKuf2FQ/NNZlrVGB6wAsKM2YDgY /jOToQ1PU9XjTEsiIaaspwhQvcHMWotKkr5eGv15XbWtI3t2k1hKb0Xiq4gPtSn4rotu s5JiMISHzL068xhCmBAwlejB/N+wYcwDMFLIe2zqDhuu85BF/ThM/p1bNOv6vOn6+M9k PsoWuDiCYj8eRprjtCfwxU9IaJcrh7Tzj07FszH3d2E8HbVvH0PlXqD0ohrUbrGXeR9V 78L0As+QjAXvS3ZCay1iRmUHVIH4UGJhWMVnIm8Ku8mjotqkncihkG1+7qU1g5xt5Cte OA== Received: from dc5-exch02.marvell.com ([199.233.59.182]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 3nwy5h2cwf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Thu, 23 Feb 2023 10:06:06 -0800 Received: from DC5-EXCH01.marvell.com (10.69.176.38) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Thu, 23 Feb 2023 10:06:05 -0800 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server id 15.0.1497.42 via Frontend Transport; Thu, 23 Feb 2023 10:06:05 -0800 Received: from jupiter073.il.marvell.com (unknown [10.5.116.85]) by maili.marvell.com (Postfix) with ESMTP id 627AF3F7094; Thu, 23 Feb 2023 10:06:02 -0800 (PST) From: Elad Nachman To: , , , , , , , , , CC: Elad Nachman Subject: [PATCH v3 5/7] PCI: dwc: support AC5 Legacy PCIe interrupts Date: Thu, 23 Feb 2023 20:05:29 +0200 Message-ID: <20230223180531.15148-6-enachman@marvell.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20230223180531.15148-1-enachman@marvell.com> References: <20230223180531.15148-1-enachman@marvell.com> MIME-Version: 1.0 X-Proofpoint-GUID: 8XWn3EIbxUWAWMc3PgI95hhNRQ3RrSgf X-Proofpoint-ORIG-GUID: 8XWn3EIbxUWAWMc3PgI95hhNRQ3RrSgf X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.170.22 definitions=2023-02-23_11,2023-02-23_01,2023-02-09_01 X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_LOW,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1758646206724812012?= X-GMAIL-MSGID: =?utf-8?q?1758646206724812012?= From: Elad Nachman Support message emulation of Legacy PCIe interrupts for Marvell AC5/X. These message emulations require writing an additional status register with acknowledge bits. Signed-off-by: Elad Nachman --- drivers/pci/controller/dwc/pcie-armada8k.c | 41 +++++++++++++++------- 1 file changed, 28 insertions(+), 13 deletions(-) diff --git a/drivers/pci/controller/dwc/pcie-armada8k.c b/drivers/pci/controller/dwc/pcie-armada8k.c index 02481ecadd25..145434c7a9fb 100644 --- a/drivers/pci/controller/dwc/pcie-armada8k.c +++ b/drivers/pci/controller/dwc/pcie-armada8k.c @@ -46,7 +46,7 @@ struct armada8k_pcie_of_data { const struct dw_pcie_ops *pcie_ops; }; -#define PCIE_VENDOR_REGS_OFFSET 0x8000 /* in ac5 is 0x10000 */ +#define PCIE_VENDOR_REGS_OFFSET 0x8000 /* in ac5 is in another region */ #define PCIE_GLOBAL_CONTROL_REG (PCIE_VENDOR_REGS_OFFSET + 0x0) #define PCIE_APP_LTSSM_EN BIT(2) @@ -61,6 +61,7 @@ struct armada8k_pcie_of_data { #define PCIE_GLOBAL_INT_CAUSE1_REG (PCIE_VENDOR_REGS_OFFSET + 0x1C) #define PCIE_GLOBAL_INT_MASK1_REG (PCIE_VENDOR_REGS_OFFSET + 0x20) +#define PCIE_GLOBAL_INT_CAUSE2_REG (PCIE_VENDOR_REGS_OFFSET + 0x24) #define PCIE_GLOBAL_INT_MASK2_REG (PCIE_VENDOR_REGS_OFFSET + 0x28) #define PCIE_INT_A_ASSERT_MASK BIT(9) #define PCIE_INT_B_ASSERT_MASK BIT(10) @@ -267,8 +268,14 @@ static irqreturn_t armada8k_pcie_irq_handler(int irq, void *arg) */ val = dw_pcie_readl_dbi(pci, PCIE_GLOBAL_INT_CAUSE1_REG); dw_pcie_writel_dbi(pci, PCIE_GLOBAL_INT_CAUSE1_REG, val); - if ((PCIE_MSI_MASK_AC5 & val) && (pcie->pcie_type == ARMADA8K_PCIE_TYPE_AC5)) - dw_handle_msi_irq(&pci->pp); + if (pcie->pcie_type == ARMADA8K_PCIE_TYPE_AC5) { + if (PCIE_MSI_MASK_AC5 & val) + dw_handle_msi_irq(&pci->pp); + + val = dw_pcie_readl_dbi(pci, PCIE_GLOBAL_INT_CAUSE2_REG); + /* Now clear the second interrupt cause. */ + dw_pcie_writel_dbi(pci, PCIE_GLOBAL_INT_CAUSE2_REG, val); + } return IRQ_HANDLED; } @@ -307,24 +314,29 @@ static int armada8k_add_pcie_port(struct armada8k_pcie *pcie, return 0; } -static u32 ac5_xlate_dbi_reg(u32 reg) +static void __iomem *ac5_xlate_dbi_reg(struct dw_pcie *pci, + void __iomem *base, + u32 reg) { /* Handle AC5 ATU access */ if ((reg & ~0xfffff) == PCIE_ATU_ACCESS_MASK_AC5) { reg &= 0xfffff; - /* ATU registers offset is 0xC00 + 0x200 * n, + /* ATU registers offset is 0xC000 + 0x200 * n, * from RFU registers. */ - reg = 0xc000 | (0x200 * (reg >> 9)) | (reg & 0xff); + reg = (0x200 * (reg >> 9)) | (reg & 0xff); + return pci->atu_base + reg; } else if ((reg & 0xfffff000) == PCIE_VENDOR_REGS_OFFSET) { /* PCIe RFU registers in A8K are at offset 0x8000 from base * (0xf2600000) while in AC5 offset is 0x10000 from base - * (0x800a0000) therefore need the addition of 0x8000. + * (0x800a0000) therefore need to be reduced by 0x8000 + * and rebased from dbi2 base, which is set to the PCIe rfu + * base in the AC5 dts: */ - reg += PCIE_VENDOR_REGS_OFFSET; + reg -= PCIE_VENDOR_REGS_OFFSET; + return pci->dbi_base2 + reg; } - - return reg; + return base + reg; } static u32 ac5_pcie_read_dbi(struct dw_pcie *pci, void __iomem *base, @@ -332,14 +344,14 @@ static u32 ac5_pcie_read_dbi(struct dw_pcie *pci, void __iomem *base, { u32 val; - dw_pcie_read(base + ac5_xlate_dbi_reg(reg), size, &val); + dw_pcie_read(ac5_xlate_dbi_reg(pci, base, reg), size, &val); return val; } static void ac5_pcie_write_dbi(struct dw_pcie *pci, void __iomem *base, u32 reg, size_t size, u32 val) { - dw_pcie_write(base + ac5_xlate_dbi_reg(reg), size, val); + dw_pcie_write(ac5_xlate_dbi_reg(pci, base, reg), size, val); } static const struct dw_pcie_ops armada8k_dw_pcie_ops = { @@ -418,7 +430,6 @@ static int armada8k_pcie_probe(struct platform_device *pdev) ret = PTR_ERR(pci->dbi_base); goto fail_clkreg; } - ret = armada8k_pcie_setup_phys(pcie); if (ret) goto fail_clkreg; @@ -429,6 +440,10 @@ static int armada8k_pcie_probe(struct platform_device *pdev) if (ret) goto disable_phy; + /* backwards compatibility with older dts files: */ + if (!pci->dbi_base2) + pci->dbi_base2 = pci->dbi_base; + return 0; disable_phy: From patchwork Thu Feb 23 18:05:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Elad Nachman X-Patchwork-Id: 61046 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp452634wrd; Thu, 23 Feb 2023 10:08:45 -0800 (PST) X-Google-Smtp-Source: AK7set/9RtaaLDNlJXvOf6+p6XPVtiMrnbuBa2czdb7WhgOAtiPmf5APQWwhkzSYkdDFEY1qaZGk X-Received: by 2002:a17:906:150:b0:888:346a:fb48 with SMTP id 16-20020a170906015000b00888346afb48mr20554235ejh.0.1677175724924; Thu, 23 Feb 2023 10:08:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1677175724; cv=none; d=google.com; s=arc-20160816; b=cO5lkwN0eUG5SBhn9r13bU5bSz1XrcSObuxNcggzyyGVcd8uozRXcKnj745HZWpemr PZFRtK5+nhyfGrKYt4gA+GWwa3L/mRx4WPXcX/igB3HkXv6c/QJgdBqhmn5lRr0y5BjT LenLd1RNPhMTLM9tKZJpxQQNOgXJL7pFPvAoA5cLgAJfApxajz3XqTI38EtFnlthPDOC WoA+vUZel0qfkOFj2BsPVrWmNY023JzegiAnm1j5UYb8Cf2RXowzoynuZkQ22XAbWS8d FwTOiLFqf86oh9DLV+sXmewfNUck0VBja3/FCEcHrbseuRxxrUwhkvlReqdyrvRU9ti0 jdSw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=vRhsh7DuocTyQAHVEoGkeQztl6fu/GZoJreu/RdOAqo=; b=nHjCNBajskZ0psVi74Exdad5OMtht8afBrlq2M6I7AvVi2783GilrxRTsHRZaJN+QU YIsoPvfar4V5vsU3RsCOb8Xonh+kxdfVWFkqDYp0sxrlQJrm/q3BDdlqGkXKUZa2Gc6n U9gcQ7QzJVuJpGIlZvFZuj8iifnpukOmZtrbMSy03w3/j8R5Ryzk34BRDbO7JTXXu3Gz xGCxvomh1kf4pe7WWgZptQvzlwQ1HafPZ58077MPGHI9fyKoYDt/F0/zzJAVzHVF+zH2 AFyGb08cUXhzTByE4zYoZm0XQ91DnD0MbLKt9NMa1iixYOm4r+PP6dIc6FfUb39J5HQE UKKQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0220 header.b=bT1a4kMH; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=REJECT dis=NONE) header.from=marvell.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id cq20-20020a170906d51400b008d91e069c88si10616225ejc.806.2023.02.23.10.08.22; Thu, 23 Feb 2023 10:08:44 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0220 header.b=bT1a4kMH; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=REJECT dis=NONE) header.from=marvell.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229902AbjBWSGh (ORCPT + 99 others); Thu, 23 Feb 2023 13:06:37 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48272 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230518AbjBWSG1 (ORCPT ); Thu, 23 Feb 2023 13:06:27 -0500 Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 108F95BB8C; Thu, 23 Feb 2023 10:06:17 -0800 (PST) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 31NHUWLJ027007; Thu, 23 Feb 2023 10:06:09 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=pfpt0220; bh=vRhsh7DuocTyQAHVEoGkeQztl6fu/GZoJreu/RdOAqo=; b=bT1a4kMHcWL94yuoChjsB60eE4MC8Uvq3RKGCC4OO9lgtHUZYEIPqGMBwZJe5dlB7BYi hnyqoGBSRwjo3m5YInZB3jCQIIIJgRVDjRCeGcXnkxqMgkIkQQcIZ7PQJ9UjCKm58w1o zbABaPYqV4hydlSC3T/DKIB38Av3CU+mFmCkSECG/V0BbuldQekaWqR+YeZomrqYg7bW Awuj+5SaAVosnCxB2pKuW5ucmBb01x2UlvSlDy83OSXY30IiFcC15PoPtc7H9LgTUlyg 1nHEkA/JEt3j0mRVyhngvs0qrxHIHGAmCvByQZ7l1brCG9V/eEmpwBgH+VG68rpPw9fA Xg== Received: from dc5-exch01.marvell.com ([199.233.59.181]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 3nwy5h2cwp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Thu, 23 Feb 2023 10:06:09 -0800 Received: from DC5-EXCH01.marvell.com (10.69.176.38) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Thu, 23 Feb 2023 10:06:08 -0800 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server id 15.0.1497.42 via Frontend Transport; Thu, 23 Feb 2023 10:06:08 -0800 Received: from jupiter073.il.marvell.com (unknown [10.5.116.85]) by maili.marvell.com (Postfix) with ESMTP id 6A9333F708C; Thu, 23 Feb 2023 10:06:05 -0800 (PST) From: Elad Nachman To: , , , , , , , , , CC: Elad Nachman Subject: [PATCH v3 6/7] PCI: dwc: Introduce Configurable DMA mask Date: Thu, 23 Feb 2023 20:05:30 +0200 Message-ID: <20230223180531.15148-7-enachman@marvell.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20230223180531.15148-1-enachman@marvell.com> References: <20230223180531.15148-1-enachman@marvell.com> MIME-Version: 1.0 X-Proofpoint-GUID: pzB7NhPyA0SgHlKfNXptrDENU0WYardP X-Proofpoint-ORIG-GUID: pzB7NhPyA0SgHlKfNXptrDENU0WYardP X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.170.22 definitions=2023-02-23_11,2023-02-23_01,2023-02-09_01 X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_LOW,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1758646212765223204?= X-GMAIL-MSGID: =?utf-8?q?1758646212765223204?= From: Elad Nachman Some devices, such as AC5 and AC5X have their physical DDR memory start at address 0x2_0000_0000 . In order to have the DMA coherent allocation succeed later, a different DMA mask is required, as defined in the DT file for such SOCs. If not defined, fallback to 32-bit as previously done in the code. DT property is called num-dmamask , and can range between 33 and 64. Signed-off-by: Elad Nachman --- .../pci/controller/dwc/pcie-designware-host.c | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pci/controller/dwc/pcie-designware-host.c index 9952057c8819..ac851b065325 100644 --- a/drivers/pci/controller/dwc/pcie-designware-host.c +++ b/drivers/pci/controller/dwc/pcie-designware-host.c @@ -204,7 +204,6 @@ static int dw_pcie_irq_domain_alloc(struct irq_domain *domain, pp->msi_irq_chip, pp, handle_edge_irq, NULL, NULL); - return 0; } @@ -250,7 +249,6 @@ int dw_pcie_allocate_domains(struct dw_pcie_rp *pp) irq_domain_remove(pp->irq_domain); return -ENOMEM; } - return 0; } @@ -325,10 +323,12 @@ static int dw_pcie_msi_host_init(struct dw_pcie_rp *pp) { struct dw_pcie *pci = to_dw_pcie_from_pp(pp); struct device *dev = pci->dev; + struct device_node *np = dev->of_node; struct platform_device *pdev = to_platform_device(dev); u64 *msi_vaddr; int ret; u32 ctrl, num_ctrls; + u32 num_dma_maskbits; for (ctrl = 0; ctrl < MAX_MSI_CTRLS; ctrl++) pp->irq_mask[ctrl] = ~0; @@ -367,18 +367,30 @@ static int dw_pcie_msi_host_init(struct dw_pcie_rp *pp) } /* + * Some devices, such as AC5 and AC5X have their physical DDR memory + * start at address 0x2_0000_0000 . In order to have the DMA + * coherent allocation succeed later, a different DMA mask is + * required, as defined in the DT file for such SOCs. + * If not defined, fallback to 32-bit as described below: + * * Even though the iMSI-RX Module supports 64-bit addresses some * peripheral PCIe devices may lack 64-bit message support. In * order not to miss MSI TLPs from those devices the MSI target * address has to be within the lowest 4GB. * - * Note until there is a better alternative found the reservation is + * Note until there is a better alternative found, the reservation is * done by allocating from the artificially limited DMA-coherent * memory. */ - ret = dma_set_coherent_mask(dev, DMA_BIT_MASK(32)); + ret = of_property_read_u32(np, "num-dmamask", &num_dma_maskbits); if (ret) - dev_warn(dev, "Failed to set DMA mask to 32-bit. Devices with only 32-bit MSI support may not work properly\n"); + num_dma_maskbits = 32; + + ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(num_dma_maskbits)); + if (ret) + dev_warn(dev, + "Failed to set DMA mask to %u-bit. Devices with only 32-bit MSI support may not work properly\n", + num_dma_maskbits); msi_vaddr = dmam_alloc_coherent(dev, sizeof(u64), &pp->msi_data, GFP_KERNEL); @@ -420,7 +432,6 @@ int dw_pcie_host_init(struct dw_pcie_rp *pp) dev_err(dev, "Missing *config* reg space\n"); return -ENODEV; } - bridge = devm_pci_alloc_host_bridge(dev, 0); if (!bridge) return -ENOMEM; From patchwork Thu Feb 23 18:05:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Elad Nachman X-Patchwork-Id: 61044 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp452593wrd; Thu, 23 Feb 2023 10:08:39 -0800 (PST) X-Google-Smtp-Source: AK7set/FIKjQ41pFSASPPr0ImrSv5xq5KTVT9Up33H6B+sGwMeBCx9IEbEb8DyWCMWzp8vqlUzTN X-Received: by 2002:a17:906:109c:b0:8b7:1cb4:a5ba with SMTP id u28-20020a170906109c00b008b71cb4a5bamr18871162eju.5.1677175719101; Thu, 23 Feb 2023 10:08:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1677175719; cv=none; d=google.com; s=arc-20160816; b=syNeYAa/b5SJIaSYTPkkah1tHPUotYRDuXPdFjAvmHvCxnSLKyaFkfKTIB4By8XHyu Cbca/BzlxGN4rsn/K2imE5DtoomzUhMXFUdyOSEy0yw4I4WT2NZ+HwRz2C3zRA++YYQ5 bnEUqcl4EQxM6ePSSrAnrYYway7PWa6JYRgi02Pzx4Nc7Mg10FNAXBA18qjoR1fT9Tw+ XU9kXNpaXcDCpVfkBvht1e8ahkBwQ75NCGB9DO4U2txWpt3SXTdDCqLukUoHonwRDdC0 a6Y+JaCb/HBLde4TRh3a1gW+DgtBH1lzqldotS6HYJD8sRNHqY6anAR/RxlohntGM/2+ Gjzg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=eFEEh0aRpDvgiO44uo5IvSyXWxNaM3rF5W7x2i2ESx0=; b=mYS36nWVynwv2nc97/Li9jTNme0CmyQBW2QyH2Fe8TA5XExQwDALgXI0YnJMsBraIs sNEQpCCNWTf6zWlqU1t0EYjLKr5vS1qxO1hSwGMlXHBQGPMtqAPlGSsUUUGSUi6Cgs8k M8ElE/atAABLH48ZEZC2co/rk1pxCXBLgsqnEAnLKW5c5lZmxUMHlV1FP3rzkkviNWm9 ekG8CL5eJ7H4nNt1Bfi/w5Squ75YZY4PUwfF6SW902KV8e5mijOObpya0fqG90/0unWV T2jbzq+RN12LCkPg9YofftkjNVyNIzgwPDEuME7fbD4Sy7WDEKIP00arCGIq953BWitx LAJA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0220 header.b=ZNAyEj6K; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=REJECT dis=NONE) header.from=marvell.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id vj23-20020a170907131700b008de34abc459si8912466ejb.143.2023.02.23.10.08.15; Thu, 23 Feb 2023 10:08:39 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@marvell.com header.s=pfpt0220 header.b=ZNAyEj6K; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=REJECT dis=NONE) header.from=marvell.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229497AbjBWSGu (ORCPT + 99 others); Thu, 23 Feb 2023 13:06:50 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48750 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229478AbjBWSGs (ORCPT ); Thu, 23 Feb 2023 13:06:48 -0500 Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 216CA4FAA8; Thu, 23 Feb 2023 10:06:27 -0800 (PST) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 31NDZHNW021322; Thu, 23 Feb 2023 10:06:13 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=pfpt0220; bh=eFEEh0aRpDvgiO44uo5IvSyXWxNaM3rF5W7x2i2ESx0=; b=ZNAyEj6KcaCQ+e/utM27HzF6JQ3neXtnIeLVlLvm2FDw1pTtFwibd570cWv5g6+Ekpdw oPBXkuJ5jkD+zduU9RK6MCpUaOTl0roxSYv4bTvrLgV7zJGJHXHB7uh6vxheCTI9LTRs N9x8CYhuaWT347qWrAPqJ9BBnhAAdoIWi86q5KmVdB5oPXjzQ4bzsVmNO0+jNqj7kDtv xVAWVI8uidFuOiwN8vlGH8k/HFly0mi19z0I4TJEW12dq0EZZchk0/TxWYb4BJUQnPFI taU7VeNhxLkfvAOONAea5/Jc1vh1M/NkJ5OEJW8jo9yuV/T5gG5oyO0lOGmT1SagRBSy sw== Received: from dc5-exch02.marvell.com ([199.233.59.182]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 3nwy5h2cx4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Thu, 23 Feb 2023 10:06:12 -0800 Received: from DC5-EXCH02.marvell.com (10.69.176.39) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Thu, 23 Feb 2023 10:06:11 -0800 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server id 15.0.1497.42 via Frontend Transport; Thu, 23 Feb 2023 10:06:11 -0800 Received: from jupiter073.il.marvell.com (unknown [10.5.116.85]) by maili.marvell.com (Postfix) with ESMTP id 72D883F7095; Thu, 23 Feb 2023 10:06:08 -0800 (PST) From: Elad Nachman To: , , , , , , , , , CC: Elad Nachman Subject: [PATCH v3 7/7] PCI: dwc: Introduce region limit from DT Date: Thu, 23 Feb 2023 20:05:31 +0200 Message-ID: <20230223180531.15148-8-enachman@marvell.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20230223180531.15148-1-enachman@marvell.com> References: <20230223180531.15148-1-enachman@marvell.com> MIME-Version: 1.0 X-Proofpoint-GUID: 5X9yLlYXb-hJcLKDlUZdTsQxUUDn_Bss X-Proofpoint-ORIG-GUID: 5X9yLlYXb-hJcLKDlUZdTsQxUUDn_Bss X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.170.22 definitions=2023-02-23_11,2023-02-23_01,2023-02-09_01 X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_LOW,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1758646207083733866?= X-GMAIL-MSGID: =?utf-8?q?1758646207083733866?= From: Elad Nachman Allow dts override of region limit for SOCs with older Synopsis Designware PCIe IP but with greater than 32-bit address range support, such as the Armada 7020/7040/8040 family of SOCs by Marvell, when the DT file places the PCIe window above the 4GB region. The Synopsis Designware PCIe IP in these SOCs is too old to specify the highest memory location supported by the PCIe, but practically supports such locations. Allow these locations to be specified in the DT file. DT property is called num-regionmask , and can range between 33 and 64. Signed-off-by: Elad Nachman --- drivers/pci/controller/dwc/pcie-designware.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/drivers/pci/controller/dwc/pcie-designware.c b/drivers/pci/controller/dwc/pcie-designware.c index 53a16b8b6ac2..429594e853ae 100644 --- a/drivers/pci/controller/dwc/pcie-designware.c +++ b/drivers/pci/controller/dwc/pcie-designware.c @@ -401,7 +401,6 @@ static void dw_pcie_writel_atu(struct dw_pcie *pci, u32 dir, u32 index, int ret; base = dw_pcie_select_atu(pci, dir, index); - if (pci->ops && pci->ops->write_dbi) { pci->ops->write_dbi(pci, base, reg, 4, val); return; @@ -735,10 +734,13 @@ static void dw_pcie_link_set_max_speed(struct dw_pcie *pci, u32 link_gen) void dw_pcie_iatu_detect(struct dw_pcie *pci) { int max_region, ob, ib; - u32 val, min, dir; + u32 val, min, dir, ret, num_region_maskbits; u64 max; + struct device *dev = pci->dev; + struct device_node *np = dev->of_node; val = dw_pcie_readl_dbi(pci, PCIE_ATU_VIEWPORT); + if (val == 0xFFFFFFFF) { dw_pcie_cap_set(pci, IATU_UNROLL); @@ -781,7 +783,12 @@ void dw_pcie_iatu_detect(struct dw_pcie *pci) dw_pcie_writel_atu(pci, dir, 0, PCIE_ATU_UPPER_LIMIT, 0xFFFFFFFF); max = dw_pcie_readl_atu(pci, dir, 0, PCIE_ATU_UPPER_LIMIT); } else { - max = 0; + /* Allow dts override of region limit for older IP with above 32-bit support: */ + ret = of_property_read_u32(np, "num-regionmask", &num_region_maskbits); + if (!ret && num_region_maskbits > 32) + max = GENMASK(num_region_maskbits - 33, 0); + else + max = 0; } pci->num_ob_windows = ob;