mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-23 07:22:33 +00:00
e8e2b88f5f
The 1st generation MediaTek PCIe host bridge cannot handle Message Signaled Interrupts (MSIs). The core PCI code is not aware that MSI is not available. This results in warnings of the form: WARNING: CPU: 2 PID: 112 at include/linux/msi.h:219 pci_msi_setup_msi_irqs.constprop.8+0x64/0x6c Modules linked in: ahci(+) libahci libata sd_mod scsi_mod gpio_button_hotplug CPU: 2 PID: 112 Comm: kmodloader Not tainted 5.10.52 #0 Hardware name: Mediatek Cortex-A7 (Device Tree) Import patches that introduce the 'no_msi' attribute to signal missing MSI support to the core PCI. Refresh patches: - 000-spi-fix-fifo.patch - 330-mtk-bmt-support.patch - 510-net-mediatek-add-flow-offload-for-mt7623.patch - 601-PCI-mediatek-Use-regmap-to-get-shared-pcie-cfg-base.patch - 610-pcie-mediatek-fix-clearing-interrupt-status.patch - 700-net-ethernet-mtk_eth_soc-add-support-for-coherent-DM.patch - 710-pci-pcie-mediatek-add-support-for-coherent-DMA.patch Signed-off-by: Nick Hainke <vincent@systemli.org>
218 lines
9.4 KiB
Diff
218 lines
9.4 KiB
Diff
From patchwork Thu May 28 06:16:46 2020
|
|
Content-Type: text/plain; charset="utf-8"
|
|
MIME-Version: 1.0
|
|
Content-Transfer-Encoding: 7bit
|
|
X-Patchwork-Submitter: Chuanjia Liu <chuanjia.liu@mediatek.com>
|
|
X-Patchwork-Id: 11574781
|
|
Return-Path:
|
|
<SRS0=ftSA=7K=lists.infradead.org=linux-mediatek-bounces+patchwork-linux-mediatek=patchwork.kernel.org@kernel.org>
|
|
Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org
|
|
[172.30.200.123])
|
|
by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 0A99B60D
|
|
for <patchwork-linux-mediatek@patchwork.kernel.org>;
|
|
Thu, 28 May 2020 06:19:04 +0000 (UTC)
|
|
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 mail.kernel.org (Postfix) with ESMTPS id DCC99208FE
|
|
for <patchwork-linux-mediatek@patchwork.kernel.org>;
|
|
Thu, 28 May 2020 06:19:03 +0000 (UTC)
|
|
Authentication-Results: mail.kernel.org;
|
|
dkim=pass (2048-bit key) header.d=lists.infradead.org
|
|
header.i=@lists.infradead.org header.b="SpOi0ueF";
|
|
dkim=fail reason="signature verification failed" (1024-bit key)
|
|
header.d=mediatek.com header.i=@mediatek.com header.b="UGIBoIEG"
|
|
DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DCC99208FE
|
|
Authentication-Results: mail.kernel.org;
|
|
dmarc=fail (p=none dis=none) header.from=mediatek.com
|
|
Authentication-Results: mail.kernel.org;
|
|
spf=none
|
|
smtp.mailfrom=linux-mediatek-bounces+patchwork-linux-mediatek=patchwork.kernel.org@lists.infradead.org
|
|
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
|
|
d=lists.infradead.org; s=bombadil.20170209; h=Sender:
|
|
Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post:
|
|
List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:
|
|
Message-ID:Date:Subject:To:From:Reply-To:Content-ID:Content-Description:
|
|
Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:
|
|
List-Owner; bh=LIr5poLUT/UdH6/akh/pnICGGa3rUBkN+4FhE1DyOrU=; b=SpOi0ueFcoJ/ka
|
|
4esa6cDd5oU4fp0z684ZVPaVvvhm/azSZBBMYinHaAW6EvzKcMNYIX9grP8eg/728lEPNTKVq0I8H
|
|
PQZ9KvD4uTu8Opo1hD8LsRSLr+YLpNKt3KPOY/4gpwQ97uU9rI5PwkuAxPBgR949Vh5EiG0Vaww1H
|
|
Ep+I5BFRn2LVVQZP1Z7U0A0VUcOTLJ4znoWRLEXxtM9/Wd4hwQsrEPQszeDFti/RbwGfJ5efOb5UL
|
|
fhwBzSxELEzAAgH7env/XD2sSSpVf2Qsn6WO8D3ZepMtWrRtARiaRKSNxSBQTg2SSHcjmBSJSzcX+
|
|
w8wqWaUMs0crlBuZWS1g==;
|
|
Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org)
|
|
by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux))
|
|
id 1jeBsc-0001tI-88; Thu, 28 May 2020 06:19:02 +0000
|
|
Received: from mailgw01.mediatek.com ([216.200.240.184])
|
|
by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux))
|
|
id 1jeBsZ-0001rp-6g; Thu, 28 May 2020 06:19:01 +0000
|
|
X-UUID: beeaf5765357439c91eab1f67ca7ef43-20200527
|
|
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
|
|
d=mediatek.com;
|
|
s=dk;
|
|
h=Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From;
|
|
bh=+IjWjsF/DhknqZB+lLSZ50cyvxDap+8w4tvqhp8Dv68=;
|
|
b=UGIBoIEGJUuq5pEvYEad1HVGpiv6yma+94hva83D2gD8lYmihRWkpJxB2yn+dVtNm7ZXXoQBf+jvvULOmslJgs1HZTLJTnjpdvLmQqo42OXRXSVpTE49HdRkJZDAIWIAReBfOEkFgNxcIX3uedrtnww/NLJ2lagrYPG5ET4lI2E=;
|
|
X-UUID: beeaf5765357439c91eab1f67ca7ef43-20200527
|
|
Received: from mtkcas68.mediatek.inc [(172.29.94.19)] by mailgw01.mediatek.com
|
|
(envelope-from <chuanjia.liu@mediatek.com>)
|
|
(musrelay.mediatek.com ESMTP with TLS)
|
|
with ESMTP id 603406343; Wed, 27 May 2020 22:19:17 -0800
|
|
Received: from mtkmbs07n1.mediatek.inc (172.21.101.16) by
|
|
MTKMBS62DR.mediatek.inc (172.29.94.18) with Microsoft SMTP Server (TLS) id
|
|
15.0.1497.2; Wed, 27 May 2020 23:18:47 -0700
|
|
Received: from mtkcas07.mediatek.inc (172.21.101.84) by
|
|
mtkmbs07n1.mediatek.inc (172.21.101.16) with Microsoft SMTP Server (TLS) id
|
|
15.0.1497.2; Thu, 28 May 2020 14:18:51 +0800
|
|
Received: from localhost.localdomain (10.17.3.153) by mtkcas07.mediatek.inc
|
|
(172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend
|
|
Transport; Thu, 28 May 2020 14:18:49 +0800
|
|
From: <chuanjia.liu@mediatek.com>
|
|
To: <robh+dt@kernel.org>, <ryder.lee@mediatek.com>, <matthias.bgg@gmail.com>
|
|
Subject: [PATCH v2 2/4] PCI: mediatek: Use regmap to get shared pcie-cfg base
|
|
Date: Thu, 28 May 2020 14:16:46 +0800
|
|
Message-ID: <20200528061648.32078-3-chuanjia.liu@mediatek.com>
|
|
X-Mailer: git-send-email 2.18.0
|
|
In-Reply-To: <20200528061648.32078-1-chuanjia.liu@mediatek.com>
|
|
References: <20200528061648.32078-1-chuanjia.liu@mediatek.com>
|
|
MIME-Version: 1.0
|
|
X-MTK: N
|
|
X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3
|
|
X-CRM114-CacheID: sfid-20200527_231859_251275_BED2B1E2
|
|
X-CRM114-Status: GOOD ( 11.62 )
|
|
X-Spam-Score: -0.2 (/)
|
|
X-Spam-Report: SpamAssassin version 3.4.4 on bombadil.infradead.org summary:
|
|
Content analysis details: (-0.2 points)
|
|
pts rule name description
|
|
---- ----------------------
|
|
--------------------------------------------------
|
|
-0.0 SPF_PASS SPF: sender matches SPF record
|
|
0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
|
|
0.0 MIME_BASE64_TEXT RAW: Message text disguised using base64
|
|
encoding
|
|
-0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from
|
|
author's domain
|
|
0.1 DKIM_SIGNED Message has a DKIM or DK signature,
|
|
not necessarily
|
|
valid
|
|
-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature
|
|
-0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from
|
|
envelope-from domain
|
|
0.0 UNPARSEABLE_RELAY Informational: message has unparseable relay
|
|
lines
|
|
X-BeenThere: linux-mediatek@lists.infradead.org
|
|
X-Mailman-Version: 2.1.29
|
|
Precedence: list
|
|
List-Id: <linux-mediatek.lists.infradead.org>
|
|
List-Unsubscribe: <http://lists.infradead.org/mailman/options/linux-mediatek>,
|
|
<mailto:linux-mediatek-request@lists.infradead.org?subject=unsubscribe>
|
|
List-Archive: <http://lists.infradead.org/pipermail/linux-mediatek/>
|
|
List-Post: <mailto:linux-mediatek@lists.infradead.org>
|
|
List-Help: <mailto:linux-mediatek-request@lists.infradead.org?subject=help>
|
|
List-Subscribe: <http://lists.infradead.org/mailman/listinfo/linux-mediatek>,
|
|
<mailto:linux-mediatek-request@lists.infradead.org?subject=subscribe>
|
|
Cc: devicetree@vger.kernel.org, lorenzo.pieralisi@arm.com,
|
|
srv_heupstream@mediatek.com, "chuanjia.liu" <Chuanjia.Liu@mediatek.com>,
|
|
linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org,
|
|
jianjun.wang@mediatek.com, linux-mediatek@lists.infradead.org,
|
|
yong.wu@mediatek.com, bhelgaas@google.com,
|
|
linux-arm-kernel@lists.infradead.org, amurray@thegoodpenguin.co.uk
|
|
Sender: "Linux-mediatek" <linux-mediatek-bounces@lists.infradead.org>
|
|
Errors-To:
|
|
linux-mediatek-bounces+patchwork-linux-mediatek=patchwork.kernel.org@lists.infradead.org
|
|
|
|
From: "chuanjia.liu" <Chuanjia.Liu@mediatek.com>
|
|
|
|
Use regmap to get shared pcie-cfg base and change
|
|
the method to get pcie irq.
|
|
|
|
Signed-off-by: chuanjia.liu <Chuanjia.Liu@mediatek.com>
|
|
---
|
|
drivers/pci/controller/pcie-mediatek.c | 25 ++++++++++++++++++-------
|
|
1 file changed, 18 insertions(+), 7 deletions(-)
|
|
|
|
--- a/drivers/pci/controller/pcie-mediatek.c
|
|
+++ b/drivers/pci/controller/pcie-mediatek.c
|
|
@@ -14,6 +14,7 @@
|
|
#include <linux/irqchip/chained_irq.h>
|
|
#include <linux/irqdomain.h>
|
|
#include <linux/kernel.h>
|
|
+#include <linux/mfd/syscon.h>
|
|
#include <linux/msi.h>
|
|
#include <linux/module.h>
|
|
#include <linux/of_address.h>
|
|
@@ -23,6 +24,7 @@
|
|
#include <linux/phy/phy.h>
|
|
#include <linux/platform_device.h>
|
|
#include <linux/pm_runtime.h>
|
|
+#include <linux/regmap.h>
|
|
#include <linux/reset.h>
|
|
|
|
#include "../pci.h"
|
|
@@ -207,6 +209,7 @@ struct mtk_pcie_port {
|
|
* struct mtk_pcie - PCIe host information
|
|
* @dev: pointer to PCIe device
|
|
* @base: IO mapped register base
|
|
+ * @cfg: IO mapped register map for PCIe config
|
|
* @free_ck: free-run reference clock
|
|
* @mem: non-prefetchable memory resource
|
|
* @ports: pointer to PCIe port information
|
|
@@ -215,6 +218,7 @@ struct mtk_pcie_port {
|
|
struct mtk_pcie {
|
|
struct device *dev;
|
|
void __iomem *base;
|
|
+ struct regmap *cfg;
|
|
struct clk *free_ck;
|
|
|
|
struct list_head ports;
|
|
@@ -650,7 +654,7 @@ static int mtk_pcie_setup_irq(struct mtk
|
|
return err;
|
|
}
|
|
|
|
- port->irq = platform_get_irq(pdev, port->slot);
|
|
+ port->irq = platform_get_irq_byname(pdev, "pcie_irq");
|
|
if (port->irq < 0)
|
|
return port->irq;
|
|
|
|
@@ -676,12 +680,11 @@ static int mtk_pcie_startup_port_v2(stru
|
|
if (!mem)
|
|
return -EINVAL;
|
|
|
|
- /* MT7622 platforms need to enable LTSSM and ASPM from PCIe subsys */
|
|
- if (pcie->base) {
|
|
- val = readl(pcie->base + PCIE_SYS_CFG_V2);
|
|
- val |= PCIE_CSR_LTSSM_EN(port->slot) |
|
|
- PCIE_CSR_ASPM_L1_EN(port->slot);
|
|
- writel(val, pcie->base + PCIE_SYS_CFG_V2);
|
|
+ /* MT7622/MT7629 platforms need to enable LTSSM and ASPM. */
|
|
+ if (pcie->cfg) {
|
|
+ val = PCIE_CSR_LTSSM_EN(port->slot) |
|
|
+ PCIE_CSR_ASPM_L1_EN(port->slot);
|
|
+ regmap_update_bits(pcie->cfg, PCIE_SYS_CFG_V2, val, val);
|
|
}
|
|
|
|
/* Assert all reset signals */
|
|
@@ -985,6 +988,7 @@ static int mtk_pcie_subsys_powerup(struc
|
|
struct device *dev = pcie->dev;
|
|
struct platform_device *pdev = to_platform_device(dev);
|
|
struct resource *regs;
|
|
+ struct device_node *cfg_node;
|
|
int err;
|
|
|
|
/* get shared registers, which are optional */
|
|
@@ -997,6 +1001,13 @@ static int mtk_pcie_subsys_powerup(struc
|
|
}
|
|
}
|
|
|
|
+ cfg_node = of_parse_phandle(dev->of_node, "mediatek,pcie-cfg", 0);
|
|
+ if (cfg_node) {
|
|
+ pcie->cfg = syscon_node_to_regmap(cfg_node);
|
|
+ if (IS_ERR(pcie->cfg))
|
|
+ return PTR_ERR(pcie->cfg);
|
|
+ }
|
|
+
|
|
pcie->free_ck = devm_clk_get(dev, "free_ck");
|
|
if (IS_ERR(pcie->free_ck)) {
|
|
if (PTR_ERR(pcie->free_ck) == -EPROBE_DEFER)
|