7531 lines
350 KiB
Diff
7531 lines
350 KiB
Diff
From patchwork Thu Mar 28 09:18:14 2024
|
|
Content-Type: text/plain; charset="utf-8"
|
|
MIME-Version: 1.0
|
|
Content-Transfer-Encoding: 7bit
|
|
X-Patchwork-Submitter: Minda Chen <minda.chen@starfivetech.com>
|
|
X-Patchwork-Id: 13608233
|
|
X-Patchwork-Delegate: kw@linux.com
|
|
Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn
|
|
(mail-sh0chn02on2114.outbound.protection.partner.outlook.cn
|
|
[139.219.146.114])
|
|
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
|
|
(No client certificate requested)
|
|
by smtp.subspace.kernel.org (Postfix) with ESMTPS id E556041C62;
|
|
Thu, 28 Mar 2024 09:18:54 +0000 (UTC)
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
arc=fail smtp.client-ip=139.219.146.114
|
|
ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
|
|
t=1711617538; cv=fail;
|
|
b=idFV1/xcDvMw6FQPy+zuwcIHHRPyFFijtpPsYTiWqh5MCYHM2UIXSOWuxOVZh/Tcn51V061IDRI8dneVHgussbnILIx2FjgV7Ky/fWZ3z/BsJYLwY7Ar2x7S05prBZWh5gVJRew9knGBqXTpOYhyXIoNuUgWCK5nDNLL3WQDZl0=
|
|
ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org;
|
|
s=arc-20240116; t=1711617538; c=relaxed/simple;
|
|
bh=HbCVSTAjM8a3PXKEy1PZmv0HG2ZFUW/Wt0Tct0VQj44=;
|
|
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
|
|
Content-Type:MIME-Version;
|
|
b=igxiO2UraUCdYkagdExFH5EQujlVtw7YWEiacI0a4XFXQw0HcmWGO8DZr38AfBqAoBLfOhG4AOVSR0oSlbTm7Dfc1sseazDSMs+vSvgHh5PMRExMMnoZvapc9on36ejTf5lDTPE7YZ/A2JsrB45tq+T7uSSD5ZzdlZUVzNZ2X40=
|
|
ARC-Authentication-Results: i=2; smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com;
|
|
spf=pass smtp.mailfrom=starfivetech.com;
|
|
arc=fail smtp.client-ip=139.219.146.114
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
spf=pass smtp.mailfrom=starfivetech.com
|
|
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
|
|
b=AX2HxbF4wcxZAGRWQvRanOBFhaWLdOxn4JqvYbO+25pz5V4EESjO7QC+uJWf+rZs16g3/D+4OkC5uSvr5GXY4kiFaWdSpkjGVF2p+lv0+rNTD9KIwGsnbn4l7MvMuoisGo7GswVhET0mMX7Rf9d99bfA5cO3LOsroNwt3ZyvXBvrm0920m4Q8B1QkLOjTT+CKKBg78+Fs1dh4DEPaCNTAw6SM34qzNdOZ5drqcjOyQefLLmp0J7B4tomTd/yhGJPwvX3jrrYtapardNX3YKjpAcXO3uDAMP6wrj40reorFEwIENXZcHkJXIB2n+gHo9bTczJy1RIGA3XG5TPKw4kTg==
|
|
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
|
|
s=arcselector9901;
|
|
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
|
|
bh=AzDoPxR3Yw9qsHSucTZgXrB+6r4PYRhPc+CkYV1T8oc=;
|
|
b=TtZcYkuEWBj1x2TvyGRqIXIbv9j05G8Ix0qnK6hgB2+K7wRAtVP+SBgws0i6qzBI3V9Iw/fu6tDUVC7no0EYBOoFs0e3eDCGHZDypdajEhp2QnE5PGYxamh7yyfLgBksLPR42V7ZBWAwt33H2FEoE1XIemz88sUo9ZGSWa6wwnsZqRYwfTbxGxxNjLwL3kftOuqBzwEB/uMQRgDgdIFiwQej6MKeSiscxTy52IkOMwYI8x+IXu0zqRqavUvu2LjzsR8t982ngX6nUQ3xuUwf6JlEBHApSxu0mshQH84xHCHrC0T+vbg2elEvtffg/kHQEgKecPWOx/2GFLZ5hGcOKg==
|
|
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
|
|
smtp.mailfrom=starfivetech.com; dmarc=pass action=none
|
|
header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none
|
|
Authentication-Results: dkim=none (message not signed)
|
|
header.d=none;dmarc=none action=none header.from=starfivetech.com;
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15) by SHXPR01MB0496.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:1f::21) with Microsoft SMTP Server (version=TLS1_2,
|
|
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Thu, 28 Mar
|
|
2024 09:18:45 +0000
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
([fe80::c738:9e6b:f92e:8bb9]) by
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn ([fe80::c738:9e6b:f92e:8bb9%6])
|
|
with mapi id 15.20.7409.031; Thu, 28 Mar 2024 09:18:45 +0000
|
|
From: Minda Chen <minda.chen@starfivetech.com>
|
|
To: Lorenzo Pieralisi <lpieralisi@kernel.org>,
|
|
Conor Dooley <conor@kernel.org>,
|
|
=?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kw@linux.com>,
|
|
Rob Herring <robh+dt@kernel.org>, Bjorn Helgaas <bhelgaas@google.com>,
|
|
Thomas Gleixner <tglx@linutronix.de>,
|
|
Daire McNamara <daire.mcnamara@microchip.com>,
|
|
Emil Renner Berthing <emil.renner.berthing@canonical.com>,
|
|
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
|
|
Cc: devicetree@vger.kernel.org,
|
|
linux-kernel@vger.kernel.org,
|
|
linux-riscv@lists.infradead.org,
|
|
linux-pci@vger.kernel.org,
|
|
Paul Walmsley <paul.walmsley@sifive.com>,
|
|
Palmer Dabbelt <palmer@dabbelt.com>,
|
|
Albert Ou <aou@eecs.berkeley.edu>,
|
|
Philipp Zabel <p.zabel@pengutronix.de>,
|
|
Mason Huo <mason.huo@starfivetech.com>,
|
|
Leyfoon Tan <leyfoon.tan@starfivetech.com>,
|
|
Kevin Xie <kevin.xie@starfivetech.com>,
|
|
Minda Chen <minda.chen@starfivetech.com>
|
|
Subject: [PATCH v16 01/22] dt-bindings: PCI: Add PLDA XpressRICH PCIe host
|
|
common properties
|
|
Date: Thu, 28 Mar 2024 17:18:14 +0800
|
|
Message-Id: <20240328091835.14797-2-minda.chen@starfivetech.com>
|
|
X-Mailer: git-send-email 2.17.1
|
|
In-Reply-To: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
References: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
X-ClientProxiedBy: NT0PR01CA0020.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c510:c::16) To SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15)
|
|
Precedence: bulk
|
|
X-Mailing-List: linux-pci@vger.kernel.org
|
|
List-Id: <linux-pci.vger.kernel.org>
|
|
List-Subscribe: <mailto:linux-pci+subscribe@vger.kernel.org>
|
|
List-Unsubscribe: <mailto:linux-pci+unsubscribe@vger.kernel.org>
|
|
MIME-Version: 1.0
|
|
X-MS-PublicTrafficType: Email
|
|
X-MS-TrafficTypeDiagnostic: SHXPR01MB0863:EE_|SHXPR01MB0496:EE_
|
|
X-MS-Office365-Filtering-Correlation-Id: bfc79af4-ca3e-4708-7233-08dc4f081152
|
|
X-MS-Exchange-SenderADCheck: 1
|
|
X-Microsoft-Antispam: BCL:0;
|
|
X-Microsoft-Antispam-Message-Info:
|
|
04BPEbGE03+HvxLxpa6quZIoABmU2R4MIkSWUr/IE6hQOgTNVRPh+76BBGfD8ifLDMQ7yoIecSV3rY5mrXOjuQ+V6VBwix30zEWwwVi6ojsATn5IBFC909xPy0bbyAGSffc5jL2XkPHu11Dt2wkyGUmbNeUQGJa5Sc+Zlxkd/1XvbJ+PX+O9Gh7Ckmvg7jhkjC+ggIoJRCT701t11MiM4KE9+u6D/piGbJIhu33vEDc0g3Y+3KM1EIYAS1ZhkuQa7IUE7+oVIoQdhHI1OrPeJGpLs9UsFtMU5OVYf4Lj0VKCRS8+xzaWRkE5exr6EVtng0DTKW2XtMUuwWFj0b8FsXaBEG0+j6aJOnByQ3yTFL0jUMZW1nm3YdjVsEXrcG+Ye+CnZ52rpn1vtcnwqY+ZUsmH6nn58iiuiJXQ4QT2o2r9hCw+RpAZysXJMBFVnjgct19lCqt1RYuDBTmqg9TTNEi2K7dLz/a3wnBqr0jEmNdf3FZwX0keeJ5Os3ePLsbUmyi62828jxCpiALQotr8yk8Zo92Ukvd6wWG3KJQTUiST2E5nhQob+lx3Tqmljia8JoUQ/NSyRBnOxbHynlCEeb0wJ2W87eFv/9ovbISLqPOFiq9jMF46FFF9B99xYge7
|
|
X-Forefront-Antispam-Report:
|
|
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230031)(52116005)(1800799015)(7416005)(41320700004)(366007)(38350700005);DIR:OUT;SFP:1102;
|
|
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
|
|
X-MS-Exchange-AntiSpam-MessageData-0:
|
|
jC536hJMBur1kIOvj595WrMpNx+VYlS9KAsu4h9pInvr2vAKSoupyh/ndNTty9Zn2hQoY8fG9XyomUxBSJRNh7Ern7Mqj4lXnxc9Z/nSj75AKOxcLIoZ9obmBCQP/ufeEnU2P0DU2oShAEHQNCwpkAy7C9dwxnHx9l2zEoflbBU54BKjbutEFhggicmCp2iz9TOsZohE7PuER8DDvRFT4C9FtmBLDy2q7+lgMNpXsEzVKTeQrvIvG3E20tIdEdBzJwzJ0FUVp41GDhMmg1xgHZAwLXreLG/GxBBjxWryn9HNIc10+v0QyhNNTurIYssyZ2ZLz4EynL68U21+JmbaedChdVGnDW2fsGRDr0aR37Ning8tjOn9Yd6rROuWxhR9DkWKKVkERQZe2h4e+caMbbyNiaJ0xd9YUViqIs08QLHaAgN+4c5M7WJlM5JiQVDXwXIJ6650EJqoAefhqwLBF83ZVhe4iTTtHXxovbCJ1FeNmTc/ENIHMgD84J0o4KdOOdG0LoipzByrADOQQ36oixs6D4q3Gv3KqXc6WAoF93iQ5t1xH6Q61YSZE7+BNZ3AA7MyyXnCySDGe4TF1NIYSCcmAXBcb2BNEYhSH6mZOirLvb2WASUQi23MNqrM9nVy7xnV0bneGQZk97M5BKxU2ButvR5IUX8sbuhR/bZ1I1RSWAkl1v8JhVmxNr9Cj5PSatvUDgWBu6U+Ukb6BJ9dIAnWp3FxN4KiObDXBvEMUf97g/Vjlg2P1ZgDlujzOHcGC7cbdRe5uyITdECcDtMHIH9VuliPpvgPRzNhTExI4t3A1M1RAFGzK0C/TKqogNCtgYZ5wcsJGpYUdtpYZpJHGbkmnK2jy+58mjg5kL761GFAankPPG/s3lTbGaT88kp3IoSqhU1jjup3Ikv7tQWxS0lQ5PX9QGxGbjVSg9DkTvX7wPO6UoKEutCZdxjFH2AVYubbeG3Rr2nOl0s3PQnDY+nA22+y7jfT3Rm7/7qxzrPul3g48KQUAXJVr3ipK6TXKGHtNfYoRcpEaSNBYlXNK0SgtWhYbPZ0Eh8VWFNNKzF7WH4IAuY7SpAJUJU2FhLF7BXMTLmMPW3PTrq1Cr/1terEjshGoCC9TpsCJkn3/ELYpWOD+pVHptFMwDvLFK9UnJoWIp9Os29d2aG2IlykrmdZlwegcJ5Ne4bVoQoRkgZ+FfOGorsHTi2ucen7yWuxjkEMRiETPhR3aWyxd2qSwQTQhwjI3/aNAwFLskMiDKSoyC/OtA3VOEykNfzrXdsOTWakeQwbjD7ggQFmE35ywQ46bT4bvu8ybUAkE/B2nBu4PY5GIbFM9z2N/FG2TvYBlzwgxS+mOB2oosT6HS8dfnwfT/rBy7hHEVWByTwQFxkjf5z8JFm89FusofFp+UPox8HH0h0dBChRuIUuP8LQUJOk7IMpSzdTONdkvD8YoYWUK0PIWlbjV3w7tlWfsj8u/lV5ootFvTOwaJS4oNhVUOSCxeY7Zo4rzhO7djvlb6ifRglK/DWECv5STnUTaOj6bOeQrEb6MG77MR8oUhakPwTnYygzUW1SX9I4/yLueNwGFCifv9lKnfPEKmCCaFT1JQMpqCzqDQ03V6DBK2Y0BA==
|
|
X-OriginatorOrg: starfivetech.com
|
|
X-MS-Exchange-CrossTenant-Network-Message-Id:
|
|
bfc79af4-ca3e-4708-7233-08dc4f081152
|
|
X-MS-Exchange-CrossTenant-AuthSource:
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
X-MS-Exchange-CrossTenant-AuthAs: Internal
|
|
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2024 09:18:44.9798
|
|
(UTC)
|
|
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
|
|
X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c
|
|
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
|
|
X-MS-Exchange-CrossTenant-UserPrincipalName:
|
|
MpVczu0QHOn5pV2f8B+naM/HZXehpWcgNJpmmGbFb7SzhldRoQGSdpAf1bFoHdA47TUslqXcps6Phmc+fZUOgiIWFX9OSnuG4cEN5dgqdCI=
|
|
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SHXPR01MB0496
|
|
|
|
Add PLDA XpressRICH PCIe host common properties dt-binding doc.
|
|
PolarFire PCIe host using PLDA IP. Move common properties from Microchip
|
|
PolarFire PCIe host to PLDA files.
|
|
|
|
Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
|
|
Reviewed-by: Hal Feng <hal.feng@starfivetech.com>
|
|
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
|
|
Reviewed-by: Rob Herring <robh@kernel.org>
|
|
Tested-by: John Clark <inindev@gmail.com>
|
|
---
|
|
.../bindings/pci/microchip,pcie-host.yaml | 55 +-------------
|
|
.../pci/plda,xpressrich3-axi-common.yaml | 75 +++++++++++++++++++
|
|
MAINTAINERS | 6 ++
|
|
3 files changed, 82 insertions(+), 54 deletions(-)
|
|
create mode 100644 Documentation/devicetree/bindings/pci/plda,xpressrich3-axi-common.yaml
|
|
|
|
diff --git a/Documentation/devicetree/bindings/pci/microchip,pcie-host.yaml b/Documentation/devicetree/bindings/pci/microchip,pcie-host.yaml
|
|
index 5d7aec5f54e71..612633ba59e2c 100644
|
|
--- a/Documentation/devicetree/bindings/pci/microchip,pcie-host.yaml
|
|
+++ b/Documentation/devicetree/bindings/pci/microchip,pcie-host.yaml
|
|
@@ -10,21 +10,13 @@ maintainers:
|
|
- Daire McNamara <daire.mcnamara@microchip.com>
|
|
|
|
allOf:
|
|
- - $ref: /schemas/pci/pci-host-bridge.yaml#
|
|
+ - $ref: plda,xpressrich3-axi-common.yaml#
|
|
- $ref: /schemas/interrupt-controller/msi-controller.yaml#
|
|
|
|
properties:
|
|
compatible:
|
|
const: microchip,pcie-host-1.0 # PolarFire
|
|
|
|
- reg:
|
|
- maxItems: 2
|
|
-
|
|
- reg-names:
|
|
- items:
|
|
- - const: cfg
|
|
- - const: apb
|
|
-
|
|
clocks:
|
|
description:
|
|
Fabric Interface Controllers, FICs, are the interface between the FPGA
|
|
@@ -52,18 +44,6 @@ properties:
|
|
items:
|
|
pattern: '^fic[0-3]$'
|
|
|
|
- interrupts:
|
|
- minItems: 1
|
|
- items:
|
|
- - description: PCIe host controller
|
|
- - description: builtin MSI controller
|
|
-
|
|
- interrupt-names:
|
|
- minItems: 1
|
|
- items:
|
|
- - const: pcie
|
|
- - const: msi
|
|
-
|
|
ranges:
|
|
minItems: 1
|
|
maxItems: 3
|
|
@@ -72,39 +52,6 @@ properties:
|
|
minItems: 1
|
|
maxItems: 6
|
|
|
|
- msi-controller:
|
|
- description: Identifies the node as an MSI controller.
|
|
-
|
|
- msi-parent:
|
|
- description: MSI controller the device is capable of using.
|
|
-
|
|
- interrupt-controller:
|
|
- type: object
|
|
- properties:
|
|
- '#address-cells':
|
|
- const: 0
|
|
-
|
|
- '#interrupt-cells':
|
|
- const: 1
|
|
-
|
|
- interrupt-controller: true
|
|
-
|
|
- required:
|
|
- - '#address-cells'
|
|
- - '#interrupt-cells'
|
|
- - interrupt-controller
|
|
-
|
|
- additionalProperties: false
|
|
-
|
|
-required:
|
|
- - reg
|
|
- - reg-names
|
|
- - "#interrupt-cells"
|
|
- - interrupts
|
|
- - interrupt-map-mask
|
|
- - interrupt-map
|
|
- - msi-controller
|
|
-
|
|
unevaluatedProperties: false
|
|
|
|
examples:
|
|
diff --git a/Documentation/devicetree/bindings/pci/plda,xpressrich3-axi-common.yaml b/Documentation/devicetree/bindings/pci/plda,xpressrich3-axi-common.yaml
|
|
new file mode 100644
|
|
index 000000000000..31bb17b11e58
|
|
--- /dev/null
|
|
+++ b/Documentation/devicetree/bindings/pci/plda,xpressrich3-axi-common.yaml
|
|
@@ -0,0 +1,75 @@
|
|
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
|
+%YAML 1.2
|
|
+---
|
|
+$id: http://devicetree.org/schemas/pci/plda,xpressrich3-axi-common.yaml#
|
|
+$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
+
|
|
+title: PLDA XpressRICH PCIe host common properties
|
|
+
|
|
+maintainers:
|
|
+ - Daire McNamara <daire.mcnamara@microchip.com>
|
|
+ - Kevin Xie <kevin.xie@starfivetech.com>
|
|
+
|
|
+description:
|
|
+ Generic PLDA XpressRICH PCIe host common properties.
|
|
+
|
|
+allOf:
|
|
+ - $ref: /schemas/pci/pci-bus.yaml#
|
|
+
|
|
+properties:
|
|
+ reg:
|
|
+ maxItems: 2
|
|
+
|
|
+ reg-names:
|
|
+ items:
|
|
+ - const: cfg
|
|
+ - const: apb
|
|
+
|
|
+ interrupts:
|
|
+ minItems: 1
|
|
+ items:
|
|
+ - description: PCIe host controller
|
|
+ - description: builtin MSI controller
|
|
+
|
|
+ interrupt-names:
|
|
+ minItems: 1
|
|
+ items:
|
|
+ - const: pcie
|
|
+ - const: msi
|
|
+
|
|
+ msi-controller:
|
|
+ description: Identifies the node as an MSI controller.
|
|
+
|
|
+ msi-parent:
|
|
+ description: MSI controller the device is capable of using.
|
|
+
|
|
+ interrupt-controller:
|
|
+ type: object
|
|
+ properties:
|
|
+ '#address-cells':
|
|
+ const: 0
|
|
+
|
|
+ '#interrupt-cells':
|
|
+ const: 1
|
|
+
|
|
+ interrupt-controller: true
|
|
+
|
|
+ required:
|
|
+ - '#address-cells'
|
|
+ - '#interrupt-cells'
|
|
+ - interrupt-controller
|
|
+
|
|
+ additionalProperties: false
|
|
+
|
|
+required:
|
|
+ - reg
|
|
+ - reg-names
|
|
+ - interrupts
|
|
+ - msi-controller
|
|
+ - "#interrupt-cells"
|
|
+ - interrupt-map-mask
|
|
+ - interrupt-map
|
|
+
|
|
+additionalProperties: true
|
|
+
|
|
+...
|
|
diff --git a/MAINTAINERS b/MAINTAINERS
|
|
index aa3b947fb080..06278f1db13f 100644
|
|
--- a/MAINTAINERS
|
|
+++ b/MAINTAINERS
|
|
@@ -16946,6 +16946,12 @@ S: Maintained
|
|
F: Documentation/devicetree/bindings/pci/layerscape-pcie-gen4.txt
|
|
F: drivers/pci/controller/mobiveil/pcie-layerscape-gen4.c
|
|
|
|
+PCI DRIVER FOR PLDA PCIE IP
|
|
+M: Daire McNamara <daire.mcnamara@microchip.com>
|
|
+L: linux-pci@vger.kernel.org
|
|
+S: Maintained
|
|
+F: Documentation/devicetree/bindings/pci/plda,xpressrich3-axi-common.yaml
|
|
+
|
|
PCI DRIVER FOR RENESAS R-CAR
|
|
M: Marek Vasut <marek.vasut+renesas@gmail.com>
|
|
M: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
|
|
|
|
From patchwork Thu Mar 28 09:18:15 2024
|
|
Content-Type: text/plain; charset="utf-8"
|
|
MIME-Version: 1.0
|
|
Content-Transfer-Encoding: 7bit
|
|
X-Patchwork-Submitter: Minda Chen <minda.chen@starfivetech.com>
|
|
X-Patchwork-Id: 13608297
|
|
X-Patchwork-Delegate: kw@linux.com
|
|
Received: from CHN02-BJS-obe.outbound.protection.partner.outlook.cn
|
|
(mail-bjschn02on2124.outbound.protection.partner.outlook.cn [139.219.17.124])
|
|
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
|
|
(No client certificate requested)
|
|
by smtp.subspace.kernel.org (Postfix) with ESMTPS id D6F0F535DE;
|
|
Thu, 28 Mar 2024 09:33:18 +0000 (UTC)
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
arc=fail smtp.client-ip=139.219.17.124
|
|
ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
|
|
t=1711618402; cv=fail;
|
|
b=LqYFc1FVHL2nVpCTilnusQFkQ44FSww1wAvvLu7kfQApyY2SMVC/8Um2JFuWb7Ku94Z6kxOsMDLzOSBlrsJ+hUT7Yjm9dUuxD59mfrvxUwbLcdQijxzn/sHo1CrhNc2iJ0wSuPuHOxkQtULp26vV/qB4vJgroo5FjFiJtFjVRj0=
|
|
ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org;
|
|
s=arc-20240116; t=1711618402; c=relaxed/simple;
|
|
bh=gEit66vODnszpCd0ucr2+f4oEuxPscA1zlwujMHo3ys=;
|
|
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
|
|
Content-Type:MIME-Version;
|
|
b=O9UB0mmiPqovK8zlqFsImlVtDram0MMz2arzWsGf4DF7ecmJJGWWJ7g3V6dtevdiTUYG9OiF5tI3OgLZ+0SsC0Kyynk8GvZ5M2d3L7Pf3jp0d5B/wXIbxeag+Uk6EKQU+4pzrCNHdfYK9SrYRyNf4NG4RYK7zdnE3kGr7E7V+EI=
|
|
ARC-Authentication-Results: i=2; smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com;
|
|
spf=pass smtp.mailfrom=starfivetech.com;
|
|
arc=fail smtp.client-ip=139.219.17.124
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
spf=pass smtp.mailfrom=starfivetech.com
|
|
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
|
|
b=Z8a2WrG62mfgKVBRiccgVw0WTfGX8/9tXWs91R2AJoQy4Er4rTsVrER5/h9DZ3Nal9xlkLvkyR8bSExrS8mTLbWffAK+yzTXQliAIbg/Px9/ShIznYgME7AobD9pf500jtGOLdNhOQPIE0BLRz4KdraWtcfT4fugi2Dh9ny3w39hKtyT7OpOIXAlac8UnBS6TWpjY+aIrRwsf35DitGmUctmzywhha1EMNKHOWJtYGobKvpaLu1Sln/p+2+OzgTnAc+2hMZIxF79nOgHsXq5aLegoJ4Zu4vL2XvKCF0TGLLlko+yy75tluPBvqGMpo3I7bwl+Ih0+OqJblEJB8uJJw==
|
|
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
|
|
s=arcselector9901;
|
|
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
|
|
bh=Y0xQ+n7Z9xr/tqKO1GG6+qOqHTvU7sd+8IFwaPvoiPU=;
|
|
b=ggxUDmg/vXjcQ5zJOE+vUbspfloQfwjQ7/zj/9vGAuNtUoipYx394NMXk79l2Tc845wEfRuKuCoAvzXs7pal2fPjHW7m9y2tZiaxu/hHKq3KWbPjnTeev6JLN5hEowwxdUR/8pF87Z8QCnR7xtH0jd3EBdOuE+vp6DiYVQh+AUabBbmdTR1ohFaIURIRjQl9hEw9OI1/e35ptL5TKcukbyDEJFTMVaTf8YEV1pB1tmS4tWv0aInfi3zqsKxI1gkWkW2HeKoS9RBHjHNqSCQk+JOoC2EfTjIUTntRihHQl/eoxqm0KiwiHM+s7vi4FFluBfbi91U6RZqle0G2aQO3VA==
|
|
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
|
|
smtp.mailfrom=starfivetech.com; dmarc=pass action=none
|
|
header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none
|
|
Authentication-Results: dkim=none (message not signed)
|
|
header.d=none;dmarc=none action=none header.from=starfivetech.com;
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15) by SHXPR01MB0496.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:1f::21) with Microsoft SMTP Server (version=TLS1_2,
|
|
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Thu, 28 Mar
|
|
2024 09:18:46 +0000
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
([fe80::c738:9e6b:f92e:8bb9]) by
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn ([fe80::c738:9e6b:f92e:8bb9%6])
|
|
with mapi id 15.20.7409.031; Thu, 28 Mar 2024 09:18:46 +0000
|
|
From: Minda Chen <minda.chen@starfivetech.com>
|
|
To: Lorenzo Pieralisi <lpieralisi@kernel.org>,
|
|
Conor Dooley <conor@kernel.org>,
|
|
=?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kw@linux.com>,
|
|
Rob Herring <robh+dt@kernel.org>, Bjorn Helgaas <bhelgaas@google.com>,
|
|
Thomas Gleixner <tglx@linutronix.de>,
|
|
Daire McNamara <daire.mcnamara@microchip.com>,
|
|
Emil Renner Berthing <emil.renner.berthing@canonical.com>,
|
|
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
|
|
Cc: devicetree@vger.kernel.org,
|
|
linux-kernel@vger.kernel.org,
|
|
linux-riscv@lists.infradead.org,
|
|
linux-pci@vger.kernel.org,
|
|
Paul Walmsley <paul.walmsley@sifive.com>,
|
|
Palmer Dabbelt <palmer@dabbelt.com>,
|
|
Albert Ou <aou@eecs.berkeley.edu>,
|
|
Philipp Zabel <p.zabel@pengutronix.de>,
|
|
Mason Huo <mason.huo@starfivetech.com>,
|
|
Leyfoon Tan <leyfoon.tan@starfivetech.com>,
|
|
Kevin Xie <kevin.xie@starfivetech.com>,
|
|
Minda Chen <minda.chen@starfivetech.com>
|
|
Subject: [PATCH v16 02/22] PCI: microchip: Move pcie-microchip-host.c to plda
|
|
directory
|
|
Date: Thu, 28 Mar 2024 17:18:15 +0800
|
|
Message-Id: <20240328091835.14797-3-minda.chen@starfivetech.com>
|
|
X-Mailer: git-send-email 2.17.1
|
|
In-Reply-To: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
References: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
X-ClientProxiedBy: NT0PR01CA0020.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c510:c::16) To SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15)
|
|
Precedence: bulk
|
|
X-Mailing-List: linux-pci@vger.kernel.org
|
|
List-Id: <linux-pci.vger.kernel.org>
|
|
List-Subscribe: <mailto:linux-pci+subscribe@vger.kernel.org>
|
|
List-Unsubscribe: <mailto:linux-pci+unsubscribe@vger.kernel.org>
|
|
MIME-Version: 1.0
|
|
X-MS-PublicTrafficType: Email
|
|
X-MS-TrafficTypeDiagnostic: SHXPR01MB0863:EE_|SHXPR01MB0496:EE_
|
|
X-MS-Office365-Filtering-Correlation-Id: fd71faf1-982b-4b89-0c56-08dc4f0811e9
|
|
X-MS-Exchange-SenderADCheck: 1
|
|
X-Microsoft-Antispam: BCL:0;
|
|
X-Microsoft-Antispam-Message-Info:
|
|
680hlDLRwuCT3fowQQIvfcaZ+WsFtzljXdlry5Q9gPRgR0zl+xUNq5/Ww1reV7ublXfrZFV7cSQmnDl+ppdjIsevZoBegVz9K25FbRZzFd0M+vCLBbpP8Yj9zHZ6LKbQhuaXAm3cfBUhDmD8tmEgP4sGsu1dR5RhUtFLAHsjieOstCW/V/qgtt1rYwe4hdAkLZ3qp+pgFO8vjs9KlHB5Nb3CoV8rrQU+h+7ZePxr2EayU+61gJl1GCcB+6eY3mXkBETBkQhHrdpemPyVkXgTX1xLI82IsSpmDuou8w96GsNIxUST8gEi/zuytp8uM9P3ZTTQhO2znPFzQF7B9Z6DbtjHX/XXH8W/13WvvRAcJX2MRBbGxh7xBEM8D5S3pWmJ4IAspVSO29sji372f2g0AjPaTDJ7BVDtkJZl95SnScRIeoR3JbZ6j5aF7zk8S3TOMAtsFYbkmNy2wtAUawKGmXLGtoCkGChwzwPhV1/xysQy1x02lcD/xGN6ZLE+S5tpgKyZIzHypQVdHgNAKVAf67BE5EA1exJhlT4GDLm3i8DxTmBXB2N4c8gx3qhP9xHeypJjY7LUoKTkOqR8UrfY7ehKGujecHLhwtT8N6AulFBDlKvtpQggdtweZiMCh0sM
|
|
X-Forefront-Antispam-Report:
|
|
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230031)(52116005)(1800799015)(7416005)(41320700004)(366007)(38350700005);DIR:OUT;SFP:1102;
|
|
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
|
|
X-MS-Exchange-AntiSpam-MessageData-0:
|
|
wrDTMtPcou/msgBhE3arEgQCYw5uq07V82MU0fVkThlSFwQz+Mo/RBnpg47v7AY3j5eF/aYgTCE4KpsX4Eki5SocxOIgKhc0Ed/b/bdoXguvxdjz8On97v5UfRiA28w+bdmPFRVAWsA1aDmALnzuuljafknvKMPbq4ywSvNvzseOsuEzxjt0yBK3WzA718ZtrMz1MGyrBsMXQxpBPApIeqSW8Rp76kLVNE1LjB/tFAn0O9IxXibC/yx6HYQ5oxkZdkoUYbN/2q8yOEiiJJMA+08082h72yjUciOzy/qMEy0iMjGgn0Pdug0Kd0yuaJ7xJXApahm+DQmNjgdxr9Q18+fhIJ0SiHBMjh6lJj7exXZJ7OfpCEukjjWWznSf2rjwdG+Wf7xqKOTExyuZKCIyZGGCkL8p/0cPCFmBs4gSawEktouK1gS+4ZqIL67I1EWHjtt0khqZBThdQ6EIauev2dEhd0yLUw7XF4jfdKCYQTPSzR6dMvKkWIO/16mIPTP700uPtj19AH5VscGc2s4KGY0FpbmEGh2ynaGWk21NFQhe7c14sExcoWll3rfcuStFPAAtHUypTTz1DMvYys8/WJWwAQruIQkoyWzODrKQ24Y6yaOCQVCitB+1S2AzVgyZ3YpZFMPXur+5a5rkbzbvJ54ptRECyt18F1eUv4ztUAsrFXKCBMoESU+wjc3YXuPpzrF3C2f7TTfTNFEEfLdluKlEExXB+MaFPsSb+g3VtQC/TkWv/hEydVFJIcFCxnmrTFIL5Ti4QaU0kJg/YKPSbK/r9er8dNDv9ubE9iymED9qeHJHLrM2FWbMS3IebqTmCd9Dz2XKW0xdeupLX85qxj3n2aj0k8hm0m85feblqJYbTA+bexS+h0BMasDz0HZVu4RIKfpI8p6UVuJNv9KJKrVLqqdSUbNmMRY5fsZQjDrZ7nQW9uyG/2kglb9VqVGhMQf0o45KFYrBwlHkRfeDtQWsGNhWeDTSuvR5ZB3FbLs9AO8NfsonS2zxX8iWi0aIwtUIFuMRH3paiqZm/zlEbOMHzZUMQUqIUeMHAPrFyhEwoRRwc8hYlul1S7z62/Kr67UotM6vqFVqXUxJ/JNxzC4Gefj9E/TnjIXdlnT3TyKBMjRnOl2sjOepPdd3bfWXeM2hDn1h4zuzh65KB+4Yzgz9paNTQVgJupmyU53PpRN7EH+5UVj90tSnre3AF+jb+5j5cS9SVBZmrcSrKXCJLdnkzaGx8UtXXhZkP5JAGYEiB4V2qJ4QbPFK5rzBfvjHoo7AK2wk+0Htl3QuClaoVZT+ToibPVSymQ00Ks21uyI9eUvA9on30SXiDG81nFl0h2V5GVBUXYEp3PaD8kihQtakEZzOS1Y4SYfh9zITbYpqEAbCYFrlKT/IS9ZvDR1uury0tLfqYGDrEaXcsyrj0MRXclCQrB4KENdSudzhlMmef0Woh00NuLpjrWUqU2waWHUhgOTs0bVZ+SWa9W5Om1bV2+/A+hnn+88sJNp8FDg6F2WbKpdQjEsS/L0kSSmQfJxiRBl4bUmw/lM5UPTCEtRL0HjeChY0L77EAR5EgWZ2LO6pithBaDj4vjmioIlaPq1BAUXqsd5w9TDxWBZXoA==
|
|
X-OriginatorOrg: starfivetech.com
|
|
X-MS-Exchange-CrossTenant-Network-Message-Id:
|
|
fd71faf1-982b-4b89-0c56-08dc4f0811e9
|
|
X-MS-Exchange-CrossTenant-AuthSource:
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
X-MS-Exchange-CrossTenant-AuthAs: Internal
|
|
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2024 09:18:45.9663
|
|
(UTC)
|
|
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
|
|
X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c
|
|
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
|
|
X-MS-Exchange-CrossTenant-UserPrincipalName:
|
|
aTtpTG5maX9EC9DQy4sR7poYi1XZywHrDk2sUdnMMaN/sLSIeOTLb6KRRr605i8rthOsj6A3g7VtM+hUATWGoPi1nycxtesML/eYxWEleks=
|
|
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SHXPR01MB0496
|
|
|
|
Since Microchip Polarfire PCIe host is PLDA XpressRich IP, move to
|
|
PLDA directory. Prepare for refactoring the codes.
|
|
|
|
Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
|
|
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
|
|
---
|
|
MAINTAINERS | 4 ++--
|
|
drivers/pci/controller/Kconfig | 9 +--------
|
|
drivers/pci/controller/Makefile | 2 +-
|
|
drivers/pci/controller/plda/Kconfig | 14 ++++++++++++++
|
|
drivers/pci/controller/plda/Makefile | 2 ++
|
|
.../controller/{ => plda}/pcie-microchip-host.c | 2 +-
|
|
6 files changed, 21 insertions(+), 12 deletions(-)
|
|
create mode 100644 drivers/pci/controller/plda/Kconfig
|
|
create mode 100644 drivers/pci/controller/plda/Makefile
|
|
rename drivers/pci/controller/{ => plda}/pcie-microchip-host.c (99%)
|
|
|
|
diff --git a/MAINTAINERS b/MAINTAINERS
|
|
index 06278f1db13f..dd158cc7b009 100644
|
|
--- a/MAINTAINERS
|
|
+++ b/MAINTAINERS
|
|
@@ -17183,7 +17183,7 @@ M: Daire McNamara <daire.mcnamara@microchip.com>
|
|
L: linux-pci@vger.kernel.org
|
|
S: Supported
|
|
F: Documentation/devicetree/bindings/pci/microchip*
|
|
-F: drivers/pci/controller/*microchip*
|
|
+F: drivers/pci/controller/plda/*microchip*
|
|
|
|
PCIE DRIVER FOR QUALCOMM MSM
|
|
M: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
|
|
@@ -18963,7 +18963,7 @@ F: drivers/clk/microchip/clk-mpfs*.c
|
|
F: drivers/firmware/microchip/mpfs-auto-update.c
|
|
F: drivers/i2c/busses/i2c-microchip-corei2c.c
|
|
F: drivers/mailbox/mailbox-mpfs.c
|
|
-F: drivers/pci/controller/pcie-microchip-host.c
|
|
+F: drivers/pci/controller/plda/pcie-microchip-host.c
|
|
F: drivers/pwm/pwm-microchip-core.c
|
|
F: drivers/reset/reset-mpfs.c
|
|
F: drivers/rtc/rtc-mpfs.c
|
|
diff --git a/drivers/pci/controller/Kconfig b/drivers/pci/controller/Kconfig
|
|
index e534c02ee34f..4d2c188f5835 100644
|
|
--- a/drivers/pci/controller/Kconfig
|
|
+++ b/drivers/pci/controller/Kconfig
|
|
@@ -215,14 +215,6 @@ config PCIE_MT7621
|
|
help
|
|
This selects a driver for the MediaTek MT7621 PCIe Controller.
|
|
|
|
-config PCIE_MICROCHIP_HOST
|
|
- tristate "Microchip AXI PCIe controller"
|
|
- depends on PCI_MSI && OF
|
|
- select PCI_HOST_COMMON
|
|
- help
|
|
- Say Y here if you want kernel to support the Microchip AXI PCIe
|
|
- Host Bridge driver.
|
|
-
|
|
config PCI_HYPERV_INTERFACE
|
|
tristate "Microsoft Hyper-V PCI Interface"
|
|
depends on ((X86 && X86_64) || ARM64) && HYPERV && PCI_MSI
|
|
@@ -356,4 +348,5 @@ config PCIE_XILINX_CPM
|
|
source "drivers/pci/controller/cadence/Kconfig"
|
|
source "drivers/pci/controller/dwc/Kconfig"
|
|
source "drivers/pci/controller/mobiveil/Kconfig"
|
|
+source "drivers/pci/controller/plda/Kconfig"
|
|
endmenu
|
|
diff --git a/drivers/pci/controller/Makefile b/drivers/pci/controller/Makefile
|
|
index f2b19e6174af..038ccbd9e3ba 100644
|
|
--- a/drivers/pci/controller/Makefile
|
|
+++ b/drivers/pci/controller/Makefile
|
|
@@ -33,7 +33,6 @@ obj-$(CONFIG_PCIE_ROCKCHIP_EP) += pcie-rockchip-ep.o
|
|
obj-$(CONFIG_PCIE_ROCKCHIP_HOST) += pcie-rockchip-host.o
|
|
obj-$(CONFIG_PCIE_MEDIATEK) += pcie-mediatek.o
|
|
obj-$(CONFIG_PCIE_MEDIATEK_GEN3) += pcie-mediatek-gen3.o
|
|
-obj-$(CONFIG_PCIE_MICROCHIP_HOST) += pcie-microchip-host.o
|
|
obj-$(CONFIG_VMD) += vmd.o
|
|
obj-$(CONFIG_PCIE_BRCMSTB) += pcie-brcmstb.o
|
|
obj-$(CONFIG_PCI_LOONGSON) += pci-loongson.o
|
|
@@ -44,6 +43,7 @@ obj-$(CONFIG_PCIE_MT7621) += pcie-mt7621.o
|
|
# pcie-hisi.o quirks are needed even without CONFIG_PCIE_DW
|
|
obj-y += dwc/
|
|
obj-y += mobiveil/
|
|
+obj-y += plda/
|
|
|
|
|
|
# The following drivers are for devices that use the generic ACPI
|
|
diff --git a/drivers/pci/controller/plda/Kconfig b/drivers/pci/controller/plda/Kconfig
|
|
new file mode 100644
|
|
index 000000000000..5cb3be4fc98c
|
|
--- /dev/null
|
|
+++ b/drivers/pci/controller/plda/Kconfig
|
|
@@ -0,0 +1,14 @@
|
|
+# SPDX-License-Identifier: GPL-2.0
|
|
+
|
|
+menu "PLDA-based PCIe controllers"
|
|
+ depends on PCI
|
|
+
|
|
+config PCIE_MICROCHIP_HOST
|
|
+ tristate "Microchip AXI PCIe controller"
|
|
+ depends on PCI_MSI && OF
|
|
+ select PCI_HOST_COMMON
|
|
+ help
|
|
+ Say Y here if you want kernel to support the Microchip AXI PCIe
|
|
+ Host Bridge driver.
|
|
+
|
|
+endmenu
|
|
diff --git a/drivers/pci/controller/plda/Makefile b/drivers/pci/controller/plda/Makefile
|
|
new file mode 100644
|
|
index 000000000000..e1a265cbf91c
|
|
--- /dev/null
|
|
+++ b/drivers/pci/controller/plda/Makefile
|
|
@@ -0,0 +1,2 @@
|
|
+# SPDX-License-Identifier: GPL-2.0
|
|
+obj-$(CONFIG_PCIE_MICROCHIP_HOST) += pcie-microchip-host.o
|
|
diff --git a/drivers/pci/controller/pcie-microchip-host.c b/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
similarity index 99%
|
|
rename from drivers/pci/controller/pcie-microchip-host.c
|
|
rename to drivers/pci/controller/plda/pcie-microchip-host.c
|
|
index 137fb8570ba2..cb09a8137e25 100644
|
|
--- a/drivers/pci/controller/pcie-microchip-host.c
|
|
+++ b/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
@@ -18,7 +18,7 @@
|
|
#include <linux/pci-ecam.h>
|
|
#include <linux/platform_device.h>
|
|
|
|
-#include "../pci.h"
|
|
+#include "../../pci.h"
|
|
|
|
/* Number of MSI IRQs */
|
|
#define MC_MAX_NUM_MSI_IRQS 32
|
|
|
|
From patchwork Thu Mar 28 09:18:16 2024
|
|
Content-Type: text/plain; charset="utf-8"
|
|
MIME-Version: 1.0
|
|
Content-Transfer-Encoding: 7bit
|
|
X-Patchwork-Submitter: Minda Chen <minda.chen@starfivetech.com>
|
|
X-Patchwork-Id: 13608237
|
|
X-Patchwork-Delegate: kw@linux.com
|
|
Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn
|
|
(mail-sh0chn02on2114.outbound.protection.partner.outlook.cn
|
|
[139.219.146.114])
|
|
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
|
|
(No client certificate requested)
|
|
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7CC7465190;
|
|
Thu, 28 Mar 2024 09:19:01 +0000 (UTC)
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
arc=fail smtp.client-ip=139.219.146.114
|
|
ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
|
|
t=1711617544; cv=fail;
|
|
b=kajHIGIuN0YsWDSFuWnZJ/lxr16eeVWAP3gmiwz+jIoXcZvj25c6j9OF6vvkM+H7ZGQMeYGOWpktVVfZZzjXQdToKi+r7bizd9iYINbLopSuSvxiEQ9qXzD1SyNw7rS0pTnuTEGVFl56FeNGMGbzgR3cUst1DBRoYmvZ3L/T7wI=
|
|
ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org;
|
|
s=arc-20240116; t=1711617544; c=relaxed/simple;
|
|
bh=mZVP9mVmY3/pMTD7iw0Dl1X5GonWjA2miVBBPQjZy7o=;
|
|
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
|
|
Content-Type:MIME-Version;
|
|
b=b2gr/FC1KOFCBob1P8BI+2VpluS4Guz2NIkHxhahEYsXIyuTah+O/kjHEr9cRgKOFC5RAAvXDQSQBWTogc6AMpGKMFIg/kPLHIFNKwn3KVbKv7hWVjBYGN3H3WRx8QHrUY4jnbIjIpG/vJCeZYX61v/pppOV14ChyWRp0/qOtsY=
|
|
ARC-Authentication-Results: i=2; smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com;
|
|
spf=pass smtp.mailfrom=starfivetech.com;
|
|
arc=fail smtp.client-ip=139.219.146.114
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
spf=pass smtp.mailfrom=starfivetech.com
|
|
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
|
|
b=n8TFlcdivS6tx+X1sOaO5tFlNogmFWNo7+KkRq9YT5OfSnGn5JiOqetohmwsDx0H02A+kxCVIVvcbywsBRAg0xtf8WohhAfyLamGdWVC2SPNIKMyNoJLz5f1tcI6f4Lqq0lNImbXnEU8HoXuF1DpLilZGAU5Wm+zeoSYiQ/zMFx78xTUrUb73M/F7/mw26fpwtIBFrs9kpERI51IHl/5S+wotrBfFGaBCJGFz/O4LRV1w8B4gkgaCaqLi2d/+uz3BMZYMM6gBKmlUwasjGOm6rURp25ViJhW8Qjr+emZQnozDKNAs1M18QvKTpZ9gO285/0v06Q3fGBycfkan57qwQ==
|
|
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
|
|
s=arcselector9901;
|
|
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
|
|
bh=OAk/xwn7GWZglTkzp3uu6d0eYZa6xFACZDWJOfpZXJo=;
|
|
b=AMiBXMlDA6oyQLSL624dbPcwptgpuDkJ/WH4Zb+cAEO71VAPrg5ED3gnWUD43nGiLSH0HM4k0XmRZ5uNU/7I9+1rOfpJZDzjiyYzR9MjzvQUQXNUiIANyMZpTM6UImQvM8M210DfjdZL+Xe+CcI7uSo6h+pvdUraO+Zwx8Zz2fOTUAyCl1irfyquXoRcab9D6oOJM9kCsyrFDYCguapJGRWnGEBA+7nOIHrV9vbIMK8lWMi/uXIgyaT8BNolQaMNTRvcNFgzJ2wIe+1zbSnyOxW6SQcp5c+0OKrNbMDGnUSxiQsopTGcojtw5KKcFSJjBa/yz3Ks7vpkvQ+OhxkPaQ==
|
|
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
|
|
smtp.mailfrom=starfivetech.com; dmarc=pass action=none
|
|
header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none
|
|
Authentication-Results: dkim=none (message not signed)
|
|
header.d=none;dmarc=none action=none header.from=starfivetech.com;
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15) by SHXPR01MB0496.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:1f::21) with Microsoft SMTP Server (version=TLS1_2,
|
|
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Thu, 28 Mar
|
|
2024 09:18:47 +0000
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
([fe80::c738:9e6b:f92e:8bb9]) by
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn ([fe80::c738:9e6b:f92e:8bb9%6])
|
|
with mapi id 15.20.7409.031; Thu, 28 Mar 2024 09:18:47 +0000
|
|
From: Minda Chen <minda.chen@starfivetech.com>
|
|
To: Lorenzo Pieralisi <lpieralisi@kernel.org>,
|
|
Conor Dooley <conor@kernel.org>,
|
|
=?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kw@linux.com>,
|
|
Rob Herring <robh+dt@kernel.org>, Bjorn Helgaas <bhelgaas@google.com>,
|
|
Thomas Gleixner <tglx@linutronix.de>,
|
|
Daire McNamara <daire.mcnamara@microchip.com>,
|
|
Emil Renner Berthing <emil.renner.berthing@canonical.com>,
|
|
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
|
|
Cc: devicetree@vger.kernel.org,
|
|
linux-kernel@vger.kernel.org,
|
|
linux-riscv@lists.infradead.org,
|
|
linux-pci@vger.kernel.org,
|
|
Paul Walmsley <paul.walmsley@sifive.com>,
|
|
Palmer Dabbelt <palmer@dabbelt.com>,
|
|
Albert Ou <aou@eecs.berkeley.edu>,
|
|
Philipp Zabel <p.zabel@pengutronix.de>,
|
|
Mason Huo <mason.huo@starfivetech.com>,
|
|
Leyfoon Tan <leyfoon.tan@starfivetech.com>,
|
|
Kevin Xie <kevin.xie@starfivetech.com>,
|
|
Minda Chen <minda.chen@starfivetech.com>
|
|
Subject: [PATCH v16 03/22] PCI: microchip: Move PLDA IP register macros to
|
|
pcie-plda.h
|
|
Date: Thu, 28 Mar 2024 17:18:16 +0800
|
|
Message-Id: <20240328091835.14797-4-minda.chen@starfivetech.com>
|
|
X-Mailer: git-send-email 2.17.1
|
|
In-Reply-To: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
References: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
X-ClientProxiedBy: NT0PR01CA0020.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c510:c::16) To SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15)
|
|
Precedence: bulk
|
|
X-Mailing-List: linux-pci@vger.kernel.org
|
|
List-Id: <linux-pci.vger.kernel.org>
|
|
List-Subscribe: <mailto:linux-pci+subscribe@vger.kernel.org>
|
|
List-Unsubscribe: <mailto:linux-pci+unsubscribe@vger.kernel.org>
|
|
MIME-Version: 1.0
|
|
X-MS-PublicTrafficType: Email
|
|
X-MS-TrafficTypeDiagnostic: SHXPR01MB0863:EE_|SHXPR01MB0496:EE_
|
|
X-MS-Office365-Filtering-Correlation-Id: 20346f6f-0279-46c2-581a-08dc4f081280
|
|
X-MS-Exchange-SenderADCheck: 1
|
|
X-Microsoft-Antispam: BCL:0;
|
|
X-Microsoft-Antispam-Message-Info:
|
|
Zi9q3aBW9H3FecrRyjD2B8gabDDGKtlFDzxFRSfkcRwACsslCn891w3DYOCPbrvm/r6MujgV7tYscLvygIyFokE08PzHiASKC1pdyDYLCIKu0QbwSMaS9QZmXlUZ6t3vA++IbTmNSlyaHnXLK/9xq9nmQZPnj3ozG5KTWEcMEB5QD/kOgXHyXFhUAN5/leWAd+mJyGAT2E+1Dwxf2sxo2cwYqMzCHuVK6B9WaQBgvCBnqUpyylXNjgeXD+RelJSoNzS6xZcGrbshMAYfArfWalCGTD90G/BqyizYgLxkZlnW1mRVbESbLISTuJj+DgQDVqduVGDE9nAWXt2jMFwxiFDW6Ot4YwUuNp//3WkBuITmeyk2M8+VRXi2TQuj71JbZtE1KZU3+YeVG8Zl/XVMlpHm7IqaF5QshDvRlIHz8+O7IGqVbr7pD+LXwlhmf086q6z6pyjkoTQGpYF/9h/u5XxOADlZQQtqKAOWIjMzts6KZ5fRrodWRXMNrwIbhATCgCfMFZDjgH1OWq6Ir8/Nk/oeOG5X8hm4aBFJTcJ2P+xsTDaQAiLIrdLZbrA7P0GBufT8aHyZ57gMhEM2aYWuZnxH3DF57OEFZsM/ROxb+wKyuN7C9g4v3OC4deLWALnh
|
|
X-Forefront-Antispam-Report:
|
|
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230031)(52116005)(1800799015)(7416005)(41320700004)(366007)(38350700005);DIR:OUT;SFP:1102;
|
|
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
|
|
X-MS-Exchange-AntiSpam-MessageData-0:
|
|
HkogxtgrirA8kZWoc+6A9RLqPcB2W2elK39BL3oCnihKXZdfMI3MATjHeyU9GayRK7T6ZGqpNwwyc6mqah525Z5IKXQx1Ls+uiu4EyX2k/uaVCXcCEagPFG5xisR0c3vpAzSTBxAP6Na3w6ib2v+jXNhjkp5ZF25tvC6tLMaHQtji2lwcbezSWqH2T7GHXNdZwq0KrP5kYAX16JYpT9F43hKd13eMWpkjSjRINI8YcLlwCVTUckAJUHiBw9uyYUoNopTSaaJXf+xWdqvbg1JnHy+zh3nJEBmFYNmvqDGmZO9iSzNEKStzPYSj5jxgWyK692l7G+ZGJTr+/4vyrnZJqQYjy0JLZSpIV89kuOUMLYCKVmkVtt/pkogFVuCgzHMHSYuK5phyHdYWV+6EIDm3q2V5TIq9Yf7b1AK9/AQQQgd2E4XKfENMHk6ce+hUu7IyKqHf30HrNT0V2MfA8KPcbPgst9O2jDYE4iOdXd7D23IgvYEERTB2kJKHVuBf2kSCUlGOWMqWnOEghz5UJS1EUbn3WxIjXRNjPxG6vXIXBeDEyJbAlxb81uc3gXzCore1bnj0uUbLGxw6nRtGvmEz0mr1ZykWG9QTuAmqihjWgKsgzDNuHFrjekRN2b91afmj/bpFdtLk4G29StjJ5B70nX6wIZG4h2Q1lYeCGY31UVLO62PfCSfSeymQ9lArDWOvzmbYrsQEYW8/MAIwbVHRqsoE/uXFpYFh03dZFviNLIRLjB+xVBfr7Si/xFDX2AKWTImr6m1g/9FW0NCcj61318MRXMDFOR1c8ASGATIPhdqviPzslhcLIU5KxTnwVugD/ajoLSoImZLpkHJ1//17Rr1qDgO7vm9778hGdZ9ZkwZsLSHZ5m8fQxKlOhOfQQexZ9GuG+MGWrRhgxjfJNEE1pAB6orOviSEXAZE/7Dc6tjHkQYOw5pjLMYRnQH8NZWo4hu8iqEqczLcCxF7obl6929EfmJY+pD2POutcoLgc8XhOogC3DekKXSJOSzFCNgbIfBdvxSItPg70zwlCHirF+gw2gwGjqBt4R48JhoiwqgbpnEvkjfMwvKC0C18+IzYdeGloVnPGyB0j5wQSp/d+JzVrscmq2jWtRRJhS2HQSRf2bARsoGJMI6NQKWk6c6Nss5mtW34IgjtAw6Vl3KsWjIcNQXhSgfXVa4P0lraW/He2Y5pmX5Hg+N7LUTFdw8C2khMIFQVxYa+Wi7tqeY28NGY21D4Au7n99HCyG9aLmkCbWtuYcmIX0XDZplQMez7dbltcq6YSkheGo4LN7/Djklj2nwk49V8FuGe34W9Z6idM7/Yr7CB9uAp1OhcPAruCRo47V1Zt9pgOeFpf1ESUWRnjkutdWzytysi7m9/Wbtd8sVCcB93PcKGngffkS4nTKowdp5fkhnXwCHre6cJWroKLmlRLcNDQR6rOks2ixLTfh3nvU/3OMIhdhfhF4yKVgop6dxO2X1LQZNfePJ7RNmSkkroknOs+zHOhjJZC6BlqeP8ml050MC13Og2XlmlqYE0crIg0PFNMrfb+STBTZNS7p9Mo9EjudHuOV77h65Pgix2mzcJgdevVwB1Y/dmxieZd5N3MPJd0w32wG2vw==
|
|
X-OriginatorOrg: starfivetech.com
|
|
X-MS-Exchange-CrossTenant-Network-Message-Id:
|
|
20346f6f-0279-46c2-581a-08dc4f081280
|
|
X-MS-Exchange-CrossTenant-AuthSource:
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
X-MS-Exchange-CrossTenant-AuthAs: Internal
|
|
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2024 09:18:46.9632
|
|
(UTC)
|
|
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
|
|
X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c
|
|
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
|
|
X-MS-Exchange-CrossTenant-UserPrincipalName:
|
|
rXUgtRani3aIcYJmLkQUjdkUYL4knuHV27DXp5nOrPiHirO8Z11a5kvnQZGyZxSu1FlpfFcF8VpMiCXD8H6hokaFG/iBLeAlK9O+5Tjz5ug=
|
|
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SHXPR01MB0496
|
|
|
|
Move PLDA PCIe host controller IP registers macros to pcie-plda.h,
|
|
including bridge registers and PLDA IRQ event number.
|
|
|
|
Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
|
|
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
|
|
---
|
|
MAINTAINERS | 1 +
|
|
.../pci/controller/plda/pcie-microchip-host.c | 108 +++---------------
|
|
drivers/pci/controller/plda/pcie-plda.h | 108 ++++++++++++++++++
|
|
3 files changed, 125 insertions(+), 92 deletions(-)
|
|
create mode 100644 drivers/pci/controller/plda/pcie-plda.h
|
|
|
|
diff --git a/MAINTAINERS b/MAINTAINERS
|
|
index dd158cc7b009..1fa4d61291f9 100644
|
|
--- a/MAINTAINERS
|
|
+++ b/MAINTAINERS
|
|
@@ -16951,6 +16951,7 @@ M: Daire McNamara <daire.mcnamara@microchip.com>
|
|
L: linux-pci@vger.kernel.org
|
|
S: Maintained
|
|
F: Documentation/devicetree/bindings/pci/plda,xpressrich3-axi-common.yaml
|
|
+F: drivers/pci/controller/plda/pcie-plda.h
|
|
|
|
PCI DRIVER FOR RENESAS R-CAR
|
|
M: Marek Vasut <marek.vasut+renesas@gmail.com>
|
|
diff --git a/drivers/pci/controller/plda/pcie-microchip-host.c b/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
index cb09a8137e25..d9030d550482 100644
|
|
--- a/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
+++ b/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
@@ -19,6 +19,7 @@
|
|
#include <linux/platform_device.h>
|
|
|
|
#include "../../pci.h"
|
|
+#include "pcie-plda.h"
|
|
|
|
/* Number of MSI IRQs */
|
|
#define MC_MAX_NUM_MSI_IRQS 32
|
|
@@ -30,84 +31,6 @@
|
|
#define MC_PCIE_BRIDGE_ADDR (MC_PCIE1_BRIDGE_ADDR)
|
|
#define MC_PCIE_CTRL_ADDR (MC_PCIE1_CTRL_ADDR)
|
|
|
|
-/* PCIe Bridge Phy Regs */
|
|
-#define PCIE_PCI_IRQ_DW0 0xa8
|
|
-#define MSIX_CAP_MASK BIT(31)
|
|
-#define NUM_MSI_MSGS_MASK GENMASK(6, 4)
|
|
-#define NUM_MSI_MSGS_SHIFT 4
|
|
-
|
|
-#define IMASK_LOCAL 0x180
|
|
-#define DMA_END_ENGINE_0_MASK 0x00000000u
|
|
-#define DMA_END_ENGINE_0_SHIFT 0
|
|
-#define DMA_END_ENGINE_1_MASK 0x00000000u
|
|
-#define DMA_END_ENGINE_1_SHIFT 1
|
|
-#define DMA_ERROR_ENGINE_0_MASK 0x00000100u
|
|
-#define DMA_ERROR_ENGINE_0_SHIFT 8
|
|
-#define DMA_ERROR_ENGINE_1_MASK 0x00000200u
|
|
-#define DMA_ERROR_ENGINE_1_SHIFT 9
|
|
-#define A_ATR_EVT_POST_ERR_MASK 0x00010000u
|
|
-#define A_ATR_EVT_POST_ERR_SHIFT 16
|
|
-#define A_ATR_EVT_FETCH_ERR_MASK 0x00020000u
|
|
-#define A_ATR_EVT_FETCH_ERR_SHIFT 17
|
|
-#define A_ATR_EVT_DISCARD_ERR_MASK 0x00040000u
|
|
-#define A_ATR_EVT_DISCARD_ERR_SHIFT 18
|
|
-#define A_ATR_EVT_DOORBELL_MASK 0x00000000u
|
|
-#define A_ATR_EVT_DOORBELL_SHIFT 19
|
|
-#define P_ATR_EVT_POST_ERR_MASK 0x00100000u
|
|
-#define P_ATR_EVT_POST_ERR_SHIFT 20
|
|
-#define P_ATR_EVT_FETCH_ERR_MASK 0x00200000u
|
|
-#define P_ATR_EVT_FETCH_ERR_SHIFT 21
|
|
-#define P_ATR_EVT_DISCARD_ERR_MASK 0x00400000u
|
|
-#define P_ATR_EVT_DISCARD_ERR_SHIFT 22
|
|
-#define P_ATR_EVT_DOORBELL_MASK 0x00000000u
|
|
-#define P_ATR_EVT_DOORBELL_SHIFT 23
|
|
-#define PM_MSI_INT_INTA_MASK 0x01000000u
|
|
-#define PM_MSI_INT_INTA_SHIFT 24
|
|
-#define PM_MSI_INT_INTB_MASK 0x02000000u
|
|
-#define PM_MSI_INT_INTB_SHIFT 25
|
|
-#define PM_MSI_INT_INTC_MASK 0x04000000u
|
|
-#define PM_MSI_INT_INTC_SHIFT 26
|
|
-#define PM_MSI_INT_INTD_MASK 0x08000000u
|
|
-#define PM_MSI_INT_INTD_SHIFT 27
|
|
-#define PM_MSI_INT_INTX_MASK 0x0f000000u
|
|
-#define PM_MSI_INT_INTX_SHIFT 24
|
|
-#define PM_MSI_INT_MSI_MASK 0x10000000u
|
|
-#define PM_MSI_INT_MSI_SHIFT 28
|
|
-#define PM_MSI_INT_AER_EVT_MASK 0x20000000u
|
|
-#define PM_MSI_INT_AER_EVT_SHIFT 29
|
|
-#define PM_MSI_INT_EVENTS_MASK 0x40000000u
|
|
-#define PM_MSI_INT_EVENTS_SHIFT 30
|
|
-#define PM_MSI_INT_SYS_ERR_MASK 0x80000000u
|
|
-#define PM_MSI_INT_SYS_ERR_SHIFT 31
|
|
-#define NUM_LOCAL_EVENTS 15
|
|
-#define ISTATUS_LOCAL 0x184
|
|
-#define IMASK_HOST 0x188
|
|
-#define ISTATUS_HOST 0x18c
|
|
-#define IMSI_ADDR 0x190
|
|
-#define ISTATUS_MSI 0x194
|
|
-
|
|
-/* PCIe Master table init defines */
|
|
-#define ATR0_PCIE_WIN0_SRCADDR_PARAM 0x600u
|
|
-#define ATR0_PCIE_ATR_SIZE 0x25
|
|
-#define ATR0_PCIE_ATR_SIZE_SHIFT 1
|
|
-#define ATR0_PCIE_WIN0_SRC_ADDR 0x604u
|
|
-#define ATR0_PCIE_WIN0_TRSL_ADDR_LSB 0x608u
|
|
-#define ATR0_PCIE_WIN0_TRSL_ADDR_UDW 0x60cu
|
|
-#define ATR0_PCIE_WIN0_TRSL_PARAM 0x610u
|
|
-
|
|
-/* PCIe AXI slave table init defines */
|
|
-#define ATR0_AXI4_SLV0_SRCADDR_PARAM 0x800u
|
|
-#define ATR_SIZE_SHIFT 1
|
|
-#define ATR_IMPL_ENABLE 1
|
|
-#define ATR0_AXI4_SLV0_SRC_ADDR 0x804u
|
|
-#define ATR0_AXI4_SLV0_TRSL_ADDR_LSB 0x808u
|
|
-#define ATR0_AXI4_SLV0_TRSL_ADDR_UDW 0x80cu
|
|
-#define ATR0_AXI4_SLV0_TRSL_PARAM 0x810u
|
|
-#define PCIE_TX_RX_INTERFACE 0x00000000u
|
|
-#define PCIE_CONFIG_INTERFACE 0x00000001u
|
|
-
|
|
-#define ATR_ENTRY_SIZE 32
|
|
-
|
|
/* PCIe Controller Phy Regs */
|
|
#define SEC_ERROR_EVENT_CNT 0x20
|
|
#define DED_ERROR_EVENT_CNT 0x24
|
|
@@ -179,20 +102,21 @@
|
|
#define EVENT_LOCAL_DMA_END_ENGINE_1 12
|
|
#define EVENT_LOCAL_DMA_ERROR_ENGINE_0 13
|
|
#define EVENT_LOCAL_DMA_ERROR_ENGINE_1 14
|
|
-#define EVENT_LOCAL_A_ATR_EVT_POST_ERR 15
|
|
-#define EVENT_LOCAL_A_ATR_EVT_FETCH_ERR 16
|
|
-#define EVENT_LOCAL_A_ATR_EVT_DISCARD_ERR 17
|
|
-#define EVENT_LOCAL_A_ATR_EVT_DOORBELL 18
|
|
-#define EVENT_LOCAL_P_ATR_EVT_POST_ERR 19
|
|
-#define EVENT_LOCAL_P_ATR_EVT_FETCH_ERR 20
|
|
-#define EVENT_LOCAL_P_ATR_EVT_DISCARD_ERR 21
|
|
-#define EVENT_LOCAL_P_ATR_EVT_DOORBELL 22
|
|
-#define EVENT_LOCAL_PM_MSI_INT_INTX 23
|
|
-#define EVENT_LOCAL_PM_MSI_INT_MSI 24
|
|
-#define EVENT_LOCAL_PM_MSI_INT_AER_EVT 25
|
|
-#define EVENT_LOCAL_PM_MSI_INT_EVENTS 26
|
|
-#define EVENT_LOCAL_PM_MSI_INT_SYS_ERR 27
|
|
-#define NUM_EVENTS 28
|
|
+#define NUM_MC_EVENTS 15
|
|
+#define EVENT_LOCAL_A_ATR_EVT_POST_ERR (NUM_MC_EVENTS + PLDA_AXI_POST_ERR)
|
|
+#define EVENT_LOCAL_A_ATR_EVT_FETCH_ERR (NUM_MC_EVENTS + PLDA_AXI_FETCH_ERR)
|
|
+#define EVENT_LOCAL_A_ATR_EVT_DISCARD_ERR (NUM_MC_EVENTS + PLDA_AXI_DISCARD_ERR)
|
|
+#define EVENT_LOCAL_A_ATR_EVT_DOORBELL (NUM_MC_EVENTS + PLDA_AXI_DOORBELL)
|
|
+#define EVENT_LOCAL_P_ATR_EVT_POST_ERR (NUM_MC_EVENTS + PLDA_PCIE_POST_ERR)
|
|
+#define EVENT_LOCAL_P_ATR_EVT_FETCH_ERR (NUM_MC_EVENTS + PLDA_PCIE_FETCH_ERR)
|
|
+#define EVENT_LOCAL_P_ATR_EVT_DISCARD_ERR (NUM_MC_EVENTS + PLDA_PCIE_DISCARD_ERR)
|
|
+#define EVENT_LOCAL_P_ATR_EVT_DOORBELL (NUM_MC_EVENTS + PLDA_PCIE_DOORBELL)
|
|
+#define EVENT_LOCAL_PM_MSI_INT_INTX (NUM_MC_EVENTS + PLDA_INTX)
|
|
+#define EVENT_LOCAL_PM_MSI_INT_MSI (NUM_MC_EVENTS + PLDA_MSI)
|
|
+#define EVENT_LOCAL_PM_MSI_INT_AER_EVT (NUM_MC_EVENTS + PLDA_AER_EVENT)
|
|
+#define EVENT_LOCAL_PM_MSI_INT_EVENTS (NUM_MC_EVENTS + PLDA_MISC_EVENTS)
|
|
+#define EVENT_LOCAL_PM_MSI_INT_SYS_ERR (NUM_MC_EVENTS + PLDA_SYS_ERR)
|
|
+#define NUM_EVENTS (NUM_MC_EVENTS + PLDA_INT_EVENT_NUM)
|
|
|
|
#define PCIE_EVENT_CAUSE(x, s) \
|
|
[EVENT_PCIE_ ## x] = { __stringify(x), s }
|
|
diff --git a/drivers/pci/controller/plda/pcie-plda.h b/drivers/pci/controller/plda/pcie-plda.h
|
|
new file mode 100644
|
|
index 000000000000..65e0f3b72184
|
|
--- /dev/null
|
|
+++ b/drivers/pci/controller/plda/pcie-plda.h
|
|
@@ -0,0 +1,108 @@
|
|
+/* SPDX-License-Identifier: GPL-2.0 */
|
|
+/*
|
|
+ * PLDA PCIe host controller driver
|
|
+ */
|
|
+
|
|
+#ifndef _PCIE_PLDA_H
|
|
+#define _PCIE_PLDA_H
|
|
+
|
|
+/* PCIe Bridge Phy Regs */
|
|
+#define PCIE_PCI_IRQ_DW0 0xa8
|
|
+#define MSIX_CAP_MASK BIT(31)
|
|
+#define NUM_MSI_MSGS_MASK GENMASK(6, 4)
|
|
+#define NUM_MSI_MSGS_SHIFT 4
|
|
+
|
|
+#define IMASK_LOCAL 0x180
|
|
+#define DMA_END_ENGINE_0_MASK 0x00000000u
|
|
+#define DMA_END_ENGINE_0_SHIFT 0
|
|
+#define DMA_END_ENGINE_1_MASK 0x00000000u
|
|
+#define DMA_END_ENGINE_1_SHIFT 1
|
|
+#define DMA_ERROR_ENGINE_0_MASK 0x00000100u
|
|
+#define DMA_ERROR_ENGINE_0_SHIFT 8
|
|
+#define DMA_ERROR_ENGINE_1_MASK 0x00000200u
|
|
+#define DMA_ERROR_ENGINE_1_SHIFT 9
|
|
+#define A_ATR_EVT_POST_ERR_MASK 0x00010000u
|
|
+#define A_ATR_EVT_POST_ERR_SHIFT 16
|
|
+#define A_ATR_EVT_FETCH_ERR_MASK 0x00020000u
|
|
+#define A_ATR_EVT_FETCH_ERR_SHIFT 17
|
|
+#define A_ATR_EVT_DISCARD_ERR_MASK 0x00040000u
|
|
+#define A_ATR_EVT_DISCARD_ERR_SHIFT 18
|
|
+#define A_ATR_EVT_DOORBELL_MASK 0x00000000u
|
|
+#define A_ATR_EVT_DOORBELL_SHIFT 19
|
|
+#define P_ATR_EVT_POST_ERR_MASK 0x00100000u
|
|
+#define P_ATR_EVT_POST_ERR_SHIFT 20
|
|
+#define P_ATR_EVT_FETCH_ERR_MASK 0x00200000u
|
|
+#define P_ATR_EVT_FETCH_ERR_SHIFT 21
|
|
+#define P_ATR_EVT_DISCARD_ERR_MASK 0x00400000u
|
|
+#define P_ATR_EVT_DISCARD_ERR_SHIFT 22
|
|
+#define P_ATR_EVT_DOORBELL_MASK 0x00000000u
|
|
+#define P_ATR_EVT_DOORBELL_SHIFT 23
|
|
+#define PM_MSI_INT_INTA_MASK 0x01000000u
|
|
+#define PM_MSI_INT_INTA_SHIFT 24
|
|
+#define PM_MSI_INT_INTB_MASK 0x02000000u
|
|
+#define PM_MSI_INT_INTB_SHIFT 25
|
|
+#define PM_MSI_INT_INTC_MASK 0x04000000u
|
|
+#define PM_MSI_INT_INTC_SHIFT 26
|
|
+#define PM_MSI_INT_INTD_MASK 0x08000000u
|
|
+#define PM_MSI_INT_INTD_SHIFT 27
|
|
+#define PM_MSI_INT_INTX_MASK 0x0f000000u
|
|
+#define PM_MSI_INT_INTX_SHIFT 24
|
|
+#define PM_MSI_INT_MSI_MASK 0x10000000u
|
|
+#define PM_MSI_INT_MSI_SHIFT 28
|
|
+#define PM_MSI_INT_AER_EVT_MASK 0x20000000u
|
|
+#define PM_MSI_INT_AER_EVT_SHIFT 29
|
|
+#define PM_MSI_INT_EVENTS_MASK 0x40000000u
|
|
+#define PM_MSI_INT_EVENTS_SHIFT 30
|
|
+#define PM_MSI_INT_SYS_ERR_MASK 0x80000000u
|
|
+#define PM_MSI_INT_SYS_ERR_SHIFT 31
|
|
+#define NUM_LOCAL_EVENTS 15
|
|
+#define ISTATUS_LOCAL 0x184
|
|
+#define IMASK_HOST 0x188
|
|
+#define ISTATUS_HOST 0x18c
|
|
+#define IMSI_ADDR 0x190
|
|
+#define ISTATUS_MSI 0x194
|
|
+
|
|
+/* PCIe Master table init defines */
|
|
+#define ATR0_PCIE_WIN0_SRCADDR_PARAM 0x600u
|
|
+#define ATR0_PCIE_ATR_SIZE 0x25
|
|
+#define ATR0_PCIE_ATR_SIZE_SHIFT 1
|
|
+#define ATR0_PCIE_WIN0_SRC_ADDR 0x604u
|
|
+#define ATR0_PCIE_WIN0_TRSL_ADDR_LSB 0x608u
|
|
+#define ATR0_PCIE_WIN0_TRSL_ADDR_UDW 0x60cu
|
|
+#define ATR0_PCIE_WIN0_TRSL_PARAM 0x610u
|
|
+
|
|
+/* PCIe AXI slave table init defines */
|
|
+#define ATR0_AXI4_SLV0_SRCADDR_PARAM 0x800u
|
|
+#define ATR_SIZE_SHIFT 1
|
|
+#define ATR_IMPL_ENABLE 1
|
|
+#define ATR0_AXI4_SLV0_SRC_ADDR 0x804u
|
|
+#define ATR0_AXI4_SLV0_TRSL_ADDR_LSB 0x808u
|
|
+#define ATR0_AXI4_SLV0_TRSL_ADDR_UDW 0x80cu
|
|
+#define ATR0_AXI4_SLV0_TRSL_PARAM 0x810u
|
|
+#define PCIE_TX_RX_INTERFACE 0x00000000u
|
|
+#define PCIE_CONFIG_INTERFACE 0x00000001u
|
|
+
|
|
+#define ATR_ENTRY_SIZE 32
|
|
+
|
|
+enum plda_int_event {
|
|
+ PLDA_AXI_POST_ERR,
|
|
+ PLDA_AXI_FETCH_ERR,
|
|
+ PLDA_AXI_DISCARD_ERR,
|
|
+ PLDA_AXI_DOORBELL,
|
|
+ PLDA_PCIE_POST_ERR,
|
|
+ PLDA_PCIE_FETCH_ERR,
|
|
+ PLDA_PCIE_DISCARD_ERR,
|
|
+ PLDA_PCIE_DOORBELL,
|
|
+ PLDA_INTX,
|
|
+ PLDA_MSI,
|
|
+ PLDA_AER_EVENT,
|
|
+ PLDA_MISC_EVENTS,
|
|
+ PLDA_SYS_ERR,
|
|
+ PLDA_INT_EVENT_NUM
|
|
+};
|
|
+
|
|
+#define PLDA_NUM_DMA_EVENTS 16
|
|
+
|
|
+#define PLDA_MAX_EVENT_NUM (PLDA_NUM_DMA_EVENTS + PLDA_INT_EVENT_NUM)
|
|
+
|
|
+#endif
|
|
|
|
From patchwork Thu Mar 28 09:18:17 2024
|
|
Content-Type: text/plain; charset="utf-8"
|
|
MIME-Version: 1.0
|
|
Content-Transfer-Encoding: 7bit
|
|
X-Patchwork-Submitter: Minda Chen <minda.chen@starfivetech.com>
|
|
X-Patchwork-Id: 13608345
|
|
X-Patchwork-Delegate: kw@linux.com
|
|
Received: from CHN02-BJS-obe.outbound.protection.partner.outlook.cn
|
|
(mail-bjschn02on2091.outbound.protection.partner.outlook.cn [139.219.17.91])
|
|
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
|
|
(No client certificate requested)
|
|
by smtp.subspace.kernel.org (Postfix) with ESMTPS id C76FB364DA;
|
|
Thu, 28 Mar 2024 09:52:27 +0000 (UTC)
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
arc=fail smtp.client-ip=139.219.17.91
|
|
ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
|
|
t=1711619551; cv=fail;
|
|
b=AG4rfK6QH3RzpOTCo5xY1jlgsDcTH9oyXZcAECFN5mV/mH4swQCRs4Knw+cMECLR3BnJ+Lf53hHQbPBWtELmZqh4UvE0ff+DJ2vV61xux2ElhNqdRHxB9CmSkjOgeL0tZnSQ3ypGqiE0GNRUke5LKfXkwJF25uepUgC6urUvvr4=
|
|
ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org;
|
|
s=arc-20240116; t=1711619551; c=relaxed/simple;
|
|
bh=IWyU3Nb1lDW6JHJuysFfcNHrQ2UWhgpcddVWnUVeB88=;
|
|
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
|
|
Content-Type:MIME-Version;
|
|
b=guRf51+cLPiInFaiOC3WsmDE6z0cpjwsgozFNmU4PPSvkP7lYqrP1CQCvkV0xiM99q115qQokeALRKHZE80OpCiDGId1tJeHpzRc5agiuCEx0Mk69AXBWzD+DKcewHq5QYujuRf/BAu4R8kglLMxobhJ/Y0AWZ4DUpwTNtsXNBs=
|
|
ARC-Authentication-Results: i=2; smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com;
|
|
spf=pass smtp.mailfrom=starfivetech.com;
|
|
arc=fail smtp.client-ip=139.219.17.91
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
spf=pass smtp.mailfrom=starfivetech.com
|
|
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
|
|
b=e9mDw4XwaL2qCTufFfYbS17sAghny7xo91p9nk5lk0l2lUFuX67a1G75h1F35rQpf56Ep1cr6fsrwr3jRHyNw9XOp9mQl1c/gAH1xfmC+vEkf+b2AgDSWohHdlwfD12jPVFHFcWbP9alomLXr3Wb2DJ2tdXOMDpO053d5HnlaPAY5XA3RvHR7cBsM7LLWaTruPHuWF1OG0l8YofacK4oEKAwOVKjVTagTyH72M9NGwSLAQZhzOsdiPOrpA2AOfklxHhAc4IHwycAWAH2M23BUZDeAkT4XS3TmNfS5tLUwUPQ4tpKdSfkb5YOTJ8RO66UKyYJ2tvNmg4xjTH5/LSlCg==
|
|
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
|
|
s=arcselector9901;
|
|
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
|
|
bh=e/CTRHF8OXhnsuS900QIctOG+tZySCVcRZiWfg2uaPc=;
|
|
b=mOU3mUcUSwiFgzQ3aOxKkC8FgkaYQfs08AMvoqFpnUM+IROl1VPKeifTH0fOkXPbdkzdj7FcFwhNGfn/CJs3C0Ma5w4MBqLf/VrUAjRvIgKUQ7R3iIaSpTUDqtzaE2sfy4xVC0F21IrJBcj+ATPlrWM2THmeeUEfsRp9sjNj9gasI+wW0J2svtrPzry01y/u+5SQdraExocMCJxBt1hR17Gt4WAJyvwtoiLX1i0gfCAJAdAgR/GDEgHPL83W+rIw1zD/gUnE88XqDdC3dg2HOpH9ZEqxZDA2ZsDsIjeaTUWteqPU78dPge69UVf98OHJf9smB4vIj7FuECCJQR8k5A==
|
|
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
|
|
smtp.mailfrom=starfivetech.com; dmarc=pass action=none
|
|
header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none
|
|
Authentication-Results: dkim=none (message not signed)
|
|
header.d=none;dmarc=none action=none header.from=starfivetech.com;
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15) by SHXPR01MB0496.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:1f::21) with Microsoft SMTP Server (version=TLS1_2,
|
|
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Thu, 28 Mar
|
|
2024 09:18:48 +0000
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
([fe80::c738:9e6b:f92e:8bb9]) by
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn ([fe80::c738:9e6b:f92e:8bb9%6])
|
|
with mapi id 15.20.7409.031; Thu, 28 Mar 2024 09:18:48 +0000
|
|
From: Minda Chen <minda.chen@starfivetech.com>
|
|
To: Lorenzo Pieralisi <lpieralisi@kernel.org>,
|
|
Conor Dooley <conor@kernel.org>,
|
|
=?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kw@linux.com>,
|
|
Rob Herring <robh+dt@kernel.org>, Bjorn Helgaas <bhelgaas@google.com>,
|
|
Thomas Gleixner <tglx@linutronix.de>,
|
|
Daire McNamara <daire.mcnamara@microchip.com>,
|
|
Emil Renner Berthing <emil.renner.berthing@canonical.com>,
|
|
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
|
|
Cc: devicetree@vger.kernel.org,
|
|
linux-kernel@vger.kernel.org,
|
|
linux-riscv@lists.infradead.org,
|
|
linux-pci@vger.kernel.org,
|
|
Paul Walmsley <paul.walmsley@sifive.com>,
|
|
Palmer Dabbelt <palmer@dabbelt.com>,
|
|
Albert Ou <aou@eecs.berkeley.edu>,
|
|
Philipp Zabel <p.zabel@pengutronix.de>,
|
|
Mason Huo <mason.huo@starfivetech.com>,
|
|
Leyfoon Tan <leyfoon.tan@starfivetech.com>,
|
|
Kevin Xie <kevin.xie@starfivetech.com>,
|
|
Minda Chen <minda.chen@starfivetech.com>
|
|
Subject: [PATCH v16 04/22] PCI: microchip: Add bridge_addr field to struct
|
|
mc_pcie
|
|
Date: Thu, 28 Mar 2024 17:18:17 +0800
|
|
Message-Id: <20240328091835.14797-5-minda.chen@starfivetech.com>
|
|
X-Mailer: git-send-email 2.17.1
|
|
In-Reply-To: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
References: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
X-ClientProxiedBy: NT0PR01CA0020.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c510:c::16) To SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15)
|
|
Precedence: bulk
|
|
X-Mailing-List: linux-pci@vger.kernel.org
|
|
List-Id: <linux-pci.vger.kernel.org>
|
|
List-Subscribe: <mailto:linux-pci+subscribe@vger.kernel.org>
|
|
List-Unsubscribe: <mailto:linux-pci+unsubscribe@vger.kernel.org>
|
|
MIME-Version: 1.0
|
|
X-MS-PublicTrafficType: Email
|
|
X-MS-TrafficTypeDiagnostic: SHXPR01MB0863:EE_|SHXPR01MB0496:EE_
|
|
X-MS-Office365-Filtering-Correlation-Id: 1531236a-9d19-4211-6dec-08dc4f081319
|
|
X-MS-Exchange-SenderADCheck: 1
|
|
X-Microsoft-Antispam: BCL:0;
|
|
X-Microsoft-Antispam-Message-Info:
|
|
4m4Fsdzby4aHg6pwz3IWaXSLKZIhQObJ3Z0DA/3a9DiDu/HS9lCLh74WuWlYLCCr10hH32DE8SDv+2aNrKgnMQFXYn/rBmv4dW44U3iMDdTivCB06cnOdgw7piv/W06HiJ/raWVUxacbrm897DbKtmOXJkNGY2/Nab3ZQpQ54NfIyvK4frd82VDi5daiifuAXYhzQH8X5yWW5ISTgtRj+GHEZdvK9SPKt0eDBWgundAzUNyg2wsx3ah2gFuzShgOhuImd5A0mOCQTP8F94eagTw6efFLtdAiSVfYqinxAVLKNNSm6MCixXIha6IGlUu2ieXJZ8C0cRckRYoJ/4bsG4t1fFlj3VWT1fJVtoErguwHyLQVVnB9XyEjRAQAVfBGWF4E23v8OdMQauQpQy17+iCP8/JAPSFem9jsgxpIUnYLM/QbUCqOJPy7Sqs5OQwWfC1CgTEtlDRhC36v2oobXErWcqb8Hu3UdfxwY7ahxLeoCk7oahMFhdvm9s31XExld88ZqapfI6gSacceLVZKVxI1E2tAkN0BJvCQIW8pcS8EXmL4JPXrY9qGgnfjnfMpKe72S/sgHRiWx1V8iJYhvRF79gf4DAbisDHntvJLaKunKnbDnjBDxl0YKt5YZdjC
|
|
X-Forefront-Antispam-Report:
|
|
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230031)(52116005)(1800799015)(7416005)(41320700004)(366007)(38350700005);DIR:OUT;SFP:1102;
|
|
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
|
|
X-MS-Exchange-AntiSpam-MessageData-0:
|
|
LEP7CU1dKkthXxiP42OrVoaHH0lnkRudwzyiUW12FVOPJu0j9OQG4yAWmm7gWDyqq0+ehRsXHGvQSewc3CZgvxYiyE4AGDQPW3u0XlNCU/ZRIBNWiYtxeQGZmC4Uk0Gm/ZY61ET7s+5X1ExsAgbQ65s6Delj2Z9UBrw2Ss1ruUu7gEl/2RNt+XoLrSfwx+buaWE3uMrMQigqGi+j3wUpLrMFzsAeSi/sbAiNaW8lnhgSPsSWHsY2JDJ4qYAoJHAvQsJHswVvbwu9zS25xBptpDsU1H8YEZ/b1pNyEe40bAJbwHDU9UwraFRGGiBay1VI94Oe8l6WSGbMDcANRgBdssP9r7rMtSJXRKpNVE25968oi7IQTK6Vk/8CItxFK9LoVIviYPqhZLk3Px8AVfY8OYJDM42N7/fWTcP3OTGrfbNztcFQ92OmzF92V1wLDeHgOVCsTBM4Cz1nQWHaNdEJbRQzEFQ+v2Zl56R9BjBezw5fELuZhV77eDcobWf2ayqeAB5O+RDKo91EGUt1hME0/epp1ORK+aJsh5xE+UJpDxqxva7Hf0uO+Akn0wXixk5GPxLwEvtTExVdFMQTGYFml+UAiy4h1NEkwQ9tS/wNicPYPDT07reZlRAIk7rXLuNMYCx1lmQ1WrSbygnqJKjnC/SrQJzDVijhJa5gB7JKIf2zAPBtuImIvK2jFvIbvlUuqhE8jjyuOtLbIeOSngSEIx7NKfBEPdkvL0RDm5he9LDfK4YOr43PV3I2hW7MF4wnUeFlxbrIAVTjDhIvhsW/BDdu/fd1KR4W4D8xiwhhA+5uJkyJS3JarrP4BTN/QVDG6719g1Ct3RbLCr9ZlGrV6vPiSvoAdkNCTJZOeuuyGJdsKzvxAHbB3qtwTjTk3x0WLV46tF09rmmzdlKAAqIwSICyBMXtElmcMjhdU/5l//C7MS98UWfao/L9w2+y+xYmFbibcin7JB3twI5iq86L1YpaTapCwMToVrh+E9R31amwrnGUXeOwqpMOTOWd4obCvJtBEmY0JZEghNWyuU5fKG1PlC0tmF4+dPg7ONOTtMpbF3ujSMwwLBWQokeK4zbIhc7220h3+vFPKYa1EVihKMe4jZpUyFg9tDNSZH2SwCz/pXC9JaUKYNjM0Cx1mI3QFgawoz+j4TkXOV2xkzMLfXNcKhOCbKqc38h5mUsVpcEXvPRn7uA1m3FJd2P+i04QJA91HIlSGnH5lvWHWbHDKTN7md79IYUPAaC67Tobp+/CB9rrKRopaynyf1PKPtFcHzDYQ4NKEY/6W5T8JJTQ8YIYIs1JbXLlxdQJXI4/41tZhup7l5vociEa0BhS+Uy2TaUBuZTXKa1TtwjucrUBBHT6agFwioCYaRAS672YeUJuCoBq83fezEePf3p2/DPlsEVKFyeQdEuyL15oQ/v+gPnZMHKjlcmTT+/vgyQXyAlurmvJkm38jmYxUPr9PCR7wOJvOKC29BlvOhe5N7/fBVxTGolL0WABNmFNbhrO4Fp9Xi5dMCiAzZMgxNoy1yz2jxRQWm8u0qVl5xp1xqrE/BPlMtCcBJNcz/9sjXUmKUSnHQKmIkItZ0Gc6zGcsCKJd1Zuds9IsDaERE0wMRn1Jg==
|
|
X-OriginatorOrg: starfivetech.com
|
|
X-MS-Exchange-CrossTenant-Network-Message-Id:
|
|
1531236a-9d19-4211-6dec-08dc4f081319
|
|
X-MS-Exchange-CrossTenant-AuthSource:
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
X-MS-Exchange-CrossTenant-AuthAs: Internal
|
|
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2024 09:18:47.9642
|
|
(UTC)
|
|
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
|
|
X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c
|
|
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
|
|
X-MS-Exchange-CrossTenant-UserPrincipalName:
|
|
Gf84FnfnzkpyIrmswrcBLts8mO6yyTzHR5G5q0UeeXUlZmKrreFUeANWOiyHY/Shg2WF9+71H/72+xy0qF8RrBkmZyzGro8SDmBLfJ5X/Vg=
|
|
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SHXPR01MB0496
|
|
|
|
Bridge address base is common PLDA field, add this to struct mc_pcie
|
|
first.
|
|
|
|
INTx and MSI interrupt code will be changed to common code, so get
|
|
the bridge base address from port->bridge_addr instead of
|
|
axi_base_addr. axi_base_addr is Microchip its own data.
|
|
|
|
Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
|
|
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
|
|
---
|
|
.../pci/controller/plda/pcie-microchip-host.c | 23 ++++++++-----------
|
|
1 file changed, 9 insertions(+), 14 deletions(-)
|
|
|
|
diff --git a/drivers/pci/controller/plda/pcie-microchip-host.c b/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
index d9030d550482..c55ede80a6d0 100644
|
|
--- a/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
+++ b/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
@@ -195,6 +195,7 @@ struct mc_pcie {
|
|
struct irq_domain *event_domain;
|
|
raw_spinlock_t lock;
|
|
struct mc_msi msi;
|
|
+ void __iomem *bridge_addr;
|
|
};
|
|
|
|
struct cause {
|
|
@@ -339,8 +340,7 @@ static void mc_handle_msi(struct irq_desc *desc)
|
|
struct irq_chip *chip = irq_desc_get_chip(desc);
|
|
struct device *dev = port->dev;
|
|
struct mc_msi *msi = &port->msi;
|
|
- void __iomem *bridge_base_addr =
|
|
- port->axi_base_addr + MC_PCIE_BRIDGE_ADDR;
|
|
+ void __iomem *bridge_base_addr = port->bridge_addr;
|
|
unsigned long status;
|
|
u32 bit;
|
|
int ret;
|
|
@@ -365,8 +365,7 @@ static void mc_handle_msi(struct irq_desc *desc)
|
|
static void mc_msi_bottom_irq_ack(struct irq_data *data)
|
|
{
|
|
struct mc_pcie *port = irq_data_get_irq_chip_data(data);
|
|
- void __iomem *bridge_base_addr =
|
|
- port->axi_base_addr + MC_PCIE_BRIDGE_ADDR;
|
|
+ void __iomem *bridge_base_addr = port->bridge_addr;
|
|
u32 bitpos = data->hwirq;
|
|
|
|
writel_relaxed(BIT(bitpos), bridge_base_addr + ISTATUS_MSI);
|
|
@@ -488,8 +487,7 @@ static void mc_handle_intx(struct irq_desc *desc)
|
|
struct mc_pcie *port = irq_desc_get_handler_data(desc);
|
|
struct irq_chip *chip = irq_desc_get_chip(desc);
|
|
struct device *dev = port->dev;
|
|
- void __iomem *bridge_base_addr =
|
|
- port->axi_base_addr + MC_PCIE_BRIDGE_ADDR;
|
|
+ void __iomem *bridge_base_addr = port->bridge_addr;
|
|
unsigned long status;
|
|
u32 bit;
|
|
int ret;
|
|
@@ -514,8 +512,7 @@ static void mc_handle_intx(struct irq_desc *desc)
|
|
static void mc_ack_intx_irq(struct irq_data *data)
|
|
{
|
|
struct mc_pcie *port = irq_data_get_irq_chip_data(data);
|
|
- void __iomem *bridge_base_addr =
|
|
- port->axi_base_addr + MC_PCIE_BRIDGE_ADDR;
|
|
+ void __iomem *bridge_base_addr = port->bridge_addr;
|
|
u32 mask = BIT(data->hwirq + PM_MSI_INT_INTX_SHIFT);
|
|
|
|
writel_relaxed(mask, bridge_base_addr + ISTATUS_LOCAL);
|
|
@@ -524,8 +521,7 @@ static void mc_ack_intx_irq(struct irq_data *data)
|
|
static void mc_mask_intx_irq(struct irq_data *data)
|
|
{
|
|
struct mc_pcie *port = irq_data_get_irq_chip_data(data);
|
|
- void __iomem *bridge_base_addr =
|
|
- port->axi_base_addr + MC_PCIE_BRIDGE_ADDR;
|
|
+ void __iomem *bridge_base_addr = port->bridge_addr;
|
|
unsigned long flags;
|
|
u32 mask = BIT(data->hwirq + PM_MSI_INT_INTX_SHIFT);
|
|
u32 val;
|
|
@@ -540,8 +536,7 @@ static void mc_mask_intx_irq(struct irq_data *data)
|
|
static void mc_unmask_intx_irq(struct irq_data *data)
|
|
{
|
|
struct mc_pcie *port = irq_data_get_irq_chip_data(data);
|
|
- void __iomem *bridge_base_addr =
|
|
- port->axi_base_addr + MC_PCIE_BRIDGE_ADDR;
|
|
+ void __iomem *bridge_base_addr = port->bridge_addr;
|
|
unsigned long flags;
|
|
u32 mask = BIT(data->hwirq + PM_MSI_INT_INTX_SHIFT);
|
|
u32 val;
|
|
@@ -896,8 +891,7 @@ static void mc_pcie_setup_window(void __iomem *bridge_base_addr, u32 index,
|
|
static int mc_pcie_setup_windows(struct platform_device *pdev,
|
|
struct mc_pcie *port)
|
|
{
|
|
- void __iomem *bridge_base_addr =
|
|
- port->axi_base_addr + MC_PCIE_BRIDGE_ADDR;
|
|
+ void __iomem *bridge_base_addr = port->bridge_addr;
|
|
struct pci_host_bridge *bridge = platform_get_drvdata(pdev);
|
|
struct resource_entry *entry;
|
|
u64 pci_addr;
|
|
@@ -1081,6 +1075,7 @@ static int mc_host_probe(struct platform_device *pdev)
|
|
mc_disable_interrupts(port);
|
|
|
|
bridge_base_addr = port->axi_base_addr + MC_PCIE_BRIDGE_ADDR;
|
|
+ port->bridge_addr = bridge_base_addr;
|
|
|
|
/* Allow enabling MSI by disabling MSI-X */
|
|
val = readl(bridge_base_addr + PCIE_PCI_IRQ_DW0);
|
|
|
|
From patchwork Thu Mar 28 09:18:18 2024
|
|
Content-Type: text/plain; charset="utf-8"
|
|
MIME-Version: 1.0
|
|
Content-Transfer-Encoding: 7bit
|
|
X-Patchwork-Submitter: Minda Chen <minda.chen@starfivetech.com>
|
|
X-Patchwork-Id: 13608298
|
|
X-Patchwork-Delegate: kw@linux.com
|
|
Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn
|
|
(mail-sh0chn02on2115.outbound.protection.partner.outlook.cn
|
|
[139.219.146.115])
|
|
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
|
|
(No client certificate requested)
|
|
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3FDE818E1E;
|
|
Thu, 28 Mar 2024 09:34:15 +0000 (UTC)
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
arc=fail smtp.client-ip=139.219.146.115
|
|
ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
|
|
t=1711618457; cv=fail;
|
|
b=PJO7qx+eg6g8stHP2xm1Q+JBIUBn2h1ln8N1188LtYOZxsZN3j3hbUnN8oGySXZFKfms8fqLOK7n9n1V+XEX2Vp/fZgdgTYbyyBgt37YWnkQxHFqARnaYQd+XDll6AxOjUMszUUTDCz8Mj67Gd6Cn/02n/yN2E/VR581qLv7GM8=
|
|
ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org;
|
|
s=arc-20240116; t=1711618457; c=relaxed/simple;
|
|
bh=lg+DutGd3feA8185E5AVK1JcigFtuQVRvUCtlC/3EZA=;
|
|
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
|
|
Content-Type:MIME-Version;
|
|
b=afFE4KKir7dtkcWeMhPdQcrdTfTrT2alsRaoMezo7RGkuQWN99ywReldMw0rN8Ako3vEHJFEeJNHRNHLzg5OB5A43g1zu6nbugcJQVxm8Jv/df+sCHMPiaHywxXqr3QDy3+/uK0Z5cd6+p2zkYme+DpehuXw2jYGXyzohSQ2ZVQ=
|
|
ARC-Authentication-Results: i=2; smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com;
|
|
spf=pass smtp.mailfrom=starfivetech.com;
|
|
arc=fail smtp.client-ip=139.219.146.115
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
spf=pass smtp.mailfrom=starfivetech.com
|
|
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
|
|
b=C9oWC22ccfF4yvxsTEbjkbwDu1ShlhYteshvdHMI0gkFZygs+wgdoY4b786cy3OTfnd5wiIGJASBAvbH0O3+cS/Uv/TYZIZ8/5BxldaErTSq09Fw3LPwDZ7d6G5i5v5gIXOCZ2QVuOv+T+EgnYQUJIUzkrrtRRr5FyuQAe2NGIlDy/+IdyU9NbKFWOOvPS41AVQmXRvZ0ggnALgjqoEiYdob6lfhL9hG+pHqEcp2vLMdxES7TVjhw2eAOiivRUJb7uHmxiwfRn5Zit9ik8zD7WZS5mB8oF8xff6TZ6tvxgE+WIFlIkYRovLkuIVYLtwb79HO79TDW5G06D1DFh+mrQ==
|
|
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
|
|
s=arcselector9901;
|
|
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
|
|
bh=qDIt0Fvi2AI+V03IChS1zYgUdGhwDDpBrZnWxECVJlg=;
|
|
b=dym5avZwmWuz3DkQtoXoVdIbOVLf7MovG0lFuCXtG9hftEMyS77MoYD3ZsjLqL6BC0kUEp79VSbiMBonsoU+a+S/vod8pGrQeeyo4kAtX6xBadMnt1kL+m8CBPUsPMXC222UJhdJYn8Kd+c5qz0cKMi6dgbXM/aF6xT3wtVIGJqF2R5XFG907rxQ9goBBVt2/Q1qG4SZnncWLGnrknLnfKR5S6yc/Ragy43rQi3Fs2vFOeBW5m4VQ1HfVMyK0gX9SQtxBjtjPq+0Uzqs/NHz4Er8/OZZkv5rzW6siyCNQHuP9Aa+YayKjhHzx/x+BCObr5BTpQ1kmfFrDkyM+91LPQ==
|
|
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
|
|
smtp.mailfrom=starfivetech.com; dmarc=pass action=none
|
|
header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none
|
|
Authentication-Results: dkim=none (message not signed)
|
|
header.d=none;dmarc=none action=none header.from=starfivetech.com;
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15) by SHXPR01MB0496.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:1f::21) with Microsoft SMTP Server (version=TLS1_2,
|
|
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Thu, 28 Mar
|
|
2024 09:18:49 +0000
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
([fe80::c738:9e6b:f92e:8bb9]) by
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn ([fe80::c738:9e6b:f92e:8bb9%6])
|
|
with mapi id 15.20.7409.031; Thu, 28 Mar 2024 09:18:49 +0000
|
|
From: Minda Chen <minda.chen@starfivetech.com>
|
|
To: Lorenzo Pieralisi <lpieralisi@kernel.org>,
|
|
Conor Dooley <conor@kernel.org>,
|
|
=?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kw@linux.com>,
|
|
Rob Herring <robh+dt@kernel.org>, Bjorn Helgaas <bhelgaas@google.com>,
|
|
Thomas Gleixner <tglx@linutronix.de>,
|
|
Daire McNamara <daire.mcnamara@microchip.com>,
|
|
Emil Renner Berthing <emil.renner.berthing@canonical.com>,
|
|
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
|
|
Cc: devicetree@vger.kernel.org,
|
|
linux-kernel@vger.kernel.org,
|
|
linux-riscv@lists.infradead.org,
|
|
linux-pci@vger.kernel.org,
|
|
Paul Walmsley <paul.walmsley@sifive.com>,
|
|
Palmer Dabbelt <palmer@dabbelt.com>,
|
|
Albert Ou <aou@eecs.berkeley.edu>,
|
|
Philipp Zabel <p.zabel@pengutronix.de>,
|
|
Mason Huo <mason.huo@starfivetech.com>,
|
|
Leyfoon Tan <leyfoon.tan@starfivetech.com>,
|
|
Kevin Xie <kevin.xie@starfivetech.com>,
|
|
Minda Chen <minda.chen@starfivetech.com>
|
|
Subject: [PATCH v16 05/22] PCI: microchip: Rename two PCIe data structures
|
|
Date: Thu, 28 Mar 2024 17:18:18 +0800
|
|
Message-Id: <20240328091835.14797-6-minda.chen@starfivetech.com>
|
|
X-Mailer: git-send-email 2.17.1
|
|
In-Reply-To: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
References: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
X-ClientProxiedBy: NT0PR01CA0020.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c510:c::16) To SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15)
|
|
Precedence: bulk
|
|
X-Mailing-List: linux-pci@vger.kernel.org
|
|
List-Id: <linux-pci.vger.kernel.org>
|
|
List-Subscribe: <mailto:linux-pci+subscribe@vger.kernel.org>
|
|
List-Unsubscribe: <mailto:linux-pci+unsubscribe@vger.kernel.org>
|
|
MIME-Version: 1.0
|
|
X-MS-PublicTrafficType: Email
|
|
X-MS-TrafficTypeDiagnostic: SHXPR01MB0863:EE_|SHXPR01MB0496:EE_
|
|
X-MS-Office365-Filtering-Correlation-Id: eba31e99-6978-415f-fb01-08dc4f0813af
|
|
X-MS-Exchange-SenderADCheck: 1
|
|
X-Microsoft-Antispam: BCL:0;
|
|
X-Microsoft-Antispam-Message-Info:
|
|
IyfIB2jW0o4fhs5vLZ+YQDpCZZbLWnQyb0jWbQFyMoIMuQiads3v5uHld6QSArSiZ+obNO3b19OHoHYiNO4A/hnxi4aJolbokR/ZRaCjIJGNItsn7nMeatfB6TGUGmVcv6FC9XrnRKXGQTW2jfwEpwR2QfdyJPdtzfod39xfY+rNYlPaP5igwgpOWht1fBbxiY3j8VacA1LbeIIKBKW2oy/PRs3OgIUGND8ytqlfhxJ1nQMQhBc05hUGbyPdpSRi7tS32sgDTVO59P+eA6G1wwQT14WMCGaVhq5uBiO2wp6jAOqltCjD2I2p7rvEixOu8TD44opl+6drlAnYN6Psz4H0HGpj1fClg32LmIlmnR+9dhDvB1NuN6+4T/SXLvZXbfYkDNekyx4im1LyOs0Rr0mB4uccGh2rXn/1ETPBwjVvTw8332Gn3Q+81MrcqArEy+8BfxMSss+K9aYDV6wVE6Mmi00gpedkO0Iguune6gznJDBvNVvVeEn+7n0Cv62ZYmYUOP3C0fzqmaBCcnet2qkmZ6oXqPC+apBKM8VVb9rGb40OOhdqXN+jwO61KphgtXcGEYpspSLpUS9kB0K25cMjl0VREpGFeCoYfO3dydKxwzCesy3OE5AW6aTdEg3K
|
|
X-Forefront-Antispam-Report:
|
|
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230031)(52116005)(1800799015)(7416005)(41320700004)(366007)(38350700005);DIR:OUT;SFP:1102;
|
|
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
|
|
X-MS-Exchange-AntiSpam-MessageData-0:
|
|
kUO0SDwDozDYOQN+NLGA7xDfactdEc8y1QAr/07DdlsdXJc2+UiY+iA/ivftauRXpMVO2JDCOMOFJFRz/lwcfT6hZWIPb7JTfEOHAHFoRcOpeIlQ2I1eLvhrZgMY1aD+x8f5HXtDZGaZ6/eZK5r97EnERWL20fqoVYwG423JKD037HDiJouy4B3+wF4DIHBB3O8Ij/b1TVcdP9noONmwkoepdXu5FjB8PYGUTZuRmzRbon99jT0k/UDr2uqv8oY/V5GRhs1np2OUxrqo4yWkruIbBAH1icksbQ+Rl+9cV4OTZe7Kvlzy1eMQLtbDPlhorAkI8EENRXVyaV2X9kz2ySimLYRHl7WpLdMyURkbt4U94EbjJdfKJ+RHGHwhRU7ypO8EswPehHEV+wB1hVol/DUhxQ5dzQPbLuOF/5Guc6MYbEfoL1MIoq6up7O/fPh3iTZz70KlgacujVYNT/69h0Q6cXL6H8WeAwkWI2EpaQzaXFx1UBVG6R39iZ5O7vee8VY0nzsk8vNSlZcPCqAuJsoRzDlwf6UT5pC7t7QdjjzMH19Bpp5PDeTHiUuHUDzNz/Rw2T6hJ0cYD9GLoyngmc4+J22YkBQD8aQx2r5AESfd1vFznDJEve1IrvD5UrK3jJE0CH3928qUQi002CACCy8Ya5+Mj3eiCB4tTKtBGOdqaN6PrwiuAjDlj0SpdEtr1AF9BHvIwpmeUS6VT6NXXqJ+ukKoR+gxvev1Tn6yvTl91AbKa42ecDBwuVm6qwFWnmLBINt3aGOc0zgy+bW6OXHvpMUuEj0NAkVmC/pJrWg7GbPHO27Px3ukwDL6/c7plQUoICYxIqWxR9fYROHgPq4Rv4UOqCcQaeM4oCFuHU7Uh8Y6ZcGawC13Ed3rnvlqUU8hq6Uvaqjhn+ucnFsG3dow0kBmmSCmAR+P6tqrg3iVgiOiNdeYKt/EtTL9GYXV5zmDYhb2QRkyTlbDkFJzigsTAi1VK0EXj3vsjRNbVYEwKswvikCN6LUHNHDkUROMTMPOQh4IQdSjH+sDGpe6qj7aRcfDnxuMwQMp0xoYJGIeYrj7kbysQor1XQJqovtVcu2XOLoPWOQr8TBb1EuMyKWemLYVE9pIuTCqA7qE8Ni0L5tOJA/kOBcyi5hYw5ZP4FgDcYBFSjPRBca4es5p7sRSY/x/8D71zjkEiYOaLKuMA/FswaHyHlUOIbfUJLBk00PLy38suf+AEbrP+rZPmqkq9I5Ed6Bb2cV9OD1voCs8fzyWHXTO65dqU+XAg6b2VDqzYlyHK6NedeuVrWf4isIZ5Cl2cLJKFj1NNkIuycyOjJnogtn/c6s4Em0oYYKQAcDjZ4lL15FCgoj1vUZmePAEbybfomXBhJiXZDvRoGM3g92xik1O0BdaqJcjW49TmOOsX2zuX1TYxCESEcGVU/32EjXzOMshxPtP6kO6Rkz51YamS+DAvndlxp7VJM7eqQ3gXGQwDySFZd7CvN+Z1myrBIUZD3TJmUa4Zy5nm40Q2XpWDx6SLZkSyqjUX9BrmtSPe1lotiet1bMDhGbgX+meEb1aMbwPVucgkcfWH8dLnvDWCPkKuQfjv9OZYh7exGZZuFGoEwM45CIHeskjNw==
|
|
X-OriginatorOrg: starfivetech.com
|
|
X-MS-Exchange-CrossTenant-Network-Message-Id:
|
|
eba31e99-6978-415f-fb01-08dc4f0813af
|
|
X-MS-Exchange-CrossTenant-AuthSource:
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
X-MS-Exchange-CrossTenant-AuthAs: Internal
|
|
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2024 09:18:48.9461
|
|
(UTC)
|
|
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
|
|
X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c
|
|
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
|
|
X-MS-Exchange-CrossTenant-UserPrincipalName:
|
|
nNq1Or/I3qVHZE2RveNgOoPfuW6SGIKlgPlcbo0AgSFDIN2m6Y1bCJDSFU8OAPECWSvScZJN7/mlx4/acenCddD9pMkXaym3rFeUQtWP7Zc=
|
|
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SHXPR01MB0496
|
|
|
|
Add PLDA PCIe related data structures by rename data structure name from
|
|
mc_* to plda_*.
|
|
|
|
axi_base_addr is stayed in struct mc_pcie since it's microchip its own
|
|
data.
|
|
|
|
The event interrupt code is still using struct mc_pcie because the event
|
|
interrupt code can not be re-used.
|
|
|
|
Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
|
|
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
|
|
---
|
|
.../pci/controller/plda/pcie-microchip-host.c | 96 ++++++++++---------
|
|
1 file changed, 53 insertions(+), 43 deletions(-)
|
|
|
|
diff --git a/drivers/pci/controller/plda/pcie-microchip-host.c b/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
index c55ede80a6d0..df0736f688ce 100644
|
|
--- a/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
+++ b/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
@@ -22,7 +22,7 @@
|
|
#include "pcie-plda.h"
|
|
|
|
/* Number of MSI IRQs */
|
|
-#define MC_MAX_NUM_MSI_IRQS 32
|
|
+#define PLDA_MAX_NUM_MSI_IRQS 32
|
|
|
|
/* PCIe Bridge Phy and Controller Phy offsets */
|
|
#define MC_PCIE1_BRIDGE_ADDR 0x00008000u
|
|
@@ -179,25 +179,29 @@ struct event_map {
|
|
u32 event_bit;
|
|
};
|
|
|
|
-struct mc_msi {
|
|
+struct plda_msi {
|
|
struct mutex lock; /* Protect used bitmap */
|
|
struct irq_domain *msi_domain;
|
|
struct irq_domain *dev_domain;
|
|
u32 num_vectors;
|
|
u64 vector_phy;
|
|
- DECLARE_BITMAP(used, MC_MAX_NUM_MSI_IRQS);
|
|
+ DECLARE_BITMAP(used, PLDA_MAX_NUM_MSI_IRQS);
|
|
};
|
|
|
|
-struct mc_pcie {
|
|
- void __iomem *axi_base_addr;
|
|
+struct plda_pcie_rp {
|
|
struct device *dev;
|
|
struct irq_domain *intx_domain;
|
|
struct irq_domain *event_domain;
|
|
raw_spinlock_t lock;
|
|
- struct mc_msi msi;
|
|
+ struct plda_msi msi;
|
|
void __iomem *bridge_addr;
|
|
};
|
|
|
|
+struct mc_pcie {
|
|
+ struct plda_pcie_rp plda;
|
|
+ void __iomem *axi_base_addr;
|
|
+};
|
|
+
|
|
struct cause {
|
|
const char *sym;
|
|
const char *str;
|
|
@@ -313,7 +317,7 @@ static struct mc_pcie *port;
|
|
|
|
static void mc_pcie_enable_msi(struct mc_pcie *port, void __iomem *ecam)
|
|
{
|
|
- struct mc_msi *msi = &port->msi;
|
|
+ struct plda_msi *msi = &port->plda.msi;
|
|
u16 reg;
|
|
u8 queue_size;
|
|
|
|
@@ -336,10 +340,10 @@ static void mc_pcie_enable_msi(struct mc_pcie *port, void __iomem *ecam)
|
|
|
|
static void mc_handle_msi(struct irq_desc *desc)
|
|
{
|
|
- struct mc_pcie *port = irq_desc_get_handler_data(desc);
|
|
+ struct plda_pcie_rp *port = irq_desc_get_handler_data(desc);
|
|
struct irq_chip *chip = irq_desc_get_chip(desc);
|
|
struct device *dev = port->dev;
|
|
- struct mc_msi *msi = &port->msi;
|
|
+ struct plda_msi *msi = &port->msi;
|
|
void __iomem *bridge_base_addr = port->bridge_addr;
|
|
unsigned long status;
|
|
u32 bit;
|
|
@@ -364,7 +368,7 @@ static void mc_handle_msi(struct irq_desc *desc)
|
|
|
|
static void mc_msi_bottom_irq_ack(struct irq_data *data)
|
|
{
|
|
- struct mc_pcie *port = irq_data_get_irq_chip_data(data);
|
|
+ struct plda_pcie_rp *port = irq_data_get_irq_chip_data(data);
|
|
void __iomem *bridge_base_addr = port->bridge_addr;
|
|
u32 bitpos = data->hwirq;
|
|
|
|
@@ -373,7 +377,7 @@ static void mc_msi_bottom_irq_ack(struct irq_data *data)
|
|
|
|
static void mc_compose_msi_msg(struct irq_data *data, struct msi_msg *msg)
|
|
{
|
|
- struct mc_pcie *port = irq_data_get_irq_chip_data(data);
|
|
+ struct plda_pcie_rp *port = irq_data_get_irq_chip_data(data);
|
|
phys_addr_t addr = port->msi.vector_phy;
|
|
|
|
msg->address_lo = lower_32_bits(addr);
|
|
@@ -400,8 +404,8 @@ static struct irq_chip mc_msi_bottom_irq_chip = {
|
|
static int mc_irq_msi_domain_alloc(struct irq_domain *domain, unsigned int virq,
|
|
unsigned int nr_irqs, void *args)
|
|
{
|
|
- struct mc_pcie *port = domain->host_data;
|
|
- struct mc_msi *msi = &port->msi;
|
|
+ struct plda_pcie_rp *port = domain->host_data;
|
|
+ struct plda_msi *msi = &port->msi;
|
|
unsigned long bit;
|
|
|
|
mutex_lock(&msi->lock);
|
|
@@ -425,8 +429,8 @@ static void mc_irq_msi_domain_free(struct irq_domain *domain, unsigned int virq,
|
|
unsigned int nr_irqs)
|
|
{
|
|
struct irq_data *d = irq_domain_get_irq_data(domain, virq);
|
|
- struct mc_pcie *port = irq_data_get_irq_chip_data(d);
|
|
- struct mc_msi *msi = &port->msi;
|
|
+ struct plda_pcie_rp *port = irq_data_get_irq_chip_data(d);
|
|
+ struct plda_msi *msi = &port->msi;
|
|
|
|
mutex_lock(&msi->lock);
|
|
|
|
@@ -456,11 +460,11 @@ static struct msi_domain_info mc_msi_domain_info = {
|
|
.chip = &mc_msi_irq_chip,
|
|
};
|
|
|
|
-static int mc_allocate_msi_domains(struct mc_pcie *port)
|
|
+static int mc_allocate_msi_domains(struct plda_pcie_rp *port)
|
|
{
|
|
struct device *dev = port->dev;
|
|
struct fwnode_handle *fwnode = of_node_to_fwnode(dev->of_node);
|
|
- struct mc_msi *msi = &port->msi;
|
|
+ struct plda_msi *msi = &port->msi;
|
|
|
|
mutex_init(&port->msi.lock);
|
|
|
|
@@ -484,7 +488,7 @@ static int mc_allocate_msi_domains(struct mc_pcie *port)
|
|
|
|
static void mc_handle_intx(struct irq_desc *desc)
|
|
{
|
|
- struct mc_pcie *port = irq_desc_get_handler_data(desc);
|
|
+ struct plda_pcie_rp *port = irq_desc_get_handler_data(desc);
|
|
struct irq_chip *chip = irq_desc_get_chip(desc);
|
|
struct device *dev = port->dev;
|
|
void __iomem *bridge_base_addr = port->bridge_addr;
|
|
@@ -511,7 +515,7 @@ static void mc_handle_intx(struct irq_desc *desc)
|
|
|
|
static void mc_ack_intx_irq(struct irq_data *data)
|
|
{
|
|
- struct mc_pcie *port = irq_data_get_irq_chip_data(data);
|
|
+ struct plda_pcie_rp *port = irq_data_get_irq_chip_data(data);
|
|
void __iomem *bridge_base_addr = port->bridge_addr;
|
|
u32 mask = BIT(data->hwirq + PM_MSI_INT_INTX_SHIFT);
|
|
|
|
@@ -520,7 +524,7 @@ static void mc_ack_intx_irq(struct irq_data *data)
|
|
|
|
static void mc_mask_intx_irq(struct irq_data *data)
|
|
{
|
|
- struct mc_pcie *port = irq_data_get_irq_chip_data(data);
|
|
+ struct plda_pcie_rp *port = irq_data_get_irq_chip_data(data);
|
|
void __iomem *bridge_base_addr = port->bridge_addr;
|
|
unsigned long flags;
|
|
u32 mask = BIT(data->hwirq + PM_MSI_INT_INTX_SHIFT);
|
|
@@ -535,7 +539,7 @@ static void mc_mask_intx_irq(struct irq_data *data)
|
|
|
|
static void mc_unmask_intx_irq(struct irq_data *data)
|
|
{
|
|
- struct mc_pcie *port = irq_data_get_irq_chip_data(data);
|
|
+ struct plda_pcie_rp *port = irq_data_get_irq_chip_data(data);
|
|
void __iomem *bridge_base_addr = port->bridge_addr;
|
|
unsigned long flags;
|
|
u32 mask = BIT(data->hwirq + PM_MSI_INT_INTX_SHIFT);
|
|
@@ -625,21 +629,22 @@ static u32 local_events(struct mc_pcie *port)
|
|
return val;
|
|
}
|
|
|
|
-static u32 get_events(struct mc_pcie *port)
|
|
+static u32 get_events(struct plda_pcie_rp *port)
|
|
{
|
|
+ struct mc_pcie *mc_port = container_of(port, struct mc_pcie, plda);
|
|
u32 events = 0;
|
|
|
|
- events |= pcie_events(port);
|
|
- events |= sec_errors(port);
|
|
- events |= ded_errors(port);
|
|
- events |= local_events(port);
|
|
+ events |= pcie_events(mc_port);
|
|
+ events |= sec_errors(mc_port);
|
|
+ events |= ded_errors(mc_port);
|
|
+ events |= local_events(mc_port);
|
|
|
|
return events;
|
|
}
|
|
|
|
static irqreturn_t mc_event_handler(int irq, void *dev_id)
|
|
{
|
|
- struct mc_pcie *port = dev_id;
|
|
+ struct plda_pcie_rp *port = dev_id;
|
|
struct device *dev = port->dev;
|
|
struct irq_data *data;
|
|
|
|
@@ -655,7 +660,7 @@ static irqreturn_t mc_event_handler(int irq, void *dev_id)
|
|
|
|
static void mc_handle_event(struct irq_desc *desc)
|
|
{
|
|
- struct mc_pcie *port = irq_desc_get_handler_data(desc);
|
|
+ struct plda_pcie_rp *port = irq_desc_get_handler_data(desc);
|
|
unsigned long events;
|
|
u32 bit;
|
|
struct irq_chip *chip = irq_desc_get_chip(desc);
|
|
@@ -672,12 +677,13 @@ static void mc_handle_event(struct irq_desc *desc)
|
|
|
|
static void mc_ack_event_irq(struct irq_data *data)
|
|
{
|
|
- struct mc_pcie *port = irq_data_get_irq_chip_data(data);
|
|
+ struct plda_pcie_rp *port = irq_data_get_irq_chip_data(data);
|
|
+ struct mc_pcie *mc_port = container_of(port, struct mc_pcie, plda);
|
|
u32 event = data->hwirq;
|
|
void __iomem *addr;
|
|
u32 mask;
|
|
|
|
- addr = port->axi_base_addr + event_descs[event].base +
|
|
+ addr = mc_port->axi_base_addr + event_descs[event].base +
|
|
event_descs[event].offset;
|
|
mask = event_descs[event].mask;
|
|
mask |= event_descs[event].enb_mask;
|
|
@@ -687,13 +693,14 @@ static void mc_ack_event_irq(struct irq_data *data)
|
|
|
|
static void mc_mask_event_irq(struct irq_data *data)
|
|
{
|
|
- struct mc_pcie *port = irq_data_get_irq_chip_data(data);
|
|
+ struct plda_pcie_rp *port = irq_data_get_irq_chip_data(data);
|
|
+ struct mc_pcie *mc_port = container_of(port, struct mc_pcie, plda);
|
|
u32 event = data->hwirq;
|
|
void __iomem *addr;
|
|
u32 mask;
|
|
u32 val;
|
|
|
|
- addr = port->axi_base_addr + event_descs[event].base +
|
|
+ addr = mc_port->axi_base_addr + event_descs[event].base +
|
|
event_descs[event].mask_offset;
|
|
mask = event_descs[event].mask;
|
|
if (event_descs[event].enb_mask) {
|
|
@@ -717,13 +724,14 @@ static void mc_mask_event_irq(struct irq_data *data)
|
|
|
|
static void mc_unmask_event_irq(struct irq_data *data)
|
|
{
|
|
- struct mc_pcie *port = irq_data_get_irq_chip_data(data);
|
|
+ struct plda_pcie_rp *port = irq_data_get_irq_chip_data(data);
|
|
+ struct mc_pcie *mc_port = container_of(port, struct mc_pcie, plda);
|
|
u32 event = data->hwirq;
|
|
void __iomem *addr;
|
|
u32 mask;
|
|
u32 val;
|
|
|
|
- addr = port->axi_base_addr + event_descs[event].base +
|
|
+ addr = mc_port->axi_base_addr + event_descs[event].base +
|
|
event_descs[event].mask_offset;
|
|
mask = event_descs[event].mask;
|
|
|
|
@@ -811,7 +819,7 @@ static int mc_pcie_init_clks(struct device *dev)
|
|
return 0;
|
|
}
|
|
|
|
-static int mc_pcie_init_irq_domains(struct mc_pcie *port)
|
|
+static int mc_pcie_init_irq_domains(struct plda_pcie_rp *port)
|
|
{
|
|
struct device *dev = port->dev;
|
|
struct device_node *node = dev->of_node;
|
|
@@ -889,7 +897,7 @@ static void mc_pcie_setup_window(void __iomem *bridge_base_addr, u32 index,
|
|
}
|
|
|
|
static int mc_pcie_setup_windows(struct platform_device *pdev,
|
|
- struct mc_pcie *port)
|
|
+ struct plda_pcie_rp *port)
|
|
{
|
|
void __iomem *bridge_base_addr = port->bridge_addr;
|
|
struct pci_host_bridge *bridge = platform_get_drvdata(pdev);
|
|
@@ -970,7 +978,7 @@ static void mc_disable_interrupts(struct mc_pcie *port)
|
|
writel_relaxed(GENMASK(31, 0), bridge_base_addr + ISTATUS_HOST);
|
|
}
|
|
|
|
-static int mc_init_interrupts(struct platform_device *pdev, struct mc_pcie *port)
|
|
+static int mc_init_interrupts(struct platform_device *pdev, struct plda_pcie_rp *port)
|
|
{
|
|
struct device *dev = &pdev->dev;
|
|
int irq;
|
|
@@ -1043,12 +1051,12 @@ static int mc_platform_init(struct pci_config_window *cfg)
|
|
mc_pcie_enable_msi(port, cfg->win);
|
|
|
|
/* Configure non-config space outbound ranges */
|
|
- ret = mc_pcie_setup_windows(pdev, port);
|
|
+ ret = mc_pcie_setup_windows(pdev, &port->plda);
|
|
if (ret)
|
|
return ret;
|
|
|
|
/* Address translation is up; safe to enable interrupts */
|
|
- ret = mc_init_interrupts(pdev, port);
|
|
+ ret = mc_init_interrupts(pdev, &port->plda);
|
|
if (ret)
|
|
return ret;
|
|
|
|
@@ -1059,6 +1067,7 @@ static int mc_host_probe(struct platform_device *pdev)
|
|
{
|
|
struct device *dev = &pdev->dev;
|
|
void __iomem *bridge_base_addr;
|
|
+ struct plda_pcie_rp *plda;
|
|
int ret;
|
|
u32 val;
|
|
|
|
@@ -1066,7 +1075,8 @@ static int mc_host_probe(struct platform_device *pdev)
|
|
if (!port)
|
|
return -ENOMEM;
|
|
|
|
- port->dev = dev;
|
|
+ plda = &port->plda;
|
|
+ plda->dev = dev;
|
|
|
|
port->axi_base_addr = devm_platform_ioremap_resource(pdev, 1);
|
|
if (IS_ERR(port->axi_base_addr))
|
|
@@ -1075,7 +1085,7 @@ static int mc_host_probe(struct platform_device *pdev)
|
|
mc_disable_interrupts(port);
|
|
|
|
bridge_base_addr = port->axi_base_addr + MC_PCIE_BRIDGE_ADDR;
|
|
- port->bridge_addr = bridge_base_addr;
|
|
+ plda->bridge_addr = bridge_base_addr;
|
|
|
|
/* Allow enabling MSI by disabling MSI-X */
|
|
val = readl(bridge_base_addr + PCIE_PCI_IRQ_DW0);
|
|
@@ -1087,10 +1097,10 @@ static int mc_host_probe(struct platform_device *pdev)
|
|
val &= NUM_MSI_MSGS_MASK;
|
|
val >>= NUM_MSI_MSGS_SHIFT;
|
|
|
|
- port->msi.num_vectors = 1 << val;
|
|
+ plda->msi.num_vectors = 1 << val;
|
|
|
|
/* Pick vector address from design */
|
|
- port->msi.vector_phy = readl_relaxed(bridge_base_addr + IMSI_ADDR);
|
|
+ plda->msi.vector_phy = readl_relaxed(bridge_base_addr + IMSI_ADDR);
|
|
|
|
ret = mc_pcie_init_clks(dev);
|
|
if (ret) {
|
|
|
|
From patchwork Thu Mar 28 09:18:19 2024
|
|
Content-Type: text/plain; charset="utf-8"
|
|
MIME-Version: 1.0
|
|
Content-Transfer-Encoding: 7bit
|
|
X-Patchwork-Submitter: Minda Chen <minda.chen@starfivetech.com>
|
|
X-Patchwork-Id: 13608242
|
|
X-Patchwork-Delegate: kw@linux.com
|
|
Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn
|
|
(mail-sh0chn02on2114.outbound.protection.partner.outlook.cn
|
|
[139.219.146.114])
|
|
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
|
|
(No client certificate requested)
|
|
by smtp.subspace.kernel.org (Postfix) with ESMTPS id E0B477C0B7;
|
|
Thu, 28 Mar 2024 09:19:06 +0000 (UTC)
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
arc=fail smtp.client-ip=139.219.146.114
|
|
ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
|
|
t=1711617548; cv=fail;
|
|
b=Wej1CUHDrGv9+yp/R9ioldsbG4LXjyAQdTB/id2rt+ZEI+gvO9CEqNxsOk+ChqcclBpj5/xXOpy7QDtXK6dkI5+xHpTSVBaLBhqmz/PwEGQdRLb71nzpHUk/fLxfEM1JWeYaAdaV9zhOCtuySpdn2/0C9Wohhff0SiEwCoS4LTU=
|
|
ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org;
|
|
s=arc-20240116; t=1711617548; c=relaxed/simple;
|
|
bh=uG3O8dUKV/QjhNt5lJDMPRKzxxDT134aACSPlqopLnM=;
|
|
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
|
|
Content-Type:MIME-Version;
|
|
b=J9PIKY61yWIkt9RFyBYFJA3ldUjxOnyIafFd+RM1WrFRiyHnW1eqazdxXXHeEwryvj4X3dJYPxjB+O+j8Xdu+DWtL8P56mvZJz67OsJyD2YgPNgN2MIh47mA58X328K3C6Nwjg+KSKHAPb8ZBhA3ADIxE1/XYg8m2hwB+Ayidkw=
|
|
ARC-Authentication-Results: i=2; smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com;
|
|
spf=pass smtp.mailfrom=starfivetech.com;
|
|
arc=fail smtp.client-ip=139.219.146.114
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
spf=pass smtp.mailfrom=starfivetech.com
|
|
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
|
|
b=DRie1ElbU+KE517CM5J2TUblm00+JeCWhYWODvzDKSLye0oxrYDF2H9kzFvpfRozdy6pz7kAf+gxpWQpyLdeYBWuEuDwdUya2LNYrGtk8h+i7A4vzGhgpKMTaCICxzul+tJOcshhiIVZgeoO6LPYW0wN6+yDGKa2L4WfQedK/dC6r9AO5qFkFrc/aLIj213n4MnhwDkjznvkIcomEMa4Nv5+M2crbbBDtOCFBN2UodApFNIAFL/vTzWv9J1MBNSU6iIvai0eCRw+JkvhsTggUKChMkZkmPlQxH1f81THC6OP/Ps18ah2zc4t/kwJzw5MXx70BXo4mTP6tvta3cBvMg==
|
|
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
|
|
s=arcselector9901;
|
|
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
|
|
bh=mmti4Mzosy+9FFE0EDrNRmDgW0khnDOK1Vefu3r0lh8=;
|
|
b=l0/BflHbgl32la2uVngkWE7shnq7mx5i96Gylr91tc39V8ceHDF+3pSjd/WaT04kp00CW6hfpGZ/jsHS8VM3yyPcIvsihLnVkb0N4n5U/mi/GpdttyJfp1HK3CIIcKFrQ36X4H1i8+jR0ZPV4OwiMVtzE5pdB549c1PMyDBsgKnI405mbivY/CdZJvi8G2K9nePHs4kEt/POqhQnTgetIXTHqsATIoRoNIVqexQ9yi6twGjJSVMgd6q8qRLnRNHvYNtbhHjthM5Un9kD48+r/YL8klIalYoCpvTj8ZS6Cw64VXFeP8ZHO/UpaOBcDGz7XdNuzbnnLULG8loSer+5iA==
|
|
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
|
|
smtp.mailfrom=starfivetech.com; dmarc=pass action=none
|
|
header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none
|
|
Authentication-Results: dkim=none (message not signed)
|
|
header.d=none;dmarc=none action=none header.from=starfivetech.com;
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15) by SHXPR01MB0496.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:1f::21) with Microsoft SMTP Server (version=TLS1_2,
|
|
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Thu, 28 Mar
|
|
2024 09:18:50 +0000
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
([fe80::c738:9e6b:f92e:8bb9]) by
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn ([fe80::c738:9e6b:f92e:8bb9%6])
|
|
with mapi id 15.20.7409.031; Thu, 28 Mar 2024 09:18:49 +0000
|
|
From: Minda Chen <minda.chen@starfivetech.com>
|
|
To: Lorenzo Pieralisi <lpieralisi@kernel.org>,
|
|
Conor Dooley <conor@kernel.org>,
|
|
=?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kw@linux.com>,
|
|
Rob Herring <robh+dt@kernel.org>, Bjorn Helgaas <bhelgaas@google.com>,
|
|
Thomas Gleixner <tglx@linutronix.de>,
|
|
Daire McNamara <daire.mcnamara@microchip.com>,
|
|
Emil Renner Berthing <emil.renner.berthing@canonical.com>,
|
|
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
|
|
Cc: devicetree@vger.kernel.org,
|
|
linux-kernel@vger.kernel.org,
|
|
linux-riscv@lists.infradead.org,
|
|
linux-pci@vger.kernel.org,
|
|
Paul Walmsley <paul.walmsley@sifive.com>,
|
|
Palmer Dabbelt <palmer@dabbelt.com>,
|
|
Albert Ou <aou@eecs.berkeley.edu>,
|
|
Philipp Zabel <p.zabel@pengutronix.de>,
|
|
Mason Huo <mason.huo@starfivetech.com>,
|
|
Leyfoon Tan <leyfoon.tan@starfivetech.com>,
|
|
Kevin Xie <kevin.xie@starfivetech.com>,
|
|
Minda Chen <minda.chen@starfivetech.com>
|
|
Subject: [PATCH v16 06/22] PCI: microchip: Move PCIe host data structures to
|
|
plda-pcie.h
|
|
Date: Thu, 28 Mar 2024 17:18:19 +0800
|
|
Message-Id: <20240328091835.14797-7-minda.chen@starfivetech.com>
|
|
X-Mailer: git-send-email 2.17.1
|
|
In-Reply-To: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
References: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
X-ClientProxiedBy: NT0PR01CA0020.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c510:c::16) To SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15)
|
|
Precedence: bulk
|
|
X-Mailing-List: linux-pci@vger.kernel.org
|
|
List-Id: <linux-pci.vger.kernel.org>
|
|
List-Subscribe: <mailto:linux-pci+subscribe@vger.kernel.org>
|
|
List-Unsubscribe: <mailto:linux-pci+unsubscribe@vger.kernel.org>
|
|
MIME-Version: 1.0
|
|
X-MS-PublicTrafficType: Email
|
|
X-MS-TrafficTypeDiagnostic: SHXPR01MB0863:EE_|SHXPR01MB0496:EE_
|
|
X-MS-Office365-Filtering-Correlation-Id: 1a4f727a-0627-446f-de7b-08dc4f081445
|
|
X-MS-Exchange-SenderADCheck: 1
|
|
X-Microsoft-Antispam: BCL:0;
|
|
X-Microsoft-Antispam-Message-Info:
|
|
448CbUJaU/XAo9u0vVgaF7L2/pBSfW6f4x2+6q4B6jNwpDPUYaN4EdGuy2cJvZ+TJ0keS/WE94mlpdAxPGPisyxROXNVERoVEcS6B9HOIhUjkhOvv88hVkCjG3Z7EfWaIeRwoSLyIaFwcx86EtTpzTgBZxtirZkuB55xaaxmC/PEgRnJrxwFtgVYIOTXL4+fAXDuq9dOLQUnVzZR7QT5yeOyMM0A+BdanN73ed45UFbvlGISCWIy4oBcUjHOYm3L5gfBEVud19h2Qa1g5vr2GuQmYqLgltPp6FTd4psnKYbF8qrJMMqaPbtR5UuGuH7PgHT8AdL4kvKMYITYmsa1ZQdVY++wGNgKHy8JyUPdQWKWVqNHurBaUJLW+c3EbjOIq9Vru3IP+c4dgnenBhPtwy2lLPpaAFl37JCl/YGrzU+r/fKhXvF4sZ6cGrbiGK6bX70k4yjE9DP5u8ScC+94PLoOOtPR/wDXOzJGcM6+QibAeVvWm+oGuBurCXZei6TD6gVMSOpEqJlOv9ttcYUYzQ/OZuJgHsIrhTpDgb7gX/869+CeiMciRrLh40J2vUfYW6LESKrz992pncTj0qXT8niNyNjO+Zxol71JzaSEhBiZdhcYKJHY9h6yMyAhjusl
|
|
X-Forefront-Antispam-Report:
|
|
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230031)(52116005)(1800799015)(7416005)(41320700004)(366007)(38350700005);DIR:OUT;SFP:1102;
|
|
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
|
|
X-MS-Exchange-AntiSpam-MessageData-0:
|
|
hgXTPnRT1AzoRipI1ba2InjmOoYd2Id318iqgJKcy0LlyAw+J+5Izdeuf0+bPr+/MCUOVkA59lRJmmwsus0/sj/lO6BQFk5iPe5YKSAosuiAZapn0sL/Kf6Dg3vrYaHrGBFiVV8GViyMUlU7rCG7cwYUIuhNI0Nn11mM2anOHYGgD0D4bJRuiCF9B2i0GPIOZbr+8PxRt+t3MG/tFQRSs/JJzVwaByYKSOWRK9AhyjTaXaGaA5vtTtSuLRvmqYkdVDLb7jxoBtgCrtyQwE9MglVwQnCxMgIbMWxYaSEOkGh0KOjIWW78voBUurP9LXZ+zUKJ5WAxowYO1zH462bYP4bezh1t+sSB6Kqtm0tXwYqZseyw7cCz1FGUzCrdY+pcaaOMqyHaagd9c0lQdDJ7YjU0bZLboyOlMIXT6bgiA5umh5hjZMWbGG7ljHS0v2uKKNHIfPYdLhwx2r0Wv96ax77JJkRO79AA9GgT3isuABwy6oIZswXe6dVLoe5lxOBRAMGob61VUXGgSAlyjydJw3V3ynXkPbGL3T5OIl4Nw2FrPkSfdQnMqxQhuvwMk9LYqfoZ5tA3jK1aouqVhv+gNWxes/b7mHgJoxRm3G+K8GD6bSFrJ/c45uUfoT3az/1Ns/nVHvVcKT+uYZCZKVLchdmq5K/ngFZSOE/20RMpVSo+Yb0uIHg+cOlgDrxsIA9PcPOVFY7wa09jYf/dUlSUiVk9cKuRVHAO6rm8EOPDPod9PnbsEPCn5UcsJ8kPg2qqnduU2zzjItL+RGMV/sJU5JHbKNBYJTZ32mOlDaBeo+9NSrFnWpwirG9j33Km8tZhLajqZVqAzM1KzTvxKhgVKI/0bEfWcPn82SONyhFnAN42PfpYOOEboP+3w3EJRITqReyPnYPbGqbe7L+HNn0m3l1K+ZyvzrWJ6ktJuinmFtq+TUIVcXqF4Z7zWJGeppNkMk/f/y9b2meVztp3RcKwjPg4VaowHcae3SH0rdp498QDh8V+SI1pX94Gw/tG9FU0rp3uN3ThUTe+zea5WBNhpX8N0DmuF8LKwh4UyhEuZwWqwONkT7wSVVWmZrmLPqFC+MLMrexZoWsS+AIe85rXXiGx2/gmgsLgDzsibrCQKLHNoYcWHNQTcoTTFARcdX1DNTHGqWnCzWrEe4GuMhltVXKgCk6RFaFFhYEqqyfLhqJowmIjgMGi2T9L5GUKdiDhYxTaGIHWV/TpSW4BD/dnfPgk4xpUhGyTkAGwbt1aH/QhaWaVSm7QSrwZ0ofoQ6kgkndFe82Lq3XXkfh3SACsjrUpGkMP5xF3nwsaE+ODoh6zfH2jbvZHSmtbjRYP50eT4lfJcCVoB+GXYAd5sY4Fzx+s9Ye+xpMp1PSxYd4GiB51Fd48Lrj3mQ3RkPdXTBl1oQrlr2kG4ROnWIGc04FVSaO4LbanaIIyiXpc1vQ9xXa8AIkwx7E+mlbX/isQFaGgnJpIcp3utYjJUqkugl60pefx1NmCidwISF4zeH5TXflN44R4UexotCQlflhjIBWU/WTejuvzuMeVcYWEtt7SuoKTDvBnWCyhLmQWhAOsyMbO2uppPs7HNhZcuvc2Gqdy6p/x2bv4D7jA5UEHS6u6nA==
|
|
X-OriginatorOrg: starfivetech.com
|
|
X-MS-Exchange-CrossTenant-Network-Message-Id:
|
|
1a4f727a-0627-446f-de7b-08dc4f081445
|
|
X-MS-Exchange-CrossTenant-AuthSource:
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
X-MS-Exchange-CrossTenant-AuthAs: Internal
|
|
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2024 09:18:49.9299
|
|
(UTC)
|
|
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
|
|
X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c
|
|
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
|
|
X-MS-Exchange-CrossTenant-UserPrincipalName:
|
|
LCHQ2sJHbI/lT7eo2ROwhPuuYZ+Sxfs29NJD+imxzLfPJMh+gkZZJnHXBaiI++zLXXOxQAyJa0ojj/it/a8ib8kjDUGET09inyxbr8o65Zk=
|
|
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SHXPR01MB0496
|
|
|
|
Move the common data structures definition to head file becauce these two
|
|
data structures can be re-used.
|
|
|
|
Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
|
|
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
|
|
---
|
|
.../pci/controller/plda/pcie-microchip-host.c | 20 ------------------
|
|
drivers/pci/controller/plda/pcie-plda.h | 21 +++++++++++++++++++
|
|
2 files changed, 21 insertions(+), 20 deletions(-)
|
|
|
|
diff --git a/drivers/pci/controller/plda/pcie-microchip-host.c b/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
index df0736f688ce..a554a56cc0e8 100644
|
|
--- a/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
+++ b/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
@@ -21,9 +21,6 @@
|
|
#include "../../pci.h"
|
|
#include "pcie-plda.h"
|
|
|
|
-/* Number of MSI IRQs */
|
|
-#define PLDA_MAX_NUM_MSI_IRQS 32
|
|
-
|
|
/* PCIe Bridge Phy and Controller Phy offsets */
|
|
#define MC_PCIE1_BRIDGE_ADDR 0x00008000u
|
|
#define MC_PCIE1_CTRL_ADDR 0x0000a000u
|
|
@@ -179,23 +176,6 @@ struct event_map {
|
|
u32 event_bit;
|
|
};
|
|
|
|
-struct plda_msi {
|
|
- struct mutex lock; /* Protect used bitmap */
|
|
- struct irq_domain *msi_domain;
|
|
- struct irq_domain *dev_domain;
|
|
- u32 num_vectors;
|
|
- u64 vector_phy;
|
|
- DECLARE_BITMAP(used, PLDA_MAX_NUM_MSI_IRQS);
|
|
-};
|
|
-
|
|
-struct plda_pcie_rp {
|
|
- struct device *dev;
|
|
- struct irq_domain *intx_domain;
|
|
- struct irq_domain *event_domain;
|
|
- raw_spinlock_t lock;
|
|
- struct plda_msi msi;
|
|
- void __iomem *bridge_addr;
|
|
-};
|
|
|
|
struct mc_pcie {
|
|
struct plda_pcie_rp plda;
|
|
diff --git a/drivers/pci/controller/plda/pcie-plda.h b/drivers/pci/controller/plda/pcie-plda.h
|
|
index 65e0f3b72184..9ca66916c609 100644
|
|
--- a/drivers/pci/controller/plda/pcie-plda.h
|
|
+++ b/drivers/pci/controller/plda/pcie-plda.h
|
|
@@ -6,6 +6,9 @@
|
|
#ifndef _PCIE_PLDA_H
|
|
#define _PCIE_PLDA_H
|
|
|
|
+/* Number of MSI IRQs */
|
|
+#define PLDA_MAX_NUM_MSI_IRQS 32
|
|
+
|
|
/* PCIe Bridge Phy Regs */
|
|
#define PCIE_PCI_IRQ_DW0 0xa8
|
|
#define MSIX_CAP_MASK BIT(31)
|
|
@@ -105,4 +108,22 @@ enum plda_int_event {
|
|
|
|
#define PLDA_MAX_EVENT_NUM (PLDA_NUM_DMA_EVENTS + PLDA_INT_EVENT_NUM)
|
|
|
|
+struct plda_msi {
|
|
+ struct mutex lock; /* Protect used bitmap */
|
|
+ struct irq_domain *msi_domain;
|
|
+ struct irq_domain *dev_domain;
|
|
+ u32 num_vectors;
|
|
+ u64 vector_phy;
|
|
+ DECLARE_BITMAP(used, PLDA_MAX_NUM_MSI_IRQS);
|
|
+};
|
|
+
|
|
+struct plda_pcie_rp {
|
|
+ struct device *dev;
|
|
+ struct irq_domain *intx_domain;
|
|
+ struct irq_domain *event_domain;
|
|
+ raw_spinlock_t lock;
|
|
+ struct plda_msi msi;
|
|
+ void __iomem *bridge_addr;
|
|
+};
|
|
+
|
|
#endif
|
|
|
|
From patchwork Thu Mar 28 09:18:20 2024
|
|
Content-Type: text/plain; charset="utf-8"
|
|
MIME-Version: 1.0
|
|
Content-Transfer-Encoding: 7bit
|
|
X-Patchwork-Submitter: Minda Chen <minda.chen@starfivetech.com>
|
|
X-Patchwork-Id: 13608239
|
|
X-Patchwork-Delegate: kw@linux.com
|
|
Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn
|
|
(mail-sh0chn02on2114.outbound.protection.partner.outlook.cn
|
|
[139.219.146.114])
|
|
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
|
|
(No client certificate requested)
|
|
by smtp.subspace.kernel.org (Postfix) with ESMTPS id E20A07BAF4;
|
|
Thu, 28 Mar 2024 09:19:04 +0000 (UTC)
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
arc=fail smtp.client-ip=139.219.146.114
|
|
ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
|
|
t=1711617546; cv=fail;
|
|
b=hSb3WS4BriD3qAHCgooTeRSr3VCM/BwdbYuN8JRNVOlgLCIC6kP9acTDlV1jOk3owSKKJ2ytpKzx0Y6a40DlwQB5X7M75t7r6WlUjgtRtdlOaxg4K41l0zlTNM/NkqXUVPtkFeTqi08TBJRvYL5SDgn18VMWHTRM2009G+rEKHU=
|
|
ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org;
|
|
s=arc-20240116; t=1711617546; c=relaxed/simple;
|
|
bh=/ehzZl9QSVpPRZ/UAfCv29ylCqgtkbj83Tdj9z/HJIE=;
|
|
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
|
|
Content-Type:MIME-Version;
|
|
b=TtaqWs8SoD4sVXMpOrOQGOyhdk3ZKxfg6Zg1EHnJUzpUSuWAk0bQfeA/gqNFAZ5MdSjR+7eqRFzm4vnZdv+I8EclLpydmOtO0y7AdlILaU3bh90f4ndZlt80FATcjFbxMw0RTZC8wQt3bKdQ38pyUlBOEMCjCNJzygxaWFA0Dy8=
|
|
ARC-Authentication-Results: i=2; smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com;
|
|
spf=pass smtp.mailfrom=starfivetech.com;
|
|
arc=fail smtp.client-ip=139.219.146.114
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
spf=pass smtp.mailfrom=starfivetech.com
|
|
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
|
|
b=IUFeSqHbk6bSoHP9pZLoZCft6QxY34N5gpdKBB0jMQaFcziQhkAbxGPNgw+84qEbZjxo3C1Iamt8QGjWBsieQVJxC2Ufc/FCjzMTIEpGbs2J0mmXkuWGePBLR0pqggWXx2Hc/r+vv+DsKHhXK5zaIlc8Ez5vlYsDQt8ZH8GtI3ZmdkKKI8oQNbqsbfGAJ5SiGDG3KpU6HNe5u13xfqFnFHKvtVZG/a3K/t3Z86Ra8KOdiPXY1CYzr0naveXAnskdhOO2GLnW//JZCeltAhUvTx8M6bLqPUtODsFLxyt4m74d+Wmmy+gf9TWH2PhDi/LXtAgpf2maqwWFAYrBgyPmlg==
|
|
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
|
|
s=arcselector9901;
|
|
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
|
|
bh=Vfb6s05UiVePDPpYEZqYrC+O0vsMiLyoyD0g/Ym5o2M=;
|
|
b=ZfuSaFSPBO4ORTMGhjrE5jYf3YHMZi7cxWVv9ygEc7YoO3F+OPcd0bpvXCRiwxGdE+W0Rr97PsmXXFvkSuoRypgXzda/bt4Cz0fzNEGEtvW0Lp3Uju90uISQfA3tdCuvqGqewVtNdmcIQ6PzZe4MbK20kjGtMpPiD8IlC+QdC4sibRvOdEu+IHpYg94zNJOu6es/6gt7DA4U+DZkZzE0sVIuPkc1L2VaqwbMbEkrfhFR6iP92gZEK8OyUQoOYJdyxRnDJudhzXucXzbuUjeY/hUyEtPPaUxRLrk98n4Id8usBnMfhMACnV2F2b4AK9FH/4Si0Hv74Dx8A1J99g7fLA==
|
|
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
|
|
smtp.mailfrom=starfivetech.com; dmarc=pass action=none
|
|
header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none
|
|
Authentication-Results: dkim=none (message not signed)
|
|
header.d=none;dmarc=none action=none header.from=starfivetech.com;
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15) by SHXPR01MB0496.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:1f::21) with Microsoft SMTP Server (version=TLS1_2,
|
|
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Thu, 28 Mar
|
|
2024 09:18:50 +0000
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
([fe80::c738:9e6b:f92e:8bb9]) by
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn ([fe80::c738:9e6b:f92e:8bb9%6])
|
|
with mapi id 15.20.7409.031; Thu, 28 Mar 2024 09:18:50 +0000
|
|
From: Minda Chen <minda.chen@starfivetech.com>
|
|
To: Lorenzo Pieralisi <lpieralisi@kernel.org>,
|
|
Conor Dooley <conor@kernel.org>,
|
|
=?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kw@linux.com>,
|
|
Rob Herring <robh+dt@kernel.org>, Bjorn Helgaas <bhelgaas@google.com>,
|
|
Thomas Gleixner <tglx@linutronix.de>,
|
|
Daire McNamara <daire.mcnamara@microchip.com>,
|
|
Emil Renner Berthing <emil.renner.berthing@canonical.com>,
|
|
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
|
|
Cc: devicetree@vger.kernel.org,
|
|
linux-kernel@vger.kernel.org,
|
|
linux-riscv@lists.infradead.org,
|
|
linux-pci@vger.kernel.org,
|
|
Paul Walmsley <paul.walmsley@sifive.com>,
|
|
Palmer Dabbelt <palmer@dabbelt.com>,
|
|
Albert Ou <aou@eecs.berkeley.edu>,
|
|
Philipp Zabel <p.zabel@pengutronix.de>,
|
|
Mason Huo <mason.huo@starfivetech.com>,
|
|
Leyfoon Tan <leyfoon.tan@starfivetech.com>,
|
|
Kevin Xie <kevin.xie@starfivetech.com>,
|
|
Minda Chen <minda.chen@starfivetech.com>
|
|
Subject: [PATCH v16 07/22] PCI: microchip: Rename two setup functions
|
|
Date: Thu, 28 Mar 2024 17:18:20 +0800
|
|
Message-Id: <20240328091835.14797-8-minda.chen@starfivetech.com>
|
|
X-Mailer: git-send-email 2.17.1
|
|
In-Reply-To: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
References: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
X-ClientProxiedBy: NT0PR01CA0020.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c510:c::16) To SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15)
|
|
Precedence: bulk
|
|
X-Mailing-List: linux-pci@vger.kernel.org
|
|
List-Id: <linux-pci.vger.kernel.org>
|
|
List-Subscribe: <mailto:linux-pci+subscribe@vger.kernel.org>
|
|
List-Unsubscribe: <mailto:linux-pci+unsubscribe@vger.kernel.org>
|
|
MIME-Version: 1.0
|
|
X-MS-PublicTrafficType: Email
|
|
X-MS-TrafficTypeDiagnostic: SHXPR01MB0863:EE_|SHXPR01MB0496:EE_
|
|
X-MS-Office365-Filtering-Correlation-Id: c89e9911-47ac-4aad-3f8f-08dc4f0814dc
|
|
X-MS-Exchange-SenderADCheck: 1
|
|
X-Microsoft-Antispam: BCL:0;
|
|
X-Microsoft-Antispam-Message-Info:
|
|
sqppdAvWS+FxEdGiigkWv6C5ojQ/znEKDneWsMWKnUMlvgoOYpIUgQ8mKT0Z0fApszSkxVrKJA5H7ZWhyGZFD+yvKSA7sTMwoiEBBO8sDDM2+lTGulYZlx8MRVg2aIB+ie7yNy1ITSOMv93MY9/gles42TTUJNvcMNhumbR6sEKoCm75aybDaG+pe01a7ZFzMv1W4sCkV+mLZMnfYt7sL2JXC/zVAbgCOngYeB11GvWg4xAKddO2gB/i87atZBUxUYCXo4zBAO2Xv8N6aN3Xpd67Wa5Y4V+Sz+TklS/bPRarHK00rvREs5+zzvDbp5YgBx+LQV4zPHNx48P+rlRgIbzIAKbvYPVptGK6ExdSOBJbNd1vYh01Ufl6iEnX60AOj20mtaBRtH58QeSvNNGXokseN0RdQF3GsIC97ea0Vwwy1XPXR59iio9zvUK7eaPCRbyc9dmZvAC8nWYx5yPTr1lIE1/Qyy1TNTv+1dNy+fAttxpXTnyUjia6iKD+i6NqnwAmjLVJtD1xiGHBZP1S+mTxU2Q9mEwqtx9ipffftfUhlnALIM0A8j10K4zx6+tD9GQb8qCqyhe+QUqc6Da3Ktk5DURULEvc7IToitrPmZA2lZ1Sn1ba3VJTUfE90QWS
|
|
X-Forefront-Antispam-Report:
|
|
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230031)(52116005)(1800799015)(7416005)(41320700004)(366007)(38350700005);DIR:OUT;SFP:1102;
|
|
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
|
|
X-MS-Exchange-AntiSpam-MessageData-0:
|
|
PdSfXkqIYca0eLPMf6h+8soaNLq07l92s0Yv3WJ2KY/rYfg690PMaYX1GudHRXkIgzVpct7Nv9mJ3lQpPld1z4eJSgTYAtbJl2HvmSkcE09SoH9E/HiKsBlskM416Vo8CTG4cLzSV1ExVuyPrpVAKRFzcr7JCIljJurlh/Bpx90ZejjtuzQu1EReBXn7cw1Gm0464lWoQ5jMqnuzUFHVgbmNm6U7UN2TIlIAzNN76mK7eEMl7X5+ZdD4ecx9R5TaaQhFf18pY2ZmNc7ls6TJ877MuZRagmzlpP2Oj9Jqdz6IDYjR5zdu/kZKqM1ZVhqWLER3ff6iBNox0QQg/psWoyFlr22vxfJSxMTTP5Gg35F+mBtFqBRfYnwsV6AMLUd+RgzDcjcrJfXY4PoDidWN2mWb08o660WchCyMFUN1yrMnLu1aCnvEr0OWFPHf9jboDfKyf8F0NsZysPL0OaPqErlloitX4A5kMnKGNLqudw8nsTC7zE1NpL/hB5/ohSnuANgwz/AjYZlZuxJOYN1PEfsnyYXid7oxEESkSf3i/Gsj+zl6X+YZEcmzHu9ZU3tYha/eGaX3zhNth9VL1Z31K60O7A06ohUXY7cBjoVREHAUCR/PzDN+wpS7KsRgcoQgL0sMTpRkfnNJi/KOjIx85UpfCBBGP0FT4H1r8e93Wm8MkF6+GMMJl7wPaBzAXiIZy1w+smPIWIPhXX886NMMSuzhf8FqjZRahGH+Qcz3AZMqav25lACVyzib/29codV/4yoUA/RXKfnHJOo+PEFs5f39kGrNEJrBr6Sw8m3Sd4qdC17uf8aADCsgWOuPjW/6KwNzrgTsZ1yoJT7kfKHQy9dxSZjwClNGxiLUaJjTp95wpQQ69ZfNiJ4559MLDS9/n+7Zs4xaYvdfKasF5W7ZY9aD0qu9zwVsq4VlKYYeUDxrpDDmLo/uhy8tKAeqHtpkgyp0NXhJWnFPFiZzMzl8dM5+HNxZaxrZeSawZHddRdak+wr/tx+FS+ln9YqgqghWjuFuhzLBlW1OIVVeUkiBOHgDKcnqm7qQa40hoEm2BGpHBSmKs/50pddfO369GgGpe1eaGpj8tGk+5HI37VHRvUXnH/sFv+bVexv3C2+jO/lrb95F+Y/HVE5ywT70lxuNIAlpNahlyZGHjWQM+YxIsXqNgndRqvEqKEgb7QrKDXv6qOyoaj7ymLFZ2MBKEpdDfPQhUNxMjgqxGf8dsS0nu2D/jWcrLky55eIy4uB0FfeNNOxqnI8lcuQwWT5oTQF096EQk9os50rUALWh1MP+h4AGXl6n9p+cINeza3f37Cc+MvgbU/MSOlUf3FmdcwVgp46yeNfqKpdCIGctxEsiqdkMQ/GO9qadhw2vHuhW6f+/AKw9mXvYw4HOMzf9QHqYSWQxYOGgrCXfdrlHHmF9CDTmhDuxvZrw94pVBe9z+Zr1DVQzIaXIUIKQI3CJrefEfhZHmgWZYELEKPPndaXdjH2mrjaIL0I1J/GPcR3IYzp9s6ft+nAE3gQJnRexHkTpG0flpUVUg2ppV8EbXWLekhR0UEPcGK0g6TJoA9XsVKSy+c0oQmTaK46c/eIzw2kYXpLTHkgBxr0N6RjWxvXTMw==
|
|
X-OriginatorOrg: starfivetech.com
|
|
X-MS-Exchange-CrossTenant-Network-Message-Id:
|
|
c89e9911-47ac-4aad-3f8f-08dc4f0814dc
|
|
X-MS-Exchange-CrossTenant-AuthSource:
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
X-MS-Exchange-CrossTenant-AuthAs: Internal
|
|
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2024 09:18:50.9253
|
|
(UTC)
|
|
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
|
|
X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c
|
|
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
|
|
X-MS-Exchange-CrossTenant-UserPrincipalName:
|
|
cPw+Mao2oxql5095ghqm4WH43F0BWhE9+b1csmwiC7m/5Vrcv+0SjFghlMXqrmJ01YEP43JpArLGqCQQ4mc33hzDNeIVqdf7v9voIyQp4tI=
|
|
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SHXPR01MB0496
|
|
|
|
Rename two setup functions to plda prefix. Prepare to re-use these two
|
|
setup functions.
|
|
|
|
Since two setup functions names are similar, rename mc_pcie_setup_windows()
|
|
to plda_pcie_setup_iomems().
|
|
|
|
Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
|
|
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
|
|
---
|
|
.../pci/controller/plda/pcie-microchip-host.c | 24 +++++++++----------
|
|
1 file changed, 12 insertions(+), 12 deletions(-)
|
|
|
|
diff --git a/drivers/pci/controller/plda/pcie-microchip-host.c b/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
index a554a56cc0e8..9b367927cd32 100644
|
|
--- a/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
+++ b/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
@@ -838,9 +838,9 @@ static int mc_pcie_init_irq_domains(struct plda_pcie_rp *port)
|
|
return mc_allocate_msi_domains(port);
|
|
}
|
|
|
|
-static void mc_pcie_setup_window(void __iomem *bridge_base_addr, u32 index,
|
|
- phys_addr_t axi_addr, phys_addr_t pci_addr,
|
|
- size_t size)
|
|
+static void plda_pcie_setup_window(void __iomem *bridge_base_addr, u32 index,
|
|
+ phys_addr_t axi_addr, phys_addr_t pci_addr,
|
|
+ size_t size)
|
|
{
|
|
u32 atr_sz = ilog2(size) - 1;
|
|
u32 val;
|
|
@@ -876,8 +876,8 @@ static void mc_pcie_setup_window(void __iomem *bridge_base_addr, u32 index,
|
|
writel(0, bridge_base_addr + ATR0_PCIE_WIN0_SRC_ADDR);
|
|
}
|
|
|
|
-static int mc_pcie_setup_windows(struct platform_device *pdev,
|
|
- struct plda_pcie_rp *port)
|
|
+static int plda_pcie_setup_iomems(struct platform_device *pdev,
|
|
+ struct plda_pcie_rp *port)
|
|
{
|
|
void __iomem *bridge_base_addr = port->bridge_addr;
|
|
struct pci_host_bridge *bridge = platform_get_drvdata(pdev);
|
|
@@ -888,9 +888,9 @@ static int mc_pcie_setup_windows(struct platform_device *pdev,
|
|
resource_list_for_each_entry(entry, &bridge->windows) {
|
|
if (resource_type(entry->res) == IORESOURCE_MEM) {
|
|
pci_addr = entry->res->start - entry->offset;
|
|
- mc_pcie_setup_window(bridge_base_addr, index,
|
|
- entry->res->start, pci_addr,
|
|
- resource_size(entry->res));
|
|
+ plda_pcie_setup_window(bridge_base_addr, index,
|
|
+ entry->res->start, pci_addr,
|
|
+ resource_size(entry->res));
|
|
index++;
|
|
}
|
|
}
|
|
@@ -1023,15 +1023,15 @@ static int mc_platform_init(struct pci_config_window *cfg)
|
|
int ret;
|
|
|
|
/* Configure address translation table 0 for PCIe config space */
|
|
- mc_pcie_setup_window(bridge_base_addr, 0, cfg->res.start,
|
|
- cfg->res.start,
|
|
- resource_size(&cfg->res));
|
|
+ plda_pcie_setup_window(bridge_base_addr, 0, cfg->res.start,
|
|
+ cfg->res.start,
|
|
+ resource_size(&cfg->res));
|
|
|
|
/* Need some fixups in config space */
|
|
mc_pcie_enable_msi(port, cfg->win);
|
|
|
|
/* Configure non-config space outbound ranges */
|
|
- ret = mc_pcie_setup_windows(pdev, &port->plda);
|
|
+ ret = plda_pcie_setup_iomems(pdev, &port->plda);
|
|
if (ret)
|
|
return ret;
|
|
|
|
|
|
From patchwork Thu Mar 28 09:18:21 2024
|
|
Content-Type: text/plain; charset="utf-8"
|
|
MIME-Version: 1.0
|
|
Content-Transfer-Encoding: 7bit
|
|
X-Patchwork-Submitter: Minda Chen <minda.chen@starfivetech.com>
|
|
X-Patchwork-Id: 13608235
|
|
X-Patchwork-Delegate: kw@linux.com
|
|
Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn
|
|
(mail-sh0chn02on2111.outbound.protection.partner.outlook.cn
|
|
[139.219.146.111])
|
|
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
|
|
(No client certificate requested)
|
|
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 60E4662172;
|
|
Thu, 28 Mar 2024 09:19:00 +0000 (UTC)
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
arc=fail smtp.client-ip=139.219.146.111
|
|
ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
|
|
t=1711617542; cv=fail;
|
|
b=HLGbx/EfIUrYU9//lcLFvLY1rFTbKL4WSEozvC3ueIVfhQfoqPbuo/6Z4wHACEr6lvIVe0CebyI+wOB/VoXjRZA+fg25oJo0us5lbDosfAbJ0GOHCiyO9bojFLbMKN/ZJsFsdRtRxFR8C6gBYqnluCl3rrx3NARLSJe7e4/M1xo=
|
|
ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org;
|
|
s=arc-20240116; t=1711617542; c=relaxed/simple;
|
|
bh=6IWs/9L5/U7olRhCkLt+mH+c3E5Xoo0SyzW6LQLbL8c=;
|
|
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
|
|
Content-Type:MIME-Version;
|
|
b=mk8/lEPpH1blpUuxf1aTF6E+5wGdEVNqBBwez2uWHdhSZ0zvS4iPc9cUW4qXQVstHi9XiE5X1Kml0bUSRgEL9u1bEpm2xtQOEike6AjWgPGVP3xlROODgDJq4+AkhQ5+P9qcl9L86wwhzNMOkjwTe96AKQqRAh8ZHeL0vYKnz5U=
|
|
ARC-Authentication-Results: i=2; smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com;
|
|
spf=pass smtp.mailfrom=starfivetech.com;
|
|
arc=fail smtp.client-ip=139.219.146.111
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
spf=pass smtp.mailfrom=starfivetech.com
|
|
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
|
|
b=HydTu+bZdUz3Uu3F6OztMJ0h2TCNBYujhlJV/0YXKqrd1fG2ZzZ+gfnQA7XFcXTO6iBmhjLu7Mgbevv7Qoxk0iPRgNEaVmrDsiSty6l2lC29J3pW0WW4Ax6RdAl/eJN81SVsnaaBciPUQJfWpzhzFw0IAyeFiG9dQpFDdb3A/4EkqAlOKz/JZZsTAeQAcR6FsoV4iQ6C6hd2BR5xqrHwL59pTBatJJnWcpkmiPUhHybpbQm91Cjrz58xX66TQXY+5PML3XmDumSjPlxi2OJOvAZN+sRv444glywb40ifVqdgZip4p2NUtfKYKWcP1eO39SlwSfiABzNAAq34e04h7Q==
|
|
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
|
|
s=arcselector9901;
|
|
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
|
|
bh=H1L2zCinMaKZ61leC9g0xpthGdFxAFSQ7l+a9Zn1/VQ=;
|
|
b=CraZKrZ0Mk9gA4YzBLdL1FGRLxiUJxmf8qq/5X/3XO8l5K36/H19k2Mf6WLzig/WB3iMTTjgUR+hoNKzwQ2lZvQ/BPBwKQObLSKxyqL0pFI3rUSntSWELha4h1QrA1fD5tgjGmB97sRSmXDHEHAPjIAmIr431IuNSpo9zoy7HaOp9w3DqKK/9GcgwAK5WtYV917eZRCqngw67Wmau7MqvGKBYHCsgwsosZviMs5niTrOP7wshW7uLDmjYE4ODjReI3X+mqQ6SdVknnQOc1iMTsChFUv52UYGy+wmo5Rv9Vr+f52jlNHsF33pWpmnKoIhQfk4v6n/lT1cVJlMzKmtQA==
|
|
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
|
|
smtp.mailfrom=starfivetech.com; dmarc=pass action=none
|
|
header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none
|
|
Authentication-Results: dkim=none (message not signed)
|
|
header.d=none;dmarc=none action=none header.from=starfivetech.com;
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15) by SHXPR01MB0526.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:1d::11) with Microsoft SMTP Server (version=TLS1_2,
|
|
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Thu, 28 Mar
|
|
2024 09:18:52 +0000
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
([fe80::c738:9e6b:f92e:8bb9]) by
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn ([fe80::c738:9e6b:f92e:8bb9%6])
|
|
with mapi id 15.20.7409.031; Thu, 28 Mar 2024 09:18:51 +0000
|
|
From: Minda Chen <minda.chen@starfivetech.com>
|
|
To: Lorenzo Pieralisi <lpieralisi@kernel.org>,
|
|
Conor Dooley <conor@kernel.org>,
|
|
=?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kw@linux.com>,
|
|
Rob Herring <robh+dt@kernel.org>, Bjorn Helgaas <bhelgaas@google.com>,
|
|
Thomas Gleixner <tglx@linutronix.de>,
|
|
Daire McNamara <daire.mcnamara@microchip.com>,
|
|
Emil Renner Berthing <emil.renner.berthing@canonical.com>,
|
|
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
|
|
Cc: devicetree@vger.kernel.org,
|
|
linux-kernel@vger.kernel.org,
|
|
linux-riscv@lists.infradead.org,
|
|
linux-pci@vger.kernel.org,
|
|
Paul Walmsley <paul.walmsley@sifive.com>,
|
|
Palmer Dabbelt <palmer@dabbelt.com>,
|
|
Albert Ou <aou@eecs.berkeley.edu>,
|
|
Philipp Zabel <p.zabel@pengutronix.de>,
|
|
Mason Huo <mason.huo@starfivetech.com>,
|
|
Leyfoon Tan <leyfoon.tan@starfivetech.com>,
|
|
Kevin Xie <kevin.xie@starfivetech.com>,
|
|
Minda Chen <minda.chen@starfivetech.com>
|
|
Subject: [PATCH v16 08/22] PCI: microchip: Change the argument of
|
|
plda_pcie_setup_iomems()
|
|
Date: Thu, 28 Mar 2024 17:18:21 +0800
|
|
Message-Id: <20240328091835.14797-9-minda.chen@starfivetech.com>
|
|
X-Mailer: git-send-email 2.17.1
|
|
In-Reply-To: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
References: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
X-ClientProxiedBy: NT0PR01CA0020.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c510:c::16) To SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15)
|
|
Precedence: bulk
|
|
X-Mailing-List: linux-pci@vger.kernel.org
|
|
List-Id: <linux-pci.vger.kernel.org>
|
|
List-Subscribe: <mailto:linux-pci+subscribe@vger.kernel.org>
|
|
List-Unsubscribe: <mailto:linux-pci+unsubscribe@vger.kernel.org>
|
|
MIME-Version: 1.0
|
|
X-MS-PublicTrafficType: Email
|
|
X-MS-TrafficTypeDiagnostic: SHXPR01MB0863:EE_|SHXPR01MB0526:EE_
|
|
X-MS-Office365-Filtering-Correlation-Id: a799fe66-961b-4faf-0bdc-08dc4f081574
|
|
X-MS-Exchange-SenderADCheck: 1
|
|
X-Microsoft-Antispam: BCL:0;
|
|
X-Microsoft-Antispam-Message-Info:
|
|
bwPtdAsNgZ1sN9vUeHuO+tHvoenBQkLfKt3HlKaBVsfC9tuonXwvgvsWHePz+GVEPRAL/cDJZDrkxd4bcmpWOVaYyKxufl8iwJTBCVTWShzQMOe6dYqw79SNSwJEDvVTDWZEFBLnvFexXmuBXQrf5FK2esREKh+deaBRZl4jCER/CP3bX/DgEbdRsRulybD9V4VXJRsfBWWwHi4hR1jVbEPj7rwPsgwWcB+iRJY/31hBb4nJL5J/P3pqeCqeo6hRL5PziRqVs6ci2AkF/7AKuYlIWVxNfTjrr9hlWJ+5YZu329hlba0BbQNsDJtkdRZqIsQfl5BtgCEuClznnALDkI/WjTwtwpZ0qmaT6P/i2aO+8Vdxu5DYknVMwnLoM5gHWy6FWRsNEKpEhsGM8EXN9hu5WtNa6GGGe27DJYadfjKXa6nkyl8pipdF/IcFn8HnNQqnsIo10ILoJcWLnxM/HWc9QHz5YANrqgJG+gEMdAyVaPI6BzWx10xUGgNzGtNieA4n/slbYqBMUZsOj94fTV4UNq3q79diUbtgf/lj/CoE+cjdXuxx521uxaOsZsQx3F8b6diDdZpciyz3zMYXOZpc6YBMIoGe/olMbG0x7k4rKpLVE7eAr1iqdd8QQHqM
|
|
X-Forefront-Antispam-Report:
|
|
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230031)(41320700004)(7416005)(366007)(52116005)(1800799015)(38350700005);DIR:OUT;SFP:1102;
|
|
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
|
|
X-MS-Exchange-AntiSpam-MessageData-0:
|
|
9NCVQsxXx2ZlvoXDBFI3IVJnJMSBGZAF3/Q28bghvk8UOM4i28WkU604Li8tZRwat5+kar/Z+dnnHaqunEI5fyo+YdNKdXAdFo7L6NGYfx9vm7kMnI0RUhtXkiqT4Gp0Git2bOdXIIOqGX903Y98+lj0mFZ+nJ0XE3KuZUgtibM/8bwwHnenln/5yZdQhIZ/4B1ybPuuIFLQ/D7qWUupfqthObxx8ORrdpNpDHfbwvqDbXHolztx36G3M6m8iocWZCqJLIcSkgtDE0Ugsevs3SDLuil11+CJVUMNR7X6e1rR5XxHRZRrXsmeQsGEV3O4DkDgkBPdpL/RPJCkrXv3aoU0mHiic0WmvaSFW64/7motZ0D/OQz4VpZGBe0WjqQ0eW7mm/C8vX5gxcMhsXPJkZZoJzM7/Ncflr7A4i8fvR/Gl6Pk+gZ48LXOgTMPGPD437L92j/ErErBtZsEthUUWEGhPVxrHVibMqj+nOXVxQCd0Sc4DYTo9v+rGOtQpvM6lPvKykzbSj09CH9tCXT2eEYvTTUxK/CPzAgR/9Lx/wgz0qrWxSJzDX5tnMUkn9wfDbirP9o3FMVTBjVCW3I+7joA3fGaIuYoEM3FVjS1gl0ORAakFUQO44lMp0Xs1IQiQro720DgaNKqLyYlCbBjwLumI+GDbbKdlMqGisixktNiDFED/ac7GL5ukfVNpPF0K7/SU2qdvrW489W6aATr52TAIj+N7Sjc0eYEnBmzRfSrXOp/RwRvgvM6M21Wm1AbR0H8HdMHXj6bwLh3a8fzLmgwGJD6rfeGYVAU+IuAcQAVDVEyuQwG7DTNvxCE5i++RbGrR4FDcpOfF6tUKxcEJJB57GYDpPU4DM2eQB/NA58oqH3PHTXiJttZ5LSmkQ53pwGL/cczhoGOV1SX608I0NYnkWe90OMNh8ufRTC2IPtAfSIk3wqgQmE5PJug0pEyjbo3WmeX4sOShijodHYCFFPLpq/6mkjG3OzKTxeAeKHBhn/3S1b/YBGid2s1dYZ8cgotLHk3iVeNu0NnVn/AANXdK8XETMMgeqnBOT0klUVS2Nq85/IsNKyPNVKtv9yCyKstIcCjaC5GWjnj381kuXOghQEEJlta092/pIGnDu+usP3fZtk+xaaxzDvGRge92myZYfgUIGiC01qJXlqWzZZIgvfLM9lniHBOFx1C7CXiO6N4MPLoJDKLRiZwv58yUGULdIE5DzJOQFmf6+dy75DdC8NTNyQhfLi9xde4aCa0YACnysHgu2C2h/QnmT/VYAued9bz1SXu2DTq/iG8TvJiFAHDJiH3mVpaVRaf8fEk8erlBpSacvT4GTx8+oPf5xGlyv/ZBk0UFxbTrXYRUa8u8WnM/fQ76U/BaxwHOqiPeC3zNnIU3TKEr1myHGru3XnVX2AjkECg+s6TtqW1Ly5s1UUA99tzHgi28RS6Pjw2Ic9On2qXIX0u0xXiOYdzqiwE4HbJ39V2dwL3PqkNUrpLl/4m6zkvgO62mOLu8Unoo10pJ7WqcIYP4Io8I7eG0SzUBqEwZmFZGX5KEtpgDibNf8D77rolYXi824OcOjVl3ov43Wv+QRFPdaIEsotf0OqYrwDoPkf2mKACbDroPg==
|
|
X-OriginatorOrg: starfivetech.com
|
|
X-MS-Exchange-CrossTenant-Network-Message-Id:
|
|
a799fe66-961b-4faf-0bdc-08dc4f081574
|
|
X-MS-Exchange-CrossTenant-AuthSource:
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
X-MS-Exchange-CrossTenant-AuthAs: Internal
|
|
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2024 09:18:51.8929
|
|
(UTC)
|
|
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
|
|
X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c
|
|
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
|
|
X-MS-Exchange-CrossTenant-UserPrincipalName:
|
|
KAE3gcVPpFEC36fq/pLvgu54l+aoAyq0rdJhOiW0MdAuvI5iNlrTURRgs76pg7Umu5Ixrh1PW5xOoyKFreUW9N1xd3gqWdtsaaaB8UHH+8U=
|
|
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SHXPR01MB0526
|
|
|
|
If other vendor do not select PCI_HOST_COMMON, the driver data is not
|
|
struct pci_host_bridge.
|
|
|
|
Move calling platform_get_drvdata() to mc_platform_init().
|
|
|
|
Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
|
|
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
|
|
---
|
|
drivers/pci/controller/plda/pcie-microchip-host.c | 6 +++---
|
|
1 file changed, 3 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/drivers/pci/controller/plda/pcie-microchip-host.c b/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
index 9b367927cd32..805870aed61d 100644
|
|
--- a/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
+++ b/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
@@ -876,11 +876,10 @@ static void plda_pcie_setup_window(void __iomem *bridge_base_addr, u32 index,
|
|
writel(0, bridge_base_addr + ATR0_PCIE_WIN0_SRC_ADDR);
|
|
}
|
|
|
|
-static int plda_pcie_setup_iomems(struct platform_device *pdev,
|
|
+static int plda_pcie_setup_iomems(struct pci_host_bridge *bridge,
|
|
struct plda_pcie_rp *port)
|
|
{
|
|
void __iomem *bridge_base_addr = port->bridge_addr;
|
|
- struct pci_host_bridge *bridge = platform_get_drvdata(pdev);
|
|
struct resource_entry *entry;
|
|
u64 pci_addr;
|
|
u32 index = 1;
|
|
@@ -1018,6 +1017,7 @@ static int mc_platform_init(struct pci_config_window *cfg)
|
|
{
|
|
struct device *dev = cfg->parent;
|
|
struct platform_device *pdev = to_platform_device(dev);
|
|
+ struct pci_host_bridge *bridge = platform_get_drvdata(pdev);
|
|
void __iomem *bridge_base_addr =
|
|
port->axi_base_addr + MC_PCIE_BRIDGE_ADDR;
|
|
int ret;
|
|
@@ -1031,7 +1031,7 @@ static int mc_platform_init(struct pci_config_window *cfg)
|
|
mc_pcie_enable_msi(port, cfg->win);
|
|
|
|
/* Configure non-config space outbound ranges */
|
|
- ret = plda_pcie_setup_iomems(pdev, &port->plda);
|
|
+ ret = plda_pcie_setup_iomems(bridge, &port->plda);
|
|
if (ret)
|
|
return ret;
|
|
|
|
|
|
From patchwork Thu Mar 28 09:18:22 2024
|
|
Content-Type: text/plain; charset="utf-8"
|
|
MIME-Version: 1.0
|
|
Content-Transfer-Encoding: 7bit
|
|
X-Patchwork-Submitter: Minda Chen <minda.chen@starfivetech.com>
|
|
X-Patchwork-Id: 13608236
|
|
X-Patchwork-Delegate: kw@linux.com
|
|
Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn
|
|
(mail-sh0chn02on2136.outbound.protection.partner.outlook.cn
|
|
[139.219.146.136])
|
|
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
|
|
(No client certificate requested)
|
|
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8127265194;
|
|
Thu, 28 Mar 2024 09:19:01 +0000 (UTC)
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
arc=fail smtp.client-ip=139.219.146.136
|
|
ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
|
|
t=1711617543; cv=fail;
|
|
b=WiNBe/r67AeT7U66NNm2C4X+pIwPv5j7FYF1r3hsR4nF5o91cm8nPw8al2Gb02U/Z0VsvMb6xfnpa/ZQItBm8nNQH4r80E0ZKS+OSEWOIaxL3SSB+ndjOi6FnPPW86OQozcgfSBkX/8jXxFx7gwz1TVABgmHAbiea9vcVVs7Gn8=
|
|
ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org;
|
|
s=arc-20240116; t=1711617543; c=relaxed/simple;
|
|
bh=0btT0+1iFrRCEvfDPJYv5+lOHpsQmKWX2HlBz6kKQlg=;
|
|
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
|
|
Content-Type:MIME-Version;
|
|
b=LBDUti52tqxNFGk44muOqN4ZdVRfgk/9hU0vbJRIXuk3Xhbm/iNJuaSiiy3Ti973tKSfjuOsluD+Zwh0wGm2CcI1+f2nmUrTjbMkzoViE7wun9cYsfS3Ak0y6ZYtw0X92MnusaoKGV+4Qb4mYwxyhSrq7FG0z0T4K+J+eqzr/0c=
|
|
ARC-Authentication-Results: i=2; smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com;
|
|
spf=pass smtp.mailfrom=starfivetech.com;
|
|
arc=fail smtp.client-ip=139.219.146.136
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
spf=pass smtp.mailfrom=starfivetech.com
|
|
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
|
|
b=GyjSKV1Hhs5ShSFiUNhYDb8Xq32M5pI8IBbEHDaQgMoVvNBoAMT/JvcNsPy27Zz7A8tuowsrx/NhsWgUrxm7+soNGfv8rrOIOOkXd5VNbeNs8aKmXvJCt8xmBXdLRuhZlNXHsaaGG1FZqQBDcCVi9aV9wUYOq3wUvieE8BU8/k+GcWJWNRYikHh3EvE7nuUuSDWWwa1Q4JXwrRZx//plzCOtS5XY8MHIhj5NvAWHCvDkIiA/X9M4gJZOGH+STTZ+rTf1ccTFWh9dGAEe7NAzNRNrWZfB766uF2ixea55Ti4M8huhf+3Tc/dvSf5KPY/ttcJiVmu/L/QScoqmGOK2KA==
|
|
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
|
|
s=arcselector9901;
|
|
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
|
|
bh=DArdH8siR3MLqlRp5UbWIINNuoWS11KuX63fEBpRg/E=;
|
|
b=grvUmEEYCE323Yz2BCG0X+Q6LPqWQ9GU/V89ZewLlJ+2wSQBPKc1qKQOuoWPDFG4rBJjv27cuWCsbiWX/3q7Kgd0AxPEwP/lVKtRoAwu1fj9CLPFgUuimmyNjGlaCoRyUzzZxo1hOCIzUcBZkqV24LwIp/T9kbxu3JW49R06MZUrNXjOC1mzV/Q1AR9I3GOxLnLCHRbgkz4H8f5pb3hf/LXeoEaiDUElJsm0R9rjrmiXKLc3a0Cy3VqJcpbKMKgqI6K+ZD4rSrJ5rMCo10L9SbPLJL/b1RPub0n8FHP1MUe7yjsBQmI1WZucyDyxxJUip93yc2u4DJdzoP7Fs+WAaw==
|
|
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
|
|
smtp.mailfrom=starfivetech.com; dmarc=pass action=none
|
|
header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none
|
|
Authentication-Results: dkim=none (message not signed)
|
|
header.d=none;dmarc=none action=none header.from=starfivetech.com;
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15) by SHXPR01MB0559.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:1d::22) with Microsoft SMTP Server (version=TLS1_2,
|
|
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Thu, 28 Mar
|
|
2024 09:18:53 +0000
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
([fe80::c738:9e6b:f92e:8bb9]) by
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn ([fe80::c738:9e6b:f92e:8bb9%6])
|
|
with mapi id 15.20.7409.031; Thu, 28 Mar 2024 09:18:52 +0000
|
|
From: Minda Chen <minda.chen@starfivetech.com>
|
|
To: Lorenzo Pieralisi <lpieralisi@kernel.org>,
|
|
Conor Dooley <conor@kernel.org>,
|
|
=?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kw@linux.com>,
|
|
Rob Herring <robh+dt@kernel.org>, Bjorn Helgaas <bhelgaas@google.com>,
|
|
Thomas Gleixner <tglx@linutronix.de>,
|
|
Daire McNamara <daire.mcnamara@microchip.com>,
|
|
Emil Renner Berthing <emil.renner.berthing@canonical.com>,
|
|
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
|
|
Cc: devicetree@vger.kernel.org,
|
|
linux-kernel@vger.kernel.org,
|
|
linux-riscv@lists.infradead.org,
|
|
linux-pci@vger.kernel.org,
|
|
Paul Walmsley <paul.walmsley@sifive.com>,
|
|
Palmer Dabbelt <palmer@dabbelt.com>,
|
|
Albert Ou <aou@eecs.berkeley.edu>,
|
|
Philipp Zabel <p.zabel@pengutronix.de>,
|
|
Mason Huo <mason.huo@starfivetech.com>,
|
|
Leyfoon Tan <leyfoon.tan@starfivetech.com>,
|
|
Kevin Xie <kevin.xie@starfivetech.com>,
|
|
Minda Chen <minda.chen@starfivetech.com>
|
|
Subject: [PATCH v16 09/22] PCI: microchip: Move setup functions to
|
|
pcie-plda-host.c
|
|
Date: Thu, 28 Mar 2024 17:18:22 +0800
|
|
Message-Id: <20240328091835.14797-10-minda.chen@starfivetech.com>
|
|
X-Mailer: git-send-email 2.17.1
|
|
In-Reply-To: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
References: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
X-ClientProxiedBy: NT0PR01CA0020.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c510:c::16) To SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15)
|
|
Precedence: bulk
|
|
X-Mailing-List: linux-pci@vger.kernel.org
|
|
List-Id: <linux-pci.vger.kernel.org>
|
|
List-Subscribe: <mailto:linux-pci+subscribe@vger.kernel.org>
|
|
List-Unsubscribe: <mailto:linux-pci+unsubscribe@vger.kernel.org>
|
|
MIME-Version: 1.0
|
|
X-MS-PublicTrafficType: Email
|
|
X-MS-TrafficTypeDiagnostic: SHXPR01MB0863:EE_|SHXPR01MB0559:EE_
|
|
X-MS-Office365-Filtering-Correlation-Id: 418e8d19-a7e9-4d7d-8693-08dc4f081607
|
|
X-MS-Exchange-SenderADCheck: 1
|
|
X-Microsoft-Antispam: BCL:0;
|
|
X-Microsoft-Antispam-Message-Info:
|
|
q8RP3F9ksB5Wbmfa2gcUTXKfN4r0JsDNrSTVHcXiiZAzOloDRDdvnMG8HHEJ/rhPrA9CLACenagjHcTMu2UzmTLJvxINvDKPgnE2gyt9uxIajAsLNEjCQGvAdKskYGJsR1zRKNkQl3rGFL2byhEdqd9DIvDtHsG83+OzhQVsDqs9dxcMwmswPULSYZLGfFlokl8ikp+TRQhxZPdcQDyu3e1OhcvWwP7Z12PYmHNVGI2S8dN0khNCBA7lCxf/LEATOF/Gmj6h/SXYvG+wP5+kZHV5/BiMOBOkeW1pM7gcJj3zEvmAM83LwKD4h+Qm1jH0lFoObT47+dZ2zqET9VJ6kTECe6CuYSlGmZq0+/pYfKabMHza4cZUEcfNMTrlwzA6ALvRS8YpI+tV2t34/V/JYqIqf1fIRXCMQUSDVD1nltK/ojcVT+ZWW28BHahzZjLltXZDYnE4oeGJYWdfNx6k2FwDDXEMxFwCe8d0uEwlk79NC/HxJGR6CAiWUsC0A7QFfMqfPvhizo4jgO+eNeCYgXL3mbExulKWXZJZ2V0ZjzgD7FmMD87l/KK6DEqvCLUN2nFZlosXDTlnKcJZZGS1GZVdczandErN6DD0qGFMALwrlM/fodbzWZ7WUHYrFXCj
|
|
X-Forefront-Antispam-Report:
|
|
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230031)(1800799015)(52116005)(7416005)(41320700004)(366007)(38350700005);DIR:OUT;SFP:1102;
|
|
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
|
|
X-MS-Exchange-AntiSpam-MessageData-0:
|
|
i5onzeOkAIegMHME5sISD3J0dtVwI3i/9yFpASC+bw5CuPnTqyBx8VY063kkH5lR1FOMZPs9BxsprjzXos99Ska8wyAx2E0cfHbR8t2zuhFVU3WbEuyrG55JbzXcgS1y/4Z0ZHGgTCiUwXa7m9sKCzgVFEhaJ8ceRLkvEfZUwKaPAA91oWbuQfknRDPns2loDeGuMB1f+LQYyX8+gUMlyxCDS9+WKjVzzqK0IjIuIHYIwdgX0wY1zFMXfTKfKRruI+9DBXCXPsbCgjouvD7ECiMuxyDJeu5X5G9AVZG+KnEftjkVZns4x052GVWwRibE0KiQ6ybw8313DTT7H1xOWi+WJJ/+XER2uy3rMAO6COOA7W5q4OOrd4vn/cwOc2PcdiAWs8UNgd5yZYmyNBwD5yxVxSoZQQPItcK90nVoIAcwxfYJUzdjiPZMlUKmgS4jy4WMiSm6I4V1O/rEfvtO7S85CwK+Q3hFl2b0tscDu0A1Bo2vYyCjPpEGi/9qeoC0+3xgDk5v/QQ8Mj4Tvyw+ljIyGmCjNhcIvL2ZCx0gezbC2qpaf3NSt0baRp95dBnVNSvNLe68+RAn9VTqvqdrwJBCg/7bdm8nEFBW9PXB2ll9pkSRZaBhxarVkeYkcoNJwyhgNRWohTFYKf5L+oJPNF31bOqyuRk2d3xbHdlid6fn7iuD4SQapEytPet5oMVv6x7lo7anQrGrVPcqn6FVU0ppgw8kRgPSydMQWyIv3d/fkfv0doKy6SnAiLHVHYJRVbIjfCc2hngeUsI2wGWD7MXOnzW0XW1GbzEyQfq1SdyCcOb8Jdx4sgnqFfKP7uJiGnQ8+QOndamaCWfIMaxGSwer/cJW+XuLUg2koU22dDM///RVXxWL1V6JesXlqUzTJOycLr1RKXnksTMb04x7gIR9AMECel0RHRqqm9vy0QeK63NCO8X/QU/L4Gtfck7OVIRldC8wpE1lp9rtDiMGnfYINyuNo9FS+gkd2mEhJrLi4/sQN9YOr5oIO+azq8FQQfk1ZsEmwU0/03WfW9U+128qQmAwWA56xaQSXuRVY1HaVfLQBUxk00+aTfcLcZhEunT7IGrqbcelhgAN3+efXSFNVUyXPUQBxmiASd+Zz6sj7nOaSjANsFFj074b4mq2JPCtHyjYlxzudblPHPX1ZikMO0k65QtzZ6szz5PxLdYUGSXpdERUBRfrKMQ1Gz1XRkLYIK0P2z76ZM6fzw7pAopB8W+yh+ECABYONnD3vpoffS7wh1q0IFVHDjZutC4BJWju4mT1ZxQlobzoBcWtssrAFA9qQX6WOZx4Hisj2QG5jDn7gHuVw4q6NHFVpR4mwWTq9AqtqnB2n0USNMLYx9tSWssS/LriPR2G4BxdiB+/7lGDn/qdrEkInqcBiyp2QHq3FTj+DI3soxXodNHH1C518XxrbJZr4u1TFdEX0mbDwY2yql+R7QvLojecvpf0jIAztGGOQeNRD8Gk/HnXg5zu0v3VqHMk0Mk0V07FEOZsijjp2rjOFNHW8im6ZHW5qiqMNadLQlVwyyowdOvEuEBifsCbUUtrlQA1k0QGFJypAhF4TlsZEIWWaPOdY8JkUowwOyKQdaBqCKkiuLit4Q==
|
|
X-OriginatorOrg: starfivetech.com
|
|
X-MS-Exchange-CrossTenant-Network-Message-Id:
|
|
418e8d19-a7e9-4d7d-8693-08dc4f081607
|
|
X-MS-Exchange-CrossTenant-AuthSource:
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
X-MS-Exchange-CrossTenant-AuthAs: Internal
|
|
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2024 09:18:52.8890
|
|
(UTC)
|
|
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
|
|
X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c
|
|
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
|
|
X-MS-Exchange-CrossTenant-UserPrincipalName:
|
|
kBy4RtaThGybHv6cBvf5LkgTSK2KGfvd93slSOzZ4RB70nIiLUUm2y+8yiYw5S3C8VyRuFfIVCs1LLfE4grJKSW8EMjlVZwc6gi1ZWwWjPs=
|
|
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SHXPR01MB0559
|
|
|
|
Move setup functions to common pcie-plda-host.c. So these two functions
|
|
can be re-used.
|
|
|
|
Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
|
|
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
|
|
---
|
|
MAINTAINERS | 1 +
|
|
drivers/pci/controller/plda/Kconfig | 4 +
|
|
drivers/pci/controller/plda/Makefile | 1 +
|
|
.../pci/controller/plda/pcie-microchip-host.c | 59 ---------------
|
|
drivers/pci/controller/plda/pcie-plda-host.c | 73 +++++++++++++++++++
|
|
drivers/pci/controller/plda/pcie-plda.h | 5 ++
|
|
6 files changed, 84 insertions(+), 59 deletions(-)
|
|
create mode 100644 drivers/pci/controller/plda/pcie-plda-host.c
|
|
|
|
diff --git a/MAINTAINERS b/MAINTAINERS
|
|
index 1fa4d61291f9..d85d9db38efa 100644
|
|
--- a/MAINTAINERS
|
|
+++ b/MAINTAINERS
|
|
@@ -16951,6 +16951,7 @@ M: Daire McNamara <daire.mcnamara@microchip.com>
|
|
L: linux-pci@vger.kernel.org
|
|
S: Maintained
|
|
F: Documentation/devicetree/bindings/pci/plda,xpressrich3-axi-common.yaml
|
|
+F: drivers/pci/controller/plda/pcie-plda-host.c
|
|
F: drivers/pci/controller/plda/pcie-plda.h
|
|
|
|
PCI DRIVER FOR RENESAS R-CAR
|
|
diff --git a/drivers/pci/controller/plda/Kconfig b/drivers/pci/controller/plda/Kconfig
|
|
index 5cb3be4fc98c..e54a82ee94f5 100644
|
|
--- a/drivers/pci/controller/plda/Kconfig
|
|
+++ b/drivers/pci/controller/plda/Kconfig
|
|
@@ -3,10 +3,14 @@
|
|
menu "PLDA-based PCIe controllers"
|
|
depends on PCI
|
|
|
|
+config PCIE_PLDA_HOST
|
|
+ bool
|
|
+
|
|
config PCIE_MICROCHIP_HOST
|
|
tristate "Microchip AXI PCIe controller"
|
|
depends on PCI_MSI && OF
|
|
select PCI_HOST_COMMON
|
|
+ select PCIE_PLDA_HOST
|
|
help
|
|
Say Y here if you want kernel to support the Microchip AXI PCIe
|
|
Host Bridge driver.
|
|
diff --git a/drivers/pci/controller/plda/Makefile b/drivers/pci/controller/plda/Makefile
|
|
index e1a265cbf91c..4340ab007f44 100644
|
|
--- a/drivers/pci/controller/plda/Makefile
|
|
+++ b/drivers/pci/controller/plda/Makefile
|
|
@@ -1,2 +1,3 @@
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
+obj-$(CONFIG_PCIE_PLDA_HOST) += pcie-plda-host.o
|
|
obj-$(CONFIG_PCIE_MICROCHIP_HOST) += pcie-microchip-host.o
|
|
diff --git a/drivers/pci/controller/plda/pcie-microchip-host.c b/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
index 805870aed61d..573ad31c578a 100644
|
|
--- a/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
+++ b/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
@@ -838,65 +838,6 @@ static int mc_pcie_init_irq_domains(struct plda_pcie_rp *port)
|
|
return mc_allocate_msi_domains(port);
|
|
}
|
|
|
|
-static void plda_pcie_setup_window(void __iomem *bridge_base_addr, u32 index,
|
|
- phys_addr_t axi_addr, phys_addr_t pci_addr,
|
|
- size_t size)
|
|
-{
|
|
- u32 atr_sz = ilog2(size) - 1;
|
|
- u32 val;
|
|
-
|
|
- if (index == 0)
|
|
- val = PCIE_CONFIG_INTERFACE;
|
|
- else
|
|
- val = PCIE_TX_RX_INTERFACE;
|
|
-
|
|
- writel(val, bridge_base_addr + (index * ATR_ENTRY_SIZE) +
|
|
- ATR0_AXI4_SLV0_TRSL_PARAM);
|
|
-
|
|
- val = lower_32_bits(axi_addr) | (atr_sz << ATR_SIZE_SHIFT) |
|
|
- ATR_IMPL_ENABLE;
|
|
- writel(val, bridge_base_addr + (index * ATR_ENTRY_SIZE) +
|
|
- ATR0_AXI4_SLV0_SRCADDR_PARAM);
|
|
-
|
|
- val = upper_32_bits(axi_addr);
|
|
- writel(val, bridge_base_addr + (index * ATR_ENTRY_SIZE) +
|
|
- ATR0_AXI4_SLV0_SRC_ADDR);
|
|
-
|
|
- val = lower_32_bits(pci_addr);
|
|
- writel(val, bridge_base_addr + (index * ATR_ENTRY_SIZE) +
|
|
- ATR0_AXI4_SLV0_TRSL_ADDR_LSB);
|
|
-
|
|
- val = upper_32_bits(pci_addr);
|
|
- writel(val, bridge_base_addr + (index * ATR_ENTRY_SIZE) +
|
|
- ATR0_AXI4_SLV0_TRSL_ADDR_UDW);
|
|
-
|
|
- val = readl(bridge_base_addr + ATR0_PCIE_WIN0_SRCADDR_PARAM);
|
|
- val |= (ATR0_PCIE_ATR_SIZE << ATR0_PCIE_ATR_SIZE_SHIFT);
|
|
- writel(val, bridge_base_addr + ATR0_PCIE_WIN0_SRCADDR_PARAM);
|
|
- writel(0, bridge_base_addr + ATR0_PCIE_WIN0_SRC_ADDR);
|
|
-}
|
|
-
|
|
-static int plda_pcie_setup_iomems(struct pci_host_bridge *bridge,
|
|
- struct plda_pcie_rp *port)
|
|
-{
|
|
- void __iomem *bridge_base_addr = port->bridge_addr;
|
|
- struct resource_entry *entry;
|
|
- u64 pci_addr;
|
|
- u32 index = 1;
|
|
-
|
|
- resource_list_for_each_entry(entry, &bridge->windows) {
|
|
- if (resource_type(entry->res) == IORESOURCE_MEM) {
|
|
- pci_addr = entry->res->start - entry->offset;
|
|
- plda_pcie_setup_window(bridge_base_addr, index,
|
|
- entry->res->start, pci_addr,
|
|
- resource_size(entry->res));
|
|
- index++;
|
|
- }
|
|
- }
|
|
-
|
|
- return 0;
|
|
-}
|
|
-
|
|
static inline void mc_clear_secs(struct mc_pcie *port)
|
|
{
|
|
void __iomem *ctrl_base_addr = port->axi_base_addr + MC_PCIE_CTRL_ADDR;
|
|
diff --git a/drivers/pci/controller/plda/pcie-plda-host.c b/drivers/pci/controller/plda/pcie-plda-host.c
|
|
new file mode 100644
|
|
index 000000000000..05ea68baebfb
|
|
--- /dev/null
|
|
+++ b/drivers/pci/controller/plda/pcie-plda-host.c
|
|
@@ -0,0 +1,73 @@
|
|
+// SPDX-License-Identifier: GPL-2.0
|
|
+/*
|
|
+ * PLDA PCIe XpressRich host controller driver
|
|
+ *
|
|
+ * Copyright (C) 2023 Microchip Co. Ltd
|
|
+ *
|
|
+ * Author: Daire McNamara <daire.mcnamara@microchip.com>
|
|
+ */
|
|
+
|
|
+#include <linux/pci-ecam.h>
|
|
+
|
|
+#include "pcie-plda.h"
|
|
+
|
|
+void plda_pcie_setup_window(void __iomem *bridge_base_addr, u32 index,
|
|
+ phys_addr_t axi_addr, phys_addr_t pci_addr,
|
|
+ size_t size)
|
|
+{
|
|
+ u32 atr_sz = ilog2(size) - 1;
|
|
+ u32 val;
|
|
+
|
|
+ if (index == 0)
|
|
+ val = PCIE_CONFIG_INTERFACE;
|
|
+ else
|
|
+ val = PCIE_TX_RX_INTERFACE;
|
|
+
|
|
+ writel(val, bridge_base_addr + (index * ATR_ENTRY_SIZE) +
|
|
+ ATR0_AXI4_SLV0_TRSL_PARAM);
|
|
+
|
|
+ val = lower_32_bits(axi_addr) | (atr_sz << ATR_SIZE_SHIFT) |
|
|
+ ATR_IMPL_ENABLE;
|
|
+ writel(val, bridge_base_addr + (index * ATR_ENTRY_SIZE) +
|
|
+ ATR0_AXI4_SLV0_SRCADDR_PARAM);
|
|
+
|
|
+ val = upper_32_bits(axi_addr);
|
|
+ writel(val, bridge_base_addr + (index * ATR_ENTRY_SIZE) +
|
|
+ ATR0_AXI4_SLV0_SRC_ADDR);
|
|
+
|
|
+ val = lower_32_bits(pci_addr);
|
|
+ writel(val, bridge_base_addr + (index * ATR_ENTRY_SIZE) +
|
|
+ ATR0_AXI4_SLV0_TRSL_ADDR_LSB);
|
|
+
|
|
+ val = upper_32_bits(pci_addr);
|
|
+ writel(val, bridge_base_addr + (index * ATR_ENTRY_SIZE) +
|
|
+ ATR0_AXI4_SLV0_TRSL_ADDR_UDW);
|
|
+
|
|
+ val = readl(bridge_base_addr + ATR0_PCIE_WIN0_SRCADDR_PARAM);
|
|
+ val |= (ATR0_PCIE_ATR_SIZE << ATR0_PCIE_ATR_SIZE_SHIFT);
|
|
+ writel(val, bridge_base_addr + ATR0_PCIE_WIN0_SRCADDR_PARAM);
|
|
+ writel(0, bridge_base_addr + ATR0_PCIE_WIN0_SRC_ADDR);
|
|
+}
|
|
+EXPORT_SYMBOL_GPL(plda_pcie_setup_window);
|
|
+
|
|
+int plda_pcie_setup_iomems(struct pci_host_bridge *bridge,
|
|
+ struct plda_pcie_rp *port)
|
|
+{
|
|
+ void __iomem *bridge_base_addr = port->bridge_addr;
|
|
+ struct resource_entry *entry;
|
|
+ u64 pci_addr;
|
|
+ u32 index = 1;
|
|
+
|
|
+ resource_list_for_each_entry(entry, &bridge->windows) {
|
|
+ if (resource_type(entry->res) == IORESOURCE_MEM) {
|
|
+ pci_addr = entry->res->start - entry->offset;
|
|
+ plda_pcie_setup_window(bridge_base_addr, index,
|
|
+ entry->res->start, pci_addr,
|
|
+ resource_size(entry->res));
|
|
+ index++;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+EXPORT_SYMBOL_GPL(plda_pcie_setup_iomems);
|
|
diff --git a/drivers/pci/controller/plda/pcie-plda.h b/drivers/pci/controller/plda/pcie-plda.h
|
|
index 9ca66916c609..e277a5452b5d 100644
|
|
--- a/drivers/pci/controller/plda/pcie-plda.h
|
|
+++ b/drivers/pci/controller/plda/pcie-plda.h
|
|
@@ -126,4 +126,9 @@ struct plda_pcie_rp {
|
|
void __iomem *bridge_addr;
|
|
};
|
|
|
|
+void plda_pcie_setup_window(void __iomem *bridge_base_addr, u32 index,
|
|
+ phys_addr_t axi_addr, phys_addr_t pci_addr,
|
|
+ size_t size);
|
|
+int plda_pcie_setup_iomems(struct pci_host_bridge *bridge,
|
|
+ struct plda_pcie_rp *port);
|
|
#endif
|
|
|
|
From patchwork Thu Mar 28 09:18:23 2024
|
|
Content-Type: text/plain; charset="utf-8"
|
|
MIME-Version: 1.0
|
|
Content-Transfer-Encoding: 7bit
|
|
X-Patchwork-Submitter: Minda Chen <minda.chen@starfivetech.com>
|
|
X-Patchwork-Id: 13608240
|
|
X-Patchwork-Delegate: kw@linux.com
|
|
Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn
|
|
(mail-sh0chn02on2091.outbound.protection.partner.outlook.cn [139.219.146.91])
|
|
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
|
|
(No client certificate requested)
|
|
by smtp.subspace.kernel.org (Postfix) with ESMTPS id BB3337BAE5;
|
|
Thu, 28 Mar 2024 09:19:04 +0000 (UTC)
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
arc=fail smtp.client-ip=139.219.146.91
|
|
ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
|
|
t=1711617547; cv=fail;
|
|
b=HI0kr5PtVUK4vU09rcWl6YJMMu2S4pNT0Xl2gToRRD//Zdv0OKiQ5SdPqJ7XsV4QdmJD+q7JdNuSe35HTW/PG0Q8w+8jrck9f0epOYDU9r0JMBTqolW90zngzwuWDNcz8cKvSmnZ9UMwdpySJ3QaFJid1QUxcVtC62C3yerucas=
|
|
ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org;
|
|
s=arc-20240116; t=1711617547; c=relaxed/simple;
|
|
bh=22WfnNEhA24fGIAnSj8FnGthhV9+MdctziwxO7auJ7Q=;
|
|
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
|
|
Content-Type:MIME-Version;
|
|
b=hBXzXF6XWsb7lPrsSLhoAIMuRSgWN9BSLF/BBSiCTq/AA1zXnpSbGlSc/QAZFI/nyAon4tEfrMzujp4X4QtV84whm+uvAsNY/3ReVLosOGNHs8bVNiS13zMYi9sHHdQXTXM8QWrLB3j3kNhbAAVpqFZncvT4FH16BaRkxkXvBeQ=
|
|
ARC-Authentication-Results: i=2; smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com;
|
|
spf=pass smtp.mailfrom=starfivetech.com;
|
|
arc=fail smtp.client-ip=139.219.146.91
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
spf=pass smtp.mailfrom=starfivetech.com
|
|
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
|
|
b=kYfkmpF9Rah22KXMpohg7j9aWZ7cgxa5MEu52lPKtKAK7fB2BpCaAq25sYnyIzsy1SNlpwkHc3KhM2v6KWxfxYxKSggIROgu2lbM8FZMfi3kgOZ5R2aZ1IM6sihMdPMCQGpJK23kz7TfCwNGBwJRh1v7a+MlEjrHqQBaRkb/Xc9V8Hz48vJBfqco0BJVC8F7jA3ZNpH/aAi4z7WOw+74xOsao+1qGBJsLjWdkPG6AopI/ZmBUpkdNZhWelVWOD59MEtyiO8QPLEA8o+yLRSoACjpQfdUqPbjsKeSDC/faX5fEnmNSG0lMr3yLWa8TYdsOutdVRAUGpIKo8aNAIT9Vg==
|
|
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
|
|
s=arcselector9901;
|
|
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
|
|
bh=SvgzgZ+kCWJDW3yTlipB4uET3HJVJTZKxQ2LjTr36CU=;
|
|
b=B4SRzuf17w1+4mCkJF3gWLaQzDB8Q6OSFO+LikZFfvBXgIt0IzL7BQVZvBw9GuC+2Mmd+OfrZ1DN4AHeE2QhWLxAvuCbj+iVsbRfepYvR/QC5kdHU/CFbuzRdxs3amZAZQ3jRFNwedFay9DReHWwzyuWkMN9EE5pm+X/SMHNZhHqbLSAdL0K9Cf0JEtSpXv8ktITP8kd5F1Sufsm7KIxX2tQY8JGT2g8Dx3BjFAAlL0bPBfhPg74YTSIpvtPuQdgm+nL/t5VckT/Z4qyk7aj68oMn0bovoKvifTVUr3CHIQ/fWnyRuUT0x3iXI+n7Wo4b4FJfpDhV2OgLt7NbOq6FQ==
|
|
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
|
|
smtp.mailfrom=starfivetech.com; dmarc=pass action=none
|
|
header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none
|
|
Authentication-Results: dkim=none (message not signed)
|
|
header.d=none;dmarc=none action=none header.from=starfivetech.com;
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15) by SHXPR01MB0559.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:1d::22) with Microsoft SMTP Server (version=TLS1_2,
|
|
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Thu, 28 Mar
|
|
2024 09:18:53 +0000
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
([fe80::c738:9e6b:f92e:8bb9]) by
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn ([fe80::c738:9e6b:f92e:8bb9%6])
|
|
with mapi id 15.20.7409.031; Thu, 28 Mar 2024 09:18:53 +0000
|
|
From: Minda Chen <minda.chen@starfivetech.com>
|
|
To: Lorenzo Pieralisi <lpieralisi@kernel.org>,
|
|
Conor Dooley <conor@kernel.org>,
|
|
=?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kw@linux.com>,
|
|
Rob Herring <robh+dt@kernel.org>, Bjorn Helgaas <bhelgaas@google.com>,
|
|
Thomas Gleixner <tglx@linutronix.de>,
|
|
Daire McNamara <daire.mcnamara@microchip.com>,
|
|
Emil Renner Berthing <emil.renner.berthing@canonical.com>,
|
|
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
|
|
Cc: devicetree@vger.kernel.org,
|
|
linux-kernel@vger.kernel.org,
|
|
linux-riscv@lists.infradead.org,
|
|
linux-pci@vger.kernel.org,
|
|
Paul Walmsley <paul.walmsley@sifive.com>,
|
|
Palmer Dabbelt <palmer@dabbelt.com>,
|
|
Albert Ou <aou@eecs.berkeley.edu>,
|
|
Philipp Zabel <p.zabel@pengutronix.de>,
|
|
Mason Huo <mason.huo@starfivetech.com>,
|
|
Leyfoon Tan <leyfoon.tan@starfivetech.com>,
|
|
Kevin Xie <kevin.xie@starfivetech.com>,
|
|
Minda Chen <minda.chen@starfivetech.com>
|
|
Subject: [PATCH v16 10/22] PCI: microchip: Rename interrupt related functions
|
|
Date: Thu, 28 Mar 2024 17:18:23 +0800
|
|
Message-Id: <20240328091835.14797-11-minda.chen@starfivetech.com>
|
|
X-Mailer: git-send-email 2.17.1
|
|
In-Reply-To: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
References: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
X-ClientProxiedBy: NT0PR01CA0020.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c510:c::16) To SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15)
|
|
Precedence: bulk
|
|
X-Mailing-List: linux-pci@vger.kernel.org
|
|
List-Id: <linux-pci.vger.kernel.org>
|
|
List-Subscribe: <mailto:linux-pci+subscribe@vger.kernel.org>
|
|
List-Unsubscribe: <mailto:linux-pci+unsubscribe@vger.kernel.org>
|
|
MIME-Version: 1.0
|
|
X-MS-PublicTrafficType: Email
|
|
X-MS-TrafficTypeDiagnostic: SHXPR01MB0863:EE_|SHXPR01MB0559:EE_
|
|
X-MS-Office365-Filtering-Correlation-Id: 03485d29-8bfd-4fc5-10df-08dc4f0816a7
|
|
X-MS-Exchange-SenderADCheck: 1
|
|
X-Microsoft-Antispam: BCL:0;
|
|
X-Microsoft-Antispam-Message-Info:
|
|
Q355Akw4mnRgjVH0H02J9HiL63Vo5J1fZGpuAmLeuBniy2RBGtwem9lwh8XPWHiNxaOqgo1Kx37yPOiZcvBX2bP8djOnkg8beaKePJAZtnR2cnLNVCv8bQut0rj5ClHKQ6/sE688+d+4ExunknFNYRMcx8YqTt8RBSbBYGbsH/VzBSdbBZb3veFxqrLlaEJSbUJnjy0IWqSbMrpWPGLluSzrc+GGLNg7SkyjL5Rd9UKK/fHRZ71Bz6h0h3ejULrDV/lK72pq7ThJXdjh3BPBnHVHLu2XMLdyAO9pUF0q35hCUrsmM9QeCmH1sTCcw6it884dw3UyfQm8BH/PncgksrdyhWBQXnrLuVfp4Ys8nPyw6jqBQAlpzgmUjOB9CKASgnA/P4R7eu4NEqUlnZntqUzb0CZzKYefVEd7LoMj9O1vs3sC14z6TnP9D/XaqG4q421uRJtjhrPauKfTS3LkrgJiUJ36RzYH45W8bKPLM6pOtZyn9+2UI1rCWBuncgucbtqEKWgF0DLZkIBbCOVsKauMZYynHxEJglz0DOUq7PcYaxpJ6cnEuLKhJagQc/oaDRRBveTcc3Y6aT2s2YvD0hsTu83hlRjKpDxLhi7nVOGF3BMaMuborrs05i4xm1w6
|
|
X-Forefront-Antispam-Report:
|
|
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230031)(1800799015)(52116005)(7416005)(41320700004)(366007)(38350700005);DIR:OUT;SFP:1102;
|
|
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
|
|
X-MS-Exchange-AntiSpam-MessageData-0:
|
|
miCi7gHmUsP3MwJsck/BKWt6KV6ain7e7v/uhtCllaLHLeUR6+lvVU/J1rp7E9+O6xJXt6710SSeJqM1LUxSkJsTo9H7pXdE1R/uZ0rrZEyMkwVS6IU3EF3PguNYgvT59E/VgiPtJqmbLJSg0Aub1ZCp0tob88Q6rURun2N9oZvspF1cdlv2E1vt60ci4A4NYZcAe/M75P6f5ZmcNWQkcDkIlMSZ4Mg1nzHn6iMxnodh4pEsSjYxh0I5Xdlm3S22e6JY76Ksktkdy6uqtQw9RRTTgg9YKVnjME8lvDuFUpfBb4+IUk75ANWirDwZXkajVMXdWgmTOrshyIMz2HT4MsheBJQex/8qdR+p2bW2bNUuQ7kWLNcDDCR9fhlvg/Fz44wsJV7Zpvie9Yhh7vwKnTZOc8wszEgwCueVJaqoEZlQntUFoyduc+dV39KqfUnQutVpcC9c82V/Mgl0rtVevxReFbzOVUUvWxVndEOirQeZvFt/caG5a7c39gySuistxtZk+NdbkkL99LHm8ex6G8MeZtleb/QZWafb53EEg7PSr9SdwFfXn9lY39qgqe41IXcB2L9tM7QVNZqd/AcIx7ITc3y1WUSxy3TzvswO81voCGt+kZtJEndoF3UrSDdiKuaZjUTPyLFDTPVeQ/emrGKcZQ6Tvqkbv55fFZqZJUXgSkYs6PA/L/5B/JroaZfYWihSt6vDU9YWqlSTaZGGAdDVN1GJfHKnutS57yYrYSB9WZaLRKsEPgSdA7viJrsa3RzhR6Sw2ceuYexZcZmjnzvEqAPBeg6IGN7dTNvZIGHDI3opjOkgGu6wxjoahVAd7E6KhQMoW6d2HI5B6T53dts0Nj8xojF6fmM2SmT5jkrez7eSt6xBGeQyYdCcHHOnRbdlONqhifGkStTjxBQ+fd2O86WomuaPEZaMwU3PQ7Cxmm/KPgN6CaovEhOILNLSdSgaAPd1b18083e5R2VH59ypdBS4Lt5PJC51Np5DNtegbLqSRENgPoP0sy5dtZS1kIDcT8o46S40JK2Kcyk4S+8b6d6E0Fvuq/fA5797SG60yU5MdQVySZf1Yv8Le0pUeAvcjTxVuVwoSpcGSrBnEQj34hFiZRs8yaxE77C1dauGuuBq6ma2u6EiYZqEi3obOoSkV6f+BYOK635qfy4rVkx38mnc1Szkz3pgCxFuVS4MUh8jR42tbM/wR4x8AKVIIYObBVR4jUZJmkBWF293ECWw06ybtOGnJcr2wgG2pWa8BdFDRE11k98XoP6XSUJhpLdTot0Oy9MjGJYD1tQXoKDQaXLxTn7rImcOHovonNhSr73eYRdFVugDol65dubkoOsGe7AjxmIwTFB+k77rFcP31Ls8DDMiX7WxcxQEY2ZyY4llHDWLMXlRLBXq3LpzLva1k3zFM89y3OAdff3Y3+W2iXbVGjt5r3j11ti777QpsvvCCc/XyL7vQW+PXfLtRQhoO//YlFE53FRaOTYpJa6kSaA20AT+Hrpjov7cQA86bbouX1066uRWnWwJHMZIqJH7yK0chQJCzu5IB+Xs1fTs1yizj+wLB/EPGdHHhpr4BYx66zl9gsZyn5waO02Y81lJx9jSS6YXl8XpA8P4Gw==
|
|
X-OriginatorOrg: starfivetech.com
|
|
X-MS-Exchange-CrossTenant-Network-Message-Id:
|
|
03485d29-8bfd-4fc5-10df-08dc4f0816a7
|
|
X-MS-Exchange-CrossTenant-AuthSource:
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
X-MS-Exchange-CrossTenant-AuthAs: Internal
|
|
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2024 09:18:53.9381
|
|
(UTC)
|
|
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
|
|
X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c
|
|
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
|
|
X-MS-Exchange-CrossTenant-UserPrincipalName:
|
|
8vFPvyg8Z5c7HcsSxXTV6BNx62puq0kvMzXaled1dcumuEp/iY0Omt7o76Z942gURyyiKgT/wDHmlK0RisWHe8MveuwdOzP5xrcXMT62hzg=
|
|
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SHXPR01MB0559
|
|
|
|
Rename mc_* to plda_* for IRQ functions and related IRQ domain ops data
|
|
instances.
|
|
|
|
MSI, INTx interrupt code and IRQ init code are all can be re-used.
|
|
|
|
Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
|
|
Acked-by: Conor Dooley <conor.dooley@microchip.com>
|
|
---
|
|
.../pci/controller/plda/pcie-microchip-host.c | 109 +++++++++---------
|
|
1 file changed, 57 insertions(+), 52 deletions(-)
|
|
|
|
diff --git a/drivers/pci/controller/plda/pcie-microchip-host.c b/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
index 573ad31c578a..18bc352db389 100644
|
|
--- a/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
+++ b/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
@@ -318,7 +318,7 @@ static void mc_pcie_enable_msi(struct mc_pcie *port, void __iomem *ecam)
|
|
ecam + MC_MSI_CAP_CTRL_OFFSET + PCI_MSI_ADDRESS_HI);
|
|
}
|
|
|
|
-static void mc_handle_msi(struct irq_desc *desc)
|
|
+static void plda_handle_msi(struct irq_desc *desc)
|
|
{
|
|
struct plda_pcie_rp *port = irq_desc_get_handler_data(desc);
|
|
struct irq_chip *chip = irq_desc_get_chip(desc);
|
|
@@ -346,7 +346,7 @@ static void mc_handle_msi(struct irq_desc *desc)
|
|
chained_irq_exit(chip, desc);
|
|
}
|
|
|
|
-static void mc_msi_bottom_irq_ack(struct irq_data *data)
|
|
+static void plda_msi_bottom_irq_ack(struct irq_data *data)
|
|
{
|
|
struct plda_pcie_rp *port = irq_data_get_irq_chip_data(data);
|
|
void __iomem *bridge_base_addr = port->bridge_addr;
|
|
@@ -355,7 +355,7 @@ static void mc_msi_bottom_irq_ack(struct irq_data *data)
|
|
writel_relaxed(BIT(bitpos), bridge_base_addr + ISTATUS_MSI);
|
|
}
|
|
|
|
-static void mc_compose_msi_msg(struct irq_data *data, struct msi_msg *msg)
|
|
+static void plda_compose_msi_msg(struct irq_data *data, struct msi_msg *msg)
|
|
{
|
|
struct plda_pcie_rp *port = irq_data_get_irq_chip_data(data);
|
|
phys_addr_t addr = port->msi.vector_phy;
|
|
@@ -368,21 +368,23 @@ static void mc_compose_msi_msg(struct irq_data *data, struct msi_msg *msg)
|
|
(int)data->hwirq, msg->address_hi, msg->address_lo);
|
|
}
|
|
|
|
-static int mc_msi_set_affinity(struct irq_data *irq_data,
|
|
- const struct cpumask *mask, bool force)
|
|
+static int plda_msi_set_affinity(struct irq_data *irq_data,
|
|
+ const struct cpumask *mask, bool force)
|
|
{
|
|
return -EINVAL;
|
|
}
|
|
|
|
-static struct irq_chip mc_msi_bottom_irq_chip = {
|
|
- .name = "Microchip MSI",
|
|
- .irq_ack = mc_msi_bottom_irq_ack,
|
|
- .irq_compose_msi_msg = mc_compose_msi_msg,
|
|
- .irq_set_affinity = mc_msi_set_affinity,
|
|
+static struct irq_chip plda_msi_bottom_irq_chip = {
|
|
+ .name = "PLDA MSI",
|
|
+ .irq_ack = plda_msi_bottom_irq_ack,
|
|
+ .irq_compose_msi_msg = plda_compose_msi_msg,
|
|
+ .irq_set_affinity = plda_msi_set_affinity,
|
|
};
|
|
|
|
-static int mc_irq_msi_domain_alloc(struct irq_domain *domain, unsigned int virq,
|
|
- unsigned int nr_irqs, void *args)
|
|
+static int plda_irq_msi_domain_alloc(struct irq_domain *domain,
|
|
+ unsigned int virq,
|
|
+ unsigned int nr_irqs,
|
|
+ void *args)
|
|
{
|
|
struct plda_pcie_rp *port = domain->host_data;
|
|
struct plda_msi *msi = &port->msi;
|
|
@@ -397,7 +399,7 @@ static int mc_irq_msi_domain_alloc(struct irq_domain *domain, unsigned int virq,
|
|
|
|
set_bit(bit, msi->used);
|
|
|
|
- irq_domain_set_info(domain, virq, bit, &mc_msi_bottom_irq_chip,
|
|
+ irq_domain_set_info(domain, virq, bit, &plda_msi_bottom_irq_chip,
|
|
domain->host_data, handle_edge_irq, NULL, NULL);
|
|
|
|
mutex_unlock(&msi->lock);
|
|
@@ -405,8 +407,9 @@ static int mc_irq_msi_domain_alloc(struct irq_domain *domain, unsigned int virq,
|
|
return 0;
|
|
}
|
|
|
|
-static void mc_irq_msi_domain_free(struct irq_domain *domain, unsigned int virq,
|
|
- unsigned int nr_irqs)
|
|
+static void plda_irq_msi_domain_free(struct irq_domain *domain,
|
|
+ unsigned int virq,
|
|
+ unsigned int nr_irqs)
|
|
{
|
|
struct irq_data *d = irq_domain_get_irq_data(domain, virq);
|
|
struct plda_pcie_rp *port = irq_data_get_irq_chip_data(d);
|
|
@@ -423,24 +426,24 @@ static void mc_irq_msi_domain_free(struct irq_domain *domain, unsigned int virq,
|
|
}
|
|
|
|
static const struct irq_domain_ops msi_domain_ops = {
|
|
- .alloc = mc_irq_msi_domain_alloc,
|
|
- .free = mc_irq_msi_domain_free,
|
|
+ .alloc = plda_irq_msi_domain_alloc,
|
|
+ .free = plda_irq_msi_domain_free,
|
|
};
|
|
|
|
-static struct irq_chip mc_msi_irq_chip = {
|
|
- .name = "Microchip PCIe MSI",
|
|
+static struct irq_chip plda_msi_irq_chip = {
|
|
+ .name = "PLDA PCIe MSI",
|
|
.irq_ack = irq_chip_ack_parent,
|
|
.irq_mask = pci_msi_mask_irq,
|
|
.irq_unmask = pci_msi_unmask_irq,
|
|
};
|
|
|
|
-static struct msi_domain_info mc_msi_domain_info = {
|
|
+static struct msi_domain_info plda_msi_domain_info = {
|
|
.flags = (MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS |
|
|
MSI_FLAG_PCI_MSIX),
|
|
- .chip = &mc_msi_irq_chip,
|
|
+ .chip = &plda_msi_irq_chip,
|
|
};
|
|
|
|
-static int mc_allocate_msi_domains(struct plda_pcie_rp *port)
|
|
+static int plda_allocate_msi_domains(struct plda_pcie_rp *port)
|
|
{
|
|
struct device *dev = port->dev;
|
|
struct fwnode_handle *fwnode = of_node_to_fwnode(dev->of_node);
|
|
@@ -455,7 +458,8 @@ static int mc_allocate_msi_domains(struct plda_pcie_rp *port)
|
|
return -ENOMEM;
|
|
}
|
|
|
|
- msi->msi_domain = pci_msi_create_irq_domain(fwnode, &mc_msi_domain_info,
|
|
+ msi->msi_domain = pci_msi_create_irq_domain(fwnode,
|
|
+ &plda_msi_domain_info,
|
|
msi->dev_domain);
|
|
if (!msi->msi_domain) {
|
|
dev_err(dev, "failed to create MSI domain\n");
|
|
@@ -466,7 +470,7 @@ static int mc_allocate_msi_domains(struct plda_pcie_rp *port)
|
|
return 0;
|
|
}
|
|
|
|
-static void mc_handle_intx(struct irq_desc *desc)
|
|
+static void plda_handle_intx(struct irq_desc *desc)
|
|
{
|
|
struct plda_pcie_rp *port = irq_desc_get_handler_data(desc);
|
|
struct irq_chip *chip = irq_desc_get_chip(desc);
|
|
@@ -493,7 +497,7 @@ static void mc_handle_intx(struct irq_desc *desc)
|
|
chained_irq_exit(chip, desc);
|
|
}
|
|
|
|
-static void mc_ack_intx_irq(struct irq_data *data)
|
|
+static void plda_ack_intx_irq(struct irq_data *data)
|
|
{
|
|
struct plda_pcie_rp *port = irq_data_get_irq_chip_data(data);
|
|
void __iomem *bridge_base_addr = port->bridge_addr;
|
|
@@ -502,7 +506,7 @@ static void mc_ack_intx_irq(struct irq_data *data)
|
|
writel_relaxed(mask, bridge_base_addr + ISTATUS_LOCAL);
|
|
}
|
|
|
|
-static void mc_mask_intx_irq(struct irq_data *data)
|
|
+static void plda_mask_intx_irq(struct irq_data *data)
|
|
{
|
|
struct plda_pcie_rp *port = irq_data_get_irq_chip_data(data);
|
|
void __iomem *bridge_base_addr = port->bridge_addr;
|
|
@@ -517,7 +521,7 @@ static void mc_mask_intx_irq(struct irq_data *data)
|
|
raw_spin_unlock_irqrestore(&port->lock, flags);
|
|
}
|
|
|
|
-static void mc_unmask_intx_irq(struct irq_data *data)
|
|
+static void plda_unmask_intx_irq(struct irq_data *data)
|
|
{
|
|
struct plda_pcie_rp *port = irq_data_get_irq_chip_data(data);
|
|
void __iomem *bridge_base_addr = port->bridge_addr;
|
|
@@ -532,24 +536,24 @@ static void mc_unmask_intx_irq(struct irq_data *data)
|
|
raw_spin_unlock_irqrestore(&port->lock, flags);
|
|
}
|
|
|
|
-static struct irq_chip mc_intx_irq_chip = {
|
|
- .name = "Microchip PCIe INTx",
|
|
- .irq_ack = mc_ack_intx_irq,
|
|
- .irq_mask = mc_mask_intx_irq,
|
|
- .irq_unmask = mc_unmask_intx_irq,
|
|
+static struct irq_chip plda_intx_irq_chip = {
|
|
+ .name = "PLDA PCIe INTx",
|
|
+ .irq_ack = plda_ack_intx_irq,
|
|
+ .irq_mask = plda_mask_intx_irq,
|
|
+ .irq_unmask = plda_unmask_intx_irq,
|
|
};
|
|
|
|
-static int mc_pcie_intx_map(struct irq_domain *domain, unsigned int irq,
|
|
- irq_hw_number_t hwirq)
|
|
+static int plda_pcie_intx_map(struct irq_domain *domain, unsigned int irq,
|
|
+ irq_hw_number_t hwirq)
|
|
{
|
|
- irq_set_chip_and_handler(irq, &mc_intx_irq_chip, handle_level_irq);
|
|
+ irq_set_chip_and_handler(irq, &plda_intx_irq_chip, handle_level_irq);
|
|
irq_set_chip_data(irq, domain->host_data);
|
|
|
|
return 0;
|
|
}
|
|
|
|
static const struct irq_domain_ops intx_domain_ops = {
|
|
- .map = mc_pcie_intx_map,
|
|
+ .map = plda_pcie_intx_map,
|
|
};
|
|
|
|
static inline u32 reg_to_event(u32 reg, struct event_map field)
|
|
@@ -609,7 +613,7 @@ static u32 local_events(struct mc_pcie *port)
|
|
return val;
|
|
}
|
|
|
|
-static u32 get_events(struct plda_pcie_rp *port)
|
|
+static u32 mc_get_events(struct plda_pcie_rp *port)
|
|
{
|
|
struct mc_pcie *mc_port = container_of(port, struct mc_pcie, plda);
|
|
u32 events = 0;
|
|
@@ -638,7 +642,7 @@ static irqreturn_t mc_event_handler(int irq, void *dev_id)
|
|
return IRQ_HANDLED;
|
|
}
|
|
|
|
-static void mc_handle_event(struct irq_desc *desc)
|
|
+static void plda_handle_event(struct irq_desc *desc)
|
|
{
|
|
struct plda_pcie_rp *port = irq_desc_get_handler_data(desc);
|
|
unsigned long events;
|
|
@@ -647,7 +651,7 @@ static void mc_handle_event(struct irq_desc *desc)
|
|
|
|
chained_irq_enter(chip, desc);
|
|
|
|
- events = get_events(port);
|
|
+ events = mc_get_events(port);
|
|
|
|
for_each_set_bit(bit, &events, NUM_EVENTS)
|
|
generic_handle_domain_irq(port->event_domain, bit);
|
|
@@ -741,8 +745,8 @@ static struct irq_chip mc_event_irq_chip = {
|
|
.irq_unmask = mc_unmask_event_irq,
|
|
};
|
|
|
|
-static int mc_pcie_event_map(struct irq_domain *domain, unsigned int irq,
|
|
- irq_hw_number_t hwirq)
|
|
+static int plda_pcie_event_map(struct irq_domain *domain, unsigned int irq,
|
|
+ irq_hw_number_t hwirq)
|
|
{
|
|
irq_set_chip_and_handler(irq, &mc_event_irq_chip, handle_level_irq);
|
|
irq_set_chip_data(irq, domain->host_data);
|
|
@@ -750,8 +754,8 @@ static int mc_pcie_event_map(struct irq_domain *domain, unsigned int irq,
|
|
return 0;
|
|
}
|
|
|
|
-static const struct irq_domain_ops event_domain_ops = {
|
|
- .map = mc_pcie_event_map,
|
|
+static const struct irq_domain_ops plda_event_domain_ops = {
|
|
+ .map = plda_pcie_event_map,
|
|
};
|
|
|
|
static inline void mc_pcie_deinit_clk(void *data)
|
|
@@ -799,7 +803,7 @@ static int mc_pcie_init_clks(struct device *dev)
|
|
return 0;
|
|
}
|
|
|
|
-static int mc_pcie_init_irq_domains(struct plda_pcie_rp *port)
|
|
+static int plda_pcie_init_irq_domains(struct plda_pcie_rp *port)
|
|
{
|
|
struct device *dev = port->dev;
|
|
struct device_node *node = dev->of_node;
|
|
@@ -813,7 +817,8 @@ static int mc_pcie_init_irq_domains(struct plda_pcie_rp *port)
|
|
}
|
|
|
|
port->event_domain = irq_domain_add_linear(pcie_intc_node, NUM_EVENTS,
|
|
- &event_domain_ops, port);
|
|
+ &plda_event_domain_ops,
|
|
+ port);
|
|
if (!port->event_domain) {
|
|
dev_err(dev, "failed to get event domain\n");
|
|
of_node_put(pcie_intc_node);
|
|
@@ -835,7 +840,7 @@ static int mc_pcie_init_irq_domains(struct plda_pcie_rp *port)
|
|
of_node_put(pcie_intc_node);
|
|
raw_spin_lock_init(&port->lock);
|
|
|
|
- return mc_allocate_msi_domains(port);
|
|
+ return plda_allocate_msi_domains(port);
|
|
}
|
|
|
|
static inline void mc_clear_secs(struct mc_pcie *port)
|
|
@@ -898,14 +903,14 @@ static void mc_disable_interrupts(struct mc_pcie *port)
|
|
writel_relaxed(GENMASK(31, 0), bridge_base_addr + ISTATUS_HOST);
|
|
}
|
|
|
|
-static int mc_init_interrupts(struct platform_device *pdev, struct plda_pcie_rp *port)
|
|
+static int plda_init_interrupts(struct platform_device *pdev, struct plda_pcie_rp *port)
|
|
{
|
|
struct device *dev = &pdev->dev;
|
|
int irq;
|
|
int i, intx_irq, msi_irq, event_irq;
|
|
int ret;
|
|
|
|
- ret = mc_pcie_init_irq_domains(port);
|
|
+ ret = plda_pcie_init_irq_domains(port);
|
|
if (ret) {
|
|
dev_err(dev, "failed creating IRQ domains\n");
|
|
return ret;
|
|
@@ -938,7 +943,7 @@ static int mc_init_interrupts(struct platform_device *pdev, struct plda_pcie_rp
|
|
}
|
|
|
|
/* Plug the INTx chained handler */
|
|
- irq_set_chained_handler_and_data(intx_irq, mc_handle_intx, port);
|
|
+ irq_set_chained_handler_and_data(intx_irq, plda_handle_intx, port);
|
|
|
|
msi_irq = irq_create_mapping(port->event_domain,
|
|
EVENT_LOCAL_PM_MSI_INT_MSI);
|
|
@@ -946,10 +951,10 @@ static int mc_init_interrupts(struct platform_device *pdev, struct plda_pcie_rp
|
|
return -ENXIO;
|
|
|
|
/* Plug the MSI chained handler */
|
|
- irq_set_chained_handler_and_data(msi_irq, mc_handle_msi, port);
|
|
+ irq_set_chained_handler_and_data(msi_irq, plda_handle_msi, port);
|
|
|
|
/* Plug the main event chained handler */
|
|
- irq_set_chained_handler_and_data(irq, mc_handle_event, port);
|
|
+ irq_set_chained_handler_and_data(irq, plda_handle_event, port);
|
|
|
|
return 0;
|
|
}
|
|
@@ -977,7 +982,7 @@ static int mc_platform_init(struct pci_config_window *cfg)
|
|
return ret;
|
|
|
|
/* Address translation is up; safe to enable interrupts */
|
|
- ret = mc_init_interrupts(pdev, &port->plda);
|
|
+ ret = plda_init_interrupts(pdev, &port->plda);
|
|
if (ret)
|
|
return ret;
|
|
|
|
|
|
From patchwork Thu Mar 28 09:18:24 2024
|
|
Content-Type: text/plain; charset="utf-8"
|
|
MIME-Version: 1.0
|
|
Content-Transfer-Encoding: 7bit
|
|
X-Patchwork-Submitter: Minda Chen <minda.chen@starfivetech.com>
|
|
X-Patchwork-Id: 13608238
|
|
X-Patchwork-Delegate: kw@linux.com
|
|
Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn
|
|
(mail-sh0chn02on2136.outbound.protection.partner.outlook.cn
|
|
[139.219.146.136])
|
|
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
|
|
(No client certificate requested)
|
|
by smtp.subspace.kernel.org (Postfix) with ESMTPS id B5F4E65BA7;
|
|
Thu, 28 Mar 2024 09:19:03 +0000 (UTC)
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
arc=fail smtp.client-ip=139.219.146.136
|
|
ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
|
|
t=1711617545; cv=fail;
|
|
b=qFOlJVpDaqlaEVLPaAiMz6GoZA5r3I7erih1CWl9hHyj1cNHk44nzUnMBz3jQyJG7ExpI3qtpoJxj5I2xfjc7MOcl1m7RSyF/DuHXM4sLHj7qsYc/nXpmx9ZT50wMDo6TVkQe9ST1gAs2XXC3FOkhsyfRk0QnF9ZzxmC5PdpnRM=
|
|
ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org;
|
|
s=arc-20240116; t=1711617545; c=relaxed/simple;
|
|
bh=/4PccNbWjjS+4Uc+iPMog5YcbODT2POYLU9j4TmmDl8=;
|
|
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
|
|
Content-Type:MIME-Version;
|
|
b=MJP3WSMFwmEpmwIT1Uudg8ZrExRiEoxMXhOkhgv6eIfop1Q16K46lGacej8I50OhFMKro0E/uF66HES4U4MImQHEeFukU29+oasBn/KQNou1oE67XoEp91oOdSxfjEVbOpLkfper4+76owD1cJw7VC/T9XzlhQZaYvjly3/3q54=
|
|
ARC-Authentication-Results: i=2; smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com;
|
|
spf=pass smtp.mailfrom=starfivetech.com;
|
|
arc=fail smtp.client-ip=139.219.146.136
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
spf=pass smtp.mailfrom=starfivetech.com
|
|
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
|
|
b=f3cvmYx0MyLmGfVCPRJt0H5yxV2rMt8EUP9juA5MflU+IhPhmN4thCWE8j+xJjDF+LUG3hTNYNOmxObjfp2jj5fQA9o2NeDj1uRsxxsYZuAAECY7jonhYmaQD2YYXfGlWm0rzRkGvvOZ1eps7ElOd04rvXEyjwJ5pkDSzO2ICUuDEy842+ZajaLBSKsLOOBf3wmr/lRDFCXLtxQrx/OIXm7u1yClJmG6Ym5e097NGIUEBNS1Ne2bBpzhIZD0o8102CgfAEOUiH/obV/guPjwo2WifSMHv+uArixVzK6S1XGGIQkIrMb1xUBZb6sIcEB/dAGWqiVF1XNhBg/TlB+ohA==
|
|
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
|
|
s=arcselector9901;
|
|
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
|
|
bh=qiqHj4APLQ+5sb97w44ol5KWqweOs8B8Tg2C7Uqvdm0=;
|
|
b=dBMHehTHUD7kd0yWxo4O9O6H2AenbU6GcUpEY7pIMiPEUPS7eggMJj01d3+ezJh42nKPOHdjOxcxPtZdwLDeUjd9gEEl/Tkq45c04H+fpjEHHjrvA0jL71b7CIu0YoGbFd0mdYkeS+pBVBADCEau2AKJvrlW5N1YhZtMcTASMoJ+HgkZYGbfNB+7Zk1zbMdE6xL0fNAtXAVmNgyCXsBGmXio6GY22dSw2jLCPFF9QGB++4zM5MYEKUuv94sRQaDW7Td8RJS+4F/TRZcDGTn+H5NjkweEe/AZf8KKB5D7zxo8Mg2YV/4EEnQVhKz50gYue9vI1AprCnsjbrKmxHAxnw==
|
|
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
|
|
smtp.mailfrom=starfivetech.com; dmarc=pass action=none
|
|
header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none
|
|
Authentication-Results: dkim=none (message not signed)
|
|
header.d=none;dmarc=none action=none header.from=starfivetech.com;
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15) by SHXPR01MB0559.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:1d::22) with Microsoft SMTP Server (version=TLS1_2,
|
|
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Thu, 28 Mar
|
|
2024 09:18:55 +0000
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
([fe80::c738:9e6b:f92e:8bb9]) by
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn ([fe80::c738:9e6b:f92e:8bb9%6])
|
|
with mapi id 15.20.7409.031; Thu, 28 Mar 2024 09:18:55 +0000
|
|
From: Minda Chen <minda.chen@starfivetech.com>
|
|
To: Lorenzo Pieralisi <lpieralisi@kernel.org>,
|
|
Conor Dooley <conor@kernel.org>,
|
|
=?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kw@linux.com>,
|
|
Rob Herring <robh+dt@kernel.org>, Bjorn Helgaas <bhelgaas@google.com>,
|
|
Thomas Gleixner <tglx@linutronix.de>,
|
|
Daire McNamara <daire.mcnamara@microchip.com>,
|
|
Emil Renner Berthing <emil.renner.berthing@canonical.com>,
|
|
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
|
|
Cc: devicetree@vger.kernel.org,
|
|
linux-kernel@vger.kernel.org,
|
|
linux-riscv@lists.infradead.org,
|
|
linux-pci@vger.kernel.org,
|
|
Paul Walmsley <paul.walmsley@sifive.com>,
|
|
Palmer Dabbelt <palmer@dabbelt.com>,
|
|
Albert Ou <aou@eecs.berkeley.edu>,
|
|
Philipp Zabel <p.zabel@pengutronix.de>,
|
|
Mason Huo <mason.huo@starfivetech.com>,
|
|
Leyfoon Tan <leyfoon.tan@starfivetech.com>,
|
|
Kevin Xie <kevin.xie@starfivetech.com>,
|
|
Minda Chen <minda.chen@starfivetech.com>
|
|
Subject: [PATCH v16 11/22] PCI: microchip: Add num_events field to struct
|
|
plda_pcie_rp
|
|
Date: Thu, 28 Mar 2024 17:18:24 +0800
|
|
Message-Id: <20240328091835.14797-12-minda.chen@starfivetech.com>
|
|
X-Mailer: git-send-email 2.17.1
|
|
In-Reply-To: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
References: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
X-ClientProxiedBy: NT0PR01CA0020.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c510:c::16) To SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15)
|
|
Precedence: bulk
|
|
X-Mailing-List: linux-pci@vger.kernel.org
|
|
List-Id: <linux-pci.vger.kernel.org>
|
|
List-Subscribe: <mailto:linux-pci+subscribe@vger.kernel.org>
|
|
List-Unsubscribe: <mailto:linux-pci+unsubscribe@vger.kernel.org>
|
|
MIME-Version: 1.0
|
|
X-MS-PublicTrafficType: Email
|
|
X-MS-TrafficTypeDiagnostic: SHXPR01MB0863:EE_|SHXPR01MB0559:EE_
|
|
X-MS-Office365-Filtering-Correlation-Id: c27c3db2-0005-4c53-be14-08dc4f08174a
|
|
X-MS-Exchange-SenderADCheck: 1
|
|
X-Microsoft-Antispam: BCL:0;
|
|
X-Microsoft-Antispam-Message-Info:
|
|
NQ1oB84fqURJgn5b0HHgd3Xt3a49rn1/s1/d9g9aPT+FLtZwPPqvcH/4rHvOTZdr+Fml6R4Jm1xUYRFCTcPMO/R8U6NBrgXIvOMKRbSN+odUN6x1DV66xDMpYT0cU9B2w/7UeM8JN2BJQN65Jv5n4ppdYhPdrJc1wMiTYEuhkivNHR/HN7CnHPjcmzk7E1z9BcCyQMzBxC0WMaOra7Z6zPkeqgQMNpst7nL1nK7bt9h3JcNPQ6v9WuTpM1JkprEbkP7JtHGkISGJrjqkWz7W6Lp8vnES4yS0JoNFjwtDk0CC5tbyRnOY3xM9AiLzoCqPr6wWcjD5eIzrbkkMwxXQI4UVNY033k2H56YY/9mzOjACMQZbFPXoepVVJl6OpS9IulRWBfvUilr09egU79OopnlCuJ85yq2aLTB+jWAzP2cFQByx1EiMyCLsjOhNS0oTESB23v1k47na905zkS4H5AuZTUIX8i8NwnAAdwBS0Lf7jrD+7h6IMV/vLNh/01INQt5CcWNJptExYIENZKOtbAe7HBey0WJayRh5ZAztTDZjb776NGHvBSDbXihBcy90Rn+/Nc9uIGPIMLFrlJ3gmj3RlmVIK96AZdpmny7xeggO7czqj03mqCPpSkonyCAm
|
|
X-Forefront-Antispam-Report:
|
|
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230031)(1800799015)(52116005)(7416005)(41320700004)(366007)(38350700005);DIR:OUT;SFP:1102;
|
|
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
|
|
X-MS-Exchange-AntiSpam-MessageData-0:
|
|
nKl5X7Upbu9oeJrwu064KGfO65CeeBo9hYWNUvovceUTLm+ZGo58eq/vrODgS/83x+U4cSwey+WrfKsxDufwGT6zyvsMCHUGTTy27FigDPv4qeTwai2dos/Gq5sYkSNJBwiOHTVeYsbEUcapqYD7QW9yn80POHU5OZbSsYJ9nTCZ0GOMObDM12sv5qKs6vm8YGx2BFZgOqRBtH1cnQYRd6qIcsL5y0CxxN5VMTSeflslY8gNBhUV3O3TSN/TsFwzKJk+1O24lbQ5yZk62sCCl78oPIbRcwn2Ltp6fUm+wHHblpJZDrKLJMzPlaQOayKqKbFleJhKFpVFZDDccC6q3Rjm9xcVY3Q7oZ54geF7sGCzvLrivwis2DKzE4QATEhcHorYRC2Cbh81dxGECH1IcbEq8dXB6kjwYk1/Pv18yOX5vbOQ81mYXPPCOyxva3Y3YgPImn0dB9ajIzQxdt9a3Jn1+CSRSZmD2JzCrLjtmZRamCwL2VgBR5b+jFsK7l1DAB1mw21RIQp2sQ6QJl651+ZTwzpQnrX6h+oGm9b7G1mEUzDOL/MOi4rBiJ9TsPuBc8x54Rg9KRrLMnfyy2M18H1tt7K1qjIJXy5LfpU4t2QhK8mexmU0EaiqcHQbrYL2LYZcSZhkxftdNkAjrcCSTRhVpQVFNJbfUbF25PtzEqa1/wsnakA2OkVlR3PWKpi+3mWRiQXhzQmitz63hGPWmQCCb9Z2VZ9E37xJtArEcKPm9KO/deQWeow0odVK60jnwaX8S0GIoAvL3Tyg/KrjZez129SEUyP3VeRmnBIYnJWA6JbxgxQwkiWWK/Ngc2jo+l6UrYS7BYfQz/OLvEDRh/xLJF4nu3XdcGx8di1A1KbsnE9gmIinlTZ9cVcsUdPipfi16ecWYLwqebjtrv7ee9WmvZ0C/tyLmDiizFJiF7RGfcvKSzK+1V0xtwslhNwHX8r9TGZiATqjGyLMdJspkXgbHzvZ6J4H8+4vnEipUkqYxuQZvJdZA9A9Y4agB7nYtrXGPXgms3fezM4LvIJnRz3vmrjT7rdEOQpi+2pNdkHr9xIBtzW3j6BTRqrDGveV73YW/3fE52PxsgkQ6gwBAhUTL2ugOn5LUf4BMoWi08mh3f/YbO8BwOr8AcC6GqN7vFOw7CxFMzBoN1zx0wqTWyCEIES3b1Wi1hgbPIOaAfuhTU6C4Jvr4uM1ZZPFP7tukH6jX5ABMk3CUT6p61xaBTBjAABrjQFgbZPgMdcqb9TbJo2IiCxinYXLKCSH73ChL2jMTXqN/E10QmLk6sIeZqqtN8VOem4n8J3VCm39YeNAe/8Sv0wPa8wdpYTm+mszH4JaN7yivAcBNVqQfktFaCFupvwPqhCNKhzKiknMkiNt02N3pqSjHCBh4afwtPsZ6z5xlfFBYEAG1e5mYVyr8isXrJpwcxUcC1uPqKoxKx85iH/CGIrD6tWu0OmJ3DO4wXj7Efzct+OO2nJiX7cYGtCLVuklN8lD9AlsZKYZaMGAiDFYISL14REpWWgeK1CnIepJK+VW1r3pl5lEVZx4kkUu1gDlrK51nivMqbKu6hXteQGA+nQuOQrAp/SAgU7tj+I2FDLE8gy1vi94Tmf4DQ==
|
|
X-OriginatorOrg: starfivetech.com
|
|
X-MS-Exchange-CrossTenant-Network-Message-Id:
|
|
c27c3db2-0005-4c53-be14-08dc4f08174a
|
|
X-MS-Exchange-CrossTenant-AuthSource:
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
X-MS-Exchange-CrossTenant-AuthAs: Internal
|
|
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2024 09:18:55.0007
|
|
(UTC)
|
|
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
|
|
X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c
|
|
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
|
|
X-MS-Exchange-CrossTenant-UserPrincipalName:
|
|
qCqUTVSzgUeTd1HM4zUkERrAh1Nz1jXHo3gnykDfvXh97BBEy8fISY0lHGD2s/cuiEdr0BnrneSNinXfkY+Hi8MG014EDhlKcyy4vLuoefA=
|
|
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SHXPR01MB0559
|
|
|
|
The number of events is different across platforms. In order to share
|
|
interrupt processing code, add a variable that defines the number of
|
|
events so that it can be set per-platform instead of hardcoding it.
|
|
|
|
Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
|
|
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
|
|
---
|
|
drivers/pci/controller/plda/pcie-microchip-host.c | 8 +++++---
|
|
drivers/pci/controller/plda/pcie-plda.h | 1 +
|
|
2 files changed, 6 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/drivers/pci/controller/plda/pcie-microchip-host.c b/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
index 18bc352db389..0a5cd8b214cd 100644
|
|
--- a/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
+++ b/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
@@ -653,7 +653,7 @@ static void plda_handle_event(struct irq_desc *desc)
|
|
|
|
events = mc_get_events(port);
|
|
|
|
- for_each_set_bit(bit, &events, NUM_EVENTS)
|
|
+ for_each_set_bit(bit, &events, port->num_events)
|
|
generic_handle_domain_irq(port->event_domain, bit);
|
|
|
|
chained_irq_exit(chip, desc);
|
|
@@ -816,7 +816,8 @@ static int plda_pcie_init_irq_domains(struct plda_pcie_rp *port)
|
|
return -EINVAL;
|
|
}
|
|
|
|
- port->event_domain = irq_domain_add_linear(pcie_intc_node, NUM_EVENTS,
|
|
+ port->event_domain = irq_domain_add_linear(pcie_intc_node,
|
|
+ port->num_events,
|
|
&plda_event_domain_ops,
|
|
port);
|
|
if (!port->event_domain) {
|
|
@@ -920,7 +921,7 @@ static int plda_init_interrupts(struct platform_device *pdev, struct plda_pcie_r
|
|
if (irq < 0)
|
|
return -ENODEV;
|
|
|
|
- for (i = 0; i < NUM_EVENTS; i++) {
|
|
+ for (i = 0; i < port->num_events; i++) {
|
|
event_irq = irq_create_mapping(port->event_domain, i);
|
|
if (!event_irq) {
|
|
dev_err(dev, "failed to map hwirq %d\n", i);
|
|
@@ -1012,6 +1013,7 @@ static int mc_host_probe(struct platform_device *pdev)
|
|
|
|
bridge_base_addr = port->axi_base_addr + MC_PCIE_BRIDGE_ADDR;
|
|
plda->bridge_addr = bridge_base_addr;
|
|
+ plda->num_events = NUM_EVENTS;
|
|
|
|
/* Allow enabling MSI by disabling MSI-X */
|
|
val = readl(bridge_base_addr + PCIE_PCI_IRQ_DW0);
|
|
diff --git a/drivers/pci/controller/plda/pcie-plda.h b/drivers/pci/controller/plda/pcie-plda.h
|
|
index e277a5452b5d..f7e900b395f8 100644
|
|
--- a/drivers/pci/controller/plda/pcie-plda.h
|
|
+++ b/drivers/pci/controller/plda/pcie-plda.h
|
|
@@ -124,6 +124,7 @@ struct plda_pcie_rp {
|
|
raw_spinlock_t lock;
|
|
struct plda_msi msi;
|
|
void __iomem *bridge_addr;
|
|
+ int num_events;
|
|
};
|
|
|
|
void plda_pcie_setup_window(void __iomem *bridge_base_addr, u32 index,
|
|
|
|
From patchwork Thu Mar 28 09:18:25 2024
|
|
Content-Type: text/plain; charset="utf-8"
|
|
MIME-Version: 1.0
|
|
Content-Transfer-Encoding: 7bit
|
|
X-Patchwork-Submitter: Minda Chen <minda.chen@starfivetech.com>
|
|
X-Patchwork-Id: 13608241
|
|
X-Patchwork-Delegate: kw@linux.com
|
|
Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn
|
|
(mail-sh0chn02on2136.outbound.protection.partner.outlook.cn
|
|
[139.219.146.136])
|
|
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
|
|
(No client certificate requested)
|
|
by smtp.subspace.kernel.org (Postfix) with ESMTPS id BD9C77BB1F;
|
|
Thu, 28 Mar 2024 09:19:05 +0000 (UTC)
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
arc=fail smtp.client-ip=139.219.146.136
|
|
ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
|
|
t=1711617547; cv=fail;
|
|
b=TzzVso0FNApTDtELq2M3oI5HUnioxrkurC/nhYwIY8Ymn9xEWE/kCtzoEbUXpDCjggmicqbpfRReUVCh6AC0k/80N0QOU1ya5FuSkIPvhpGxqmWbRZiC+Wjc8VV793TO3lcAm/wvuHNEvt2oZSboe44hV8LEcBhAwHwP3Cc1Z2c=
|
|
ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org;
|
|
s=arc-20240116; t=1711617547; c=relaxed/simple;
|
|
bh=kcLz6GXXaaMuiaU3v8rviMl71jjx5ZUPW4AIUhEerhQ=;
|
|
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
|
|
Content-Type:MIME-Version;
|
|
b=Cgb/AFPrII7URxiBtb2tBAhsjVg6p5pOZwMTEgVARlPeRVoOc4Kk4poeuKOMNGyu/xdGyjIm+NdERWd5yURhkzo5NWdPtPxJad1xxInQz6zojT8uH4zAfLZguP+QoKUOGQeKxgJub9JW0PVHrRKfkCm5LgFHElZ4mxM2FllWoYw=
|
|
ARC-Authentication-Results: i=2; smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com;
|
|
spf=pass smtp.mailfrom=starfivetech.com;
|
|
arc=fail smtp.client-ip=139.219.146.136
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
spf=pass smtp.mailfrom=starfivetech.com
|
|
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
|
|
b=dqUcISpoIFbNtQ6hZ0ZHt+IUMgXt9Vd160nYfjcHOVnCXb0FSeq61uZXUsTr9TlTGF2w5VANzNW89kpFoKQnBzXElQL18GIG3MpyFKiQlMORWhd9pj9upiT1kgU2LxEzzx7gUHy+EcdhfHB44jEfyJSi8h4U1imLoTgH+2njhVa+jfJ9rM3HElQ862ZrjCA9/iyV2OikDAof0TWpfIY96bjOiKvYJaQcu0yyCHtbP+FYRMCImSTf4LfGPUd3rmkQaGqchiOrjhTMnrpn34Nm8+TYfz8U9vENgZp6cIaaFXfGpD9y7LhylG3/kjd+JQYDm2UMOa8CgAynN4rDmZ7iJQ==
|
|
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
|
|
s=arcselector9901;
|
|
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
|
|
bh=WCHTdafcVRRLyX1F31U5Ti4iQWrk2XaV+80OS75u1AU=;
|
|
b=Ah1G+p+wJpA3j3weh5KWBXEqr+7AwZGqgjHadY52Earnnq2WjoZBLNtWUdteoCJR/ky5+rHupW1yh5EiacKT8ui91jJwHJj4QTlcqWZRiUn0QR//hxKogqs8W0Ypx1sdTJiTzoztAV8rriWPuRD/dl5rk5mA1a5Rb7+rZe2t3YllwJ0491my/TaHheP/LQz37yCmgDTSuWogKxwi7JdxgGXRoxwJYQKqUZEaCaRbU3jsMyIFBpucB4K8BAA689TkM/bfHFL/qL+989RSpanV2ZlxiqMGSKc+Bqa5UsF8WBQcBUUywF0rNn6CN8xE2BuQ4lVzyHOXfeMkQ6edqe/C+g==
|
|
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
|
|
smtp.mailfrom=starfivetech.com; dmarc=pass action=none
|
|
header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none
|
|
Authentication-Results: dkim=none (message not signed)
|
|
header.d=none;dmarc=none action=none header.from=starfivetech.com;
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15) by SHXPR01MB0559.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:1d::22) with Microsoft SMTP Server (version=TLS1_2,
|
|
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Thu, 28 Mar
|
|
2024 09:18:56 +0000
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
([fe80::c738:9e6b:f92e:8bb9]) by
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn ([fe80::c738:9e6b:f92e:8bb9%6])
|
|
with mapi id 15.20.7409.031; Thu, 28 Mar 2024 09:18:56 +0000
|
|
From: Minda Chen <minda.chen@starfivetech.com>
|
|
To: Lorenzo Pieralisi <lpieralisi@kernel.org>,
|
|
Conor Dooley <conor@kernel.org>,
|
|
=?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kw@linux.com>,
|
|
Rob Herring <robh+dt@kernel.org>, Bjorn Helgaas <bhelgaas@google.com>,
|
|
Thomas Gleixner <tglx@linutronix.de>,
|
|
Daire McNamara <daire.mcnamara@microchip.com>,
|
|
Emil Renner Berthing <emil.renner.berthing@canonical.com>,
|
|
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
|
|
Cc: devicetree@vger.kernel.org,
|
|
linux-kernel@vger.kernel.org,
|
|
linux-riscv@lists.infradead.org,
|
|
linux-pci@vger.kernel.org,
|
|
Paul Walmsley <paul.walmsley@sifive.com>,
|
|
Palmer Dabbelt <palmer@dabbelt.com>,
|
|
Albert Ou <aou@eecs.berkeley.edu>,
|
|
Philipp Zabel <p.zabel@pengutronix.de>,
|
|
Mason Huo <mason.huo@starfivetech.com>,
|
|
Leyfoon Tan <leyfoon.tan@starfivetech.com>,
|
|
Kevin Xie <kevin.xie@starfivetech.com>,
|
|
Minda Chen <minda.chen@starfivetech.com>
|
|
Subject: [PATCH v16 12/22] PCI: microchip: Add request_event_irq() callback
|
|
function
|
|
Date: Thu, 28 Mar 2024 17:18:25 +0800
|
|
Message-Id: <20240328091835.14797-13-minda.chen@starfivetech.com>
|
|
X-Mailer: git-send-email 2.17.1
|
|
In-Reply-To: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
References: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
X-ClientProxiedBy: NT0PR01CA0020.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c510:c::16) To SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15)
|
|
Precedence: bulk
|
|
X-Mailing-List: linux-pci@vger.kernel.org
|
|
List-Id: <linux-pci.vger.kernel.org>
|
|
List-Subscribe: <mailto:linux-pci+subscribe@vger.kernel.org>
|
|
List-Unsubscribe: <mailto:linux-pci+unsubscribe@vger.kernel.org>
|
|
MIME-Version: 1.0
|
|
X-MS-PublicTrafficType: Email
|
|
X-MS-TrafficTypeDiagnostic: SHXPR01MB0863:EE_|SHXPR01MB0559:EE_
|
|
X-MS-Office365-Filtering-Correlation-Id: a6447209-6191-4018-74f1-08dc4f0817e3
|
|
X-MS-Exchange-SenderADCheck: 1
|
|
X-Microsoft-Antispam: BCL:0;
|
|
X-Microsoft-Antispam-Message-Info:
|
|
WLaObnClvK4MoiRymgNZBswN2z504NpbELK86C4DurmBE25/tJ1+mbGLW/pTVOXXrc8Omh9HrUxOsJHVpDi/b+P1ndPN6+to6KyLaSvRCKGn6znVk8PBCPl4J2ZU8Rw02fX38DqZUpoYcoE8ZwR5UQAtqE//siqMaRP/UWghpe4JjGLh67qR6qwjVfrmlcBswKr4K3krt1k865ohORqsuqDEs6VxCCIfYUhra4E2KLGLUWnpPxjHXHYpvh5f8m3hyZ6Fpk2WG4Rpy4bHRtEHf1NCjEr6UnoNOtb8RpXJ5cDzgiu+7ABlx61yBYlo5Uut997BxZ0SgQUIh25oDWwtLoPcpSUggIn4Kd5rfsiEdNieI3jO3cuBW5znE7O26LYIJz/pTzhwycxWMT5iLcQFzzPDyWX3DhOM2UbXmZMT2SOywJgdmimrwRDKx5ogkleDdvkOdFiGCxGZSoAH+NGOoSV5OhB+9pITHM6wTBDJDR8x9+8MukoHEUCwFjc5MOniRETbOozVoQEGVZ79m4EpIVlT4ibRsQN6XP2PhXht2DLBXjEtqZV/9lwtWYraZBc8KVcmx3TPpdrZq07RW2rgjXnO8ymxkkl5rD0PwhOXfnsHV+/f5Retw+eADkYq4duM
|
|
X-Forefront-Antispam-Report:
|
|
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230031)(1800799015)(52116005)(7416005)(41320700004)(366007)(38350700005);DIR:OUT;SFP:1102;
|
|
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
|
|
X-MS-Exchange-AntiSpam-MessageData-0:
|
|
lLwFZqXOlTdfQUPYTHmMjKu/eWBpw65FS1b3SvA6UBxzURX36yXDFJZJ+U2q5pzriRRmh838f+IHGHI66uRfn4sFn4hlqBUC/LyQdafGF2CRWMsc0OM5bINPyh4hnEgjzis0pLBPU+Tuz1915WBojvkQRKat+DP5CnXTueS6mzyFE3cL6A4LM+uoInpkhF9NX5SWMKwZl9Ocb4qOAtrrolmrLlczbKmyyqu4+PWW2j3rb3qdqsj7VbQl8axQ244UQYxdHoPBwoa4rATeRXshO8bTVsxgQIMSiJ5DagmczEoSZef+isjH9zxbpfLtXt5hil+3nbma3BdcAW8gvx0Wiy2pKKr3YnPEv8aJnD/Frz6/s0LJYYyWXkx/D/EpjnFuVi1JHkTYmnXm8aCO/DKCaWt7Dbbs7zRVYqzl0ZtWK0j7V7pQ5e7WuzUEaDW/fBmNVyuwVizbKkPxadcnND1tc3cJlSrYmpxv9vLMPIoGICqH9CAwgfCK9/yDraD5R2Q7gvo+dMZMiJ+uw2bkgxeo2NU4YaqG8KLyMLed5tH3PY3w4jLAGiQAkkCOK8xvUBwbqmpDb6a2H76zJuxlSIxdjckV02nNM4cuLRLmuta6A22dRLN5Dk7IZ154TdhUPwFCzO/1VTfmPYGry+nDSEU78MiXcvA/P1V5ST+zWiHSSLAhlFeb1wKEp2DwXQBbtIWqsB7c0AWpvy0e+4EhddqMNlPAusVOA7Dv/Z30RUIObJmO3pECZ/YBzviGL57NjB5KwhdWYJgwgxnE8xq4HWx//mQOKaY6ToD1cHdHmxljiI1XBPExQIDMH5omF2TDTQMI4qlxL3kr2Q6ira6IO7YfZoTVDUJ6EJ680kzzkACmIlc1c5tmwYYv/0FzTgYrqycOktJxG4jsTYioHPrcHsnJb9DO4AcouEgI65GfDjSn7qP7OooLmLdcDZO/TQSi6OFFt1WN3Jqp86yGR/8yloh2KlsTMysVsvNVf3J7layccKcnR/RnC86CGGftJPmInmjqITRWLBEAo2hAD9EMWlXQzdPyrC/49aequ/VkLPph2gyc6jQcyPViHJcq1trPByxJ1feujy2sRBiMCLq2RaVGdR1n0T7INl3ATrp0++UuQsLOPVUE4ZPpuEb6HUocRm4dYlJZvQkUhXQrufJWROvgubdCeCwV7SqihtMbq7TPGWdxzsNVyVz4VdmIe3ChlrxHl0tyB71atWF0Io4TqfL0/4IkpZg0/RaUFvnuCq9vVF7ZZd8X44g6ChcUO+xV2RXLwCeVPRUBdmcdQ8JCP7wq8A0NH0H/Zod+/AtGhPqBlRfXdEYNd3dWMjxmt4wJflTusA5iCpMYrFgJF896ssUBCq91WzqzyItLL1SrksYyg3hcZZL67PMqh9z3NnAL4tnSjX5IJxyle8J/A+taF0SiYIduU2kQiSq/jcrSdBPx/CuiUgb6HVJcb82eZecPKZbND2VVWjGx6LWMbMpSAlizHLSfqmAge6Za609XE6X8VmnXJNtS7WtKQSoLL4pozHiG1I4C/CaBqMnK7Jtqabzf2K426EaFatmgCBqYOgFnGhDwTeDa6sk5Be0K8i6MWAEheypH7ryLLd50VT0am8OYkg==
|
|
X-OriginatorOrg: starfivetech.com
|
|
X-MS-Exchange-CrossTenant-Network-Message-Id:
|
|
a6447209-6191-4018-74f1-08dc4f0817e3
|
|
X-MS-Exchange-CrossTenant-AuthSource:
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
X-MS-Exchange-CrossTenant-AuthAs: Internal
|
|
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2024 09:18:56.0007
|
|
(UTC)
|
|
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
|
|
X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c
|
|
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
|
|
X-MS-Exchange-CrossTenant-UserPrincipalName:
|
|
brl5r0ZuHl3hKDqR2m8LINCGCnmem0M9AuiL3K6wAgZXQZJhUcMCZbhY1QsoMua90dZBaJ47VNzbIH0qThs12y7pVcSoD/KPwrFrZUUi3MM=
|
|
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SHXPR01MB0559
|
|
|
|
As PLDA dts binding doc(Documentation/devicetree/bindings/pci/
|
|
plda,xpressrich3-axi-common.yaml) showed, PLDA PCIe contains an interrupt
|
|
controller. Microchip Polarfire PCIe add some PCIe interrupts base on
|
|
PLDA interrupt controller.
|
|
|
|
Microchip Polarfire PCIe additional intrerrupts:
|
|
(defined in drivers/pci/controller/plda/pcie-microchip-host.c)
|
|
EVENT_PCIE_L2_EXIT
|
|
EVENT_PCIE_HOTRST_EXIT
|
|
EVENT_PCIE_DLUP_EXIT
|
|
EVENT_SEC_TX_RAM_SEC_ERR
|
|
EVENT_SEC_RX_RAM_SEC_ERR
|
|
....
|
|
|
|
Both code of request interrupts and mc_event_handler() contain
|
|
additional interrupts symbol names, these can not be re-used. So add a
|
|
new plda_event_handler() functions, which implements PLDA interrupt
|
|
defalt handler, add request_event_irq() callback function to compat
|
|
Microchip Polorfire PCIe additional interrupts.
|
|
|
|
Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
|
|
Acked-by: Conor Dooley <conor.dooley@microchip.com>
|
|
---
|
|
.../pci/controller/plda/pcie-microchip-host.c | 31 ++++++++++++++++---
|
|
drivers/pci/controller/plda/pcie-plda.h | 5 +++
|
|
2 files changed, 32 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/drivers/pci/controller/plda/pcie-microchip-host.c b/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
index 0a5cd8b214cd..bf5ce33ee275 100644
|
|
--- a/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
+++ b/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
@@ -642,6 +642,11 @@ static irqreturn_t mc_event_handler(int irq, void *dev_id)
|
|
return IRQ_HANDLED;
|
|
}
|
|
|
|
+static irqreturn_t plda_event_handler(int irq, void *dev_id)
|
|
+{
|
|
+ return IRQ_HANDLED;
|
|
+}
|
|
+
|
|
static void plda_handle_event(struct irq_desc *desc)
|
|
{
|
|
struct plda_pcie_rp *port = irq_desc_get_handler_data(desc);
|
|
@@ -803,6 +808,17 @@ static int mc_pcie_init_clks(struct device *dev)
|
|
return 0;
|
|
}
|
|
|
|
+static int mc_request_event_irq(struct plda_pcie_rp *plda, int event_irq,
|
|
+ int event)
|
|
+{
|
|
+ return devm_request_irq(plda->dev, event_irq, mc_event_handler,
|
|
+ 0, event_cause[event].sym, plda);
|
|
+}
|
|
+
|
|
+static const struct plda_event mc_event = {
|
|
+ .request_event_irq = mc_request_event_irq,
|
|
+};
|
|
+
|
|
static int plda_pcie_init_irq_domains(struct plda_pcie_rp *port)
|
|
{
|
|
struct device *dev = port->dev;
|
|
@@ -904,7 +920,9 @@ static void mc_disable_interrupts(struct mc_pcie *port)
|
|
writel_relaxed(GENMASK(31, 0), bridge_base_addr + ISTATUS_HOST);
|
|
}
|
|
|
|
-static int plda_init_interrupts(struct platform_device *pdev, struct plda_pcie_rp *port)
|
|
+static int plda_init_interrupts(struct platform_device *pdev,
|
|
+ struct plda_pcie_rp *port,
|
|
+ const struct plda_event *event)
|
|
{
|
|
struct device *dev = &pdev->dev;
|
|
int irq;
|
|
@@ -928,8 +946,13 @@ static int plda_init_interrupts(struct platform_device *pdev, struct plda_pcie_r
|
|
return -ENXIO;
|
|
}
|
|
|
|
- ret = devm_request_irq(dev, event_irq, mc_event_handler,
|
|
- 0, event_cause[i].sym, port);
|
|
+ if (event->request_event_irq)
|
|
+ ret = event->request_event_irq(port, event_irq, i);
|
|
+ else
|
|
+ ret = devm_request_irq(dev, event_irq,
|
|
+ plda_event_handler,
|
|
+ 0, NULL, port);
|
|
+
|
|
if (ret) {
|
|
dev_err(dev, "failed to request IRQ %d\n", event_irq);
|
|
return ret;
|
|
@@ -983,7 +1006,7 @@ static int mc_platform_init(struct pci_config_window *cfg)
|
|
return ret;
|
|
|
|
/* Address translation is up; safe to enable interrupts */
|
|
- ret = plda_init_interrupts(pdev, &port->plda);
|
|
+ ret = plda_init_interrupts(pdev, &port->plda, &mc_event);
|
|
if (ret)
|
|
return ret;
|
|
|
|
diff --git a/drivers/pci/controller/plda/pcie-plda.h b/drivers/pci/controller/plda/pcie-plda.h
|
|
index f7e900b395f8..935686bba837 100644
|
|
--- a/drivers/pci/controller/plda/pcie-plda.h
|
|
+++ b/drivers/pci/controller/plda/pcie-plda.h
|
|
@@ -127,6 +127,11 @@ struct plda_pcie_rp {
|
|
int num_events;
|
|
};
|
|
|
|
+struct plda_event {
|
|
+ int (*request_event_irq)(struct plda_pcie_rp *pcie,
|
|
+ int event_irq, int event);
|
|
+};
|
|
+
|
|
void plda_pcie_setup_window(void __iomem *bridge_base_addr, u32 index,
|
|
phys_addr_t axi_addr, phys_addr_t pci_addr,
|
|
size_t size);
|
|
|
|
From patchwork Thu Mar 28 09:18:26 2024
|
|
Content-Type: text/plain; charset="utf-8"
|
|
MIME-Version: 1.0
|
|
Content-Transfer-Encoding: 7bit
|
|
X-Patchwork-Submitter: Minda Chen <minda.chen@starfivetech.com>
|
|
X-Patchwork-Id: 13608243
|
|
X-Patchwork-Delegate: kw@linux.com
|
|
Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn
|
|
(mail-sh0chn02on2091.outbound.protection.partner.outlook.cn [139.219.146.91])
|
|
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
|
|
(No client certificate requested)
|
|
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 95D477CF18;
|
|
Thu, 28 Mar 2024 09:19:07 +0000 (UTC)
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
arc=fail smtp.client-ip=139.219.146.91
|
|
ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
|
|
t=1711617549; cv=fail;
|
|
b=sTjv2uyPijMDbqB1nFjE6js8dMhpclnI/KbW0x7JGITY6rCYlRta5gPAi3Lx0D5W2n35d63tJ6MsuZIkxR2LqHqbml8k0LF+oWo/kpNCv+1s/m2WgDuRhxYrDVBGpoqpUjXJg7VvBtFoGwlSpVyKP330fp5coMWKe5Yp6sGUIgU=
|
|
ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org;
|
|
s=arc-20240116; t=1711617549; c=relaxed/simple;
|
|
bh=Zo0vtMDlUQnEv4z3jiAEPsEljhHkUDAsLY+wuNCYIJc=;
|
|
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
|
|
Content-Type:MIME-Version;
|
|
b=pIOFbc+8yWccYfUA8yA+1jaSukUQYfZ+fXGJrczPynF4asbJtjq8+MflXAUe4zMt8LqnebcqDt/hShChNJegFY3BKny33HTPAMSkxBukoRq9LDz/xWY8xpKM1QxD2ddD31JKmIRzp8XikAIdQE5CltGaxZ68tOG01wLQ9NsJ7cM=
|
|
ARC-Authentication-Results: i=2; smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com;
|
|
spf=pass smtp.mailfrom=starfivetech.com;
|
|
arc=fail smtp.client-ip=139.219.146.91
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
spf=pass smtp.mailfrom=starfivetech.com
|
|
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
|
|
b=c48UPWRC+v5G4bXw5AgYe+Y6sxFs9rrqucIHSSGTd5u0nBDikbwqDIuloJ3BD0JHaz70yacY/a14KQrU+kNZPYnK/qBy73nG5ezZWxQY4HQFA6kmKM1gV9/EOC3WxI5+KdO01/tAnSadNwdOgkfv5o7PNoW5xPUeWA9wKbhdTf73bnT3s7UsN7i9S9IbyZor7dRSXy0t60zc5XBbVpxvw0/LXHQEqCu6Fc4+InGiz0M23OpBg88VQZEsfNyiDqrkHjPjl87T7O+44z8/wrpj3JOAdZcNCkuqsK7x/Cr2pXsRrKjWHuOMjaIVLuMUpSeuPeMcrynD1hEd+UDKk6MA0A==
|
|
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
|
|
s=arcselector9901;
|
|
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
|
|
bh=nN9BSin22ElT+yVAKOhug7/CtveOW/fhCZdvxOLQSOs=;
|
|
b=buM+U18lN1cJNFN64lmQEoZTEf1GWvs9B//oizWClWfbAb3wtQB8AaKrpN2Nm1cqv0VAxjjw1OYZODjnGMm8jpMe3pqkaNjMIvHJu+AuMv2MUNGedkKNzgUvwYJoLic7WcaEQncGG8jp9K3g7nVvgoz6O4gC/ENK1dWSfUtkguK4/WdHEHZZBCRJjQNEyhGsUltFHBQsiLhCVYs1+7juCjqxSdKdeAD89Qt60XiMi/x/GRd09kFoAzaUaKLkQVIr/mmGmzM96hg3avdXR60z5O3/zLKInzLrvNvmLJA9O5/lclz6lIzA1l+ClnN1tb7mY3J8PEkqgsexQVplp6VEkQ==
|
|
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
|
|
smtp.mailfrom=starfivetech.com; dmarc=pass action=none
|
|
header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none
|
|
Authentication-Results: dkim=none (message not signed)
|
|
header.d=none;dmarc=none action=none header.from=starfivetech.com;
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15) by SHXPR01MB0559.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:1d::22) with Microsoft SMTP Server (version=TLS1_2,
|
|
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Thu, 28 Mar
|
|
2024 09:18:57 +0000
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
([fe80::c738:9e6b:f92e:8bb9]) by
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn ([fe80::c738:9e6b:f92e:8bb9%6])
|
|
with mapi id 15.20.7409.031; Thu, 28 Mar 2024 09:18:57 +0000
|
|
From: Minda Chen <minda.chen@starfivetech.com>
|
|
To: Lorenzo Pieralisi <lpieralisi@kernel.org>,
|
|
Conor Dooley <conor@kernel.org>,
|
|
=?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kw@linux.com>,
|
|
Rob Herring <robh+dt@kernel.org>, Bjorn Helgaas <bhelgaas@google.com>,
|
|
Thomas Gleixner <tglx@linutronix.de>,
|
|
Daire McNamara <daire.mcnamara@microchip.com>,
|
|
Emil Renner Berthing <emil.renner.berthing@canonical.com>,
|
|
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
|
|
Cc: devicetree@vger.kernel.org,
|
|
linux-kernel@vger.kernel.org,
|
|
linux-riscv@lists.infradead.org,
|
|
linux-pci@vger.kernel.org,
|
|
Paul Walmsley <paul.walmsley@sifive.com>,
|
|
Palmer Dabbelt <palmer@dabbelt.com>,
|
|
Albert Ou <aou@eecs.berkeley.edu>,
|
|
Philipp Zabel <p.zabel@pengutronix.de>,
|
|
Mason Huo <mason.huo@starfivetech.com>,
|
|
Leyfoon Tan <leyfoon.tan@starfivetech.com>,
|
|
Kevin Xie <kevin.xie@starfivetech.com>,
|
|
Minda Chen <minda.chen@starfivetech.com>
|
|
Subject: [PATCH v16 13/22] PCI: microchip: Add INTx and MSI event num to
|
|
struct plda_event
|
|
Date: Thu, 28 Mar 2024 17:18:26 +0800
|
|
Message-Id: <20240328091835.14797-14-minda.chen@starfivetech.com>
|
|
X-Mailer: git-send-email 2.17.1
|
|
In-Reply-To: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
References: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
X-ClientProxiedBy: NT0PR01CA0020.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c510:c::16) To SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15)
|
|
Precedence: bulk
|
|
X-Mailing-List: linux-pci@vger.kernel.org
|
|
List-Id: <linux-pci.vger.kernel.org>
|
|
List-Subscribe: <mailto:linux-pci+subscribe@vger.kernel.org>
|
|
List-Unsubscribe: <mailto:linux-pci+unsubscribe@vger.kernel.org>
|
|
MIME-Version: 1.0
|
|
X-MS-PublicTrafficType: Email
|
|
X-MS-TrafficTypeDiagnostic: SHXPR01MB0863:EE_|SHXPR01MB0559:EE_
|
|
X-MS-Office365-Filtering-Correlation-Id: 38562830-f832-4b9e-aae1-08dc4f08187a
|
|
X-MS-Exchange-SenderADCheck: 1
|
|
X-Microsoft-Antispam: BCL:0;
|
|
X-Microsoft-Antispam-Message-Info:
|
|
QswWP9nEkJOUUNeYdFReFuyIeW4tt1FRYdPtFs+RMECUY3ASv7ahdYpKets1vcK5oMMDTJ9E2B94OTsxTfSDfnYaJqKYqI4J+d03wC3c4fzsRDw6dldy6yDajaP5QrXaz9mtD1SLBsu6ZqtFf9Wa51l9MdLx5osRIbn4z7LdQttk0O3yltBoVFte9zJ1ADnkW3YRxI51rRfy/D6gzV6dhvdeyiv03ErI9yPJHMjMNjnuC4sP+jLPL56tKZGTz9snVi1TRYbT8WHXMx19Psl3714Jg0EsCDjWrrB8BM7wlMr1sU3r0ZSLnGRSK8o7HTtp9J8j24PIwRUCuiuL+tCk/5sc6o7RXyoh27OmIs1bolCGey1VGF3DkbBZjZ45DdtM0UVb57EVuIusdt2QbIC1QEP07rj3qBI8Y8XzKWOL/QL9/98FlyQU88yUSi27/uMwfGNpjomQoBY/ivaqy35P1guF2D/6wh4pl+acXZVvQL0KppdmlztyH0QjswyxHWcKy9YB1Fj8BmPS8+ZtAD1fuXLOleb7jgE/3nQaJqL6TCOJgwtog/lA5SLld6gQqP1LryKw4LEdISbapgNUaV+/x14UqjK0Q+ZVoNrjZMPkLiQEBE5g+uvMIrGjSRUwy5PA
|
|
X-Forefront-Antispam-Report:
|
|
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230031)(1800799015)(52116005)(7416005)(41320700004)(366007)(38350700005);DIR:OUT;SFP:1102;
|
|
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
|
|
X-MS-Exchange-AntiSpam-MessageData-0:
|
|
+GtMImDKYaKpcpVaLqLSI5ll5kt9t9Mxz/84P6UiG5hp88djTlg1jCWkScc4uISVgD0WjLE5qD5Sy+HM6XuD8izGz0VmPy/DOSPdmEFRGDCtGENfiMU3ZAnSp+nXx9XWlbdaLemzBHPvzyykPVKBMRUKpk/47mbbBljX2PW7X6lw4Esw9jP+3YzDiXhZ/KlIpONhIYTyUpdbQE40OIJv74MXbjvRSuVe/PwcelhWpZMSf0Vf7grUqPTs66eGNojzyeSP+g8krTFhZfDMFh9bZWLtW+rtf65XdpOmJH0+wnHo/wI/rp6DqoYolgIDRjJdxjNWX/I8hv4djREl9rZjuBNCTjYml2cvAom8KAvWewNgsqH5fJVxo9ATRb2xcN6EiKALR4hSPSEPwjsVaoDv1kEunonrZsS8/vG4Utkmr+9XYtMnws3knVJhhG8S5moKN2xjI4zJAwO64mc/p2B2UA49ookQVo1TQfUmtZuBvnlue4zK14Ww3o8Nn0cS719KnVK1T3ptCPxcgrTjjSuukDSLITxtRBC4ml8j6rNeUKa5OMiRx6Vsp3VGHnTZCnJjUZx4nphYDo/K+MYINrRvlgElOblbb7JaQRx3Ew7bP8DzytoLyuvl4brhzVDlVZswWBEArMNR2ojqWz/1gjYfvExm+f1aSKf1HBiXJdULCgm2DTsR6fWLJOoIisipM9wnyXTyWLudSqqr5JnPffaVWFIX2OwCFDlwUtMor7cTgBEhhQQpKQGadZR8sDRCO81ZVAXuv0Sh+TE+8cAV7Bwa1fy2rsLyU5qc95wzmu6Mdo+6LbKvVRJFuyoMxD0MaB9rSLSKpTXPPkTn1D1UUQ83ITnMmvcgLj2ybDmZKHoyfMXQlmkGHffONSl27utHoXLAC43X23AldsHpwEoiMpoTM+2cYaFDJuT52EbnqNWzglvceT/s+0dbQfOZ6HZSCKNGbnagz9zEo5M120WLfxWggdkDOYeNMegZKvGjwA3dq+4b03zxpnq2jnStUpdHj1dRve3tnsgihWMlzNJI1VSewKOokeFvGAOiAiX0Iz3DW+n30Z0GFwjFifxRdz6MJuPJRA+bAKTdbg5VFMmwHlvY9gAXBfBq1PTbmpKjyU01ebrwIkHkEtSJboD3Jks7K4I3kia8eBbWL/8Lj5u49NJHuqnbr2++zqgKJ26TUDsTAVNUz8X7FylUXWo8+oHGQvl0dOIUUxyrwVHGJKBeNRNGScgbIpsUMVcG4HCJ4lcm7l/u2RY9v3HX49Z5sntab7L0pNwuqegPrbfM7hUl5hb+wnD7sd6OF8xhsZY9nZEcL/mQ4WSkeKoVHzUqH5VZQ+HxwbdQFcgOIzx/0DiWEm7bbLf2eafr1vofGYCZnjfi/8V2hqow3HbSZAnIY3tG4Ued0W5Ytwk47Rxc9YN6awE22lK9AOv4Gg54K116yew9QVhMuiPNEwJ6D7Ws5Wh/RUcEPE4L31lCesASTUnDqN9zJk3pZYP5XuEi5jPOenW9MBZc9UBteiiFJm8X661cwDeUhFgzbaIVMKP126IjBRfksuPWhYSBOAQGcMzxu4ESSnda6n5eDwsK14F1q3sYuzO/S5gineBOVcSIEx3VPG3ueg==
|
|
X-OriginatorOrg: starfivetech.com
|
|
X-MS-Exchange-CrossTenant-Network-Message-Id:
|
|
38562830-f832-4b9e-aae1-08dc4f08187a
|
|
X-MS-Exchange-CrossTenant-AuthSource:
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
X-MS-Exchange-CrossTenant-AuthAs: Internal
|
|
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2024 09:18:56.9937
|
|
(UTC)
|
|
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
|
|
X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c
|
|
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
|
|
X-MS-Exchange-CrossTenant-UserPrincipalName:
|
|
quyYgEa7xu2wQSoR0QjanmqR8hfjMi3tNhMZVaC+fDzwY3E8WsO73tlsDyL2kDkmxPwP1UEPRLW6Yb634VStt94zxwvEREwTeIoMI1S+aiU=
|
|
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SHXPR01MB0559
|
|
|
|
The INTx and MSI interrupt event num is different across platforms, so
|
|
add two event num fields in struct plda_event.
|
|
|
|
Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
|
|
Acked-by: Conor Dooley <conor.dooley@microchip.com>
|
|
---
|
|
drivers/pci/controller/plda/pcie-microchip-host.c | 6 ++++--
|
|
drivers/pci/controller/plda/pcie-plda.h | 2 ++
|
|
2 files changed, 6 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/drivers/pci/controller/plda/pcie-microchip-host.c b/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
index bf5ce33ee275..8a51d3aa7e88 100644
|
|
--- a/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
+++ b/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
@@ -817,6 +817,8 @@ static int mc_request_event_irq(struct plda_pcie_rp *plda, int event_irq,
|
|
|
|
static const struct plda_event mc_event = {
|
|
.request_event_irq = mc_request_event_irq,
|
|
+ .intx_event = EVENT_LOCAL_PM_MSI_INT_INTX,
|
|
+ .msi_event = EVENT_LOCAL_PM_MSI_INT_MSI,
|
|
};
|
|
|
|
static int plda_pcie_init_irq_domains(struct plda_pcie_rp *port)
|
|
@@ -960,7 +962,7 @@ static int plda_init_interrupts(struct platform_device *pdev,
|
|
}
|
|
|
|
intx_irq = irq_create_mapping(port->event_domain,
|
|
- EVENT_LOCAL_PM_MSI_INT_INTX);
|
|
+ event->intx_event);
|
|
if (!intx_irq) {
|
|
dev_err(dev, "failed to map INTx interrupt\n");
|
|
return -ENXIO;
|
|
@@ -970,7 +972,7 @@ static int plda_init_interrupts(struct platform_device *pdev,
|
|
irq_set_chained_handler_and_data(intx_irq, plda_handle_intx, port);
|
|
|
|
msi_irq = irq_create_mapping(port->event_domain,
|
|
- EVENT_LOCAL_PM_MSI_INT_MSI);
|
|
+ event->msi_event);
|
|
if (!msi_irq)
|
|
return -ENXIO;
|
|
|
|
diff --git a/drivers/pci/controller/plda/pcie-plda.h b/drivers/pci/controller/plda/pcie-plda.h
|
|
index 935686bba837..89172ce18237 100644
|
|
--- a/drivers/pci/controller/plda/pcie-plda.h
|
|
+++ b/drivers/pci/controller/plda/pcie-plda.h
|
|
@@ -130,6 +130,8 @@ struct plda_pcie_rp {
|
|
struct plda_event {
|
|
int (*request_event_irq)(struct plda_pcie_rp *pcie,
|
|
int event_irq, int event);
|
|
+ int intx_event;
|
|
+ int msi_event;
|
|
};
|
|
|
|
void plda_pcie_setup_window(void __iomem *bridge_base_addr, u32 index,
|
|
|
|
From patchwork Thu Mar 28 09:18:27 2024
|
|
Content-Type: text/plain; charset="utf-8"
|
|
MIME-Version: 1.0
|
|
Content-Transfer-Encoding: 7bit
|
|
X-Patchwork-Submitter: Minda Chen <minda.chen@starfivetech.com>
|
|
X-Patchwork-Id: 13608244
|
|
X-Patchwork-Delegate: kw@linux.com
|
|
Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn
|
|
(mail-sh0chn02on2136.outbound.protection.partner.outlook.cn
|
|
[139.219.146.136])
|
|
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
|
|
(No client certificate requested)
|
|
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 08D3A446DE;
|
|
Thu, 28 Mar 2024 09:19:08 +0000 (UTC)
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
arc=fail smtp.client-ip=139.219.146.136
|
|
ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
|
|
t=1711617550; cv=fail;
|
|
b=XLXW9XjkU4COP6A8d9/3ioV+L9EcOIWUUaBd0Hn/rhAih3nbvM5NUX+7G88kNIG66uzWpC2r7r/I/rUqGDLi18YGu0a0XEFcCNhlCu+2gbGZmNSx3r+h6hIgEtULkwtSPOnOcUV5A7UYgf1PbDe4uWXUMg7TSuNWNUbgjuHBerM=
|
|
ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org;
|
|
s=arc-20240116; t=1711617550; c=relaxed/simple;
|
|
bh=C5nAugbEc4otXexvnJcq5jk8jk76kNdeS5qpTB1308A=;
|
|
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
|
|
Content-Type:MIME-Version;
|
|
b=tlpenonfIfiub0bN/Ov8R7ZCQJaU2L/27ltRvPTC6QJ7URZox6FG0T22oMjrxpf8dMLcexeQmpRIJdmbqgcMoSmeS+j1771DDKFwylwTKFghZtquNnB5+mZE2fEmuhEX5+3IVNFqCdFkcLeEl9WQuKvj+24W4gJeFmeur7sJLt4=
|
|
ARC-Authentication-Results: i=2; smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com;
|
|
spf=pass smtp.mailfrom=starfivetech.com;
|
|
arc=fail smtp.client-ip=139.219.146.136
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
spf=pass smtp.mailfrom=starfivetech.com
|
|
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
|
|
b=bFvuWBeMAgaEmH6VFvgMh+UtyQES5GWVTRkVcuGmmKVf3WP/eE0Ts13pX4AMrOoHKF5SfcMIPr2x7pP90UIPthTCEcUCHpIthPoBVzc+YSBk0auF3pUmHhGTlf2RHX+WoOkoA8u9dRQnwMmQkCZDf1oCJZhV9n1MUXP3QxNcLDxXkM8lbpAqmU3SpLmw68zk1Igaq7q9uiWRLm+YG6pNWnHpI1onNdPmigL2B1UcXh7dC5ciK/TI4mZdU+mjpZlmDRLTNLUnXaAyZki68aHg7hGvwNdlPIkv1f+F1q88zapB9HWnU/OFA5wH1fei/qgART4V5kFS8PUl8ojDeerOBQ==
|
|
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
|
|
s=arcselector9901;
|
|
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
|
|
bh=WJ890sPTDIaTgSVopGlFF8OTlffwS8+Jl3vvqYke5M0=;
|
|
b=jylh6k+3wwvFktsU2Km3u2Q+wxN2o13HRy7/IVQzM8NIammeQiFOCBjTxJej3ivEdDbwAPotoQd2CvBkySRM68WDISMK0B9B7cb2+q1F15bM8pnzghAeSpgTt8z5FWFzG5QqW2EGNXJpS9cbl6Yb6fMIH+8ckxujQm3d/aq6LEE/DoQhbWiiNZYX4mpmfd3nGx9nTk8J0ZAnuWYyfjSjfumVVeA57bAX94V2zfV3T8sXPvwTywcQ3EgTqI+VLm0jS/Z+9DBIHdyoJd1q8UU/Xzsj4gZyKFCZ4tJOGCN3NZwofLPJ9C9rPM5HpCFeknG2t58FAcXaocGxzF4nviOEmw==
|
|
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
|
|
smtp.mailfrom=starfivetech.com; dmarc=pass action=none
|
|
header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none
|
|
Authentication-Results: dkim=none (message not signed)
|
|
header.d=none;dmarc=none action=none header.from=starfivetech.com;
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15) by SHXPR01MB0559.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:1d::22) with Microsoft SMTP Server (version=TLS1_2,
|
|
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Thu, 28 Mar
|
|
2024 09:18:58 +0000
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
([fe80::c738:9e6b:f92e:8bb9]) by
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn ([fe80::c738:9e6b:f92e:8bb9%6])
|
|
with mapi id 15.20.7409.031; Thu, 28 Mar 2024 09:18:58 +0000
|
|
From: Minda Chen <minda.chen@starfivetech.com>
|
|
To: Lorenzo Pieralisi <lpieralisi@kernel.org>,
|
|
Conor Dooley <conor@kernel.org>,
|
|
=?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kw@linux.com>,
|
|
Rob Herring <robh+dt@kernel.org>, Bjorn Helgaas <bhelgaas@google.com>,
|
|
Thomas Gleixner <tglx@linutronix.de>,
|
|
Daire McNamara <daire.mcnamara@microchip.com>,
|
|
Emil Renner Berthing <emil.renner.berthing@canonical.com>,
|
|
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
|
|
Cc: devicetree@vger.kernel.org,
|
|
linux-kernel@vger.kernel.org,
|
|
linux-riscv@lists.infradead.org,
|
|
linux-pci@vger.kernel.org,
|
|
Paul Walmsley <paul.walmsley@sifive.com>,
|
|
Palmer Dabbelt <palmer@dabbelt.com>,
|
|
Albert Ou <aou@eecs.berkeley.edu>,
|
|
Philipp Zabel <p.zabel@pengutronix.de>,
|
|
Mason Huo <mason.huo@starfivetech.com>,
|
|
Leyfoon Tan <leyfoon.tan@starfivetech.com>,
|
|
Kevin Xie <kevin.xie@starfivetech.com>,
|
|
Minda Chen <minda.chen@starfivetech.com>
|
|
Subject: [PATCH v16 14/22] PCI: microchip: Add get_events() callback and add
|
|
PLDA get_event()
|
|
Date: Thu, 28 Mar 2024 17:18:27 +0800
|
|
Message-Id: <20240328091835.14797-15-minda.chen@starfivetech.com>
|
|
X-Mailer: git-send-email 2.17.1
|
|
In-Reply-To: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
References: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
X-ClientProxiedBy: NT0PR01CA0020.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c510:c::16) To SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15)
|
|
Precedence: bulk
|
|
X-Mailing-List: linux-pci@vger.kernel.org
|
|
List-Id: <linux-pci.vger.kernel.org>
|
|
List-Subscribe: <mailto:linux-pci+subscribe@vger.kernel.org>
|
|
List-Unsubscribe: <mailto:linux-pci+unsubscribe@vger.kernel.org>
|
|
MIME-Version: 1.0
|
|
X-MS-PublicTrafficType: Email
|
|
X-MS-TrafficTypeDiagnostic: SHXPR01MB0863:EE_|SHXPR01MB0559:EE_
|
|
X-MS-Office365-Filtering-Correlation-Id: c3007700-1537-4148-fa3d-08dc4f081915
|
|
X-MS-Exchange-SenderADCheck: 1
|
|
X-Microsoft-Antispam: BCL:0;
|
|
X-Microsoft-Antispam-Message-Info:
|
|
g/ZPqoFGKfFeQmoEx8ESxh/dLtKK2nkInU9tk0snIYn0PtF8RM82Rl3oxIRC3srsUumG0McmJtx7yDbxX++8BeK/AkDvAWt0kB2NgcTKeSAqcNyyNMH2mdEZGSM2Kt5tjR7yRG1/OorQv7j2YuD8HIwg0/Rt2FlBL+h/lPKfnycVADL47g+3pRmz7Uf2IdHmjDGRHrto9DJBh+xOAwbdhCY+zyeOqZQT+Jk3nkLbgYJhG1oatRkMrqV2f+6t902hRvZ0SBEeEnws8f8FbQnc2VXKLisnxSAh6Q23uMnS/4lqWtCk1VSzSIfpUvis/iTYajJmtOGpd5oM/jST9hNn7WcfRzQuoAa8sgl+KcMxiRv6320Y1rTgJrF9+WHBrZD3Y0tsvIEei076WDdjUkwZmdcUkRTAUA0wxd1VUXJMT2gVeMjK8D946ciAQiz2v4x/U5AMscO9Sjuo8CLXu+eogUSVPN1YSYjFMu0yhK33YdibdHiTcG0wTKXi0EeXvfmrdlC2lnOHh20RoZnDWthv7c+lGP0VWFPfbprKKQOl/mZYybNNXBv3on0+Mw9mDzHovHQxt6qXnjtSCeX29qoA8P95+F67hHQPkMvmESnQjQNUkBPB4gtyShypw3Hc5eLw
|
|
X-Forefront-Antispam-Report:
|
|
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230031)(1800799015)(52116005)(7416005)(41320700004)(366007)(38350700005);DIR:OUT;SFP:1102;
|
|
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
|
|
X-MS-Exchange-AntiSpam-MessageData-0:
|
|
FYJvSWUL7flhiUnZhax+ULOvorZlbicQ6+jXgnnP3nCyHg9RYYCtSozXUiRcqhhb0C92vZqngHWw+QjZgycJy0EI1CJQJ5ErY9FcKB3fBHMs8OBvlboJPwa+7nYEsJ4NxqV2t/rCn0MOaB0KVs4YK/vtOUQYAGRd0vVHmqHpkfRvilQmM+b8ri9YtIb9dNIQK+UBNXr+KlxSikZtR+9rV1oiY3K3vQrhkbjpVuwheAr66Q38mj63F+NcMaftCGOSBvyJRWyejLSzw6WLcazKoa2SsOb1qpuwrGVB/BsHFRi4PtljXJQz7Dse6OtbAHbPMmtbRjNgkYptNTjcs/na1l9C2djQ8UwrhnaEbjcIp6PZlee2k1omfPC6FR+XiUqadEQAxiYdJSVvseyViG1PW5hqgboVQTwh8XbqCB7+ZRtry8kqkoqmZsC+gHGxUF8k4XwTPs3hSh/7FHPxfMZvCG12pyTupPshV31v6Vpc+7kauGwgcLRrlzXmxJTPQbMto4rFzUdOWEki1wKkGGjGDZdUigUxg6paxQpebSDWWWsVnS4ga9Q90FcLf5MEoty/KdTehGGTQylmeq6NBzjgMsu+NA5J9lsmmrq1AOAa+EhRi1Wq42S8dWB296oLf36pTcbESn8E7zzUEJDtbrJPkUCBc+6Yrz+e7rg7r1E2SOwmltlqM0rlWXB/EkT4ivpL+cDQe+k2cgi8SPEI1Y8vFYiAjV/rsErkHcT+WlHfy8VbrBucTiA77SIlIx8pR5nwLCfCGKse9U9rLW7IzAVbt2PDPEMajfEtXk354p6Bd/ltnaaxUabejGme6lmVumi1nMefG8xdrcOtAF4QuK5GHkS30Gl+y07OnMkI7UrTarLHmdx0r6elmlrIh3ZCYGhe26rCHjdlsnK1Yow3KeA0Jx1yMEuwrvMnJvvOSeD7HwjejJYkScPiE87ngiMtxa5cUq1k25Miw6UYyMmnwd9AN0p7R8rCFxjIc8qI6TQeK/rU5IP9D5P7lSI1vLYnuBoq+0xVdDI63fzPpcj0FY4smktIh5db2XsNQuqe+qXlpRT2LvunmFUe4EOYeK77pohISrnm4IHFuLzT4O3mIHqRwMZecK5BAAV+28nSuQLgXBHou9Dtf0PACHAiMjXVPxLg+m3zXk+3PCJ6eWi6yS0QY6uMBw2qMLvdPWx/fzyr2tx8sxNJ+lwLHFnQBFIibIlJ01lGdNvVIMlg85F1SrGFQugXH3rCFag3PslAMTiDBoIk99Vc9hv+9P4+Fyorb8aoO2cekmO70l8Z/ighzrBHtBik+/A7YHNgRWj6W/GuYnftpYUM4nLj8dOwSd7hq3955HKIYOEJ6dvcbG/kVYH2jl9WKEZJJgeX5nuG2YDhVDKwzyaOSBuQkhEQZtRCquM/iCa+PBn7xj8UIG7il13PSttqFgMyYQqOZ2djN9HzJx2KZTPnQOdt2ig6iw8hwr+VvCUxu8JHwd5/ZCA/RKkesd9ESmLbCqGNdIB4QpoKHDfT7VLrvCOxciMmTgkfz8MWM7nj7QTkqhYNX46YCrjFmE/vq0RBKIlETXHzC7/g1NLe2SdyKdU7wRJm4jQ/4vGcjyHa0MGurULadQxT+ShSqA==
|
|
X-OriginatorOrg: starfivetech.com
|
|
X-MS-Exchange-CrossTenant-Network-Message-Id:
|
|
c3007700-1537-4148-fa3d-08dc4f081915
|
|
X-MS-Exchange-CrossTenant-AuthSource:
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
X-MS-Exchange-CrossTenant-AuthAs: Internal
|
|
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2024 09:18:58.0086
|
|
(UTC)
|
|
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
|
|
X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c
|
|
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
|
|
X-MS-Exchange-CrossTenant-UserPrincipalName:
|
|
1goDZnbZ4YlazUp4cuj41+xEPFMpTc8VH3zJXSKPv8rxe15TvaglOzq3/72JyUBStIe2ofeCC0up6y+FwZo0V88fhSCQJSsNNbytdDfltzc=
|
|
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SHXPR01MB0559
|
|
|
|
As PLDA dts binding doc(Documentation/devicetree/bindings/pci/
|
|
plda,xpressrich3-axi-common.yaml) showed, PLDA PCIe contains an interrupt
|
|
controller.
|
|
|
|
PolarFire implements its own PCIe interrupts, additional to the regular
|
|
PCIe interrupts, due to lack of an MSI controller, so the interrupt to
|
|
event number mapping is different to the PLDA regular interrupts,
|
|
necessitating a custom get_events() implementation.
|
|
|
|
Microchip Polarfire PCIe additional intrerrupts:
|
|
(defined in drivers/pci/controller/plda/pcie-microchip-host.c)
|
|
EVENT_PCIE_L2_EXIT
|
|
EVENT_PCIE_HOTRST_EXIT
|
|
EVENT_PCIE_DLUP_EXIT
|
|
EVENT_SEC_TX_RAM_SEC_ERR
|
|
EVENT_SEC_RX_RAM_SEC_ERR
|
|
....
|
|
|
|
plda_get_events() adds interrupt register to PLDA event num mapping codes.
|
|
All The PLDA interrupts can be seen in new added graph.
|
|
|
|
Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
|
|
Acked-by: Conor Dooley <conor.dooley@microchip.com>
|
|
---
|
|
.../pci/controller/plda/pcie-microchip-host.c | 35 ++++++++++++++++++-
|
|
drivers/pci/controller/plda/pcie-plda.h | 32 +++++++++++++++++
|
|
2 files changed, 66 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/drivers/pci/controller/plda/pcie-microchip-host.c b/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
index 8a51d3aa7e88..b3df373a2141 100644
|
|
--- a/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
+++ b/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
@@ -626,6 +626,26 @@ static u32 mc_get_events(struct plda_pcie_rp *port)
|
|
return events;
|
|
}
|
|
|
|
+static u32 plda_get_events(struct plda_pcie_rp *port)
|
|
+{
|
|
+ u32 events, val, origin;
|
|
+
|
|
+ origin = readl_relaxed(port->bridge_addr + ISTATUS_LOCAL);
|
|
+
|
|
+ /* MSI event and sys events */
|
|
+ val = (origin & SYS_AND_MSI_MASK) >> PM_MSI_INT_MSI_SHIFT;
|
|
+ events = val << (PM_MSI_INT_MSI_SHIFT - PCI_NUM_INTX + 1);
|
|
+
|
|
+ /* INTx events */
|
|
+ if (origin & PM_MSI_INT_INTX_MASK)
|
|
+ events |= BIT(PM_MSI_INT_INTX_SHIFT);
|
|
+
|
|
+ /* remains are same with register */
|
|
+ events |= origin & GENMASK(P_ATR_EVT_DOORBELL_SHIFT, 0);
|
|
+
|
|
+ return events;
|
|
+}
|
|
+
|
|
static irqreturn_t mc_event_handler(int irq, void *dev_id)
|
|
{
|
|
struct plda_pcie_rp *port = dev_id;
|
|
@@ -656,7 +676,7 @@ static void plda_handle_event(struct irq_desc *desc)
|
|
|
|
chained_irq_enter(chip, desc);
|
|
|
|
- events = mc_get_events(port);
|
|
+ events = port->event_ops->get_events(port);
|
|
|
|
for_each_set_bit(bit, &events, port->num_events)
|
|
generic_handle_domain_irq(port->event_domain, bit);
|
|
@@ -750,6 +770,10 @@ static struct irq_chip mc_event_irq_chip = {
|
|
.irq_unmask = mc_unmask_event_irq,
|
|
};
|
|
|
|
+static const struct plda_event_ops plda_event_ops = {
|
|
+ .get_events = plda_get_events,
|
|
+};
|
|
+
|
|
static int plda_pcie_event_map(struct irq_domain *domain, unsigned int irq,
|
|
irq_hw_number_t hwirq)
|
|
{
|
|
@@ -815,6 +839,10 @@ static int mc_request_event_irq(struct plda_pcie_rp *plda, int event_irq,
|
|
0, event_cause[event].sym, plda);
|
|
}
|
|
|
|
+static const struct plda_event_ops mc_event_ops = {
|
|
+ .get_events = mc_get_events,
|
|
+};
|
|
+
|
|
static const struct plda_event mc_event = {
|
|
.request_event_irq = mc_request_event_irq,
|
|
.intx_event = EVENT_LOCAL_PM_MSI_INT_INTX,
|
|
@@ -931,6 +959,9 @@ static int plda_init_interrupts(struct platform_device *pdev,
|
|
int i, intx_irq, msi_irq, event_irq;
|
|
int ret;
|
|
|
|
+ if (!port->event_ops)
|
|
+ port->event_ops = &plda_event_ops;
|
|
+
|
|
ret = plda_pcie_init_irq_domains(port);
|
|
if (ret) {
|
|
dev_err(dev, "failed creating IRQ domains\n");
|
|
@@ -1007,6 +1038,8 @@ static int mc_platform_init(struct pci_config_window *cfg)
|
|
if (ret)
|
|
return ret;
|
|
|
|
+ port->plda.event_ops = &mc_event_ops;
|
|
+
|
|
/* Address translation is up; safe to enable interrupts */
|
|
ret = plda_init_interrupts(pdev, &port->plda, &mc_event);
|
|
if (ret)
|
|
diff --git a/drivers/pci/controller/plda/pcie-plda.h b/drivers/pci/controller/plda/pcie-plda.h
|
|
index 89172ce18237..e0e5e7cc8434 100644
|
|
--- a/drivers/pci/controller/plda/pcie-plda.h
|
|
+++ b/drivers/pci/controller/plda/pcie-plda.h
|
|
@@ -58,6 +58,7 @@
|
|
#define PM_MSI_INT_EVENTS_SHIFT 30
|
|
#define PM_MSI_INT_SYS_ERR_MASK 0x80000000u
|
|
#define PM_MSI_INT_SYS_ERR_SHIFT 31
|
|
+#define SYS_AND_MSI_MASK GENMASK(31, 28)
|
|
#define NUM_LOCAL_EVENTS 15
|
|
#define ISTATUS_LOCAL 0x184
|
|
#define IMASK_HOST 0x188
|
|
@@ -108,6 +109,36 @@ enum plda_int_event {
|
|
|
|
#define PLDA_MAX_EVENT_NUM (PLDA_NUM_DMA_EVENTS + PLDA_INT_EVENT_NUM)
|
|
|
|
+/*
|
|
+ * PLDA interrupt register
|
|
+ *
|
|
+ * 31 27 23 15 7 0
|
|
+ * +--+--+--+-+------+-+-+-+-+-+-+-+-+-----------+-----------+
|
|
+ * |12|11|10|9| intx |7|6|5|4|3|2|1|0| DMA error | DMA end |
|
|
+ * +--+--+--+-+------+-+-+-+-+-+-+-+-+-----------+-----------+
|
|
+ * bit 0-7 DMA interrupt end : reserved for vendor implement
|
|
+ * bit 8-15 DMA error : reserved for vendor implement
|
|
+ * 0: AXI post error (PLDA_AXI_POST_ERR)
|
|
+ * 1: AXI fetch error (PLDA_AXI_FETCH_ERR)
|
|
+ * 2: AXI discard error (PLDA_AXI_DISCARD_ERR)
|
|
+ * 3: AXI doorbell (PLDA_PCIE_DOORBELL)
|
|
+ * 4: PCIe post error (PLDA_PCIE_POST_ERR)
|
|
+ * 5: PCIe fetch error (PLDA_PCIE_FETCH_ERR)
|
|
+ * 6: PCIe discard error (PLDA_PCIE_DISCARD_ERR)
|
|
+ * 7: PCIe doorbell (PLDA_PCIE_DOORBELL)
|
|
+ * 8: 4 INTx interruts (PLDA_INTX)
|
|
+ * 9: MSI interrupt (PLDA_MSI)
|
|
+ * 10: AER event (PLDA_AER_EVENT)
|
|
+ * 11: PM/LTR/Hotplug (PLDA_MISC_EVENTS)
|
|
+ * 12: System error (PLDA_SYS_ERR)
|
|
+ */
|
|
+
|
|
+struct plda_pcie_rp;
|
|
+
|
|
+struct plda_event_ops {
|
|
+ u32 (*get_events)(struct plda_pcie_rp *pcie);
|
|
+};
|
|
+
|
|
struct plda_msi {
|
|
struct mutex lock; /* Protect used bitmap */
|
|
struct irq_domain *msi_domain;
|
|
@@ -123,6 +154,7 @@ struct plda_pcie_rp {
|
|
struct irq_domain *event_domain;
|
|
raw_spinlock_t lock;
|
|
struct plda_msi msi;
|
|
+ const struct plda_event_ops *event_ops;
|
|
void __iomem *bridge_addr;
|
|
int num_events;
|
|
};
|
|
|
|
From patchwork Thu Mar 28 09:18:28 2024
|
|
Content-Type: text/plain; charset="utf-8"
|
|
MIME-Version: 1.0
|
|
Content-Transfer-Encoding: 7bit
|
|
X-Patchwork-Submitter: Minda Chen <minda.chen@starfivetech.com>
|
|
X-Patchwork-Id: 13608245
|
|
X-Patchwork-Delegate: kw@linux.com
|
|
Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn
|
|
(mail-sh0chn02on2091.outbound.protection.partner.outlook.cn [139.219.146.91])
|
|
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
|
|
(No client certificate requested)
|
|
by smtp.subspace.kernel.org (Postfix) with ESMTPS id EAABE7E0FC;
|
|
Thu, 28 Mar 2024 09:19:09 +0000 (UTC)
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
arc=fail smtp.client-ip=139.219.146.91
|
|
ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
|
|
t=1711617552; cv=fail;
|
|
b=CR18WK9C7zh9ybxaSpr8pHnNOIz18mI7zIl3rS623cCe1pcA9PJNTIKCUyzZruzwTPfM6V43hvewvP0QdOq6KOvqMQ5EvlBeB4+xaKWflGazLjcoF6UBquhT3dP45NiPKKhUfMBUsKIuq7P6/y8WzAyOZOuBJRU2OJzApmUYkrY=
|
|
ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org;
|
|
s=arc-20240116; t=1711617552; c=relaxed/simple;
|
|
bh=mpXhwF97fuxRS3B6a/BWdf9bWKTjpRGLBlqzcrbBrQg=;
|
|
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
|
|
Content-Type:MIME-Version;
|
|
b=cXTMC9zQObWnKFcirYXXdTa59XxSUzl9y6adjmzmrxotnn3A1Maf1r7IQ9h766iKEa9Un/4QD7/IjmhvZRbu8MPU4lq4fD/3yQZF2r8/rLef83T+oT+EYNPcwTCe9TytKwuyDyHBuvnmimVanwSnHTmGJ3ru8VEb9dtNpoekjLo=
|
|
ARC-Authentication-Results: i=2; smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com;
|
|
spf=pass smtp.mailfrom=starfivetech.com;
|
|
arc=fail smtp.client-ip=139.219.146.91
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
spf=pass smtp.mailfrom=starfivetech.com
|
|
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
|
|
b=d5NjOM+o9+M23JeQe4GVDGAAk49iIQlOog4PGhMzee5ygfb15McnoCp4beqcFB5vsuo4pd/Sl5Ovzu42bz5HKAWkBaFLCgwnsr9c7CXZSSG5cd5E/+AiNPN8ZNNVpnsYjeUq+rfiqVIxU68qGak0f1A67kMBpbxQS5p5MMwyj4eOqS3s63Sis64B86IsEX4xI/od1A+yI5bymDLmEqPMiqQgdKWMkIYGAzi9xwjtqwNAyIEmpnTiZ381kLq7UzHhF+hNp2TodH6sNOYXmzeuMb2cdCybDJ75PiQRWdMXdkDYx+b/SCKF5hSn9BnKJ5OTwlUKLQxiRv9rgZn8nfdRfw==
|
|
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
|
|
s=arcselector9901;
|
|
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
|
|
bh=K9fmnXQNrF0yUf6gsxFXvF0YjdiKzG9Fap6pladclgc=;
|
|
b=TmfaJvVE8SjzVKjAQlKbNGwRghOAp38O9rgda7+QFxFVF/FykzAoPgHYpzEMGePS3+x4mi24cwVK5tI3JgboSB+Uf1k5XH7Pt4vGJwEm9Q2O2Pws+7WxI592CxFBxXMT9kP79t+2oM7TOMHPycmqatux85Kc8ZrVzlozN+DV3dcGVBUD/oV4XZhBi+fREBJgQf/CI+ch5DXZrtR43RRDtPHvsah5G4/G8RE4+309iPmqtxw4HJVGikgLotow/jKe+DHQA1Rs/DisKZBbmtOKonclTfhbxxa/mNV//Md01BVOn5kgMNVxRAjgb5azi+dEi4C/QyP/k9ymBZfWV5mKCA==
|
|
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
|
|
smtp.mailfrom=starfivetech.com; dmarc=pass action=none
|
|
header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none
|
|
Authentication-Results: dkim=none (message not signed)
|
|
header.d=none;dmarc=none action=none header.from=starfivetech.com;
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15) by SHXPR01MB0559.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:1d::22) with Microsoft SMTP Server (version=TLS1_2,
|
|
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Thu, 28 Mar
|
|
2024 09:18:59 +0000
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
([fe80::c738:9e6b:f92e:8bb9]) by
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn ([fe80::c738:9e6b:f92e:8bb9%6])
|
|
with mapi id 15.20.7409.031; Thu, 28 Mar 2024 09:18:59 +0000
|
|
From: Minda Chen <minda.chen@starfivetech.com>
|
|
To: Lorenzo Pieralisi <lpieralisi@kernel.org>,
|
|
Conor Dooley <conor@kernel.org>,
|
|
=?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kw@linux.com>,
|
|
Rob Herring <robh+dt@kernel.org>, Bjorn Helgaas <bhelgaas@google.com>,
|
|
Thomas Gleixner <tglx@linutronix.de>,
|
|
Daire McNamara <daire.mcnamara@microchip.com>,
|
|
Emil Renner Berthing <emil.renner.berthing@canonical.com>,
|
|
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
|
|
Cc: devicetree@vger.kernel.org,
|
|
linux-kernel@vger.kernel.org,
|
|
linux-riscv@lists.infradead.org,
|
|
linux-pci@vger.kernel.org,
|
|
Paul Walmsley <paul.walmsley@sifive.com>,
|
|
Palmer Dabbelt <palmer@dabbelt.com>,
|
|
Albert Ou <aou@eecs.berkeley.edu>,
|
|
Philipp Zabel <p.zabel@pengutronix.de>,
|
|
Mason Huo <mason.huo@starfivetech.com>,
|
|
Leyfoon Tan <leyfoon.tan@starfivetech.com>,
|
|
Kevin Xie <kevin.xie@starfivetech.com>,
|
|
Minda Chen <minda.chen@starfivetech.com>
|
|
Subject: [PATCH v16 15/22] PCI: microchip: Add event irqchip field to host
|
|
port and add PLDA irqchip
|
|
Date: Thu, 28 Mar 2024 17:18:28 +0800
|
|
Message-Id: <20240328091835.14797-16-minda.chen@starfivetech.com>
|
|
X-Mailer: git-send-email 2.17.1
|
|
In-Reply-To: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
References: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
X-ClientProxiedBy: NT0PR01CA0020.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c510:c::16) To SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15)
|
|
Precedence: bulk
|
|
X-Mailing-List: linux-pci@vger.kernel.org
|
|
List-Id: <linux-pci.vger.kernel.org>
|
|
List-Subscribe: <mailto:linux-pci+subscribe@vger.kernel.org>
|
|
List-Unsubscribe: <mailto:linux-pci+unsubscribe@vger.kernel.org>
|
|
MIME-Version: 1.0
|
|
X-MS-PublicTrafficType: Email
|
|
X-MS-TrafficTypeDiagnostic: SHXPR01MB0863:EE_|SHXPR01MB0559:EE_
|
|
X-MS-Office365-Filtering-Correlation-Id: d1ecffa9-bce7-4e1d-2623-08dc4f0819b0
|
|
X-MS-Exchange-SenderADCheck: 1
|
|
X-Microsoft-Antispam: BCL:0;
|
|
X-Microsoft-Antispam-Message-Info:
|
|
A6Rv+6JUmLKzbvuFQJpv3A6Hmbw9ivjaW3PcslBBO496dzAi2i2RS0TTbmJa5FVq78NXXifBk0BSi++mB1TYF2QkubMshTxzjGnmLMXSBdP1U/tRoHoTKsu89gkMwMSFxsYy4KXd9TqiVJW/P5dy5RsKJIT4LIrWyk3zMnaviakcxO0E4VuaMljXXcrqFjXQgSMx3rbriNU0oWOeARBDmAOPO3A1FiADtSttwvW6a2jUad1JsSwTuJoeyCNtfBnDCSQVl/Q2o6BLfOeKAi3M6/i8KQynlCjZBa5gMrhbxJ7TgZ6kRzZAbhXICUCTvnkGf75uzq1TlthdCchX9UqJN9y2B3u5wXAfCjVySrQ0JkEkSZufTkmeBrDIXO2JuIgk2DX31bloKE/1bBmI3YDa53Gqe8oLgeeYCX9WOFz9+exlxh7bB+852MSXSrufS1pxFP5F+d48TiBFOgidBF0FhxYYA2tCyc+T0/bgvHiFbOnRufEAcH7pjXVVFm4o8qfm6BdW5gFbw3sSJlbQXy42rtc2L3P7GIzdWqpPGU+ImKoj78bKqDGPTTWXgJNHeKwMQ+84IOKow81PRF2mIkrFMwyJMNMqf28hcTVI0W1ZcRjuteqSEE+7A/+R2XeyC464
|
|
X-Forefront-Antispam-Report:
|
|
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230031)(1800799015)(52116005)(7416005)(41320700004)(366007)(38350700005);DIR:OUT;SFP:1102;
|
|
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
|
|
X-MS-Exchange-AntiSpam-MessageData-0:
|
|
hsv6zU2PQykVCCXe/2GfBBuvg+WHBk6QpyBqsfFLl3luUxJD/uKYEZ5zl79BP9PEdNKihBuuq2mCI0ciuynC4i+9det0tCkQNszL2/Ybrx1dSpu64ShtIDety/w6Ce+yvXbUjv84F9QR3SsOps1fg2hzljzY0xKmT1o3PoJicb4YlCO3E8LeOC1MGLqY5y5P/ltbBcD34WYrAfz6hjLuyLvOimB2rwakNZuiAJupIc5eCJzeH3ewhaDdDgmhlCVFA/0rCLhQJMJxcbZo/FJO/va0lXIryHFXpwWTNP2WfOzLwe0yqDyRm7H34058uZMSAoo3JoS4AvsbiPulOTWrwGnvy66TLRby5znxkIjDuWtVJWT3uC8MwtDjdIOjCUaBBytnt+uxl1d84V1dSjp8+LXhC5FPfncb9ezAEtfbz5HcyRvRK9BThSC/O7oaUv+9JXAVrsZPN6qsoA4BBQ5h6fHNBSq2GJ2H28uSUQpsbedJ9tFvdwt0OEsYWK5DD7Irdz59mgCoBh5JJI/ph+NbPJV1fpdmEre8dtYgsvI/lwBZZyDNtOlI8l1aBUET9z3Bc+7g4iwenl1B5ZLAKcmxra0AcGVJziCzS5lfYFh4cYwqpQGKECDKDgM2WWhonjoTFHRDkzUeyic3D+cdFRJSu9lVgOpGGsugRUmLpzMKytade0GceiNrVZGd0qFTmhX0tZZKsLkwBnrld02RgKeY1xJmbhvkC7t4Guxx1JyXsiFDNkL3z+je3TbF69enC871XY8ZiLVoCzudYiVztAPVdW2Y6E0t5p0E+TblWdkDKWMVIwIUE2fbVq70/VLSpyogDx2sonQq2mUsgtdtsZ6j3RGHfWiNfvsFtHaimTzts9V5cspaLKfMNMoii/XofgjGfQRK1ZhIcjLPVK1EeDhJ1hCwNmeV0FkehgS0UnbspiMoOpeJ9VVjOUtHkTcdxJEaYOPmYkUOs64fbiojOOpEsSYORvj2j1l7sqh7ZL58U1vMimnY+rkKBk5k/hZMDz5BpPZtEBG+DLhBqd+yc6gJw2fkCvdMxYNY1l6r4RRWpiCTIiPb9qqztVLDeFzlUT05ZXen4cXgdZLYmQemxmyLqaQSFVwmpCRxA8Tv83id2fUvtsu8GIgUu87D7ZIs9xIZDByrYwYpKhsUU/+ta2ANX+7dtX7bL3xnm1gefz3jWpaGF1ECp60ka0w8f5bWAc6Jtfi33r48z6yYmAIfGhnLxLsFbLptuYfCULpnKuqV24iYTSYUlawdhRF7OgD2zdvFgPc+yXLNMUMtWQqhLM/dLJrrrLplun6IthyJ0wZ1kWM+l8PO8fy9mqdXznl7dbxAOJvbEldW+y2I9TvprEh3v8HD1ND0EkUXcwGFfp5WBeHQh/5xGZ23VFCkhGluzBwnC6mOoBxmB0aHGU6PUt1rnre+hq1WKJQkuZxUk47Tco1us/Lwdo5ya/2PE3Gbtk7rMq80ghXT4eRSNwh4ocXG3zGzLSCftSV/GUPQr0mShERNQF10RuT3ulRKn936lAkDM2kpRv+tzx5zp0wBfcpa/pHRHO0bWwWjS3jD/dPlWcT6i4csUXoSLfCN+zqiwoYjZgCsyDXEmOLoeiUZjwSQwA==
|
|
X-OriginatorOrg: starfivetech.com
|
|
X-MS-Exchange-CrossTenant-Network-Message-Id:
|
|
d1ecffa9-bce7-4e1d-2623-08dc4f0819b0
|
|
X-MS-Exchange-CrossTenant-AuthSource:
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
X-MS-Exchange-CrossTenant-AuthAs: Internal
|
|
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2024 09:18:59.0169
|
|
(UTC)
|
|
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
|
|
X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c
|
|
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
|
|
X-MS-Exchange-CrossTenant-UserPrincipalName:
|
|
XEWU4rXVQZIXMgS0vfYH4U6g91LZzzMgfWPeMSNhjmcScQigOhhc/MVHPuR3kdulWAAPcD9UyWqbQAF1EUaeVJXoVl97yODGx1VpdsBnncg=
|
|
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SHXPR01MB0559
|
|
|
|
As PLDA dts binding doc(Documentation/devicetree/bindings/pci/
|
|
plda,xpressrich3-axi-common.yaml) showed, PLDA PCIe contains an interrupt
|
|
controller.
|
|
|
|
Microchip PolarFire PCIE event IRQs includes PLDA interrupts and
|
|
Polarfire additional interrupts. The interrupt irqchip ops includes
|
|
ack/mask/unmask interrupt ops, which will write correct registers.
|
|
Microchip Polarfire PCIe additional interrupts require to write Polarfire
|
|
SoC self-defined registers. So Microchip PCIe event irqchip ops can not
|
|
be re-used.
|
|
|
|
Microchip Polarfire PCIe additional intrerrupts:
|
|
(defined in drivers/pci/controller/plda/pcie-microchip-host.c)
|
|
EVENT_PCIE_L2_EXIT
|
|
EVENT_PCIE_HOTRST_EXIT
|
|
EVENT_PCIE_DLUP_EXIT
|
|
EVENT_SEC_TX_RAM_SEC_ERR
|
|
EVENT_SEC_RX_RAM_SEC_ERR
|
|
....
|
|
|
|
To support PLDA its own event IRQ process, implements PLDA irqchip ops and
|
|
add event irqchip field to struct pcie_plda_rp.
|
|
|
|
Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
|
|
Acked-by: Conor Dooley <conor.dooley@microchip.com>
|
|
---
|
|
.../pci/controller/plda/pcie-microchip-host.c | 66 ++++++++++++++++++-
|
|
drivers/pci/controller/plda/pcie-plda.h | 34 +++++-----
|
|
2 files changed, 84 insertions(+), 16 deletions(-)
|
|
|
|
diff --git a/drivers/pci/controller/plda/pcie-microchip-host.c b/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
index b3df373a2141..beaf5c27da84 100644
|
|
--- a/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
+++ b/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
@@ -770,6 +770,64 @@ static struct irq_chip mc_event_irq_chip = {
|
|
.irq_unmask = mc_unmask_event_irq,
|
|
};
|
|
|
|
+static u32 plda_hwirq_to_mask(int hwirq)
|
|
+{
|
|
+ u32 mask;
|
|
+
|
|
+ /* hwirq 23 - 0 are the same with register */
|
|
+ if (hwirq < EVENT_PM_MSI_INT_INTX)
|
|
+ mask = BIT(hwirq);
|
|
+ else if (hwirq == EVENT_PM_MSI_INT_INTX)
|
|
+ mask = PM_MSI_INT_INTX_MASK;
|
|
+ else
|
|
+ mask = BIT(hwirq + PCI_NUM_INTX - 1);
|
|
+
|
|
+ return mask;
|
|
+}
|
|
+
|
|
+static void plda_ack_event_irq(struct irq_data *data)
|
|
+{
|
|
+ struct plda_pcie_rp *port = irq_data_get_irq_chip_data(data);
|
|
+
|
|
+ writel_relaxed(plda_hwirq_to_mask(data->hwirq),
|
|
+ port->bridge_addr + ISTATUS_LOCAL);
|
|
+}
|
|
+
|
|
+static void plda_mask_event_irq(struct irq_data *data)
|
|
+{
|
|
+ struct plda_pcie_rp *port = irq_data_get_irq_chip_data(data);
|
|
+ u32 mask, val;
|
|
+
|
|
+ mask = plda_hwirq_to_mask(data->hwirq);
|
|
+
|
|
+ raw_spin_lock(&port->lock);
|
|
+ val = readl_relaxed(port->bridge_addr + IMASK_LOCAL);
|
|
+ val &= ~mask;
|
|
+ writel_relaxed(val, port->bridge_addr + IMASK_LOCAL);
|
|
+ raw_spin_unlock(&port->lock);
|
|
+}
|
|
+
|
|
+static void plda_unmask_event_irq(struct irq_data *data)
|
|
+{
|
|
+ struct plda_pcie_rp *port = irq_data_get_irq_chip_data(data);
|
|
+ u32 mask, val;
|
|
+
|
|
+ mask = plda_hwirq_to_mask(data->hwirq);
|
|
+
|
|
+ raw_spin_lock(&port->lock);
|
|
+ val = readl_relaxed(port->bridge_addr + IMASK_LOCAL);
|
|
+ val |= mask;
|
|
+ writel_relaxed(val, port->bridge_addr + IMASK_LOCAL);
|
|
+ raw_spin_unlock(&port->lock);
|
|
+}
|
|
+
|
|
+static struct irq_chip plda_event_irq_chip = {
|
|
+ .name = "PLDA PCIe EVENT",
|
|
+ .irq_ack = plda_ack_event_irq,
|
|
+ .irq_mask = plda_mask_event_irq,
|
|
+ .irq_unmask = plda_unmask_event_irq,
|
|
+};
|
|
+
|
|
static const struct plda_event_ops plda_event_ops = {
|
|
.get_events = plda_get_events,
|
|
};
|
|
@@ -777,7 +835,9 @@ static const struct plda_event_ops plda_event_ops = {
|
|
static int plda_pcie_event_map(struct irq_domain *domain, unsigned int irq,
|
|
irq_hw_number_t hwirq)
|
|
{
|
|
- irq_set_chip_and_handler(irq, &mc_event_irq_chip, handle_level_irq);
|
|
+ struct plda_pcie_rp *port = (void *)domain->host_data;
|
|
+
|
|
+ irq_set_chip_and_handler(irq, port->event_irq_chip, handle_level_irq);
|
|
irq_set_chip_data(irq, domain->host_data);
|
|
|
|
return 0;
|
|
@@ -962,6 +1022,9 @@ static int plda_init_interrupts(struct platform_device *pdev,
|
|
if (!port->event_ops)
|
|
port->event_ops = &plda_event_ops;
|
|
|
|
+ if (!port->event_irq_chip)
|
|
+ port->event_irq_chip = &plda_event_irq_chip;
|
|
+
|
|
ret = plda_pcie_init_irq_domains(port);
|
|
if (ret) {
|
|
dev_err(dev, "failed creating IRQ domains\n");
|
|
@@ -1039,6 +1102,7 @@ static int mc_platform_init(struct pci_config_window *cfg)
|
|
return ret;
|
|
|
|
port->plda.event_ops = &mc_event_ops;
|
|
+ port->plda.event_irq_chip = &mc_event_irq_chip;
|
|
|
|
/* Address translation is up; safe to enable interrupts */
|
|
ret = plda_init_interrupts(pdev, &port->plda, &mc_event);
|
|
diff --git a/drivers/pci/controller/plda/pcie-plda.h b/drivers/pci/controller/plda/pcie-plda.h
|
|
index e0e5e7cc8434..0e5157eb3a32 100644
|
|
--- a/drivers/pci/controller/plda/pcie-plda.h
|
|
+++ b/drivers/pci/controller/plda/pcie-plda.h
|
|
@@ -107,6 +107,8 @@ enum plda_int_event {
|
|
|
|
#define PLDA_NUM_DMA_EVENTS 16
|
|
|
|
+#define EVENT_PM_MSI_INT_INTX (PLDA_NUM_DMA_EVENTS + PLDA_INTX)
|
|
+#define EVENT_PM_MSI_INT_MSI (PLDA_NUM_DMA_EVENTS + PLDA_MSI)
|
|
#define PLDA_MAX_EVENT_NUM (PLDA_NUM_DMA_EVENTS + PLDA_INT_EVENT_NUM)
|
|
|
|
/*
|
|
@@ -116,21 +118,22 @@ enum plda_int_event {
|
|
* +--+--+--+-+------+-+-+-+-+-+-+-+-+-----------+-----------+
|
|
* |12|11|10|9| intx |7|6|5|4|3|2|1|0| DMA error | DMA end |
|
|
* +--+--+--+-+------+-+-+-+-+-+-+-+-+-----------+-----------+
|
|
- * bit 0-7 DMA interrupt end : reserved for vendor implement
|
|
- * bit 8-15 DMA error : reserved for vendor implement
|
|
- * 0: AXI post error (PLDA_AXI_POST_ERR)
|
|
- * 1: AXI fetch error (PLDA_AXI_FETCH_ERR)
|
|
- * 2: AXI discard error (PLDA_AXI_DISCARD_ERR)
|
|
- * 3: AXI doorbell (PLDA_PCIE_DOORBELL)
|
|
- * 4: PCIe post error (PLDA_PCIE_POST_ERR)
|
|
- * 5: PCIe fetch error (PLDA_PCIE_FETCH_ERR)
|
|
- * 6: PCIe discard error (PLDA_PCIE_DISCARD_ERR)
|
|
- * 7: PCIe doorbell (PLDA_PCIE_DOORBELL)
|
|
- * 8: 4 INTx interruts (PLDA_INTX)
|
|
- * 9: MSI interrupt (PLDA_MSI)
|
|
- * 10: AER event (PLDA_AER_EVENT)
|
|
- * 11: PM/LTR/Hotplug (PLDA_MISC_EVENTS)
|
|
- * 12: System error (PLDA_SYS_ERR)
|
|
+ * event bit
|
|
+ * 0-7 (0-7) DMA interrupt end : reserved for vendor implement
|
|
+ * 8-15 (8-15) DMA error : reserved for vendor implement
|
|
+ * 16 (16) AXI post error (PLDA_AXI_POST_ERR)
|
|
+ * 17 (17) AXI fetch error (PLDA_AXI_FETCH_ERR)
|
|
+ * 18 (18) AXI discard error (PLDA_AXI_DISCARD_ERR)
|
|
+ * 19 (19) AXI doorbell (PLDA_PCIE_DOORBELL)
|
|
+ * 20 (20) PCIe post error (PLDA_PCIE_POST_ERR)
|
|
+ * 21 (21) PCIe fetch error (PLDA_PCIE_FETCH_ERR)
|
|
+ * 22 (22) PCIe discard error (PLDA_PCIE_DISCARD_ERR)
|
|
+ * 23 (23) PCIe doorbell (PLDA_PCIE_DOORBELL)
|
|
+ * 24 (27-24) INTx interruts (PLDA_INTX)
|
|
+ * 25 (28): MSI interrupt (PLDA_MSI)
|
|
+ * 26 (29): AER event (PLDA_AER_EVENT)
|
|
+ * 27 (30): PM/LTR/Hotplug (PLDA_MISC_EVENTS)
|
|
+ * 28 (31): System error (PLDA_SYS_ERR)
|
|
*/
|
|
|
|
struct plda_pcie_rp;
|
|
@@ -155,6 +158,7 @@ struct plda_pcie_rp {
|
|
raw_spinlock_t lock;
|
|
struct plda_msi msi;
|
|
const struct plda_event_ops *event_ops;
|
|
+ const struct irq_chip *event_irq_chip;
|
|
void __iomem *bridge_addr;
|
|
int num_events;
|
|
};
|
|
|
|
From patchwork Thu Mar 28 09:18:29 2024
|
|
Content-Type: text/plain; charset="utf-8"
|
|
MIME-Version: 1.0
|
|
Content-Transfer-Encoding: 7bit
|
|
X-Patchwork-Submitter: Minda Chen <minda.chen@starfivetech.com>
|
|
X-Patchwork-Id: 13608246
|
|
X-Patchwork-Delegate: kw@linux.com
|
|
Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn
|
|
(mail-sh0chn02on2136.outbound.protection.partner.outlook.cn
|
|
[139.219.146.136])
|
|
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
|
|
(No client certificate requested)
|
|
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 858A27E574;
|
|
Thu, 28 Mar 2024 09:19:10 +0000 (UTC)
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
arc=fail smtp.client-ip=139.219.146.136
|
|
ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
|
|
t=1711617553; cv=fail;
|
|
b=L6Gb7fDd+IWoX1kcttXZ8P1gFMLuFelk5WwiZk/INVxSzD9JEYamwKRgRInJMNnbKki5p5VzlBvUNU1S8Lu4coVxvepwPTYVTHMGMfZZ8Eyzo+gxO46uS1v9T0PYqga9/TrrUmZ+UbwGedtfivEbbw+WRsercG/SWXOYVts4zDc=
|
|
ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org;
|
|
s=arc-20240116; t=1711617553; c=relaxed/simple;
|
|
bh=R7MY5z4KGgMjqpxAq5Ngu87BHLKDh8ynLtvTNJvvN78=;
|
|
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
|
|
Content-Type:MIME-Version;
|
|
b=RQXVP0wTd1s1n3tnVSly9wGTj1RqUx6fXHMaw9WkWH1FEPlEbLTvsC9ixbCYK6vk3OxhgbB1fwbDa0iH9l6h3iiTye7cXZVpnWuPvTECs549zle/FEJEq7Z0T7eMr6JWzNlXUv1ju1aYBNRkFmJoqnUHn8mXmwhy1vcY15mL91k=
|
|
ARC-Authentication-Results: i=2; smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com;
|
|
spf=pass smtp.mailfrom=starfivetech.com;
|
|
arc=fail smtp.client-ip=139.219.146.136
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
spf=pass smtp.mailfrom=starfivetech.com
|
|
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
|
|
b=fmtX7bo2Rzod1Dwkbxwn5FPQqjSE3SlZo3ZGHgiuey0MhfM/H3x9jyHRnlrXyr02R9EreakLGOelk8K29XK4mhCuT9CToG/CeeXlXj+t5rCSAIbvPjVi8FulGCJVFWx4MKkSbyv48CoIFX8pN+0JPAR3KPmuKJe0pYyVzM/y/Was8skWI6drnUvL3ePXMz0SWIcySptYoDKwCVbHSHvRCeXORBZ9oYLAAabTZRX5He5Sb28ufaAVK5T6GR7SBgEvEEn8TdxDCsi7j9BDb+O6gTl10nLPRRmCLZljV8Hx++GzRUcIA09mlOimANKtpJAD2mE/H/sNefUupFyd5m3uiQ==
|
|
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
|
|
s=arcselector9901;
|
|
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
|
|
bh=pl/toXvd7sGslxROSN3JTdd8+ySb2QgEK+xIP0knF20=;
|
|
b=mqaMfnnzgigTDwrWu/NWmtUYxk4Yif2O+3Wq1f3jjBOYt+D+6wn67zBhSFiD/yFmm903hnwCM1csmChTbhaK3A09b7yDQayzLwfjOlW48DcrbcunyarbRHFL0wKB2Uct3oJ+p/6EsSuehGNT7vTh+doZ92eyxz95aNlXLmZCV1kTLY7ycqYZFwsDE2O/BzjfK2Fp4SY5FW0rnVo+haG2Oq5NbnqQI20UFJ/bBOi0ZZtfRpa4nUh2j8C5QypB8zmbFXiHyfsL9ZeQOxWoGl0OLk+pdbY6YyVmKPvt44madmu8ylyDGPtG3m2fXqTYi1iSTACnLBkiE1mU5eKTYu1htg==
|
|
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
|
|
smtp.mailfrom=starfivetech.com; dmarc=pass action=none
|
|
header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none
|
|
Authentication-Results: dkim=none (message not signed)
|
|
header.d=none;dmarc=none action=none header.from=starfivetech.com;
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15) by SHXPR01MB0559.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:1d::22) with Microsoft SMTP Server (version=TLS1_2,
|
|
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Thu, 28 Mar
|
|
2024 09:19:00 +0000
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
([fe80::c738:9e6b:f92e:8bb9]) by
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn ([fe80::c738:9e6b:f92e:8bb9%6])
|
|
with mapi id 15.20.7409.031; Thu, 28 Mar 2024 09:19:00 +0000
|
|
From: Minda Chen <minda.chen@starfivetech.com>
|
|
To: Lorenzo Pieralisi <lpieralisi@kernel.org>,
|
|
Conor Dooley <conor@kernel.org>,
|
|
=?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kw@linux.com>,
|
|
Rob Herring <robh+dt@kernel.org>, Bjorn Helgaas <bhelgaas@google.com>,
|
|
Thomas Gleixner <tglx@linutronix.de>,
|
|
Daire McNamara <daire.mcnamara@microchip.com>,
|
|
Emil Renner Berthing <emil.renner.berthing@canonical.com>,
|
|
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
|
|
Cc: devicetree@vger.kernel.org,
|
|
linux-kernel@vger.kernel.org,
|
|
linux-riscv@lists.infradead.org,
|
|
linux-pci@vger.kernel.org,
|
|
Paul Walmsley <paul.walmsley@sifive.com>,
|
|
Palmer Dabbelt <palmer@dabbelt.com>,
|
|
Albert Ou <aou@eecs.berkeley.edu>,
|
|
Philipp Zabel <p.zabel@pengutronix.de>,
|
|
Mason Huo <mason.huo@starfivetech.com>,
|
|
Leyfoon Tan <leyfoon.tan@starfivetech.com>,
|
|
Kevin Xie <kevin.xie@starfivetech.com>,
|
|
Minda Chen <minda.chen@starfivetech.com>
|
|
Subject: [PATCH v16 16/22] PCI: microchip: Move IRQ functions to
|
|
pcie-plda-host.c
|
|
Date: Thu, 28 Mar 2024 17:18:29 +0800
|
|
Message-Id: <20240328091835.14797-17-minda.chen@starfivetech.com>
|
|
X-Mailer: git-send-email 2.17.1
|
|
In-Reply-To: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
References: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
X-ClientProxiedBy: NT0PR01CA0020.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c510:c::16) To SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15)
|
|
Precedence: bulk
|
|
X-Mailing-List: linux-pci@vger.kernel.org
|
|
List-Id: <linux-pci.vger.kernel.org>
|
|
List-Subscribe: <mailto:linux-pci+subscribe@vger.kernel.org>
|
|
List-Unsubscribe: <mailto:linux-pci+unsubscribe@vger.kernel.org>
|
|
MIME-Version: 1.0
|
|
X-MS-PublicTrafficType: Email
|
|
X-MS-TrafficTypeDiagnostic: SHXPR01MB0863:EE_|SHXPR01MB0559:EE_
|
|
X-MS-Office365-Filtering-Correlation-Id: 27e02b61-d809-43c8-341b-08dc4f081a4a
|
|
X-MS-Exchange-SenderADCheck: 1
|
|
X-Microsoft-Antispam: BCL:0;
|
|
X-Microsoft-Antispam-Message-Info:
|
|
7QNW6rrjhFdxseLpErHSIm0moYerf3Oq6/EimJmtNNI3i/sQ7O0jTcrqErAo7cTnC1ccYF++F7dvOfK7vMIVY3ZUWnzREw2vuB4CcCcWBsVSmPbnhQQwq9Cw0pvSVyGZTqwG+iwPlWme7X5U9IJplT9lkhCxj8IRPbBztygTL8C0LFaMnvgyAPCgGlHhVUC74EBfBOclDgDodz1K2XTCTRT47SCnNcSKfuPzXS+4DN+AOFivz7SuMjnQXD8Sb3THmDBGLqmtqx1CohmmmtIjSe3hjWvGjIlNN/nbgs9+58RfGMecyPzLzZAY4RW+Im8AatwppegL/4Mnl+BFYGzztCAvmhR61+Uxw82uC3dS4GK4QEL03Ou4FxfZw7aOHukxE3YOUcnBKLC8z3LdrrVysJTOyErEOufZYEUIsev8yFos077XFXoDyT7xpVLryfbMRrQLoHluLYsbIUnQj+jUcBuFLMbSPC9BG1eJBE4jo0X6kIwBUsTVNEJx8b3N4na8IXo26CkR2+DQZ8CvaQjtHw4PrgwdshsmhcBJSqfbVVLDh+pH2gBISfnOhe+p+40B0JrPiEVcfYpw6JOdN8S+hU9cBeSEtV7Zez+A9yzFS+LYr8XeVEYCSSZrGmiphu04
|
|
X-Forefront-Antispam-Report:
|
|
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230031)(1800799015)(52116005)(7416005)(41320700004)(366007)(38350700005);DIR:OUT;SFP:1102;
|
|
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
|
|
X-MS-Exchange-AntiSpam-MessageData-0:
|
|
GI4EYVmPt99SYorvHJkrOxRSPBOnc382Inmx1gYtQ2uwpPlwzOvBKK8WUMI5LP/e9JwQN1UT+EbRZ5/jZkbOu8Zr2lFchy+vlUJ8MgMdaTFCPJOQoepgxgLxSlcMXj5r8XkPBdfRH/kqzYE4CusWBrnvSe4OlSoalStZFBT+N/g6WUf4zoR+lqQIg/DqXVG6vdOtGeDHTTtbBIoH8LONkpnEK0OHcehcPpyIKh2UIoD4WsCcd3rHHhRy288GaCSshS1oIMarjNrS54CgeSNoYAWWnlo6x2zdqqf7ldeXt1X5GIPcbegVApHUh+ysNH9AyhduW1WjOXXY2I0wYvJvowTMFSSikyIRFX8FBwZSOUJlAwY8pt0F+cnUUT/S8KkOsVQVwNurK+8fcQDJOlk7m5MnJGPeZGgjd9VIzO3eilKnuaJl1dNClZzK1s5f7Gg1SoNxVS9dn9CRcGGnm+UferEe7ERmdEnhELCOefpMM1gEZod0yjpif1SiFyNU6xWJZpvzpOKmYvZccNcWIDBIA8xvU5ueAgvIpyKdYBbLnobw91RNxTkEycvLZ62b+AhKrw8h6vNARCYJ/87YveGrS7+mOtn6WHUb8curfrdFXsOI3In8mZJeLAgjNd3OaQVucwFyM82JT2YWIKOM2uYazUVUELFgw/IU6MmHYgNKA1VOQ6BeznrLl0uoaO7iQ1M8pHFKP0id57OIvIW89V/0GXu2Y0sBnVougL3qdgtiRoX9fJlWC4SumeJ40+PDOhazPmFtXpJNDjUguacRqlJswlNvhOo2rdWaJHrV4w7i0Nx20u+WW2DE4Jvc61lER/cgwmTtecBGb8HBIbw62ghtRmJxkT+0lxcWTJ2xfzHT0ZBSUwcitNroJx/uPodO3YGbQK/8l6R/o8BBR4VLupmYm6dySHQIMfK+WYykU+kGXiqH65oiBOI0gB+f+JJ2af4TJbD0ZLObQR1xCy9TUIgDw6szxvHs8tccwoctK/Oz3dxLagEmfWQHKg1hoo1NxHWtO7Pgak9Yvx+4vF+gNECUzq9XBUseJGANDiUEeJvIGFjaBBzd2qQzeOW/Qz7ngDiqoKPOYl8CVeHdiQn9svZP9VfIg096yaoC5GKNgezW7OMP7F9Ivw+CHVkmi48P4YX38HX9bgz5mA+CxTrSmbQv5LnrDN/lnH9TNMHV4JOKKuKB6Sjw+PrjoWxcwo0KRn0O0fG3T7RwSwVCi/AU96OYwwnYRipmKkkdt2VdwCeM/lbSgHn3+z7UBdLirEZKukvp3DU6+sY0ZNUsWgP0R3ZpljX8o1vZG3h0iJUjnPXGS3W9q9I3ZukyWHkiRovziRTqX+s6T/fH6zYRthYFVd9GGHsJZncBpz9F79hOo2WYbiEorF6Ug6STMZD/6r3sNhqC1qmMAHO6JzEhynQqMQ3ZxfBKnPqE+PcVfC+KpfEeeZfkVfMo0jyH4kK1mFNuLbhEP+IXkZVZHPjW0pabK9mD1+8rYJ2bbsnaxM12gPjv8KLoa2T7OQnGZDk6KrM0JvxICtt9g4zIpypp9sxh/NLoseEhhO5mSAx9M4/EA+1flFB60c2fKP8nKrVizaLhCdYydfETMMaf9haNPa3ULeTHnQ==
|
|
X-OriginatorOrg: starfivetech.com
|
|
X-MS-Exchange-CrossTenant-Network-Message-Id:
|
|
27e02b61-d809-43c8-341b-08dc4f081a4a
|
|
X-MS-Exchange-CrossTenant-AuthSource:
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
X-MS-Exchange-CrossTenant-AuthAs: Internal
|
|
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2024 09:19:00.0793
|
|
(UTC)
|
|
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
|
|
X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c
|
|
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
|
|
X-MS-Exchange-CrossTenant-UserPrincipalName:
|
|
FLB6hZmMQAUUqm5CceQLtu1WqgbecN+hQuWQQx9ZrcInCVQxNR4/grLijhW/YC8ociI2Ny+C/BsFertR3UcdhdYqLbVZlbel8xNiYD8Shso=
|
|
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SHXPR01MB0559
|
|
|
|
Move IRQ related functions to common file pcie-plda-host.c
|
|
|
|
The re-use code including MSI, INTx, event interrupts and IRQ init
|
|
functions.
|
|
|
|
Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
|
|
Acked-by: Conor Dooley <conor.dooley@microchip.com>
|
|
---
|
|
.../pci/controller/plda/pcie-microchip-host.c | 467 -----------------
|
|
drivers/pci/controller/plda/pcie-plda-host.c | 473 ++++++++++++++++++
|
|
drivers/pci/controller/plda/pcie-plda.h | 3 +
|
|
3 files changed, 476 insertions(+), 467 deletions(-)
|
|
|
|
diff --git a/drivers/pci/controller/plda/pcie-microchip-host.c b/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
index beaf5c27da84..105964306b71 100644
|
|
--- a/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
+++ b/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
@@ -318,244 +318,6 @@ static void mc_pcie_enable_msi(struct mc_pcie *port, void __iomem *ecam)
|
|
ecam + MC_MSI_CAP_CTRL_OFFSET + PCI_MSI_ADDRESS_HI);
|
|
}
|
|
|
|
-static void plda_handle_msi(struct irq_desc *desc)
|
|
-{
|
|
- struct plda_pcie_rp *port = irq_desc_get_handler_data(desc);
|
|
- struct irq_chip *chip = irq_desc_get_chip(desc);
|
|
- struct device *dev = port->dev;
|
|
- struct plda_msi *msi = &port->msi;
|
|
- void __iomem *bridge_base_addr = port->bridge_addr;
|
|
- unsigned long status;
|
|
- u32 bit;
|
|
- int ret;
|
|
-
|
|
- chained_irq_enter(chip, desc);
|
|
-
|
|
- status = readl_relaxed(bridge_base_addr + ISTATUS_LOCAL);
|
|
- if (status & PM_MSI_INT_MSI_MASK) {
|
|
- writel_relaxed(status & PM_MSI_INT_MSI_MASK, bridge_base_addr + ISTATUS_LOCAL);
|
|
- status = readl_relaxed(bridge_base_addr + ISTATUS_MSI);
|
|
- for_each_set_bit(bit, &status, msi->num_vectors) {
|
|
- ret = generic_handle_domain_irq(msi->dev_domain, bit);
|
|
- if (ret)
|
|
- dev_err_ratelimited(dev, "bad MSI IRQ %d\n",
|
|
- bit);
|
|
- }
|
|
- }
|
|
-
|
|
- chained_irq_exit(chip, desc);
|
|
-}
|
|
-
|
|
-static void plda_msi_bottom_irq_ack(struct irq_data *data)
|
|
-{
|
|
- struct plda_pcie_rp *port = irq_data_get_irq_chip_data(data);
|
|
- void __iomem *bridge_base_addr = port->bridge_addr;
|
|
- u32 bitpos = data->hwirq;
|
|
-
|
|
- writel_relaxed(BIT(bitpos), bridge_base_addr + ISTATUS_MSI);
|
|
-}
|
|
-
|
|
-static void plda_compose_msi_msg(struct irq_data *data, struct msi_msg *msg)
|
|
-{
|
|
- struct plda_pcie_rp *port = irq_data_get_irq_chip_data(data);
|
|
- phys_addr_t addr = port->msi.vector_phy;
|
|
-
|
|
- msg->address_lo = lower_32_bits(addr);
|
|
- msg->address_hi = upper_32_bits(addr);
|
|
- msg->data = data->hwirq;
|
|
-
|
|
- dev_dbg(port->dev, "msi#%x address_hi %#x address_lo %#x\n",
|
|
- (int)data->hwirq, msg->address_hi, msg->address_lo);
|
|
-}
|
|
-
|
|
-static int plda_msi_set_affinity(struct irq_data *irq_data,
|
|
- const struct cpumask *mask, bool force)
|
|
-{
|
|
- return -EINVAL;
|
|
-}
|
|
-
|
|
-static struct irq_chip plda_msi_bottom_irq_chip = {
|
|
- .name = "PLDA MSI",
|
|
- .irq_ack = plda_msi_bottom_irq_ack,
|
|
- .irq_compose_msi_msg = plda_compose_msi_msg,
|
|
- .irq_set_affinity = plda_msi_set_affinity,
|
|
-};
|
|
-
|
|
-static int plda_irq_msi_domain_alloc(struct irq_domain *domain,
|
|
- unsigned int virq,
|
|
- unsigned int nr_irqs,
|
|
- void *args)
|
|
-{
|
|
- struct plda_pcie_rp *port = domain->host_data;
|
|
- struct plda_msi *msi = &port->msi;
|
|
- unsigned long bit;
|
|
-
|
|
- mutex_lock(&msi->lock);
|
|
- bit = find_first_zero_bit(msi->used, msi->num_vectors);
|
|
- if (bit >= msi->num_vectors) {
|
|
- mutex_unlock(&msi->lock);
|
|
- return -ENOSPC;
|
|
- }
|
|
-
|
|
- set_bit(bit, msi->used);
|
|
-
|
|
- irq_domain_set_info(domain, virq, bit, &plda_msi_bottom_irq_chip,
|
|
- domain->host_data, handle_edge_irq, NULL, NULL);
|
|
-
|
|
- mutex_unlock(&msi->lock);
|
|
-
|
|
- return 0;
|
|
-}
|
|
-
|
|
-static void plda_irq_msi_domain_free(struct irq_domain *domain,
|
|
- unsigned int virq,
|
|
- unsigned int nr_irqs)
|
|
-{
|
|
- struct irq_data *d = irq_domain_get_irq_data(domain, virq);
|
|
- struct plda_pcie_rp *port = irq_data_get_irq_chip_data(d);
|
|
- struct plda_msi *msi = &port->msi;
|
|
-
|
|
- mutex_lock(&msi->lock);
|
|
-
|
|
- if (test_bit(d->hwirq, msi->used))
|
|
- __clear_bit(d->hwirq, msi->used);
|
|
- else
|
|
- dev_err(port->dev, "trying to free unused MSI%lu\n", d->hwirq);
|
|
-
|
|
- mutex_unlock(&msi->lock);
|
|
-}
|
|
-
|
|
-static const struct irq_domain_ops msi_domain_ops = {
|
|
- .alloc = plda_irq_msi_domain_alloc,
|
|
- .free = plda_irq_msi_domain_free,
|
|
-};
|
|
-
|
|
-static struct irq_chip plda_msi_irq_chip = {
|
|
- .name = "PLDA PCIe MSI",
|
|
- .irq_ack = irq_chip_ack_parent,
|
|
- .irq_mask = pci_msi_mask_irq,
|
|
- .irq_unmask = pci_msi_unmask_irq,
|
|
-};
|
|
-
|
|
-static struct msi_domain_info plda_msi_domain_info = {
|
|
- .flags = (MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS |
|
|
- MSI_FLAG_PCI_MSIX),
|
|
- .chip = &plda_msi_irq_chip,
|
|
-};
|
|
-
|
|
-static int plda_allocate_msi_domains(struct plda_pcie_rp *port)
|
|
-{
|
|
- struct device *dev = port->dev;
|
|
- struct fwnode_handle *fwnode = of_node_to_fwnode(dev->of_node);
|
|
- struct plda_msi *msi = &port->msi;
|
|
-
|
|
- mutex_init(&port->msi.lock);
|
|
-
|
|
- msi->dev_domain = irq_domain_add_linear(NULL, msi->num_vectors,
|
|
- &msi_domain_ops, port);
|
|
- if (!msi->dev_domain) {
|
|
- dev_err(dev, "failed to create IRQ domain\n");
|
|
- return -ENOMEM;
|
|
- }
|
|
-
|
|
- msi->msi_domain = pci_msi_create_irq_domain(fwnode,
|
|
- &plda_msi_domain_info,
|
|
- msi->dev_domain);
|
|
- if (!msi->msi_domain) {
|
|
- dev_err(dev, "failed to create MSI domain\n");
|
|
- irq_domain_remove(msi->dev_domain);
|
|
- return -ENOMEM;
|
|
- }
|
|
-
|
|
- return 0;
|
|
-}
|
|
-
|
|
-static void plda_handle_intx(struct irq_desc *desc)
|
|
-{
|
|
- struct plda_pcie_rp *port = irq_desc_get_handler_data(desc);
|
|
- struct irq_chip *chip = irq_desc_get_chip(desc);
|
|
- struct device *dev = port->dev;
|
|
- void __iomem *bridge_base_addr = port->bridge_addr;
|
|
- unsigned long status;
|
|
- u32 bit;
|
|
- int ret;
|
|
-
|
|
- chained_irq_enter(chip, desc);
|
|
-
|
|
- status = readl_relaxed(bridge_base_addr + ISTATUS_LOCAL);
|
|
- if (status & PM_MSI_INT_INTX_MASK) {
|
|
- status &= PM_MSI_INT_INTX_MASK;
|
|
- status >>= PM_MSI_INT_INTX_SHIFT;
|
|
- for_each_set_bit(bit, &status, PCI_NUM_INTX) {
|
|
- ret = generic_handle_domain_irq(port->intx_domain, bit);
|
|
- if (ret)
|
|
- dev_err_ratelimited(dev, "bad INTx IRQ %d\n",
|
|
- bit);
|
|
- }
|
|
- }
|
|
-
|
|
- chained_irq_exit(chip, desc);
|
|
-}
|
|
-
|
|
-static void plda_ack_intx_irq(struct irq_data *data)
|
|
-{
|
|
- struct plda_pcie_rp *port = irq_data_get_irq_chip_data(data);
|
|
- void __iomem *bridge_base_addr = port->bridge_addr;
|
|
- u32 mask = BIT(data->hwirq + PM_MSI_INT_INTX_SHIFT);
|
|
-
|
|
- writel_relaxed(mask, bridge_base_addr + ISTATUS_LOCAL);
|
|
-}
|
|
-
|
|
-static void plda_mask_intx_irq(struct irq_data *data)
|
|
-{
|
|
- struct plda_pcie_rp *port = irq_data_get_irq_chip_data(data);
|
|
- void __iomem *bridge_base_addr = port->bridge_addr;
|
|
- unsigned long flags;
|
|
- u32 mask = BIT(data->hwirq + PM_MSI_INT_INTX_SHIFT);
|
|
- u32 val;
|
|
-
|
|
- raw_spin_lock_irqsave(&port->lock, flags);
|
|
- val = readl_relaxed(bridge_base_addr + IMASK_LOCAL);
|
|
- val &= ~mask;
|
|
- writel_relaxed(val, bridge_base_addr + IMASK_LOCAL);
|
|
- raw_spin_unlock_irqrestore(&port->lock, flags);
|
|
-}
|
|
-
|
|
-static void plda_unmask_intx_irq(struct irq_data *data)
|
|
-{
|
|
- struct plda_pcie_rp *port = irq_data_get_irq_chip_data(data);
|
|
- void __iomem *bridge_base_addr = port->bridge_addr;
|
|
- unsigned long flags;
|
|
- u32 mask = BIT(data->hwirq + PM_MSI_INT_INTX_SHIFT);
|
|
- u32 val;
|
|
-
|
|
- raw_spin_lock_irqsave(&port->lock, flags);
|
|
- val = readl_relaxed(bridge_base_addr + IMASK_LOCAL);
|
|
- val |= mask;
|
|
- writel_relaxed(val, bridge_base_addr + IMASK_LOCAL);
|
|
- raw_spin_unlock_irqrestore(&port->lock, flags);
|
|
-}
|
|
-
|
|
-static struct irq_chip plda_intx_irq_chip = {
|
|
- .name = "PLDA PCIe INTx",
|
|
- .irq_ack = plda_ack_intx_irq,
|
|
- .irq_mask = plda_mask_intx_irq,
|
|
- .irq_unmask = plda_unmask_intx_irq,
|
|
-};
|
|
-
|
|
-static int plda_pcie_intx_map(struct irq_domain *domain, unsigned int irq,
|
|
- irq_hw_number_t hwirq)
|
|
-{
|
|
- irq_set_chip_and_handler(irq, &plda_intx_irq_chip, handle_level_irq);
|
|
- irq_set_chip_data(irq, domain->host_data);
|
|
-
|
|
- return 0;
|
|
-}
|
|
-
|
|
-static const struct irq_domain_ops intx_domain_ops = {
|
|
- .map = plda_pcie_intx_map,
|
|
-};
|
|
-
|
|
static inline u32 reg_to_event(u32 reg, struct event_map field)
|
|
{
|
|
return (reg & field.reg_mask) ? BIT(field.event_bit) : 0;
|
|
@@ -626,26 +388,6 @@ static u32 mc_get_events(struct plda_pcie_rp *port)
|
|
return events;
|
|
}
|
|
|
|
-static u32 plda_get_events(struct plda_pcie_rp *port)
|
|
-{
|
|
- u32 events, val, origin;
|
|
-
|
|
- origin = readl_relaxed(port->bridge_addr + ISTATUS_LOCAL);
|
|
-
|
|
- /* MSI event and sys events */
|
|
- val = (origin & SYS_AND_MSI_MASK) >> PM_MSI_INT_MSI_SHIFT;
|
|
- events = val << (PM_MSI_INT_MSI_SHIFT - PCI_NUM_INTX + 1);
|
|
-
|
|
- /* INTx events */
|
|
- if (origin & PM_MSI_INT_INTX_MASK)
|
|
- events |= BIT(PM_MSI_INT_INTX_SHIFT);
|
|
-
|
|
- /* remains are same with register */
|
|
- events |= origin & GENMASK(P_ATR_EVT_DOORBELL_SHIFT, 0);
|
|
-
|
|
- return events;
|
|
-}
|
|
-
|
|
static irqreturn_t mc_event_handler(int irq, void *dev_id)
|
|
{
|
|
struct plda_pcie_rp *port = dev_id;
|
|
@@ -662,28 +404,6 @@ static irqreturn_t mc_event_handler(int irq, void *dev_id)
|
|
return IRQ_HANDLED;
|
|
}
|
|
|
|
-static irqreturn_t plda_event_handler(int irq, void *dev_id)
|
|
-{
|
|
- return IRQ_HANDLED;
|
|
-}
|
|
-
|
|
-static void plda_handle_event(struct irq_desc *desc)
|
|
-{
|
|
- struct plda_pcie_rp *port = irq_desc_get_handler_data(desc);
|
|
- unsigned long events;
|
|
- u32 bit;
|
|
- struct irq_chip *chip = irq_desc_get_chip(desc);
|
|
-
|
|
- chained_irq_enter(chip, desc);
|
|
-
|
|
- events = port->event_ops->get_events(port);
|
|
-
|
|
- for_each_set_bit(bit, &events, port->num_events)
|
|
- generic_handle_domain_irq(port->event_domain, bit);
|
|
-
|
|
- chained_irq_exit(chip, desc);
|
|
-}
|
|
-
|
|
static void mc_ack_event_irq(struct irq_data *data)
|
|
{
|
|
struct plda_pcie_rp *port = irq_data_get_irq_chip_data(data);
|
|
@@ -770,83 +490,6 @@ static struct irq_chip mc_event_irq_chip = {
|
|
.irq_unmask = mc_unmask_event_irq,
|
|
};
|
|
|
|
-static u32 plda_hwirq_to_mask(int hwirq)
|
|
-{
|
|
- u32 mask;
|
|
-
|
|
- /* hwirq 23 - 0 are the same with register */
|
|
- if (hwirq < EVENT_PM_MSI_INT_INTX)
|
|
- mask = BIT(hwirq);
|
|
- else if (hwirq == EVENT_PM_MSI_INT_INTX)
|
|
- mask = PM_MSI_INT_INTX_MASK;
|
|
- else
|
|
- mask = BIT(hwirq + PCI_NUM_INTX - 1);
|
|
-
|
|
- return mask;
|
|
-}
|
|
-
|
|
-static void plda_ack_event_irq(struct irq_data *data)
|
|
-{
|
|
- struct plda_pcie_rp *port = irq_data_get_irq_chip_data(data);
|
|
-
|
|
- writel_relaxed(plda_hwirq_to_mask(data->hwirq),
|
|
- port->bridge_addr + ISTATUS_LOCAL);
|
|
-}
|
|
-
|
|
-static void plda_mask_event_irq(struct irq_data *data)
|
|
-{
|
|
- struct plda_pcie_rp *port = irq_data_get_irq_chip_data(data);
|
|
- u32 mask, val;
|
|
-
|
|
- mask = plda_hwirq_to_mask(data->hwirq);
|
|
-
|
|
- raw_spin_lock(&port->lock);
|
|
- val = readl_relaxed(port->bridge_addr + IMASK_LOCAL);
|
|
- val &= ~mask;
|
|
- writel_relaxed(val, port->bridge_addr + IMASK_LOCAL);
|
|
- raw_spin_unlock(&port->lock);
|
|
-}
|
|
-
|
|
-static void plda_unmask_event_irq(struct irq_data *data)
|
|
-{
|
|
- struct plda_pcie_rp *port = irq_data_get_irq_chip_data(data);
|
|
- u32 mask, val;
|
|
-
|
|
- mask = plda_hwirq_to_mask(data->hwirq);
|
|
-
|
|
- raw_spin_lock(&port->lock);
|
|
- val = readl_relaxed(port->bridge_addr + IMASK_LOCAL);
|
|
- val |= mask;
|
|
- writel_relaxed(val, port->bridge_addr + IMASK_LOCAL);
|
|
- raw_spin_unlock(&port->lock);
|
|
-}
|
|
-
|
|
-static struct irq_chip plda_event_irq_chip = {
|
|
- .name = "PLDA PCIe EVENT",
|
|
- .irq_ack = plda_ack_event_irq,
|
|
- .irq_mask = plda_mask_event_irq,
|
|
- .irq_unmask = plda_unmask_event_irq,
|
|
-};
|
|
-
|
|
-static const struct plda_event_ops plda_event_ops = {
|
|
- .get_events = plda_get_events,
|
|
-};
|
|
-
|
|
-static int plda_pcie_event_map(struct irq_domain *domain, unsigned int irq,
|
|
- irq_hw_number_t hwirq)
|
|
-{
|
|
- struct plda_pcie_rp *port = (void *)domain->host_data;
|
|
-
|
|
- irq_set_chip_and_handler(irq, port->event_irq_chip, handle_level_irq);
|
|
- irq_set_chip_data(irq, domain->host_data);
|
|
-
|
|
- return 0;
|
|
-}
|
|
-
|
|
-static const struct irq_domain_ops plda_event_domain_ops = {
|
|
- .map = plda_pcie_event_map,
|
|
-};
|
|
-
|
|
static inline void mc_pcie_deinit_clk(void *data)
|
|
{
|
|
struct clk *clk = data;
|
|
@@ -909,47 +552,6 @@ static const struct plda_event mc_event = {
|
|
.msi_event = EVENT_LOCAL_PM_MSI_INT_MSI,
|
|
};
|
|
|
|
-static int plda_pcie_init_irq_domains(struct plda_pcie_rp *port)
|
|
-{
|
|
- struct device *dev = port->dev;
|
|
- struct device_node *node = dev->of_node;
|
|
- struct device_node *pcie_intc_node;
|
|
-
|
|
- /* Setup INTx */
|
|
- pcie_intc_node = of_get_next_child(node, NULL);
|
|
- if (!pcie_intc_node) {
|
|
- dev_err(dev, "failed to find PCIe Intc node\n");
|
|
- return -EINVAL;
|
|
- }
|
|
-
|
|
- port->event_domain = irq_domain_add_linear(pcie_intc_node,
|
|
- port->num_events,
|
|
- &plda_event_domain_ops,
|
|
- port);
|
|
- if (!port->event_domain) {
|
|
- dev_err(dev, "failed to get event domain\n");
|
|
- of_node_put(pcie_intc_node);
|
|
- return -ENOMEM;
|
|
- }
|
|
-
|
|
- irq_domain_update_bus_token(port->event_domain, DOMAIN_BUS_NEXUS);
|
|
-
|
|
- port->intx_domain = irq_domain_add_linear(pcie_intc_node, PCI_NUM_INTX,
|
|
- &intx_domain_ops, port);
|
|
- if (!port->intx_domain) {
|
|
- dev_err(dev, "failed to get an INTx IRQ domain\n");
|
|
- of_node_put(pcie_intc_node);
|
|
- return -ENOMEM;
|
|
- }
|
|
-
|
|
- irq_domain_update_bus_token(port->intx_domain, DOMAIN_BUS_WIRED);
|
|
-
|
|
- of_node_put(pcie_intc_node);
|
|
- raw_spin_lock_init(&port->lock);
|
|
-
|
|
- return plda_allocate_msi_domains(port);
|
|
-}
|
|
-
|
|
static inline void mc_clear_secs(struct mc_pcie *port)
|
|
{
|
|
void __iomem *ctrl_base_addr = port->axi_base_addr + MC_PCIE_CTRL_ADDR;
|
|
@@ -1010,75 +612,6 @@ static void mc_disable_interrupts(struct mc_pcie *port)
|
|
writel_relaxed(GENMASK(31, 0), bridge_base_addr + ISTATUS_HOST);
|
|
}
|
|
|
|
-static int plda_init_interrupts(struct platform_device *pdev,
|
|
- struct plda_pcie_rp *port,
|
|
- const struct plda_event *event)
|
|
-{
|
|
- struct device *dev = &pdev->dev;
|
|
- int irq;
|
|
- int i, intx_irq, msi_irq, event_irq;
|
|
- int ret;
|
|
-
|
|
- if (!port->event_ops)
|
|
- port->event_ops = &plda_event_ops;
|
|
-
|
|
- if (!port->event_irq_chip)
|
|
- port->event_irq_chip = &plda_event_irq_chip;
|
|
-
|
|
- ret = plda_pcie_init_irq_domains(port);
|
|
- if (ret) {
|
|
- dev_err(dev, "failed creating IRQ domains\n");
|
|
- return ret;
|
|
- }
|
|
-
|
|
- irq = platform_get_irq(pdev, 0);
|
|
- if (irq < 0)
|
|
- return -ENODEV;
|
|
-
|
|
- for (i = 0; i < port->num_events; i++) {
|
|
- event_irq = irq_create_mapping(port->event_domain, i);
|
|
- if (!event_irq) {
|
|
- dev_err(dev, "failed to map hwirq %d\n", i);
|
|
- return -ENXIO;
|
|
- }
|
|
-
|
|
- if (event->request_event_irq)
|
|
- ret = event->request_event_irq(port, event_irq, i);
|
|
- else
|
|
- ret = devm_request_irq(dev, event_irq,
|
|
- plda_event_handler,
|
|
- 0, NULL, port);
|
|
-
|
|
- if (ret) {
|
|
- dev_err(dev, "failed to request IRQ %d\n", event_irq);
|
|
- return ret;
|
|
- }
|
|
- }
|
|
-
|
|
- intx_irq = irq_create_mapping(port->event_domain,
|
|
- event->intx_event);
|
|
- if (!intx_irq) {
|
|
- dev_err(dev, "failed to map INTx interrupt\n");
|
|
- return -ENXIO;
|
|
- }
|
|
-
|
|
- /* Plug the INTx chained handler */
|
|
- irq_set_chained_handler_and_data(intx_irq, plda_handle_intx, port);
|
|
-
|
|
- msi_irq = irq_create_mapping(port->event_domain,
|
|
- event->msi_event);
|
|
- if (!msi_irq)
|
|
- return -ENXIO;
|
|
-
|
|
- /* Plug the MSI chained handler */
|
|
- irq_set_chained_handler_and_data(msi_irq, plda_handle_msi, port);
|
|
-
|
|
- /* Plug the main event chained handler */
|
|
- irq_set_chained_handler_and_data(irq, plda_handle_event, port);
|
|
-
|
|
- return 0;
|
|
-}
|
|
-
|
|
static int mc_platform_init(struct pci_config_window *cfg)
|
|
{
|
|
struct device *dev = cfg->parent;
|
|
diff --git a/drivers/pci/controller/plda/pcie-plda-host.c b/drivers/pci/controller/plda/pcie-plda-host.c
|
|
index 05ea68baebfb..98c51e594efe 100644
|
|
--- a/drivers/pci/controller/plda/pcie-plda-host.c
|
|
+++ b/drivers/pci/controller/plda/pcie-plda-host.c
|
|
@@ -7,10 +7,483 @@
|
|
* Author: Daire McNamara <daire.mcnamara@microchip.com>
|
|
*/
|
|
|
|
+#include <linux/irqchip/chained_irq.h>
|
|
+#include <linux/irqdomain.h>
|
|
+#include <linux/msi.h>
|
|
+#include <linux/pci_regs.h>
|
|
#include <linux/pci-ecam.h>
|
|
|
|
#include "pcie-plda.h"
|
|
|
|
+static void plda_handle_msi(struct irq_desc *desc)
|
|
+{
|
|
+ struct plda_pcie_rp *port = irq_desc_get_handler_data(desc);
|
|
+ struct irq_chip *chip = irq_desc_get_chip(desc);
|
|
+ struct device *dev = port->dev;
|
|
+ struct plda_msi *msi = &port->msi;
|
|
+ void __iomem *bridge_base_addr = port->bridge_addr;
|
|
+ unsigned long status;
|
|
+ u32 bit;
|
|
+ int ret;
|
|
+
|
|
+ chained_irq_enter(chip, desc);
|
|
+
|
|
+ status = readl_relaxed(bridge_base_addr + ISTATUS_LOCAL);
|
|
+ if (status & PM_MSI_INT_MSI_MASK) {
|
|
+ writel_relaxed(status & PM_MSI_INT_MSI_MASK,
|
|
+ bridge_base_addr + ISTATUS_LOCAL);
|
|
+ status = readl_relaxed(bridge_base_addr + ISTATUS_MSI);
|
|
+ for_each_set_bit(bit, &status, msi->num_vectors) {
|
|
+ ret = generic_handle_domain_irq(msi->dev_domain, bit);
|
|
+ if (ret)
|
|
+ dev_err_ratelimited(dev, "bad MSI IRQ %d\n",
|
|
+ bit);
|
|
+ }
|
|
+ }
|
|
+
|
|
+ chained_irq_exit(chip, desc);
|
|
+}
|
|
+
|
|
+static void plda_msi_bottom_irq_ack(struct irq_data *data)
|
|
+{
|
|
+ struct plda_pcie_rp *port = irq_data_get_irq_chip_data(data);
|
|
+ void __iomem *bridge_base_addr = port->bridge_addr;
|
|
+ u32 bitpos = data->hwirq;
|
|
+
|
|
+ writel_relaxed(BIT(bitpos), bridge_base_addr + ISTATUS_MSI);
|
|
+}
|
|
+
|
|
+static void plda_compose_msi_msg(struct irq_data *data, struct msi_msg *msg)
|
|
+{
|
|
+ struct plda_pcie_rp *port = irq_data_get_irq_chip_data(data);
|
|
+ phys_addr_t addr = port->msi.vector_phy;
|
|
+
|
|
+ msg->address_lo = lower_32_bits(addr);
|
|
+ msg->address_hi = upper_32_bits(addr);
|
|
+ msg->data = data->hwirq;
|
|
+
|
|
+ dev_dbg(port->dev, "msi#%x address_hi %#x address_lo %#x\n",
|
|
+ (int)data->hwirq, msg->address_hi, msg->address_lo);
|
|
+}
|
|
+
|
|
+static int plda_msi_set_affinity(struct irq_data *irq_data,
|
|
+ const struct cpumask *mask, bool force)
|
|
+{
|
|
+ return -EINVAL;
|
|
+}
|
|
+
|
|
+static struct irq_chip plda_msi_bottom_irq_chip = {
|
|
+ .name = "PLDA MSI",
|
|
+ .irq_ack = plda_msi_bottom_irq_ack,
|
|
+ .irq_compose_msi_msg = plda_compose_msi_msg,
|
|
+ .irq_set_affinity = plda_msi_set_affinity,
|
|
+};
|
|
+
|
|
+static int plda_irq_msi_domain_alloc(struct irq_domain *domain,
|
|
+ unsigned int virq,
|
|
+ unsigned int nr_irqs,
|
|
+ void *args)
|
|
+{
|
|
+ struct plda_pcie_rp *port = domain->host_data;
|
|
+ struct plda_msi *msi = &port->msi;
|
|
+ unsigned long bit;
|
|
+
|
|
+ mutex_lock(&msi->lock);
|
|
+ bit = find_first_zero_bit(msi->used, msi->num_vectors);
|
|
+ if (bit >= msi->num_vectors) {
|
|
+ mutex_unlock(&msi->lock);
|
|
+ return -ENOSPC;
|
|
+ }
|
|
+
|
|
+ set_bit(bit, msi->used);
|
|
+
|
|
+ irq_domain_set_info(domain, virq, bit, &plda_msi_bottom_irq_chip,
|
|
+ domain->host_data, handle_edge_irq, NULL, NULL);
|
|
+
|
|
+ mutex_unlock(&msi->lock);
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+static void plda_irq_msi_domain_free(struct irq_domain *domain,
|
|
+ unsigned int virq,
|
|
+ unsigned int nr_irqs)
|
|
+{
|
|
+ struct irq_data *d = irq_domain_get_irq_data(domain, virq);
|
|
+ struct plda_pcie_rp *port = irq_data_get_irq_chip_data(d);
|
|
+ struct plda_msi *msi = &port->msi;
|
|
+
|
|
+ mutex_lock(&msi->lock);
|
|
+
|
|
+ if (test_bit(d->hwirq, msi->used))
|
|
+ __clear_bit(d->hwirq, msi->used);
|
|
+ else
|
|
+ dev_err(port->dev, "trying to free unused MSI%lu\n", d->hwirq);
|
|
+
|
|
+ mutex_unlock(&msi->lock);
|
|
+}
|
|
+
|
|
+static const struct irq_domain_ops msi_domain_ops = {
|
|
+ .alloc = plda_irq_msi_domain_alloc,
|
|
+ .free = plda_irq_msi_domain_free,
|
|
+};
|
|
+
|
|
+static struct irq_chip plda_msi_irq_chip = {
|
|
+ .name = "PLDA PCIe MSI",
|
|
+ .irq_ack = irq_chip_ack_parent,
|
|
+ .irq_mask = pci_msi_mask_irq,
|
|
+ .irq_unmask = pci_msi_unmask_irq,
|
|
+};
|
|
+
|
|
+static struct msi_domain_info plda_msi_domain_info = {
|
|
+ .flags = (MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS |
|
|
+ MSI_FLAG_PCI_MSIX),
|
|
+ .chip = &plda_msi_irq_chip,
|
|
+};
|
|
+
|
|
+static int plda_allocate_msi_domains(struct plda_pcie_rp *port)
|
|
+{
|
|
+ struct device *dev = port->dev;
|
|
+ struct fwnode_handle *fwnode = of_node_to_fwnode(dev->of_node);
|
|
+ struct plda_msi *msi = &port->msi;
|
|
+
|
|
+ mutex_init(&port->msi.lock);
|
|
+
|
|
+ msi->dev_domain = irq_domain_add_linear(NULL, msi->num_vectors,
|
|
+ &msi_domain_ops, port);
|
|
+ if (!msi->dev_domain) {
|
|
+ dev_err(dev, "failed to create IRQ domain\n");
|
|
+ return -ENOMEM;
|
|
+ }
|
|
+
|
|
+ msi->msi_domain = pci_msi_create_irq_domain(fwnode,
|
|
+ &plda_msi_domain_info,
|
|
+ msi->dev_domain);
|
|
+ if (!msi->msi_domain) {
|
|
+ dev_err(dev, "failed to create MSI domain\n");
|
|
+ irq_domain_remove(msi->dev_domain);
|
|
+ return -ENOMEM;
|
|
+ }
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+static void plda_handle_intx(struct irq_desc *desc)
|
|
+{
|
|
+ struct plda_pcie_rp *port = irq_desc_get_handler_data(desc);
|
|
+ struct irq_chip *chip = irq_desc_get_chip(desc);
|
|
+ struct device *dev = port->dev;
|
|
+ void __iomem *bridge_base_addr = port->bridge_addr;
|
|
+ unsigned long status;
|
|
+ u32 bit;
|
|
+ int ret;
|
|
+
|
|
+ chained_irq_enter(chip, desc);
|
|
+
|
|
+ status = readl_relaxed(bridge_base_addr + ISTATUS_LOCAL);
|
|
+ if (status & PM_MSI_INT_INTX_MASK) {
|
|
+ status &= PM_MSI_INT_INTX_MASK;
|
|
+ status >>= PM_MSI_INT_INTX_SHIFT;
|
|
+ for_each_set_bit(bit, &status, PCI_NUM_INTX) {
|
|
+ ret = generic_handle_domain_irq(port->intx_domain, bit);
|
|
+ if (ret)
|
|
+ dev_err_ratelimited(dev, "bad INTx IRQ %d\n",
|
|
+ bit);
|
|
+ }
|
|
+ }
|
|
+
|
|
+ chained_irq_exit(chip, desc);
|
|
+}
|
|
+
|
|
+static void plda_ack_intx_irq(struct irq_data *data)
|
|
+{
|
|
+ struct plda_pcie_rp *port = irq_data_get_irq_chip_data(data);
|
|
+ void __iomem *bridge_base_addr = port->bridge_addr;
|
|
+ u32 mask = BIT(data->hwirq + PM_MSI_INT_INTX_SHIFT);
|
|
+
|
|
+ writel_relaxed(mask, bridge_base_addr + ISTATUS_LOCAL);
|
|
+}
|
|
+
|
|
+static void plda_mask_intx_irq(struct irq_data *data)
|
|
+{
|
|
+ struct plda_pcie_rp *port = irq_data_get_irq_chip_data(data);
|
|
+ void __iomem *bridge_base_addr = port->bridge_addr;
|
|
+ unsigned long flags;
|
|
+ u32 mask = BIT(data->hwirq + PM_MSI_INT_INTX_SHIFT);
|
|
+ u32 val;
|
|
+
|
|
+ raw_spin_lock_irqsave(&port->lock, flags);
|
|
+ val = readl_relaxed(bridge_base_addr + IMASK_LOCAL);
|
|
+ val &= ~mask;
|
|
+ writel_relaxed(val, bridge_base_addr + IMASK_LOCAL);
|
|
+ raw_spin_unlock_irqrestore(&port->lock, flags);
|
|
+}
|
|
+
|
|
+static void plda_unmask_intx_irq(struct irq_data *data)
|
|
+{
|
|
+ struct plda_pcie_rp *port = irq_data_get_irq_chip_data(data);
|
|
+ void __iomem *bridge_base_addr = port->bridge_addr;
|
|
+ unsigned long flags;
|
|
+ u32 mask = BIT(data->hwirq + PM_MSI_INT_INTX_SHIFT);
|
|
+ u32 val;
|
|
+
|
|
+ raw_spin_lock_irqsave(&port->lock, flags);
|
|
+ val = readl_relaxed(bridge_base_addr + IMASK_LOCAL);
|
|
+ val |= mask;
|
|
+ writel_relaxed(val, bridge_base_addr + IMASK_LOCAL);
|
|
+ raw_spin_unlock_irqrestore(&port->lock, flags);
|
|
+}
|
|
+
|
|
+static struct irq_chip plda_intx_irq_chip = {
|
|
+ .name = "PLDA PCIe INTx",
|
|
+ .irq_ack = plda_ack_intx_irq,
|
|
+ .irq_mask = plda_mask_intx_irq,
|
|
+ .irq_unmask = plda_unmask_intx_irq,
|
|
+};
|
|
+
|
|
+static int plda_pcie_intx_map(struct irq_domain *domain, unsigned int irq,
|
|
+ irq_hw_number_t hwirq)
|
|
+{
|
|
+ irq_set_chip_and_handler(irq, &plda_intx_irq_chip, handle_level_irq);
|
|
+ irq_set_chip_data(irq, domain->host_data);
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+static const struct irq_domain_ops intx_domain_ops = {
|
|
+ .map = plda_pcie_intx_map,
|
|
+};
|
|
+
|
|
+static u32 plda_get_events(struct plda_pcie_rp *port)
|
|
+{
|
|
+ u32 events, val, origin;
|
|
+
|
|
+ origin = readl_relaxed(port->bridge_addr + ISTATUS_LOCAL);
|
|
+
|
|
+ /* MSI event and sys events */
|
|
+ val = (origin & SYS_AND_MSI_MASK) >> PM_MSI_INT_MSI_SHIFT;
|
|
+ events = val << (PM_MSI_INT_MSI_SHIFT - PCI_NUM_INTX + 1);
|
|
+
|
|
+ /* INTx events */
|
|
+ if (origin & PM_MSI_INT_INTX_MASK)
|
|
+ events |= BIT(PM_MSI_INT_INTX_SHIFT);
|
|
+
|
|
+ /* remains are same with register */
|
|
+ events |= origin & GENMASK(P_ATR_EVT_DOORBELL_SHIFT, 0);
|
|
+
|
|
+ return events;
|
|
+}
|
|
+
|
|
+static irqreturn_t plda_event_handler(int irq, void *dev_id)
|
|
+{
|
|
+ return IRQ_HANDLED;
|
|
+}
|
|
+
|
|
+static void plda_handle_event(struct irq_desc *desc)
|
|
+{
|
|
+ struct plda_pcie_rp *port = irq_desc_get_handler_data(desc);
|
|
+ unsigned long events;
|
|
+ u32 bit;
|
|
+ struct irq_chip *chip = irq_desc_get_chip(desc);
|
|
+
|
|
+ chained_irq_enter(chip, desc);
|
|
+
|
|
+ events = port->event_ops->get_events(port);
|
|
+
|
|
+ for_each_set_bit(bit, &events, port->num_events)
|
|
+ generic_handle_domain_irq(port->event_domain, bit);
|
|
+
|
|
+ chained_irq_exit(chip, desc);
|
|
+}
|
|
+
|
|
+static u32 plda_hwirq_to_mask(int hwirq)
|
|
+{
|
|
+ u32 mask;
|
|
+
|
|
+ /* hwirq 23 - 0 are the same with register */
|
|
+ if (hwirq < EVENT_PM_MSI_INT_INTX)
|
|
+ mask = BIT(hwirq);
|
|
+ else if (hwirq == EVENT_PM_MSI_INT_INTX)
|
|
+ mask = PM_MSI_INT_INTX_MASK;
|
|
+ else
|
|
+ mask = BIT(hwirq + PCI_NUM_INTX - 1);
|
|
+
|
|
+ return mask;
|
|
+}
|
|
+
|
|
+static void plda_ack_event_irq(struct irq_data *data)
|
|
+{
|
|
+ struct plda_pcie_rp *port = irq_data_get_irq_chip_data(data);
|
|
+
|
|
+ writel_relaxed(plda_hwirq_to_mask(data->hwirq),
|
|
+ port->bridge_addr + ISTATUS_LOCAL);
|
|
+}
|
|
+
|
|
+static void plda_mask_event_irq(struct irq_data *data)
|
|
+{
|
|
+ struct plda_pcie_rp *port = irq_data_get_irq_chip_data(data);
|
|
+ u32 mask, val;
|
|
+
|
|
+ mask = plda_hwirq_to_mask(data->hwirq);
|
|
+
|
|
+ raw_spin_lock(&port->lock);
|
|
+ val = readl_relaxed(port->bridge_addr + IMASK_LOCAL);
|
|
+ val &= ~mask;
|
|
+ writel_relaxed(val, port->bridge_addr + IMASK_LOCAL);
|
|
+ raw_spin_unlock(&port->lock);
|
|
+}
|
|
+
|
|
+static void plda_unmask_event_irq(struct irq_data *data)
|
|
+{
|
|
+ struct plda_pcie_rp *port = irq_data_get_irq_chip_data(data);
|
|
+ u32 mask, val;
|
|
+
|
|
+ mask = plda_hwirq_to_mask(data->hwirq);
|
|
+
|
|
+ raw_spin_lock(&port->lock);
|
|
+ val = readl_relaxed(port->bridge_addr + IMASK_LOCAL);
|
|
+ val |= mask;
|
|
+ writel_relaxed(val, port->bridge_addr + IMASK_LOCAL);
|
|
+ raw_spin_unlock(&port->lock);
|
|
+}
|
|
+
|
|
+static struct irq_chip plda_event_irq_chip = {
|
|
+ .name = "PLDA PCIe EVENT",
|
|
+ .irq_ack = plda_ack_event_irq,
|
|
+ .irq_mask = plda_mask_event_irq,
|
|
+ .irq_unmask = plda_unmask_event_irq,
|
|
+};
|
|
+
|
|
+static const struct plda_event_ops plda_event_ops = {
|
|
+ .get_events = plda_get_events,
|
|
+};
|
|
+
|
|
+static int plda_pcie_event_map(struct irq_domain *domain, unsigned int irq,
|
|
+ irq_hw_number_t hwirq)
|
|
+{
|
|
+ struct plda_pcie_rp *port = (void *)domain->host_data;
|
|
+
|
|
+ irq_set_chip_and_handler(irq, port->event_irq_chip, handle_level_irq);
|
|
+ irq_set_chip_data(irq, domain->host_data);
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+static const struct irq_domain_ops plda_event_domain_ops = {
|
|
+ .map = plda_pcie_event_map,
|
|
+};
|
|
+
|
|
+static int plda_pcie_init_irq_domains(struct plda_pcie_rp *port)
|
|
+{
|
|
+ struct device *dev = port->dev;
|
|
+ struct device_node *node = dev->of_node;
|
|
+ struct device_node *pcie_intc_node;
|
|
+
|
|
+ /* Setup INTx */
|
|
+ pcie_intc_node = of_get_next_child(node, NULL);
|
|
+ if (!pcie_intc_node) {
|
|
+ dev_err(dev, "failed to find PCIe Intc node\n");
|
|
+ return -EINVAL;
|
|
+ }
|
|
+
|
|
+ port->event_domain = irq_domain_add_linear(pcie_intc_node,
|
|
+ port->num_events,
|
|
+ &plda_event_domain_ops,
|
|
+ port);
|
|
+ if (!port->event_domain) {
|
|
+ dev_err(dev, "failed to get event domain\n");
|
|
+ of_node_put(pcie_intc_node);
|
|
+ return -ENOMEM;
|
|
+ }
|
|
+
|
|
+ irq_domain_update_bus_token(port->event_domain, DOMAIN_BUS_NEXUS);
|
|
+
|
|
+ port->intx_domain = irq_domain_add_linear(pcie_intc_node, PCI_NUM_INTX,
|
|
+ &intx_domain_ops, port);
|
|
+ if (!port->intx_domain) {
|
|
+ dev_err(dev, "failed to get an INTx IRQ domain\n");
|
|
+ of_node_put(pcie_intc_node);
|
|
+ return -ENOMEM;
|
|
+ }
|
|
+
|
|
+ irq_domain_update_bus_token(port->intx_domain, DOMAIN_BUS_WIRED);
|
|
+
|
|
+ of_node_put(pcie_intc_node);
|
|
+ raw_spin_lock_init(&port->lock);
|
|
+
|
|
+ return plda_allocate_msi_domains(port);
|
|
+}
|
|
+
|
|
+int plda_init_interrupts(struct platform_device *pdev,
|
|
+ struct plda_pcie_rp *port,
|
|
+ const struct plda_event *event)
|
|
+{
|
|
+ struct device *dev = &pdev->dev;
|
|
+ int irq;
|
|
+ int i, intx_irq, msi_irq, event_irq;
|
|
+ int ret;
|
|
+
|
|
+ if (!port->event_ops)
|
|
+ port->event_ops = &plda_event_ops;
|
|
+
|
|
+ if (!port->event_irq_chip)
|
|
+ port->event_irq_chip = &plda_event_irq_chip;
|
|
+
|
|
+ ret = plda_pcie_init_irq_domains(port);
|
|
+ if (ret) {
|
|
+ dev_err(dev, "failed creating IRQ domains\n");
|
|
+ return ret;
|
|
+ }
|
|
+
|
|
+ irq = platform_get_irq(pdev, 0);
|
|
+ if (irq < 0)
|
|
+ return -ENODEV;
|
|
+
|
|
+ for (i = 0; i < port->num_events; i++) {
|
|
+ event_irq = irq_create_mapping(port->event_domain, i);
|
|
+ if (!event_irq) {
|
|
+ dev_err(dev, "failed to map hwirq %d\n", i);
|
|
+ return -ENXIO;
|
|
+ }
|
|
+
|
|
+ if (event->request_event_irq)
|
|
+ ret = event->request_event_irq(port, event_irq, i);
|
|
+ else
|
|
+ ret = devm_request_irq(dev, event_irq,
|
|
+ plda_event_handler,
|
|
+ 0, NULL, port);
|
|
+
|
|
+ if (ret) {
|
|
+ dev_err(dev, "failed to request IRQ %d\n", event_irq);
|
|
+ return ret;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ intx_irq = irq_create_mapping(port->event_domain,
|
|
+ event->intx_event);
|
|
+ if (!intx_irq) {
|
|
+ dev_err(dev, "failed to map INTx interrupt\n");
|
|
+ return -ENXIO;
|
|
+ }
|
|
+
|
|
+ /* Plug the INTx chained handler */
|
|
+ irq_set_chained_handler_and_data(intx_irq, plda_handle_intx, port);
|
|
+
|
|
+ msi_irq = irq_create_mapping(port->event_domain,
|
|
+ event->msi_event);
|
|
+ if (!msi_irq)
|
|
+ return -ENXIO;
|
|
+
|
|
+ /* Plug the MSI chained handler */
|
|
+ irq_set_chained_handler_and_data(msi_irq, plda_handle_msi, port);
|
|
+
|
|
+ /* Plug the main event chained handler */
|
|
+ irq_set_chained_handler_and_data(irq, plda_handle_event, port);
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+EXPORT_SYMBOL_GPL(plda_init_interrupts);
|
|
+
|
|
void plda_pcie_setup_window(void __iomem *bridge_base_addr, u32 index,
|
|
phys_addr_t axi_addr, phys_addr_t pci_addr,
|
|
size_t size)
|
|
diff --git a/drivers/pci/controller/plda/pcie-plda.h b/drivers/pci/controller/plda/pcie-plda.h
|
|
index 0e5157eb3a32..eb9e6f304985 100644
|
|
--- a/drivers/pci/controller/plda/pcie-plda.h
|
|
+++ b/drivers/pci/controller/plda/pcie-plda.h
|
|
@@ -170,6 +170,9 @@ struct plda_event {
|
|
int msi_event;
|
|
};
|
|
|
|
+int plda_init_interrupts(struct platform_device *pdev,
|
|
+ struct plda_pcie_rp *port,
|
|
+ const struct plda_event *event);
|
|
void plda_pcie_setup_window(void __iomem *bridge_base_addr, u32 index,
|
|
phys_addr_t axi_addr, phys_addr_t pci_addr,
|
|
size_t size);
|
|
|
|
From patchwork Thu Mar 28 09:18:30 2024
|
|
Content-Type: text/plain; charset="utf-8"
|
|
MIME-Version: 1.0
|
|
Content-Transfer-Encoding: 7bit
|
|
X-Patchwork-Submitter: Minda Chen <minda.chen@starfivetech.com>
|
|
X-Patchwork-Id: 13608247
|
|
X-Patchwork-Delegate: kw@linux.com
|
|
Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn
|
|
(mail-sh0chn02on2091.outbound.protection.partner.outlook.cn [139.219.146.91])
|
|
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
|
|
(No client certificate requested)
|
|
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4800C7EF02;
|
|
Thu, 28 Mar 2024 09:19:12 +0000 (UTC)
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
arc=fail smtp.client-ip=139.219.146.91
|
|
ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
|
|
t=1711617555; cv=fail;
|
|
b=GjqYScZAVMSZk6cQ15dvCm8xXem5NoUoe5Rs86eR7TCafq2mYsewC0zNqz0d9fRoSazKAyE9VCq2bdtNFxQUhWcnWG7Fs+8yEZOwIhn80eLv2nfVCswQQiBiCBXu597/Uk/832QockBgVGv30rwPotv6pk9naSyfQqGrtT50G0w=
|
|
ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org;
|
|
s=arc-20240116; t=1711617555; c=relaxed/simple;
|
|
bh=XbMLnGPr5OBqbh93HvQzXgOBeg1vYpKPC7MBOBuc8Xw=;
|
|
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
|
|
Content-Type:MIME-Version;
|
|
b=pK7P6cVkuOiNu9FLQf9I/aROVyclwqZJ5gLWndaWTkd1iYbpPaTM67ykxb2K3o5AMW7dMnhKqEULEKAfhwGUXixoneag2Pv5OTMjW1n2w2c56VfGEUbYEMNI0SuisH1BBf7K6hkfuZtrN5QJssQiqiCC+s5Izq3PsUNIQBg0gxY=
|
|
ARC-Authentication-Results: i=2; smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com;
|
|
spf=pass smtp.mailfrom=starfivetech.com;
|
|
arc=fail smtp.client-ip=139.219.146.91
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
spf=pass smtp.mailfrom=starfivetech.com
|
|
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
|
|
b=PrSepQpN4opVeF1rOD46G5/83Bv7lOnzHG7vpLbdhqny7446IN9SvBw07Z49ONEEdek+75Cpu2LR6wS+5sJab6hugLSP/4EUxTP/his1HTzOO3V63/oSX9IfiUIrU32pG8xGrVp5qCF6P8j9Dg78f/AKM+QVsbBFPqzYSxu/IufbNOX3R03ozNwygyWrjdLjPNaYkGMv3hfAtWzMUglX1s/L9tZHGF9eDbko/KtFCAtsYJLdg261+mN/DymEZPuSI+UpmYmlh9H4gG1WK+iyCtb9E7uqGCrSYJaKP9SZQMwgWHjcY98Mc9I9qrEUvLbuVC1tkpTLRC42nQQ6LdJDLA==
|
|
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
|
|
s=arcselector9901;
|
|
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
|
|
bh=pQYnRzgxovFl7xfimnJKAB/d4LfDLVgqCHac1Hq3w/w=;
|
|
b=KWO75eC0za749YWoYBVcHQwBy9hUUx0QlriFJvr/IpepR5OLsyxEE9oPywLJJtbeK3LMqWNpkYYSjbbUjjtaZZW0vWXaryygIMQFT9e/Qqp9HzH/hwD1ZIPfMnXlIYymcqyfBWa6NoBIuqV8hhQjKUS/29g6JqbSGZWq3BrXv/kLX+i/VoM/5Rnh0Zmlf2qNv6ccLlY+2V9NauXM1QYr/0Utw+ZUcNR4YG0gzMbD/RwJw3Dgy3zCWZXmVvNzrJXWNE9tbsFXvPye0i/Tz4zumlEnoemBxoz3JTZMk/wVhvD5uzMvHSWZfNL6m240vCmUD7IBu9+EIOKQYpWR59vRzA==
|
|
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
|
|
smtp.mailfrom=starfivetech.com; dmarc=pass action=none
|
|
header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none
|
|
Authentication-Results: dkim=none (message not signed)
|
|
header.d=none;dmarc=none action=none header.from=starfivetech.com;
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15) by SHXPR01MB0559.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:1d::22) with Microsoft SMTP Server (version=TLS1_2,
|
|
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Thu, 28 Mar
|
|
2024 09:19:01 +0000
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
([fe80::c738:9e6b:f92e:8bb9]) by
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn ([fe80::c738:9e6b:f92e:8bb9%6])
|
|
with mapi id 15.20.7409.031; Thu, 28 Mar 2024 09:19:01 +0000
|
|
From: Minda Chen <minda.chen@starfivetech.com>
|
|
To: Lorenzo Pieralisi <lpieralisi@kernel.org>,
|
|
Conor Dooley <conor@kernel.org>,
|
|
=?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kw@linux.com>,
|
|
Rob Herring <robh+dt@kernel.org>, Bjorn Helgaas <bhelgaas@google.com>,
|
|
Thomas Gleixner <tglx@linutronix.de>,
|
|
Daire McNamara <daire.mcnamara@microchip.com>,
|
|
Emil Renner Berthing <emil.renner.berthing@canonical.com>,
|
|
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
|
|
Cc: devicetree@vger.kernel.org,
|
|
linux-kernel@vger.kernel.org,
|
|
linux-riscv@lists.infradead.org,
|
|
linux-pci@vger.kernel.org,
|
|
Paul Walmsley <paul.walmsley@sifive.com>,
|
|
Palmer Dabbelt <palmer@dabbelt.com>,
|
|
Albert Ou <aou@eecs.berkeley.edu>,
|
|
Philipp Zabel <p.zabel@pengutronix.de>,
|
|
Mason Huo <mason.huo@starfivetech.com>,
|
|
Leyfoon Tan <leyfoon.tan@starfivetech.com>,
|
|
Kevin Xie <kevin.xie@starfivetech.com>,
|
|
Minda Chen <minda.chen@starfivetech.com>
|
|
Subject: [PATCH v16 17/22] PCI: plda: Add event bitmap field to struct
|
|
plda_pcie_rp
|
|
Date: Thu, 28 Mar 2024 17:18:30 +0800
|
|
Message-Id: <20240328091835.14797-18-minda.chen@starfivetech.com>
|
|
X-Mailer: git-send-email 2.17.1
|
|
In-Reply-To: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
References: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
X-ClientProxiedBy: NT0PR01CA0020.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c510:c::16) To SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15)
|
|
Precedence: bulk
|
|
X-Mailing-List: linux-pci@vger.kernel.org
|
|
List-Id: <linux-pci.vger.kernel.org>
|
|
List-Subscribe: <mailto:linux-pci+subscribe@vger.kernel.org>
|
|
List-Unsubscribe: <mailto:linux-pci+unsubscribe@vger.kernel.org>
|
|
MIME-Version: 1.0
|
|
X-MS-PublicTrafficType: Email
|
|
X-MS-TrafficTypeDiagnostic: SHXPR01MB0863:EE_|SHXPR01MB0559:EE_
|
|
X-MS-Office365-Filtering-Correlation-Id: 445ab9f0-8715-4448-ce72-08dc4f081ae7
|
|
X-MS-Exchange-SenderADCheck: 1
|
|
X-Microsoft-Antispam: BCL:0;
|
|
X-Microsoft-Antispam-Message-Info:
|
|
LFrwNV9G7r3bH8mdxWrN2c4nxtkXeQwqwQkUdQg/rsoxJs1qWOKzhPrtTXsbxjWXvbJh96scV3QXKAJTvgkNq4o6YlOmsC/V9JTpAvS9hUCEDtRuRN9NoMOfsegvQ03abhmph/Mwa3DTHb7qstuicMZl3GSU/5I83031wZ+acbF/ef5aKnIKw5/g18nvLXWv8GwT091fGa5dUs2Hw5edcxWpHDzEnonDMgTp6X3ODy5Yk3GAwrJau1DXYHZorAM3dkwdDFEejzpwWFt4bUp30+Jn2D4se3QoDG4Ydhrhb4zSOvUsB4CHfdnClTR58yuiftLanQd+m3Qusa1+roZx51SM97DJsRBIVZ2rVzu36vVu9Rtq7ET5aOwdAAAnBARLUcxWUBcMu3AS9yy3qbo4wCd5hXFwsFQ7fS74HjJnQWCObKZokp4XxhV7oz6RLP3EbMrY4dNZa7ged2qh97L2dThKjY/NCYUCkj3X8u5II/XbYkk6xWyKG+bFHbYb50i8kL+C9PeWv6kjRDdnpexgr4smARhjXGrm4bQnWcdEO8yhntj/5VP88GQ3Awg9K11xwI9E9kuLhdojkqYxlZOaFVuu9anqcdpGx4d7nfyAqaCDqyZpcSGsiY8Qab8lWj8T
|
|
X-Forefront-Antispam-Report:
|
|
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230031)(1800799015)(52116005)(7416005)(41320700004)(366007)(38350700005);DIR:OUT;SFP:1102;
|
|
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
|
|
X-MS-Exchange-AntiSpam-MessageData-0:
|
|
co3SV48NyqBhJP1EuNn6z2TAOGrrkH0eDOl4gm3+s2Ovmjkp8X7o1NqNu/4yNK44wKBeG6p5p7MPZQ7PByv5yfW2YM9ijFci/VF7DbgiYfkytyQzLQ3UXOYlIXqMzGKwaOKY32ORwWQxmxZ/rwHFT3WX3nWgGye+g005x+VRVjSNilIxH/RDgTRWYabN3+YcqCLcxKeO1STIvHX7umiTjUcHOZqfpiOi0hve6kuHHrcKlmSQF386gYq1UheITDPnO5DH3/fWddg2cXhDQy7xOWCVpUenCr98G0WRnHXpPVI6WchcsBOUctt5PZA8BL8eUl5Intbekf+k0uTu0pnbTiXpj9pFqdwxygNedtk4trxKh8QKThTh5CfZ1YJ1TZ7+dkgp1mc7oFAAwycVsKZlS13Oyo47BR5EVOL4g/PZn7+CQA3I0kHX55xcRH/oeZt13H0yty+spgAeuFN7SC+KoYIQXJYNVenHWoQZFcSW5Z2nnPKw9zN1NWzQkwcH0JE0LCsiu5V0FsFaLvNQHWGBSM8L3IlKvxmUfY3LKJ2ncb3+ooAap2wn5L+7mUjl1kx0avOxX25U3uaeGvt/ZRV5We4Vx/OzHMTIxJqxM27mwZZrFiC6MzKNYoU7tUudvw3bFdd0LOefgIGzeanp+LYh9fuwGTd7nJX2Z4qJ5i4uxH1XotgI4ZN5qylyq+raOx64pIuMWdDXXz0YUQxhVnRGq97gYK7s67yNpbYPCpEA2Hin0sZospH2FV4ApOBaOjNFUacJqzhiVkNUfX1iLTirmzpiX0bXyeqT9wZcGB/r4/LaipXdpCioRyKJ4/tRwkHNuStmH9LfBzRDz4orNQGYl0GrF5h1NlvW+rQk2JJZbMiy5L+jvusb6pihTYQyfvprGUEjI12SaEiwOj9UzSkGLbi52/mj/CGLB7gF79p7+pZU/hKnmMic8hm55VRoD+iCsVba4Fzx7dSrL7jpKAd/Z6laIp03O1cHcfde57/Zgxv22HLynKOKTUdBLssozzBxnFkeerOwqgUL7l1adol9/Ld9XdwCiIPLwo3PyTt2KNGQhv9l4GOWcKr3jO2vw968k6LDRYmv1wn++6hvHwiV5Ej1YC/DeoDVaoVuQoUrZzQelX1fkY+a0KI4mO/Ts2lIQVB3/chO3G3j+suexUI8VPckaXqEYYNC8Oq1tcLS2gnm5KrqTM81fWfQfD7DhAufQyJA0Es2MMGRIwl5wjpxTkW2uN2fhlNyXMmchwsVGGTB7juiKp9xo8n09iFAGlQgesTCdwIx6JwPHTQ0WY4SHSXchiEfi5yZAxUB6FBKH+8OSrmcZRF1/4Jx6KgtcdcI4GxL//pYwfXJ/otwwLHAcoAJeUqj0c+FXj646YSK/oA+un+ga0qPpDEBp8WrF6rNT/k4SipNxBpHjqpqrAPfBtYaweorQ5uzsIFUO/4KAbYkoy0osPdQ2YAlTXMfM0ncZ8QjVFEwDkR7kodfAzzYLOoMxQfmEvmyQ+05zqHgalPcS7RfC854JM/KfOC51O6FCHFdGtSgTsHL7K3NOe68YNC3YAXLdwynBUT6XbbVa1xQapHb99Fsbze5C6b/BdeOxTVYvdDNWH+xRu+o758/9g==
|
|
X-OriginatorOrg: starfivetech.com
|
|
X-MS-Exchange-CrossTenant-Network-Message-Id:
|
|
445ab9f0-8715-4448-ce72-08dc4f081ae7
|
|
X-MS-Exchange-CrossTenant-AuthSource:
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
X-MS-Exchange-CrossTenant-AuthAs: Internal
|
|
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2024 09:19:01.0705
|
|
(UTC)
|
|
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
|
|
X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c
|
|
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
|
|
X-MS-Exchange-CrossTenant-UserPrincipalName:
|
|
TkqVPJJR+bgUukJx7rXKeKr4jWQZjMmifurDk01S6s2+cHF66fBkoUhDl0EfxWhHsJWAnYcm94MG4Hxlx+9K3koLBsR8Jg6DMFYLMQtWOT4=
|
|
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SHXPR01MB0559
|
|
|
|
PLDA DMA interrupts are not all implemented, The non-implemented
|
|
interrupts should be masked. So add a bitmap field to mask the non-
|
|
implemented interrupts.
|
|
|
|
Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
|
|
---
|
|
drivers/pci/controller/plda/pcie-microchip-host.c | 1 +
|
|
drivers/pci/controller/plda/pcie-plda-host.c | 6 ++++--
|
|
drivers/pci/controller/plda/pcie-plda.h | 1 +
|
|
3 files changed, 6 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/drivers/pci/controller/plda/pcie-microchip-host.c b/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
index 105964306b71..48f60a04b740 100644
|
|
--- a/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
+++ b/drivers/pci/controller/plda/pcie-microchip-host.c
|
|
@@ -636,6 +636,7 @@ static int mc_platform_init(struct pci_config_window *cfg)
|
|
|
|
port->plda.event_ops = &mc_event_ops;
|
|
port->plda.event_irq_chip = &mc_event_irq_chip;
|
|
+ port->plda.events_bitmap = GENMASK(NUM_EVENTS - 1, 0);
|
|
|
|
/* Address translation is up; safe to enable interrupts */
|
|
ret = plda_init_interrupts(pdev, &port->plda, &mc_event);
|
|
diff --git a/drivers/pci/controller/plda/pcie-plda-host.c b/drivers/pci/controller/plda/pcie-plda-host.c
|
|
index 98c51e594efe..a040e7e5492f 100644
|
|
--- a/drivers/pci/controller/plda/pcie-plda-host.c
|
|
+++ b/drivers/pci/controller/plda/pcie-plda-host.c
|
|
@@ -290,6 +290,7 @@ static void plda_handle_event(struct irq_desc *desc)
|
|
|
|
events = port->event_ops->get_events(port);
|
|
|
|
+ events &= port->events_bitmap;
|
|
for_each_set_bit(bit, &events, port->num_events)
|
|
generic_handle_domain_irq(port->event_domain, bit);
|
|
|
|
@@ -420,8 +421,9 @@ int plda_init_interrupts(struct platform_device *pdev,
|
|
{
|
|
struct device *dev = &pdev->dev;
|
|
int irq;
|
|
- int i, intx_irq, msi_irq, event_irq;
|
|
+ int intx_irq, msi_irq, event_irq;
|
|
int ret;
|
|
+ u32 i;
|
|
|
|
if (!port->event_ops)
|
|
port->event_ops = &plda_event_ops;
|
|
@@ -439,7 +441,7 @@ int plda_init_interrupts(struct platform_device *pdev,
|
|
if (irq < 0)
|
|
return -ENODEV;
|
|
|
|
- for (i = 0; i < port->num_events; i++) {
|
|
+ for_each_set_bit(i, &port->events_bitmap, port->num_events) {
|
|
event_irq = irq_create_mapping(port->event_domain, i);
|
|
if (!event_irq) {
|
|
dev_err(dev, "failed to map hwirq %d\n", i);
|
|
diff --git a/drivers/pci/controller/plda/pcie-plda.h b/drivers/pci/controller/plda/pcie-plda.h
|
|
index eb9e6f304985..c3d8c141e44d 100644
|
|
--- a/drivers/pci/controller/plda/pcie-plda.h
|
|
+++ b/drivers/pci/controller/plda/pcie-plda.h
|
|
@@ -160,6 +160,7 @@ struct plda_pcie_rp {
|
|
const struct plda_event_ops *event_ops;
|
|
const struct irq_chip *event_irq_chip;
|
|
void __iomem *bridge_addr;
|
|
+ unsigned long events_bitmap;
|
|
int num_events;
|
|
};
|
|
|
|
|
|
From patchwork Thu Mar 28 09:18:31 2024
|
|
Content-Type: text/plain; charset="utf-8"
|
|
MIME-Version: 1.0
|
|
Content-Transfer-Encoding: 7bit
|
|
X-Patchwork-Submitter: Minda Chen <minda.chen@starfivetech.com>
|
|
X-Patchwork-Id: 13608248
|
|
X-Patchwork-Delegate: kw@linux.com
|
|
Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn
|
|
(mail-sh0chn02on2136.outbound.protection.partner.outlook.cn
|
|
[139.219.146.136])
|
|
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
|
|
(No client certificate requested)
|
|
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2FD837F480;
|
|
Thu, 28 Mar 2024 09:19:14 +0000 (UTC)
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
arc=fail smtp.client-ip=139.219.146.136
|
|
ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
|
|
t=1711617556; cv=fail;
|
|
b=D5uxSQ39svhzHB5/M/71KI5jR2rg4ojitaRHOVUNykKowTVwmt6YThnOgGwSrv4i8do0dbOQoc91mCQTvIXRKht0qTzDfsl3007Sdq4n5eHFXW0iHKJ2pdjhr3a4MsTaBx/EjkcGVjpoA47pD+WpX0jJ+xbokwwfHn7HRCZzvOo=
|
|
ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org;
|
|
s=arc-20240116; t=1711617556; c=relaxed/simple;
|
|
bh=4PvAHjWntMoBOFhRfRhHPiK+FmKDVaOOAV6t0L+67Hk=;
|
|
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
|
|
Content-Type:MIME-Version;
|
|
b=aa0V33+jSZ5CDGUtkoLSIzoEZD24CZuNJ/gUL4Pa5YBgAbDxREe12EmRvJrIqEfqND1x+rTASe2z+5K7eOjYhqUL5ruQCe3AOWtCHiTYv1TCvW9s1fPEh7NQFkG+jQq22HnVOb93eMyvYc0YwhShV7lbrDuz8jEdiU4x+jc+TfE=
|
|
ARC-Authentication-Results: i=2; smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com;
|
|
spf=pass smtp.mailfrom=starfivetech.com;
|
|
arc=fail smtp.client-ip=139.219.146.136
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
spf=pass smtp.mailfrom=starfivetech.com
|
|
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
|
|
b=QO7388Tx/8AWBjlPwDNb3P0t2Fcq2Hv4VA4W43hO+Olczp79yR494P9k0iA8yIlMZyJdxRH1QUVMiaF4q+a7EIyZMLknbTfSBRbzxGXzovP/ITNlDIKafsENHZXzr5bD+kzrztICCqrtrL5eaduP2TDOnrf3BghtJ6eAVwUGU8k7oOsRaIwADk/TGEgZeJ+KgQP9Uic7IJU7f15RFrP6AcN7ckpSXOt8Ga8jEbqkTPXMIqbmMJhOEVb4Z2mj6YuFUP3hicjZl1PwVtgCZhXMHUvm69Jscyi8IbVqIxrB6LyfGwJyHK75g9GEXwVMoOJBOZsTRaK238g7Nu9J7lqOvw==
|
|
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
|
|
s=arcselector9901;
|
|
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
|
|
bh=ncDs6jP9pGy8jGxNbXXrSMdY1MZC4+bmB0C9FDghPh0=;
|
|
b=lfaFWmgJyG2lg8zy+DuKMev9hV+xGwxSHXmwKGnEwgBfDlRLBmVkREn+6ryZ6A8xll6Du7MFU0SEbXSkOvG4um64GwllXr7Ht7Rzls26zPORy9GAT6yOT9r1DqC6x6op0gtS/zeBFIlwhNxz6TZe3IXwXQwd9xzBrHAfb8ok/V5dKOzVQZlTrtivE+KqUpDV5vC1oeloYkMY1m4U2bsDOymlRvO77oYlqb2DrDfo+3lSwxrz3CaOWEtg0BGUjgkbdOjdjbTvUv6rRhF8bIqnRWv703U51sVM7iN3ZEq+6u/Vz2HEh9nB/5B+QBvg/E4gFF0y8WZChPQ2azaAKjXwEg==
|
|
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
|
|
smtp.mailfrom=starfivetech.com; dmarc=pass action=none
|
|
header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none
|
|
Authentication-Results: dkim=none (message not signed)
|
|
header.d=none;dmarc=none action=none header.from=starfivetech.com;
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15) by SHXPR01MB0559.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:1d::22) with Microsoft SMTP Server (version=TLS1_2,
|
|
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Thu, 28 Mar
|
|
2024 09:19:02 +0000
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
([fe80::c738:9e6b:f92e:8bb9]) by
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn ([fe80::c738:9e6b:f92e:8bb9%6])
|
|
with mapi id 15.20.7409.031; Thu, 28 Mar 2024 09:19:02 +0000
|
|
From: Minda Chen <minda.chen@starfivetech.com>
|
|
To: Lorenzo Pieralisi <lpieralisi@kernel.org>,
|
|
Conor Dooley <conor@kernel.org>,
|
|
=?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kw@linux.com>,
|
|
Rob Herring <robh+dt@kernel.org>, Bjorn Helgaas <bhelgaas@google.com>,
|
|
Thomas Gleixner <tglx@linutronix.de>,
|
|
Daire McNamara <daire.mcnamara@microchip.com>,
|
|
Emil Renner Berthing <emil.renner.berthing@canonical.com>,
|
|
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
|
|
Cc: devicetree@vger.kernel.org,
|
|
linux-kernel@vger.kernel.org,
|
|
linux-riscv@lists.infradead.org,
|
|
linux-pci@vger.kernel.org,
|
|
Paul Walmsley <paul.walmsley@sifive.com>,
|
|
Palmer Dabbelt <palmer@dabbelt.com>,
|
|
Albert Ou <aou@eecs.berkeley.edu>,
|
|
Philipp Zabel <p.zabel@pengutronix.de>,
|
|
Mason Huo <mason.huo@starfivetech.com>,
|
|
Leyfoon Tan <leyfoon.tan@starfivetech.com>,
|
|
Kevin Xie <kevin.xie@starfivetech.com>,
|
|
Minda Chen <minda.chen@starfivetech.com>
|
|
Subject: [PATCH v16 18/22] PCI: plda: Add host init/deinit and map bus
|
|
functions
|
|
Date: Thu, 28 Mar 2024 17:18:31 +0800
|
|
Message-Id: <20240328091835.14797-19-minda.chen@starfivetech.com>
|
|
X-Mailer: git-send-email 2.17.1
|
|
In-Reply-To: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
References: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
X-ClientProxiedBy: NT0PR01CA0020.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c510:c::16) To SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15)
|
|
Precedence: bulk
|
|
X-Mailing-List: linux-pci@vger.kernel.org
|
|
List-Id: <linux-pci.vger.kernel.org>
|
|
List-Subscribe: <mailto:linux-pci+subscribe@vger.kernel.org>
|
|
List-Unsubscribe: <mailto:linux-pci+unsubscribe@vger.kernel.org>
|
|
MIME-Version: 1.0
|
|
X-MS-PublicTrafficType: Email
|
|
X-MS-TrafficTypeDiagnostic: SHXPR01MB0863:EE_|SHXPR01MB0559:EE_
|
|
X-MS-Office365-Filtering-Correlation-Id: d7da7d95-9afe-4239-7ab1-08dc4f081b7f
|
|
X-MS-Exchange-SenderADCheck: 1
|
|
X-Microsoft-Antispam: BCL:0;
|
|
X-Microsoft-Antispam-Message-Info:
|
|
B3G1EKcr8VSaCv6hSy8kNA0wGDd9amSBukaIbZ1QZJYrnCTLDrIbV1Z9a8izb2aN8Bwh9Ywm4ztsucuwtFDlXvxh2dqIpcm52DIbV/O9ABaNemHgk/xvGRW22JHv9dWoXDtWoKd0+B+Y5U6VsjBcMmh7Q/XvYiP0C6XamcxT+ooOnP6N+QsKUzDb2ZnVEd2/6Rr8igwGvyQTyMP6CyBUt00fj6XvqweGO2LqjhBzoXWlrDTHR9gpS9DCPSLJji0H7xUNremTQPz+UfVg81UgHHW/rtNg1zDJmab0HJ7voUpfhngawZETVsX29GH+YeD8jTi1GEMRFQ52NmWSG6mGyY8sphV0L+lR8BlcyYTJIpYK54uA8uPAOcjARb+cQW2A2zXhnPpFCR+n5CEg5Shl2NGLOlCEUdyPJTT9N3+fjndgZqEKlJrBfF+cY6QbDkBjkc5+586Yf1HAKTktIWNENxmPBwzJI/BmRxEufXxeShbafXiHNal1CXtZYHeVXqc4SRExqygDYuqGSZNGrfn6LtXgJPUaJJNnCF79XTs1tVAxVquW20PmyDKFXbc5C4MJ3fB1ZOl/7JPlkKpHSeT2inHP6n56dBkKWzX9NRESjrSzKgBCLMHZW/uOGlT51UZR
|
|
X-Forefront-Antispam-Report:
|
|
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230031)(1800799015)(52116005)(7416005)(41320700004)(366007)(38350700005);DIR:OUT;SFP:1102;
|
|
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
|
|
X-MS-Exchange-AntiSpam-MessageData-0:
|
|
7NJQfKq9jLscQxaZjnE8LbDdIFEt6a3okjdqCYLWJ8e1z1b1ybKYrLQgsKdxZmPSlSffIFM1XFDwHzj+Dn8tNGONqf9taeme0wJFeSa76pYN4064cbdvIUjbL/gGs0j+F/Wg1Smcipsk+xuj6ze00hzAQJELE9Wso1Q/wQQFQvYkByk6irnfS2yO+vLVVf6O+NqUx4ibknbqBu28lR58VTJV34PKdL3sVrFwgLWXvRMKXQ2V+lWlCxGgTcLHn5l+b7jVGvMI92T7exYl9jvVfL13hjNy4+DuhfySOOeOCh5Gw7JauHGvlda61GoD1J/iekfBXq+Iv9gE+hfrjE5g7jgEATcrZk+2wgSNRAusXP07oPqk06A5W90wRzrUA09STsVbXdVACLUPBrYhVDbXVh7tEcoeTdtDIa4F7sjFiFF4PHKm0zrDX64JrpogsYo2L4mYhoB7tIWLLfUrHuwrEZrg36vXECJNmidxh+Nzye+ahHNZ+xUVk5EGYQ7qBD/+jwZgxO247EefpNhXioCHj8AhCzkKzcpHcefHK/yMm/oVGsQpDXHjz6JHYzXVYolFvyDO3/QyQ7I458Nl7xKWclvtPQ234lZt5m9v/5jpntS5x/bCe9BrZu0ES+PgBAcbqrkayj6vmd58SsTUu3KW1vo9BLD0GHHHxrbG6ZFYp9YwCB+LvIr0Xl4XzkNUMeWk9ROq/BdIJw4Cw3yOaXo2+WpV4Uvvf8gOew/hLN8anfK67mCcIHX7g3Ol+5kSGrOqVKoCCYa/XHiWTTm5vOZ1B+FW9kRryGN83pKCKHDQ7yczhaDd8Kfl/eYukzhoBi9uE7xEhQ9jWRax98A+qPMrIBBaJ69orrEx8XJSrvKEkxaBiaDNjiYwME6xib9VRzeLgfXKZKgnZlnlzVNe2w4cL5v/GeW3SwZB0IOhoKb+4D5q4K0G+SerUW7axYkjat2bsEfqMN8hNdiuz9tb8gxorm+BAg9CRz8iJM0QlZUo0tvWSlfFeeSuc6Efbo5HnhdBOi47F7GsEGhki6/l6dzhcXiU29Jq6bluvKYSFviC9AwT1+hM3b+Tyrpcn4JyAGK9lVaUvhoYc39THt2ruI8K+t6E+F0zMBVaCta8eeO2tSSYnHnSaLD/k29PThdTZmH3QCcECFk7uyhWivqrgFevNqkllTO9nfNvt8H4jnZEkyfY3WK/I7mKDFUeWxKTkrepQEUGCnlVZ/FudvwCdllp55orwWuDlPPt8PUjdaezac/C3ioATBWmfEZUPlXW2Ca0zZFqGOHmUYIWzP9Wlb5SjavzP0nGHvn0BQL64/cXdojS7epRnYPldFKJCVHH0aw10bhwgOjl9EzfEOUenySbm0gHUzkNvZZX9TZysZ+nzeEG/zHXeGi/t6qIaC2pZDPPRZqHbKuudbT1zVopdJ7ueEtKQ5daX3AupTdPTbWiizRQWXLCUZ9PkeNYm8OJRJwSAxjqsDp4cJUirCNXPKIpaEWx4VpoxlRr+iAHp5IURSBBO5wwqIHQOqnCwEfpQiLNCIbO9jqrGZGL5MUab5XZ6YXD/a/kGJQ9NJryKDzgPOdV1N2pPHeDpWxirVHqRFS9Pxpp0H9VtJss4MOfj3071g==
|
|
X-OriginatorOrg: starfivetech.com
|
|
X-MS-Exchange-CrossTenant-Network-Message-Id:
|
|
d7da7d95-9afe-4239-7ab1-08dc4f081b7f
|
|
X-MS-Exchange-CrossTenant-AuthSource:
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
X-MS-Exchange-CrossTenant-AuthAs: Internal
|
|
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2024 09:19:02.0429
|
|
(UTC)
|
|
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
|
|
X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c
|
|
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
|
|
X-MS-Exchange-CrossTenant-UserPrincipalName:
|
|
49e1BovqeCOzyg8RkRI1BRrtGRyfNR51YwfHWPMnzEJvbJoNR8R9o+NCl2vYnY/UcVxhT1QX88JWWUjbqjNZtZPAeAkgCp1jpAMDMLW8UHU=
|
|
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SHXPR01MB0559
|
|
|
|
Add PLDA host plda_pcie_host_init()/plda_pcie_host_deinit() and map bus
|
|
function. So vendor can use it to init PLDA PCIe host core.
|
|
|
|
Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
|
|
Reviewed-by: Mason Huo <mason.huo@starfivetech.com>
|
|
---
|
|
drivers/pci/controller/plda/pcie-plda-host.c | 131 +++++++++++++++++--
|
|
drivers/pci/controller/plda/pcie-plda.h | 22 ++++
|
|
2 files changed, 139 insertions(+), 14 deletions(-)
|
|
|
|
diff --git a/drivers/pci/controller/plda/pcie-plda-host.c b/drivers/pci/controller/plda/pcie-plda-host.c
|
|
index a040e7e5492f..a18923d7cea6 100644
|
|
--- a/drivers/pci/controller/plda/pcie-plda-host.c
|
|
+++ b/drivers/pci/controller/plda/pcie-plda-host.c
|
|
@@ -3,6 +3,7 @@
|
|
* PLDA PCIe XpressRich host controller driver
|
|
*
|
|
* Copyright (C) 2023 Microchip Co. Ltd
|
|
+ * StarFive Co. Ltd
|
|
*
|
|
* Author: Daire McNamara <daire.mcnamara@microchip.com>
|
|
*/
|
|
@@ -15,6 +16,15 @@
|
|
|
|
#include "pcie-plda.h"
|
|
|
|
+void __iomem *plda_pcie_map_bus(struct pci_bus *bus, unsigned int devfn,
|
|
+ int where)
|
|
+{
|
|
+ struct plda_pcie_rp *pcie = bus->sysdata;
|
|
+
|
|
+ return pcie->config_base + PCIE_ECAM_OFFSET(bus->number, devfn, where);
|
|
+}
|
|
+EXPORT_SYMBOL_GPL(plda_pcie_map_bus);
|
|
+
|
|
static void plda_handle_msi(struct irq_desc *desc)
|
|
{
|
|
struct plda_pcie_rp *port = irq_desc_get_handler_data(desc);
|
|
@@ -420,9 +430,7 @@ int plda_init_interrupts(struct platform_device *pdev,
|
|
const struct plda_event *event)
|
|
{
|
|
struct device *dev = &pdev->dev;
|
|
- int irq;
|
|
- int intx_irq, msi_irq, event_irq;
|
|
- int ret;
|
|
+ int event_irq, ret;
|
|
u32 i;
|
|
|
|
if (!port->event_ops)
|
|
@@ -437,8 +445,8 @@ int plda_init_interrupts(struct platform_device *pdev,
|
|
return ret;
|
|
}
|
|
|
|
- irq = platform_get_irq(pdev, 0);
|
|
- if (irq < 0)
|
|
+ port->irq = platform_get_irq(pdev, 0);
|
|
+ if (port->irq < 0)
|
|
return -ENODEV;
|
|
|
|
for_each_set_bit(i, &port->events_bitmap, port->num_events) {
|
|
@@ -461,26 +469,26 @@ int plda_init_interrupts(struct platform_device *pdev,
|
|
}
|
|
}
|
|
|
|
- intx_irq = irq_create_mapping(port->event_domain,
|
|
- event->intx_event);
|
|
- if (!intx_irq) {
|
|
+ port->intx_irq = irq_create_mapping(port->event_domain,
|
|
+ event->intx_event);
|
|
+ if (!port->intx_irq) {
|
|
dev_err(dev, "failed to map INTx interrupt\n");
|
|
return -ENXIO;
|
|
}
|
|
|
|
/* Plug the INTx chained handler */
|
|
- irq_set_chained_handler_and_data(intx_irq, plda_handle_intx, port);
|
|
+ irq_set_chained_handler_and_data(port->intx_irq, plda_handle_intx, port);
|
|
|
|
- msi_irq = irq_create_mapping(port->event_domain,
|
|
- event->msi_event);
|
|
- if (!msi_irq)
|
|
+ port->msi_irq = irq_create_mapping(port->event_domain,
|
|
+ event->msi_event);
|
|
+ if (!port->msi_irq)
|
|
return -ENXIO;
|
|
|
|
/* Plug the MSI chained handler */
|
|
- irq_set_chained_handler_and_data(msi_irq, plda_handle_msi, port);
|
|
+ irq_set_chained_handler_and_data(port->msi_irq, plda_handle_msi, port);
|
|
|
|
/* Plug the main event chained handler */
|
|
- irq_set_chained_handler_and_data(irq, plda_handle_event, port);
|
|
+ irq_set_chained_handler_and_data(port->irq, plda_handle_event, port);
|
|
|
|
return 0;
|
|
}
|
|
@@ -546,3 +554,98 @@ int plda_pcie_setup_iomems(struct pci_host_bridge *bridge,
|
|
return 0;
|
|
}
|
|
EXPORT_SYMBOL_GPL(plda_pcie_setup_iomems);
|
|
+
|
|
+static void plda_pcie_irq_domain_deinit(struct plda_pcie_rp *pcie)
|
|
+{
|
|
+ irq_set_chained_handler_and_data(pcie->irq, NULL, NULL);
|
|
+ irq_set_chained_handler_and_data(pcie->msi_irq, NULL, NULL);
|
|
+ irq_set_chained_handler_and_data(pcie->intx_irq, NULL, NULL);
|
|
+
|
|
+ irq_domain_remove(pcie->msi.msi_domain);
|
|
+ irq_domain_remove(pcie->msi.dev_domain);
|
|
+
|
|
+ irq_domain_remove(pcie->intx_domain);
|
|
+ irq_domain_remove(pcie->event_domain);
|
|
+}
|
|
+
|
|
+int plda_pcie_host_init(struct plda_pcie_rp *port, struct pci_ops *ops,
|
|
+ const struct plda_event *plda_event)
|
|
+{
|
|
+ struct device *dev = port->dev;
|
|
+ struct pci_host_bridge *bridge;
|
|
+ struct platform_device *pdev = to_platform_device(dev);
|
|
+ struct resource *cfg_res;
|
|
+ int ret;
|
|
+
|
|
+ pdev = to_platform_device(dev);
|
|
+
|
|
+ port->bridge_addr =
|
|
+ devm_platform_ioremap_resource_byname(pdev, "apb");
|
|
+
|
|
+ if (IS_ERR(port->bridge_addr))
|
|
+ return dev_err_probe(dev, PTR_ERR(port->bridge_addr),
|
|
+ "failed to map reg memory\n");
|
|
+
|
|
+ cfg_res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "cfg");
|
|
+ if (!cfg_res)
|
|
+ return dev_err_probe(dev, -ENODEV,
|
|
+ "failed to get config memory\n");
|
|
+
|
|
+ port->config_base = devm_ioremap_resource(dev, cfg_res);
|
|
+ if (IS_ERR(port->config_base))
|
|
+ return dev_err_probe(dev, PTR_ERR(port->config_base),
|
|
+ "failed to map config memory\n");
|
|
+
|
|
+ bridge = devm_pci_alloc_host_bridge(dev, 0);
|
|
+ if (!bridge)
|
|
+ return dev_err_probe(dev, -ENOMEM,
|
|
+ "failed to alloc bridge\n");
|
|
+
|
|
+ if (port->host_ops && port->host_ops->host_init) {
|
|
+ ret = port->host_ops->host_init(port);
|
|
+ if (ret)
|
|
+ return ret;
|
|
+ }
|
|
+
|
|
+ port->bridge = bridge;
|
|
+ plda_pcie_setup_window(port->bridge_addr, 0, cfg_res->start, 0,
|
|
+ resource_size(cfg_res));
|
|
+ plda_pcie_setup_iomems(bridge, port);
|
|
+ plda_set_default_msi(&port->msi);
|
|
+ ret = plda_init_interrupts(pdev, port, plda_event);
|
|
+ if (ret)
|
|
+ goto err_host;
|
|
+
|
|
+ /* Set default bus ops */
|
|
+ bridge->ops = ops;
|
|
+ bridge->sysdata = port;
|
|
+
|
|
+ ret = pci_host_probe(bridge);
|
|
+ if (ret < 0) {
|
|
+ dev_err_probe(dev, ret, "failed to probe pci host\n");
|
|
+ goto err_probe;
|
|
+ }
|
|
+
|
|
+ return ret;
|
|
+
|
|
+err_probe:
|
|
+ plda_pcie_irq_domain_deinit(port);
|
|
+err_host:
|
|
+ if (port->host_ops && port->host_ops->host_deinit)
|
|
+ port->host_ops->host_deinit(port);
|
|
+
|
|
+ return ret;
|
|
+}
|
|
+EXPORT_SYMBOL_GPL(plda_pcie_host_init);
|
|
+
|
|
+void plda_pcie_host_deinit(struct plda_pcie_rp *port)
|
|
+{
|
|
+ pci_stop_root_bus(port->bridge->bus);
|
|
+ pci_remove_root_bus(port->bridge->bus);
|
|
+
|
|
+ plda_pcie_irq_domain_deinit(port);
|
|
+
|
|
+ if (port->host_ops && port->host_ops->host_deinit)
|
|
+ port->host_ops->host_deinit(port);
|
|
+}
|
|
+EXPORT_SYMBOL_GPL(plda_pcie_host_deinit);
|
|
diff --git a/drivers/pci/controller/plda/pcie-plda.h b/drivers/pci/controller/plda/pcie-plda.h
|
|
index c3d8c141e44d..52f4cacf7917 100644
|
|
--- a/drivers/pci/controller/plda/pcie-plda.h
|
|
+++ b/drivers/pci/controller/plda/pcie-plda.h
|
|
@@ -142,6 +142,11 @@ struct plda_event_ops {
|
|
u32 (*get_events)(struct plda_pcie_rp *pcie);
|
|
};
|
|
|
|
+struct plda_pcie_host_ops {
|
|
+ int (*host_init)(struct plda_pcie_rp *pcie);
|
|
+ void (*host_deinit)(struct plda_pcie_rp *pcie);
|
|
+};
|
|
+
|
|
struct plda_msi {
|
|
struct mutex lock; /* Protect used bitmap */
|
|
struct irq_domain *msi_domain;
|
|
@@ -153,14 +158,20 @@ struct plda_msi {
|
|
|
|
struct plda_pcie_rp {
|
|
struct device *dev;
|
|
+ struct pci_host_bridge *bridge;
|
|
struct irq_domain *intx_domain;
|
|
struct irq_domain *event_domain;
|
|
raw_spinlock_t lock;
|
|
struct plda_msi msi;
|
|
const struct plda_event_ops *event_ops;
|
|
const struct irq_chip *event_irq_chip;
|
|
+ const struct plda_pcie_host_ops *host_ops;
|
|
void __iomem *bridge_addr;
|
|
+ void __iomem *config_base;
|
|
unsigned long events_bitmap;
|
|
+ int irq;
|
|
+ int msi_irq;
|
|
+ int intx_irq;
|
|
int num_events;
|
|
};
|
|
|
|
@@ -171,6 +182,8 @@ struct plda_event {
|
|
int msi_event;
|
|
};
|
|
|
|
+void __iomem *plda_pcie_map_bus(struct pci_bus *bus, unsigned int devfn,
|
|
+ int where);
|
|
int plda_init_interrupts(struct platform_device *pdev,
|
|
struct plda_pcie_rp *port,
|
|
const struct plda_event *event);
|
|
@@ -179,4 +192,13 @@ void plda_pcie_setup_window(void __iomem *bridge_base_addr, u32 index,
|
|
size_t size);
|
|
int plda_pcie_setup_iomems(struct pci_host_bridge *bridge,
|
|
struct plda_pcie_rp *port);
|
|
+int plda_pcie_host_init(struct plda_pcie_rp *port, struct pci_ops *ops,
|
|
+ const struct plda_event *plda_event);
|
|
+void plda_pcie_host_deinit(struct plda_pcie_rp *pcie);
|
|
+
|
|
+static inline void plda_set_default_msi(struct plda_msi *msi)
|
|
+{
|
|
+ msi->vector_phy = IMSI_ADDR;
|
|
+ msi->num_vectors = PLDA_MAX_NUM_MSI_IRQS;
|
|
+}
|
|
#endif
|
|
|
|
From patchwork Thu Mar 28 09:18:32 2024
|
|
Content-Type: text/plain; charset="utf-8"
|
|
MIME-Version: 1.0
|
|
Content-Transfer-Encoding: 7bit
|
|
X-Patchwork-Submitter: Minda Chen <minda.chen@starfivetech.com>
|
|
X-Patchwork-Id: 13608249
|
|
X-Patchwork-Delegate: kw@linux.com
|
|
Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn
|
|
(mail-sh0chn02on2091.outbound.protection.partner.outlook.cn [139.219.146.91])
|
|
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
|
|
(No client certificate requested)
|
|
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4772C7F7C7;
|
|
Thu, 28 Mar 2024 09:19:15 +0000 (UTC)
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
arc=fail smtp.client-ip=139.219.146.91
|
|
ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
|
|
t=1711617557; cv=fail;
|
|
b=cyWXFMZHuH4DB/CrOcj62RWj4cBMJumpLUVAJ67pQclfUBaDi+/8X0vH8Oiq9j5n2Kd1VW97qaGfhs8VQ9aQ02OSiHsodLbF01G5GeIdQRoS0FwnL6IfPGPCYJFbN5eXoFIAljv07pzU6byKwaJx8/RQJHQGqe7KBJZmpGTIlj4=
|
|
ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org;
|
|
s=arc-20240116; t=1711617557; c=relaxed/simple;
|
|
bh=uyb6I2C3gYC/16GGjWHNw+s6yhosktS7xsF6ITGT540=;
|
|
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
|
|
Content-Type:MIME-Version;
|
|
b=qwn8t1E1MWThzuRIel+yFdOLtGy0ztUAaBAIf3NkWHMY8qWow8u5rkzymCcfyR/oWphWdSoxEN0GjYBi6HfesxfEmPBabb3eynpvIMIUKlxIOv9gmV2aFVbHB75inyzj08K3MuUtGvzMfZe1TLgHhF2MA9L5AbVtPHJ7N7cbIMk=
|
|
ARC-Authentication-Results: i=2; smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com;
|
|
spf=pass smtp.mailfrom=starfivetech.com;
|
|
arc=fail smtp.client-ip=139.219.146.91
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
spf=pass smtp.mailfrom=starfivetech.com
|
|
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
|
|
b=S+vesFFt9WvrlUSEUBoBoWripsZVSi9hVKyY914jUOKNox4s/u68x+1VptJvWk8hZbP9zl33WtDMVLGs+UuDREH/hDNtjZyBtxnF0TUTizNlycypHKnD7nRlwGyE73M7FC7DqGSMYf5R9DsUmLAXjNwqogIU8bE7w8AZUxkyV/TlJJuMUGxL/y+64NPsrqRYfgXEOY8mRE6azkSTYIjOryeFpRZ8JL8JjzMBYo67HyN5s2XxzD4/srxLTD8tv2JF0nwgXwIogKREQdd7cO+HaW03bbLTkD1h/XV1eeIRKrOvYycT8QUPoGQ71cV+6Xy9SxQ9buGVT3PK5TrBMjqpuA==
|
|
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
|
|
s=arcselector9901;
|
|
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
|
|
bh=qHusBfssCi0Zf9y7h8AJ0i5YALEPObwaSdPyyYvQH0k=;
|
|
b=j8eM7p4y6NDdHmPfEgI5Du7yK2cRoo2ehuGcQmhzzIRq4lZOe9aAWZoxxhkLK3FQsocXrjFgX+3Lkgb7vboVu8YvcqvIhijNBOT1hib/6rOVeHLrnEJqOW06JrH596HWlWrXLuidnFDR2prWKo0KnUt7P+/vf8KSVP1YwiWXTfgLGT5YAL2qlrP61R2ttXB3Hagopea8Qdl3YdjFT7tnmDml6Bnh2zMvcbgVRULtaR1t6VFp+anDMychXn3z7CS5SEVJLNkxzIzRR8zwMBidJiYdiFfYLR5avp9pVhgSUhN7OrblvYBCyUjE/upP+7y9rHgA31z7Monx4+Jo5vibNw==
|
|
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
|
|
smtp.mailfrom=starfivetech.com; dmarc=pass action=none
|
|
header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none
|
|
Authentication-Results: dkim=none (message not signed)
|
|
header.d=none;dmarc=none action=none header.from=starfivetech.com;
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15) by SHXPR01MB0559.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:1d::22) with Microsoft SMTP Server (version=TLS1_2,
|
|
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Thu, 28 Mar
|
|
2024 09:19:03 +0000
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
([fe80::c738:9e6b:f92e:8bb9]) by
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn ([fe80::c738:9e6b:f92e:8bb9%6])
|
|
with mapi id 15.20.7409.031; Thu, 28 Mar 2024 09:19:03 +0000
|
|
From: Minda Chen <minda.chen@starfivetech.com>
|
|
To: Lorenzo Pieralisi <lpieralisi@kernel.org>,
|
|
Conor Dooley <conor@kernel.org>,
|
|
=?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kw@linux.com>,
|
|
Rob Herring <robh+dt@kernel.org>, Bjorn Helgaas <bhelgaas@google.com>,
|
|
Thomas Gleixner <tglx@linutronix.de>,
|
|
Daire McNamara <daire.mcnamara@microchip.com>,
|
|
Emil Renner Berthing <emil.renner.berthing@canonical.com>,
|
|
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
|
|
Cc: devicetree@vger.kernel.org,
|
|
linux-kernel@vger.kernel.org,
|
|
linux-riscv@lists.infradead.org,
|
|
linux-pci@vger.kernel.org,
|
|
Paul Walmsley <paul.walmsley@sifive.com>,
|
|
Palmer Dabbelt <palmer@dabbelt.com>,
|
|
Albert Ou <aou@eecs.berkeley.edu>,
|
|
Philipp Zabel <p.zabel@pengutronix.de>,
|
|
Mason Huo <mason.huo@starfivetech.com>,
|
|
Leyfoon Tan <leyfoon.tan@starfivetech.com>,
|
|
Kevin Xie <kevin.xie@starfivetech.com>,
|
|
Minda Chen <minda.chen@starfivetech.com>
|
|
Subject: [PATCH v16 19/22] dt-bindings: PCI: Add StarFive JH7110 PCIe
|
|
controller
|
|
Date: Thu, 28 Mar 2024 17:18:32 +0800
|
|
Message-Id: <20240328091835.14797-20-minda.chen@starfivetech.com>
|
|
X-Mailer: git-send-email 2.17.1
|
|
In-Reply-To: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
References: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
X-ClientProxiedBy: NT0PR01CA0020.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c510:c::16) To SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15)
|
|
Precedence: bulk
|
|
X-Mailing-List: linux-pci@vger.kernel.org
|
|
List-Id: <linux-pci.vger.kernel.org>
|
|
List-Subscribe: <mailto:linux-pci+subscribe@vger.kernel.org>
|
|
List-Unsubscribe: <mailto:linux-pci+unsubscribe@vger.kernel.org>
|
|
MIME-Version: 1.0
|
|
X-MS-PublicTrafficType: Email
|
|
X-MS-TrafficTypeDiagnostic: SHXPR01MB0863:EE_|SHXPR01MB0559:EE_
|
|
X-MS-Office365-Filtering-Correlation-Id: 191e3b49-1114-4f7b-7186-08dc4f081c14
|
|
X-MS-Exchange-SenderADCheck: 1
|
|
X-Microsoft-Antispam: BCL:0;
|
|
X-Microsoft-Antispam-Message-Info:
|
|
/zsGejwzM5eO6jcHavgWg9g75YX5sewmD9YZPsJ6FUO2Yz/wlNI68IH3CBGIk00Kx0+q+sAbhgfp4Q0GQtL/r2UtS0Lth7LXB95b7xf3nxjJ8GXqMxXBMKFtIr2tGBt4FZyiO0d8Udr/s8r2Ba5TjLDsCpLAX42g00FvN2tT/oEi9qMQ6FalL/uOmwO3jOHvsQEEO/mt8oBEUcO8irS53/tWvarv/9azca2ctKpYhmUkGUMBXYReV4+HrPguT18HLDyDES6+/Zs288ICDXE/310+nP+/jlXciUgdjA8gqKfJsWRGuSfeKQcatz9BpMjWlSDZZLsnai5Yw1eLQTe/MbEA6zExGHzK74dvzv7rH7tpsQTdU3an5w4iOIvbd+F2Z/+cG7v1EJHTdsUU1FgqSX4i6q52Zxv9fYo1ATGA9PD7URvJV5mHKXfOQFPQ8zNIQ8VkgP+tB1vckI8SFXyPNWaZdd8GxaNiDN76/DTD1tATR6iAKHZ24DWVDhUzzvA+etkzKriKYqbNQlHLM49CQZM4FjRtjsuYOygHshypwEbLcgjTlIX7uHOa1Lwh8gwEIPngkPsK09O4LjUstcolZnv2EkniNICco3jgpYlBQgtMDcrl3ur9ZwGZXUJJG6Vt
|
|
X-Forefront-Antispam-Report:
|
|
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230031)(1800799015)(52116005)(7416005)(41320700004)(366007)(38350700005);DIR:OUT;SFP:1102;
|
|
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
|
|
X-MS-Exchange-AntiSpam-MessageData-0:
|
|
G2m6B/N/cXp7bsrM+e+ZWmXYnn0Lgmx0zQQzBtVPuBGsA9TshOdxMDCkH9uWenZ1Vgt5zaiye9OTof65OQEZODP6/89VbT/szm12Y3yLA0aVRrYqeUOd0Z96cjXGBNbGdM01XwF0QP0pplmbjnfDmoYZtP8eRuOi9jelVyr2ZA1VxN9Ys6l9rXVWxpEXrIlOuAblo5qLM3zNlz3pdMlulhhN4vBz9tQhuFVgAYoeBIS6KF5/49W6BiRpY0BreybTtu/SgDU9XxHsT/vU37BQIUpSri+cwsWYIthk6WW2IfCpIqfzzaCsEbRLv//WMrssmHHeT2fsxK3sVg8v2SG+HIKFVxEYsfe7DwgCZ7vfdXD5m1dPirr3Q5pDFifZ9Wv9rLZ0inJEZrCD7nYqoXw8VWY4+fYIEmyfERv+VuvX02ycsoro3n04kTQcZWTjESfEqh3fEL8TC49KAHKr3BC3xgcekOXF1bNUcQvhPTy/GJ0BQti8GGAbZwa+GhtrF/T4Owws2MpFlMFEq/j/47t1vaQZTW2id4KWbbGMxWdCEvbQZ3urxsRlL9rEkS3zEO/JZzrm+Ps7p8ASvZsm2kJslbX0iBSuC513Oz3Pn06q16glLLUTG15vFgYu/wMrt0ZmgmTtVfdRBpp6C0oyJbEoVkY9Rd059W/xQ9iywHaNWn2kKhYM3uw+/zOxynuOWW2XyeAu+OFBqUqpDnrmmGJVXTH7RvIaccwzeenuP7/lgv4obP+4JCgDCv8s/0gY8ZSJh9FeZK3Mt7YDDb3YGCRVhJZQAy8Imb3PxPjlnj2cxd/u9Z4Ac0UlanV2+PdvjmqoClGIpj0wzyglUIXUId/ENoK01lmAL4Ple9AimCOWykOSXNkcVFjpbwT7TTfyrWMm7TFRLN+fIT5WvZzN6pGQl6uk5esuUod5EW+e4T2XwxefmrmParPw0YU5L6foGcqMOqNmjnARIev9pz+d7pmY8uncNl5DxSW9ayEe7+s7s1EXn8F/ekOsPTGNZagFsZ7fMyDzrhj9AXPwcXWm0HilKFlCs+3E34ILFYgej5AsQsNX0M+wcl8ISx2ubFuzXUKsOlQKPmqhXV36ePGx+99ZSfd9Jh8NPt+ETJPaX2fVxEShZ27ogmiFBtUzPQ4z1DaJWAvjBF78o1v0r8lUp2qzfVaGQLuQU2N1TSLrgRMiyovCyBbZMqgWsN3nzGEVOD+3tf7HguL+vqGFGvaLbtbUpe50nYHSUtbcWakRKYxw87m4TUyhQW2kgKs8tPyFQ0Vo1I0SaNmUDnC58zVNWi0dXvRSenoI4EJDPvYxD0vGas7rt9Zo/dJDuoFBUIZSc3Of2YYM7gF1buf2n44VwtLcI93W/jv+wf+eZlGz0h3iHllffgMUXiVP17ERIDxQ4qay1qzjfP8XSp6bW33VdMT34CWP29V7++3zKkFbu11zphxyTwx1yq8wmS9Lm5Hvfu3plLPYjJ6BOME27rtE24UFZ6WkRrl6FG3KhMnl/oeudU/W1u/1cR53aMqp1GlgRcDK8feUzMGzyrlsG63kZDH094d8fkmwP6TA1BgT33tlfDfStfcqJwKXK1b5f6IiJvtFRD+rZhjBFaUSAeu6QgadeQ==
|
|
X-OriginatorOrg: starfivetech.com
|
|
X-MS-Exchange-CrossTenant-Network-Message-Id:
|
|
191e3b49-1114-4f7b-7186-08dc4f081c14
|
|
X-MS-Exchange-CrossTenant-AuthSource:
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
X-MS-Exchange-CrossTenant-AuthAs: Internal
|
|
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2024 09:19:03.0305
|
|
(UTC)
|
|
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
|
|
X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c
|
|
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
|
|
X-MS-Exchange-CrossTenant-UserPrincipalName:
|
|
rd+qjWv32rWm4mabCUPrDzbUgGHBXkcxpicZkpiQrxaWzqsCv0aVVJZEfZiMe9bcVoIj+URlRgu2Cb1HsXnfltufmSNWNXEp3Vano4Ahaw4=
|
|
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SHXPR01MB0559
|
|
|
|
Add StarFive JH7110 SoC PCIe controller dt-bindings. JH7110 using PLDA
|
|
XpressRICH PCIe host controller IP.
|
|
|
|
Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
|
|
Reviewed-by: Hal Feng <hal.feng@starfivetech.com>
|
|
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
|
|
Reviewed-by: Rob Herring <robh@kernel.org>
|
|
Acked-by: Kevin Xie <kevin.xie@starfivetech.com>
|
|
---
|
|
.../bindings/pci/starfive,jh7110-pcie.yaml | 120 ++++++++++++++++++
|
|
MAINTAINERS | 6 +
|
|
2 files changed, 126 insertions(+)
|
|
create mode 100644 Documentation/devicetree/bindings/pci/starfive,jh7110-pcie.yaml
|
|
|
|
diff --git a/Documentation/devicetree/bindings/pci/starfive,jh7110-pcie.yaml b/Documentation/devicetree/bindings/pci/starfive,jh7110-pcie.yaml
|
|
new file mode 100644
|
|
index 000000000000..67151aaa3948
|
|
--- /dev/null
|
|
+++ b/Documentation/devicetree/bindings/pci/starfive,jh7110-pcie.yaml
|
|
@@ -0,0 +1,120 @@
|
|
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
|
+%YAML 1.2
|
|
+---
|
|
+$id: http://devicetree.org/schemas/pci/starfive,jh7110-pcie.yaml#
|
|
+$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
+
|
|
+title: StarFive JH7110 PCIe host controller
|
|
+
|
|
+maintainers:
|
|
+ - Kevin Xie <kevin.xie@starfivetech.com>
|
|
+
|
|
+allOf:
|
|
+ - $ref: plda,xpressrich3-axi-common.yaml#
|
|
+
|
|
+properties:
|
|
+ compatible:
|
|
+ const: starfive,jh7110-pcie
|
|
+
|
|
+ clocks:
|
|
+ items:
|
|
+ - description: NOC bus clock
|
|
+ - description: Transport layer clock
|
|
+ - description: AXI MST0 clock
|
|
+ - description: APB clock
|
|
+
|
|
+ clock-names:
|
|
+ items:
|
|
+ - const: noc
|
|
+ - const: tl
|
|
+ - const: axi_mst0
|
|
+ - const: apb
|
|
+
|
|
+ resets:
|
|
+ items:
|
|
+ - description: AXI MST0 reset
|
|
+ - description: AXI SLAVE0 reset
|
|
+ - description: AXI SLAVE reset
|
|
+ - description: PCIE BRIDGE reset
|
|
+ - description: PCIE CORE reset
|
|
+ - description: PCIE APB reset
|
|
+
|
|
+ reset-names:
|
|
+ items:
|
|
+ - const: mst0
|
|
+ - const: slv0
|
|
+ - const: slv
|
|
+ - const: brg
|
|
+ - const: core
|
|
+ - const: apb
|
|
+
|
|
+ starfive,stg-syscon:
|
|
+ $ref: /schemas/types.yaml#/definitions/phandle-array
|
|
+ description:
|
|
+ The phandle to System Register Controller syscon node.
|
|
+
|
|
+ perst-gpios:
|
|
+ description: GPIO controlled connection to PERST# signal
|
|
+ maxItems: 1
|
|
+
|
|
+ phys:
|
|
+ description:
|
|
+ Specified PHY is attached to PCIe controller.
|
|
+ maxItems: 1
|
|
+
|
|
+required:
|
|
+ - clocks
|
|
+ - resets
|
|
+ - starfive,stg-syscon
|
|
+
|
|
+unevaluatedProperties: false
|
|
+
|
|
+examples:
|
|
+ - |
|
|
+ #include <dt-bindings/gpio/gpio.h>
|
|
+ soc {
|
|
+ #address-cells = <2>;
|
|
+ #size-cells = <2>;
|
|
+
|
|
+ pcie@940000000 {
|
|
+ compatible = "starfive,jh7110-pcie";
|
|
+ reg = <0x9 0x40000000 0x0 0x10000000>,
|
|
+ <0x0 0x2b000000 0x0 0x1000000>;
|
|
+ reg-names = "cfg", "apb";
|
|
+ #address-cells = <3>;
|
|
+ #size-cells = <2>;
|
|
+ #interrupt-cells = <1>;
|
|
+ device_type = "pci";
|
|
+ ranges = <0x82000000 0x0 0x30000000 0x0 0x30000000 0x0 0x08000000>,
|
|
+ <0xc3000000 0x9 0x00000000 0x9 0x00000000 0x0 0x40000000>;
|
|
+ starfive,stg-syscon = <&stg_syscon>;
|
|
+ bus-range = <0x0 0xff>;
|
|
+ interrupt-parent = <&plic>;
|
|
+ interrupts = <56>;
|
|
+ interrupt-map-mask = <0x0 0x0 0x0 0x7>;
|
|
+ interrupt-map = <0x0 0x0 0x0 0x1 &pcie_intc0 0x1>,
|
|
+ <0x0 0x0 0x0 0x2 &pcie_intc0 0x2>,
|
|
+ <0x0 0x0 0x0 0x3 &pcie_intc0 0x3>,
|
|
+ <0x0 0x0 0x0 0x4 &pcie_intc0 0x4>;
|
|
+ msi-controller;
|
|
+ clocks = <&syscrg 86>,
|
|
+ <&stgcrg 10>,
|
|
+ <&stgcrg 8>,
|
|
+ <&stgcrg 9>;
|
|
+ clock-names = "noc", "tl", "axi_mst0", "apb";
|
|
+ resets = <&stgcrg 11>,
|
|
+ <&stgcrg 12>,
|
|
+ <&stgcrg 13>,
|
|
+ <&stgcrg 14>,
|
|
+ <&stgcrg 15>,
|
|
+ <&stgcrg 16>;
|
|
+ perst-gpios = <&gpios 26 GPIO_ACTIVE_LOW>;
|
|
+ phys = <&pciephy0>;
|
|
+
|
|
+ pcie_intc0: interrupt-controller {
|
|
+ #address-cells = <0>;
|
|
+ #interrupt-cells = <1>;
|
|
+ interrupt-controller;
|
|
+ };
|
|
+ };
|
|
+ };
|
|
diff --git a/MAINTAINERS b/MAINTAINERS
|
|
index d85d9db38efa..3772f6893818 100644
|
|
--- a/MAINTAINERS
|
|
+++ b/MAINTAINERS
|
|
@@ -17215,6 +17215,12 @@ L: linux-pci@vger.kernel.org
|
|
S: Maintained
|
|
F: drivers/pci/controller/dwc/*spear*
|
|
|
|
+PCIE DRIVER FOR STARFIVE JH71x0
|
|
+M: Kevin Xie <kevin.xie@starfivetech.com>
|
|
+L: linux-pci@vger.kernel.org
|
|
+S: Maintained
|
|
+F: Documentation/devicetree/bindings/pci/starfive,jh7110-pcie.yaml
|
|
+
|
|
PCIE ENDPOINT DRIVER FOR QUALCOMM
|
|
M: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
|
|
L: linux-pci@vger.kernel.org
|
|
|
|
From patchwork Thu Mar 28 09:18:33 2024
|
|
Content-Type: text/plain; charset="utf-8"
|
|
MIME-Version: 1.0
|
|
Content-Transfer-Encoding: 7bit
|
|
X-Patchwork-Submitter: Minda Chen <minda.chen@starfivetech.com>
|
|
X-Patchwork-Id: 13608250
|
|
X-Patchwork-Delegate: kw@linux.com
|
|
Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn
|
|
(mail-sh0chn02on2136.outbound.protection.partner.outlook.cn
|
|
[139.219.146.136])
|
|
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
|
|
(No client certificate requested)
|
|
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 607EB64CD1;
|
|
Thu, 28 Mar 2024 09:19:16 +0000 (UTC)
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
arc=fail smtp.client-ip=139.219.146.136
|
|
ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
|
|
t=1711617558; cv=fail;
|
|
b=mpqD7Lebc/uT8U7KuKzBGD3Ec5Fkz/dQUivsITuQfF6haWmAi5Mu4q6pvMJ6Hhb9YyHscQ6L3buPh8zmoTnWrVtvRhGCIUFZwoSOHy6eWQtP+gP+u6cGRJ1qk3zsHx/aR5h1cx3zafJKXoz9L3/bkIVn7qcW2Wyn2xxjkXt7TxY=
|
|
ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org;
|
|
s=arc-20240116; t=1711617558; c=relaxed/simple;
|
|
bh=S25O1HoWNeWNiqFDZO63Zv/uRdgCr6uWNHaRg5r2qqI=;
|
|
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
|
|
Content-Type:MIME-Version;
|
|
b=ZTC3LIMtp32EiWLcTPFOewm3AhE63viX4dvEo9J7y7cac2IjFDbHWdZi7pL4wuKJKvY+dRxE3SYsWvi5PLjVYocKDvZHAtrqn8EVZk46+V2MaazvlREfkXE0Rez3GtrI3qsKLjlOyskAAUZlu54g3B6ie8iGFEBSdfYEA4Ns8nc=
|
|
ARC-Authentication-Results: i=2; smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com;
|
|
spf=pass smtp.mailfrom=starfivetech.com;
|
|
arc=fail smtp.client-ip=139.219.146.136
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
spf=pass smtp.mailfrom=starfivetech.com
|
|
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
|
|
b=EoxRkjCvIu1n9KtB2/RqjhZECcEICUKX3eNjL2RY4yCJR+9+3xJe3A8OdogUFe2WYN4MkQ+rJaX/dWIgObCJuegXHxlrhZ7cAQO+5D3BCdqUAvh4QqKt9PYvAVv7WXF8BiZ93MeEPFud3Lqw/txPQDIp2P8Glhz66jl1FePJBj9OzgCBH/GWsKJPWJEWOt3mMZNjzoLNb8clLPFIWiy27V3tedLk+npzMGgJLT9fc+MQ8ul+xCwz8VTtiOa1VwCCzNQ5gynIRyGU+MhYZ2KvimTwc9Pob/z4WmL+vVoXp1Dk1q8070k+6RPhs6k2V8nrHpSt3GohmNYl6/DvfR4vLA==
|
|
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
|
|
s=arcselector9901;
|
|
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
|
|
bh=mQuC3rsd+2sb++ex1jnAa+/IUKOgIbgvPVL0ck2ZXgc=;
|
|
b=cv1/Ecr4Sv2Xhm5qnc9f5RUPPKSwSM0qp1g3B2d25o3rXdCNgGjMIFO+ZM9zbnGXPgv3n9aj9QVlMSSt5rrbgUvIhKml6QIO7HJe+p7pbgysUnr+mufbr9mZKc4mg/h08MyiAKLfjOUxcYxnIW9cOKgbHt7LT8QTIvQ8xRG/AlpO3/TFevm80i3/QBQPa2nlaSAznrE83tVHYnpxK4u/o3KwGai9am+ImiCqGLUUoODJvl4QPUfJXpNHnn06lctLx/CZpnerNKSm8fguaYxAL5mVZ/Qz+Vsj80cgWi6n6LtoTmmFYqvoq++0X7ktWH8jAltMKkGItVAgBNYcJpWrBg==
|
|
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
|
|
smtp.mailfrom=starfivetech.com; dmarc=pass action=none
|
|
header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none
|
|
Authentication-Results: dkim=none (message not signed)
|
|
header.d=none;dmarc=none action=none header.from=starfivetech.com;
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15) by SHXPR01MB0559.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:1d::22) with Microsoft SMTP Server (version=TLS1_2,
|
|
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Thu, 28 Mar
|
|
2024 09:19:04 +0000
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
([fe80::c738:9e6b:f92e:8bb9]) by
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn ([fe80::c738:9e6b:f92e:8bb9%6])
|
|
with mapi id 15.20.7409.031; Thu, 28 Mar 2024 09:19:04 +0000
|
|
From: Minda Chen <minda.chen@starfivetech.com>
|
|
To: Lorenzo Pieralisi <lpieralisi@kernel.org>,
|
|
Conor Dooley <conor@kernel.org>,
|
|
=?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kw@linux.com>,
|
|
Rob Herring <robh+dt@kernel.org>, Bjorn Helgaas <bhelgaas@google.com>,
|
|
Thomas Gleixner <tglx@linutronix.de>,
|
|
Daire McNamara <daire.mcnamara@microchip.com>,
|
|
Emil Renner Berthing <emil.renner.berthing@canonical.com>,
|
|
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
|
|
Cc: devicetree@vger.kernel.org,
|
|
linux-kernel@vger.kernel.org,
|
|
linux-riscv@lists.infradead.org,
|
|
linux-pci@vger.kernel.org,
|
|
Paul Walmsley <paul.walmsley@sifive.com>,
|
|
Palmer Dabbelt <palmer@dabbelt.com>,
|
|
Albert Ou <aou@eecs.berkeley.edu>,
|
|
Philipp Zabel <p.zabel@pengutronix.de>,
|
|
Mason Huo <mason.huo@starfivetech.com>,
|
|
Leyfoon Tan <leyfoon.tan@starfivetech.com>,
|
|
Kevin Xie <kevin.xie@starfivetech.com>,
|
|
Minda Chen <minda.chen@starfivetech.com>
|
|
Subject: [PATCH v16 20/22] PCI: Add PCIE_RESET_CONFIG_DEVICE_WAIT_MS waiting
|
|
time value
|
|
Date: Thu, 28 Mar 2024 17:18:33 +0800
|
|
Message-Id: <20240328091835.14797-21-minda.chen@starfivetech.com>
|
|
X-Mailer: git-send-email 2.17.1
|
|
In-Reply-To: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
References: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
X-ClientProxiedBy: NT0PR01CA0020.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c510:c::16) To SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15)
|
|
Precedence: bulk
|
|
X-Mailing-List: linux-pci@vger.kernel.org
|
|
List-Id: <linux-pci.vger.kernel.org>
|
|
List-Subscribe: <mailto:linux-pci+subscribe@vger.kernel.org>
|
|
List-Unsubscribe: <mailto:linux-pci+unsubscribe@vger.kernel.org>
|
|
MIME-Version: 1.0
|
|
X-MS-PublicTrafficType: Email
|
|
X-MS-TrafficTypeDiagnostic: SHXPR01MB0863:EE_|SHXPR01MB0559:EE_
|
|
X-MS-Office365-Filtering-Correlation-Id: fa28561d-cd0b-4b65-0e69-08dc4f081cae
|
|
X-MS-Exchange-SenderADCheck: 1
|
|
X-Microsoft-Antispam: BCL:0;
|
|
X-Microsoft-Antispam-Message-Info:
|
|
2gUd2/SzxeuUgHbloQBpwODNL/SgQE+ChvkFZlQZxkW0+kzjb5w91Msx9Cs6Q23wManAfg2VdT7ysK5ojR4YdcB1fNFuvuDSPM+Tlt8fkfLjvrrWKCxaFRvpgvZxZeKjCBjaeXMuj0wpR4rYYnfECQwsvrM36ko9o0gxX9ip3J/7HBVDnCpX+azTzI2Clegd3AC+I76jCWqH/Zb+sO0DP5KefMWQEoL0UDqS/caWhkyynCSx1MoFSHDQ9vTe750TO+XJ953TvobBH3hJm1/Q5g526fXCxJqFRLqtbOPh/LT0wOTzCvLYDBM9eO6lsAW+oq7oUMnVZw53vqcMQrTT+IpdKHu1hOvaEk74Pb1gW44cpU0QG3DEM//Yr0vEqigM9KF/gND0y/icqfTjRCrUX7ndxhhV4/SLGUlQyOA3B9HVTFFwOp5fPvVZxLPSxbkEXW1csyTjyj0oFGVLX5ZkvYUE96hUsUO0vWhPcCItS7w9M2fvQ2PsS65YIN3LtwjvqEckF84rqYB1qJO19tPNNKE/6nEhT97TQMoZ0nTvZIcLX4TfcGkR6lmN5JQgmJE5biHuRl51K6SgzPoEhlHbG1mEauJLNKEF5K3mzA0djQPhMahz6U/ELBsoaquhnDE3
|
|
X-Forefront-Antispam-Report:
|
|
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230031)(1800799015)(52116005)(7416005)(41320700004)(366007)(38350700005);DIR:OUT;SFP:1102;
|
|
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
|
|
X-MS-Exchange-AntiSpam-MessageData-0:
|
|
Xyt6Q+zsPBrJvS6qSArb1hSxxbfY5CUcgTIOir+yKzdatiBWr8r3k78iIg+cIF3NIKrocq7ApI98FsfJtG3rRhNXappq5alwkmLBnCLkQ5u2xfApezXxN45k1GV2RtA5v2bont0wbnu5TiRbwCBKg+wDygqKwoy1w3Ngr90IbuWlEOG/2ZaV+MPeUE/H9chB03llcxJFNJ+1z2unYOrq9/YllNZCUHIXz17uqcazB5mqh/0j/acCR9tZhq2OPniHK2wbIKQ7Gx4b8p96DZkISvfoI+woUIKbqWMdQKWi3YS8YI3we+POWkphN1EUuwf0j4OypkZia0vd7kdYNGZ18gYxtwkBHuS0CbmHuTE7/zEPGgmR+wV5bVzdhFSTTOPgCkzE4+kK6kDcg9NKFlg0dpConuyLOIPlMnQaE4BazEro7bJAoARShmxWQtfRPCFkATXI3Ff/9dmPLtNfKvLuh+xTONshgTvl4OqZzIw+qv/SMxmJyRiOg2iF5ks4KmP06whHq1W2ypLNYmYjFlfQnrB1m0M7wTagA4yVWvo8TDzCXQRcQx7OPaEfo30W83ha8mWXhJs5VrA9q0P3OKY/9C1dKllmqN9SvBUOi/woOg38wLjE+9OZEtk3N0Lm3Rqtu/PF0ulBkrWhgBnyHeMRFpIdW1GIxTjg7ZC3VLErSg/by7ei9NTj3KXV3GWmAQpTEZtdXJl9ovem70wp0klAoYOc6smBOzqdzAtQcTf9cTogwSNa0MueHURiVSzRp+z+FqStoqtWnF9bHV38oBZmXOQhcY2a4jbSkb5YS9go9ZUQgJuY0lwYe6O7UXqi8toH6e9zJ/hJVvPiEMFQ3g177qPdRRhNcAkS3RdSeH5Gf26nx+6woHej8jRTJshQkRZSBafjX6C54irAa//CU0xMTasciSbk4sXx5KzMYo6tkOteHWC+zjO6z+2I2fTjy5HYNb6Z7p8TSZUhtCHvJrB/SyrtU24YEVwUgvjTjOUL8r75wpA2sypb6s+cLBvan4RS+eT/mJwXrQRrzXTiie0ue2XkqKaNmc3E8qqlmU5G6RhVFkj0FnBbN1xPthNI5DeG5ko+6jNgORVfnZZ0CfRAXZAL9eeRyQpllVCN/TIuA8Kr/heecJ9u5nuCtTrl0ctfvKo0ZkXuL0WQ+m5I8+9P2YYNYFGKHab+4EKWyIkXMLrmbfY8E3QhZpKLLPFV4ODGxxOA+v85s8KwmdKF3Lz011Eeg1iNAIAwMIFu/RgSJoXOYmWvvxISXz0PlmlcH/hxXGiZ+VHBI4yyZQVzmISP6ZBbmE8wDG2UEz+K9kNsw+nce4m3M2KXuL29yabgRyVCaE5ab67rE8hHSEUB7jkpFhZ/GWSWLOuROUEIhC93xEsUDbl5RiIau3ML+VQFsP5wPes7rlP5ZOyYSEgKZyCQXl249BeCLTW6QgEKRG6jp3i9vZi/T9+kZUso9leke9I0XFCOLj5MRDsGwtcWGAuEC6cgsZ4W5mtHhMng9MPkKt73IOsPnmIR7sN4tdUaJQEIGfw/KNPcNB1TFDDh4UZKyd2/lKa1J7hha1rdXsVDvc/Ijynt0dQ6PQN6wWzQSxmlFwCw2sycTCYT45j977yhug==
|
|
X-OriginatorOrg: starfivetech.com
|
|
X-MS-Exchange-CrossTenant-Network-Message-Id:
|
|
fa28561d-cd0b-4b65-0e69-08dc4f081cae
|
|
X-MS-Exchange-CrossTenant-AuthSource:
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
X-MS-Exchange-CrossTenant-AuthAs: Internal
|
|
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2024 09:19:04.0399
|
|
(UTC)
|
|
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
|
|
X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c
|
|
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
|
|
X-MS-Exchange-CrossTenant-UserPrincipalName:
|
|
mT4IaNHihzqZr0YFm7I6Ika7qeEmUX436O01daXl8Gp2CfWjkcuftyDn4T131NAc2yCrrJGB9Pt0sFC1cV872YXiRJNroRpOJne4u0A2JC8=
|
|
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SHXPR01MB0559
|
|
|
|
From: Kevin Xie <kevin.xie@starfivetech.com>
|
|
|
|
Add the PCIE_RESET_CONFIG_DEVICE_WAIT_MS macro to define the minimum
|
|
waiting time between exit from a conventional reset and sending the
|
|
first configuration request to the device.
|
|
|
|
As described in PCI base specification r6.0, section 6.6.1 <Conventional
|
|
Reset>, there are two different use cases of the value:
|
|
|
|
- "With a Downstream Port that does not support Link speeds greater
|
|
than 5.0 GT/s, software must wait a minimum of 100 ms following exit
|
|
from a Conventional Reset before sending a Configuration Request to
|
|
the device immediately below that Port."
|
|
|
|
- "With a Downstream Port that supports Link speeds greater than
|
|
5.0 GT/s, software must wait a minimum of 100 ms after Link training
|
|
completes before sending a Configuration Request to the device
|
|
immediately below that Port."
|
|
|
|
Signed-off-by: Kevin Xie <kevin.xie@starfivetech.com>
|
|
Reviewed-by: Mason Huo <mason.huo@starfivetech.com>
|
|
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
|
|
---
|
|
drivers/pci/pci.h | 16 ++++++++++++++++
|
|
1 file changed, 16 insertions(+)
|
|
|
|
diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h
|
|
index 17fed1846847..6fa59d6aa063 100644
|
|
--- a/drivers/pci/pci.h
|
|
+++ b/drivers/pci/pci.h
|
|
@@ -22,6 +22,22 @@
|
|
*/
|
|
#define PCIE_PME_TO_L2_TIMEOUT_US 10000
|
|
|
|
+/*
|
|
+ * As described in PCI base specification r6.0, section 6.6.1 <Conventional
|
|
+ * Reset>, there are two different use cases of the value:
|
|
+ *
|
|
+ * - "With a Downstream Port that does not support Link speeds greater
|
|
+ * than 5.0 GT/s, software must wait a minimum of 100 ms following exit
|
|
+ * from a Conventional Reset before sending a Configuration Request to
|
|
+ * the device immediately below that Port."
|
|
+ *
|
|
+ * - "With a Downstream Port that supports Link speeds greater than
|
|
+ * 5.0 GT/s, software must wait a minimum of 100 ms after Link training
|
|
+ * completes before sending a Configuration Request to the device
|
|
+ * immediately below that Port."
|
|
+ */
|
|
+#define PCIE_RESET_CONFIG_DEVICE_WAIT_MS 100
|
|
+
|
|
extern const unsigned char pcie_link_speed[];
|
|
extern bool pci_early_dump;
|
|
|
|
|
|
From patchwork Thu Mar 28 09:18:34 2024
|
|
Content-Type: text/plain; charset="utf-8"
|
|
MIME-Version: 1.0
|
|
Content-Transfer-Encoding: 7bit
|
|
X-Patchwork-Submitter: Minda Chen <minda.chen@starfivetech.com>
|
|
X-Patchwork-Id: 13608252
|
|
X-Patchwork-Delegate: kw@linux.com
|
|
Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn
|
|
(mail-sh0chn02on2091.outbound.protection.partner.outlook.cn [139.219.146.91])
|
|
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
|
|
(No client certificate requested)
|
|
by smtp.subspace.kernel.org (Postfix) with ESMTPS id D11B88002F;
|
|
Thu, 28 Mar 2024 09:19:17 +0000 (UTC)
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
arc=fail smtp.client-ip=139.219.146.91
|
|
ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
|
|
t=1711617561; cv=fail;
|
|
b=CLpzTlZ+8wa4/pcV/A9+4rbzA7KzDDxHy2sgMdP41IUYqNKTNq0odKqtyGO+p8g2lHURptKRzIJxyCBs3ot+xKU5IPAvy8KuISXaH3RLv6Mp/xOBBMbXWH6MN5WeWB46Ju6muDhQ7kG4Udx3zSGzn6YTdQqZG1WaWgPLLWCiy7Q=
|
|
ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org;
|
|
s=arc-20240116; t=1711617561; c=relaxed/simple;
|
|
bh=cKjN0WHAuESGn59cTMIox9hU3M2BhPOHtOqCYnITk5U=;
|
|
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
|
|
Content-Type:MIME-Version;
|
|
b=ufFenuwbGEBaKeNC9Kdl1rmBMzwl+vnWFNxhPvnNoZaYjkbAKiywmO3FePwiFS6mnF7QBdWwNxFR8S54OQh7L/yGKV/c8aGg7j867EqcyXVi7/BhU5TI/Esq7MYXILG4Duk6XBOKOMQxmOdBgqem3to1uaRaoBBrSeAM1oyjy+M=
|
|
ARC-Authentication-Results: i=2; smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com;
|
|
spf=pass smtp.mailfrom=starfivetech.com;
|
|
arc=fail smtp.client-ip=139.219.146.91
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
dmarc=none (p=none dis=none) header.from=starfivetech.com
|
|
Authentication-Results: smtp.subspace.kernel.org;
|
|
spf=pass smtp.mailfrom=starfivetech.com
|
|
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
|
|
b=j+2ApI7PFS7/rr2i8Te+wP/yrY8spQUdkOgXCuYIJrpL4sbTHQ7Crba14DE0MiWdfkO83p4XM/IIH4D44t/O/bOUWA4xENthK+DbvJKUxh4RjPOjD5GsnsoFRHSJDxdyHk9CDOY6Ir604eLcZfnJ9tm9V8HHBxl7T34Jz37olR+fKAh2OQAK54n/L+wFdCAvIuwpAGXDYa3L3hW5pqx58z03CLtcIFFEvws2JYUOZBqkQEvxhSneR+ApmuohMlLfvGnUXTSDZbKSLojBN6FWWr7egyUI8zRAetyeBrBNxzGfPTHhw6Pg+qc8zMs7vUcvQcQ1JWT2JIjUvPjWJWCC3g==
|
|
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
|
|
s=arcselector9901;
|
|
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
|
|
bh=UCcyqE0iXQVHf+lT2xT+xNvGQICy4SVXDLP+vaJn6ds=;
|
|
b=WubqGtYCSyiHitPYa+YCOSt9UMZSVa4nePUaVjI3IghBCQIozcSAmZJDNXIVG+ARdMK4Kcln+0eRHjlkwz99LRW7HDFlCkaCHv6rWCHx9TQPZ5C1U5LDGpi0Ubu6n6zm0IWleV0eg0DS95ZtjRZQ2ZyIPH4P47RgiBsZRoIZTT7YkXnug+m9R+vJivsthRLKrrZU8JMSLFfJv48cqSfFq1CxkSuC7W0FmkB0kbQzoOBChdToAmR/seMcmJmaXgybsHZf6ra9sMW/4Snp821BxKEyNAlpeU45eV/Lpw8w4V5jfxEpYTFU7oYFnSDxeuA77SFgI0aV/nyBC1YFtr0iMQ==
|
|
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
|
|
smtp.mailfrom=starfivetech.com; dmarc=pass action=none
|
|
header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none
|
|
Authentication-Results: dkim=none (message not signed)
|
|
header.d=none;dmarc=none action=none header.from=starfivetech.com;
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15) by SHXPR01MB0559.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:1d::22) with Microsoft SMTP Server (version=TLS1_2,
|
|
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Thu, 28 Mar
|
|
2024 09:19:05 +0000
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
([fe80::c738:9e6b:f92e:8bb9]) by
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn ([fe80::c738:9e6b:f92e:8bb9%6])
|
|
with mapi id 15.20.7409.031; Thu, 28 Mar 2024 09:19:05 +0000
|
|
From: Minda Chen <minda.chen@starfivetech.com>
|
|
To: Lorenzo Pieralisi <lpieralisi@kernel.org>,
|
|
Conor Dooley <conor@kernel.org>,
|
|
=?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kw@linux.com>,
|
|
Rob Herring <robh+dt@kernel.org>, Bjorn Helgaas <bhelgaas@google.com>,
|
|
Thomas Gleixner <tglx@linutronix.de>,
|
|
Daire McNamara <daire.mcnamara@microchip.com>,
|
|
Emil Renner Berthing <emil.renner.berthing@canonical.com>,
|
|
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
|
|
Cc: devicetree@vger.kernel.org,
|
|
linux-kernel@vger.kernel.org,
|
|
linux-riscv@lists.infradead.org,
|
|
linux-pci@vger.kernel.org,
|
|
Paul Walmsley <paul.walmsley@sifive.com>,
|
|
Palmer Dabbelt <palmer@dabbelt.com>,
|
|
Albert Ou <aou@eecs.berkeley.edu>,
|
|
Philipp Zabel <p.zabel@pengutronix.de>,
|
|
Mason Huo <mason.huo@starfivetech.com>,
|
|
Leyfoon Tan <leyfoon.tan@starfivetech.com>,
|
|
Kevin Xie <kevin.xie@starfivetech.com>,
|
|
Minda Chen <minda.chen@starfivetech.com>
|
|
Subject: [PATCH v16 21/22] PCI: starfive: Add JH7110 PCIe controller
|
|
Date: Thu, 28 Mar 2024 17:18:34 +0800
|
|
Message-Id: <20240328091835.14797-22-minda.chen@starfivetech.com>
|
|
X-Mailer: git-send-email 2.17.1
|
|
In-Reply-To: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
References: <20240328091835.14797-1-minda.chen@starfivetech.com>
|
|
X-ClientProxiedBy: NT0PR01CA0020.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c510:c::16) To SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15)
|
|
Precedence: bulk
|
|
X-Mailing-List: linux-pci@vger.kernel.org
|
|
List-Id: <linux-pci.vger.kernel.org>
|
|
List-Subscribe: <mailto:linux-pci+subscribe@vger.kernel.org>
|
|
List-Unsubscribe: <mailto:linux-pci+unsubscribe@vger.kernel.org>
|
|
MIME-Version: 1.0
|
|
X-MS-PublicTrafficType: Email
|
|
X-MS-TrafficTypeDiagnostic: SHXPR01MB0863:EE_|SHXPR01MB0559:EE_
|
|
X-MS-Office365-Filtering-Correlation-Id: b869200f-e1b4-49d4-d121-08dc4f081d49
|
|
X-MS-Exchange-SenderADCheck: 1
|
|
X-Microsoft-Antispam: BCL:0;
|
|
X-Microsoft-Antispam-Message-Info:
|
|
m5epnUvA7NrnSj+blEKxHftAuVPiWRx2E/KYOCxiwKolb5ezAYcOoW9zELH9NqZtyFpcTMQRlM4fuDCrCE3H78fv2cujAC4bfWv/LkDueZJzGO0wV1tu6ynwh0Pm/ek4slbkxbpXu3EhnF4eYycrHUrihv9Z0opZTfu3VkMXHK0ul3oDcz3lGf8/rj/laAjaG0UXPOAAZvgiTrVxaigaGmGwSIeJUJnCYGATGmCIoW5ed9xLcz8tmtvAXJY3JkELMP90ItFQu0LlO9jOOxOy2CADVsrFb4j2IV0IgNK0cnDJdRncACjkUxr+ATjUHaUGn35VAGiWirst4xlEI+nnRKq2lR9GowxkNWxhSWsqhNpogntWYJyikYShrCxY0LhKqOJLTd/4n+evdxoXlwMVrduVQtgCTBnRKxO3iB4LlU3YygwRqrwFs7ZdA8GimfJIWfaHAhQ8648n4tTIfd/OCTHJ7CMhxdtSsA4f+PnuUBWCsdWIJF0mOzDfz/bbpobEmkpxBFVk83tbdT4KFXijuFfFh4niosgqVXn1rZI7yQ1iQsvl41WUJJiHBA+d4q2ePTJKzRotN2ltSgohw2rLi7dS/UI1uKV9hs+EGrUrbVIG1y4013uH7J4ed1dfe13U
|
|
X-Forefront-Antispam-Report:
|
|
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230031)(1800799015)(52116005)(7416005)(41320700004)(366007)(38350700005);DIR:OUT;SFP:1102;
|
|
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
|
|
X-MS-Exchange-AntiSpam-MessageData-0:
|
|
/gXV0eBcqfegdp5yLEqo2bPraFQ79QmomDeMiLA+gGbGgpnPezSPLRnAsQmPlQNE4pWCPZ+Vy0Vdd7vdJ3tRz417TeDzQWYQcdZStIGrLSoMBAA/qfugXhZt+9WeR7Zak0oSBJlOylNNpz39VfZW35YkIcJy8Wj0vnVkbdCwOpTMPMozQ7GNMKBvBuz+aPdkt9i7xKd/oj8/q6KmDKFBxTPnv2DaeSFE0KyuvbtfKVlkHfDuHDtqToKOyepPygxjihp6gPlYuvxy8950qN0OJS7ipqJMeOwwcI0XfE+hI92AxzG5HsuJkgL/8pw3HoC2wZaCGrGk2DodfpWz3sO9fkxqBaeB9wz3OHawx6rvius+4lRNKzG+0KHhW24MQKBy5Oa9pCTWy4OurRKEKudSz3ywDkNFJpCdfKHaRIFW83IjiB0O7acN9XLsHU8/sM3hyqtuBF6VqAApUaXzoqnWC77Q9DDOES3c6/V438uM5LhbftRT4CjM9Yyl5NkCRycIlVcmnoCfxZqoD3F+GV1xgHhgFAJCNj2Xf9N8uP8GwgOZcfUGMiY0RxjxsKfgfDYSFLzlAR4ZvDvo+6JmByMIE8U4yW6C5e630hJSWHKBKrAaDQLG0Fu4YribMGFosFB+Q7jvuw0MXYtCkv2kWnlfvOT4CGqXNSzIzRfJTyQpPjU7tpDFKL9NIG4ABFj7qWHRymIdo0kTisYwwWmVN1tyOH7QXcUUI82SlZBJUjzpQ43aRdg+7TGM6Nwi+mowBytxIrmBG0JVXyTORY4wOt+Mrnz/VCr/JXkuHi4sgiPD6rGka4k8T31F5nITudjfaI+nEEc7L+ZhFGL/9q8Se+9+96eUchWpMFFZP3ajZR6aNCeDWF6iNu39u49pBFU/D8VNZZSUrhj6+/vvp1v2yFOp9n+EfAFwkTalw2YYzuArCgnsOpI/rBo8ebjs6w+AdQnNfMireStWNvpMipZe+YS3hklk3Dxy4TXNVxqwXi0aUpj271dkhpfyB/2TTnazqsxvX/DCW+l+MHuMcn67TK9MwT/R8PMyJmMxKSl57DHV0XIStsEEjLXMY08NEgf3u5p5bypRYRR9PFaySTjm4qEOdsmk6zYCt0FTRwq5pn1BCuCBPcTIOr1RPsuKhta1Jx3cXiHV7MtacokLIqVfWhCRlEeXBaxZ/BFN426R1djuFSWo8rzLDVqu6mVeMnbgeMw/G1RUXXsY2YfZ/dxhueTQ7olG5Z9uT6wiPNC6rBRurqC3twaz6ubfQLIdkbw/E9Dfs4bQSwlkjlCl5E7XY5TAl9SJX8oC1tlFcZvyRLhfn/UEP1JBvgqibS9JhdqJEyM3CC+v5bVlm83KX5Cl2qPqM8U6h2kqfGfGqgl8VcBXmkCi1unJb9SU3rk1fMA6h6UyCEFWZ9tTcHfJ5b2ItDgNCu2xrV+vSgKBNt6Ez9jVvX9aJLuDNwCrPh0a9XvcR5wPnE9qL5Yo3wDtG0ToaFzOA4qRdTa0dLbslF0BHD4iwR/x72+MP3AOxf5h/EUfkM3P/Aq89VdYi0V8mLcIYR+zc5ekbBkvvuYKWpS/di8I8a/gpCOfVWStmj56bpBJYEMGB1CQKHPvQPw9+yQmIEN7Dg==
|
|
X-OriginatorOrg: starfivetech.com
|
|
X-MS-Exchange-CrossTenant-Network-Message-Id:
|
|
b869200f-e1b4-49d4-d121-08dc4f081d49
|
|
X-MS-Exchange-CrossTenant-AuthSource:
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
X-MS-Exchange-CrossTenant-AuthAs: Internal
|
|
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2024 09:19:05.0868
|
|
(UTC)
|
|
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
|
|
X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c
|
|
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
|
|
X-MS-Exchange-CrossTenant-UserPrincipalName:
|
|
dl89eCWLs7SXIywp4zQUPyticVVXHOKdm6AReyuHd71RlNLVCxm3NzZiARQdQjprlocEuuYIhLL/kPJLtacqERArUTUeJ0KYMkrp6UGeurE=
|
|
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SHXPR01MB0559
|
|
|
|
Add StarFive JH7110 SoC PCIe controller platform driver code, JH7110
|
|
with PLDA host PCIe core.
|
|
|
|
Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
|
|
Co-developed-by: Kevin Xie <kevin.xie@starfivetech.com>
|
|
Reviewed-by: Mason Huo <mason.huo@starfivetech.com>
|
|
---
|
|
MAINTAINERS | 1 +
|
|
drivers/pci/controller/plda/Kconfig | 12 +
|
|
drivers/pci/controller/plda/Makefile | 1 +
|
|
drivers/pci/controller/plda/pcie-plda.h | 71 ++-
|
|
drivers/pci/controller/plda/pcie-starfive.c | 488 ++++++++++++++++++++
|
|
5 files changed, 572 insertions(+), 1 deletion(-)
|
|
create mode 100644 drivers/pci/controller/plda/pcie-starfive.c
|
|
|
|
diff --git a/MAINTAINERS b/MAINTAINERS
|
|
index 3772f6893818..de85d6d1b92c 100644
|
|
--- a/MAINTAINERS
|
|
+++ b/MAINTAINERS
|
|
@@ -17220,6 +17220,7 @@ M: Kevin Xie <kevin.xie@starfivetech.com>
|
|
L: linux-pci@vger.kernel.org
|
|
S: Maintained
|
|
F: Documentation/devicetree/bindings/pci/starfive,jh7110-pcie.yaml
|
|
+F: drivers/pci/controller/plda/pcie-starfive.c
|
|
|
|
PCIE ENDPOINT DRIVER FOR QUALCOMM
|
|
M: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
|
|
diff --git a/drivers/pci/controller/plda/Kconfig b/drivers/pci/controller/plda/Kconfig
|
|
index e54a82ee94f5..c0e14146d7e4 100644
|
|
--- a/drivers/pci/controller/plda/Kconfig
|
|
+++ b/drivers/pci/controller/plda/Kconfig
|
|
@@ -15,4 +15,16 @@ config PCIE_MICROCHIP_HOST
|
|
Say Y here if you want kernel to support the Microchip AXI PCIe
|
|
Host Bridge driver.
|
|
|
|
+config PCIE_STARFIVE_HOST
|
|
+ tristate "StarFive PCIe host controller"
|
|
+ depends on PCI_MSI && OF
|
|
+ depends on ARCH_STARFIVE || COMPILE_TEST
|
|
+ select PCIE_PLDA_HOST
|
|
+ help
|
|
+ Say Y here if you want to support the StarFive PCIe controller in
|
|
+ host mode. StarFive PCIe controller uses PLDA PCIe core.
|
|
+
|
|
+ If you choose to build this driver as module it will be dynamically
|
|
+ linked and module will be called pcie-starfive.ko.
|
|
+
|
|
endmenu
|
|
diff --git a/drivers/pci/controller/plda/Makefile b/drivers/pci/controller/plda/Makefile
|
|
index 4340ab007f44..0ac6851bed48 100644
|
|
--- a/drivers/pci/controller/plda/Makefile
|
|
+++ b/drivers/pci/controller/plda/Makefile
|
|
@@ -1,3 +1,4 @@
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
obj-$(CONFIG_PCIE_PLDA_HOST) += pcie-plda-host.o
|
|
obj-$(CONFIG_PCIE_MICROCHIP_HOST) += pcie-microchip-host.o
|
|
+obj-$(CONFIG_PCIE_STARFIVE_HOST) += pcie-starfive.o
|
|
diff --git a/drivers/pci/controller/plda/pcie-plda.h b/drivers/pci/controller/plda/pcie-plda.h
|
|
index 52f4cacf7917..0e7dc0d8e5ba 100644
|
|
--- a/drivers/pci/controller/plda/pcie-plda.h
|
|
+++ b/drivers/pci/controller/plda/pcie-plda.h
|
|
@@ -10,10 +10,20 @@
|
|
#define PLDA_MAX_NUM_MSI_IRQS 32
|
|
|
|
/* PCIe Bridge Phy Regs */
|
|
+#define GEN_SETTINGS 0x80
|
|
+#define RP_ENABLE 1
|
|
+#define PCIE_PCI_IDS_DW1 0x9c
|
|
+#define IDS_CLASS_CODE_SHIFT 16
|
|
+#define REVISION_ID_MASK GENMASK(7, 0)
|
|
+#define CLASS_CODE_ID_MASK GENMASK(31, 8)
|
|
#define PCIE_PCI_IRQ_DW0 0xa8
|
|
#define MSIX_CAP_MASK BIT(31)
|
|
#define NUM_MSI_MSGS_MASK GENMASK(6, 4)
|
|
#define NUM_MSI_MSGS_SHIFT 4
|
|
+#define PCI_MISC 0xb4
|
|
+#define PHY_FUNCTION_DIS BIT(15)
|
|
+#define PCIE_WINROM 0xfc
|
|
+#define PREF_MEM_WIN_64_SUPPORT BIT(3)
|
|
|
|
#define IMASK_LOCAL 0x180
|
|
#define DMA_END_ENGINE_0_MASK 0x00000000u
|
|
@@ -65,6 +75,8 @@
|
|
#define ISTATUS_HOST 0x18c
|
|
#define IMSI_ADDR 0x190
|
|
#define ISTATUS_MSI 0x194
|
|
+#define PMSG_SUPPORT_RX 0x3f0
|
|
+#define PMSG_LTR_SUPPORT BIT(2)
|
|
|
|
/* PCIe Master table init defines */
|
|
#define ATR0_PCIE_WIN0_SRCADDR_PARAM 0x600u
|
|
@@ -86,6 +98,8 @@
|
|
#define PCIE_TX_RX_INTERFACE 0x00000000u
|
|
#define PCIE_CONFIG_INTERFACE 0x00000001u
|
|
|
|
+#define CONFIG_SPACE_ADDR_OFFSET 0x1000u
|
|
+
|
|
#define ATR_ENTRY_SIZE 32
|
|
|
|
enum plda_int_event {
|
|
@@ -201,4 +215,59 @@ static inline void plda_set_default_msi(struct plda_msi *msi)
|
|
msi->vector_phy = IMSI_ADDR;
|
|
msi->num_vectors = PLDA_MAX_NUM_MSI_IRQS;
|
|
}
|
|
-#endif
|
|
+
|
|
+static inline void plda_pcie_enable_root_port(struct plda_pcie_rp *plda)
|
|
+{
|
|
+ u32 value;
|
|
+
|
|
+ value = readl_relaxed(plda->bridge_addr + GEN_SETTINGS);
|
|
+ value |= RP_ENABLE;
|
|
+ writel_relaxed(value, plda->bridge_addr + GEN_SETTINGS);
|
|
+}
|
|
+
|
|
+static inline void plda_pcie_set_standard_class(struct plda_pcie_rp *plda)
|
|
+{
|
|
+ u32 value;
|
|
+
|
|
+ /* set class code and reserve revision id */
|
|
+ value = readl_relaxed(plda->bridge_addr + PCIE_PCI_IDS_DW1);
|
|
+ value &= REVISION_ID_MASK;
|
|
+ value |= (PCI_CLASS_BRIDGE_PCI << IDS_CLASS_CODE_SHIFT);
|
|
+ writel_relaxed(value, plda->bridge_addr + PCIE_PCI_IDS_DW1);
|
|
+}
|
|
+
|
|
+static inline void plda_pcie_set_pref_win_64bit(struct plda_pcie_rp *plda)
|
|
+{
|
|
+ u32 value;
|
|
+
|
|
+ value = readl_relaxed(plda->bridge_addr + PCIE_WINROM);
|
|
+ value |= PREF_MEM_WIN_64_SUPPORT;
|
|
+ writel_relaxed(value, plda->bridge_addr + PCIE_WINROM);
|
|
+}
|
|
+
|
|
+static inline void plda_pcie_disable_ltr(struct plda_pcie_rp *plda)
|
|
+{
|
|
+ u32 value;
|
|
+
|
|
+ value = readl_relaxed(plda->bridge_addr + PMSG_SUPPORT_RX);
|
|
+ value &= ~PMSG_LTR_SUPPORT;
|
|
+ writel_relaxed(value, plda->bridge_addr + PMSG_SUPPORT_RX);
|
|
+}
|
|
+
|
|
+static inline void plda_pcie_disable_func(struct plda_pcie_rp *plda)
|
|
+{
|
|
+ u32 value;
|
|
+
|
|
+ value = readl_relaxed(plda->bridge_addr + PCI_MISC);
|
|
+ value |= PHY_FUNCTION_DIS;
|
|
+ writel_relaxed(value, plda->bridge_addr + PCI_MISC);
|
|
+}
|
|
+
|
|
+static inline void plda_pcie_write_rc_bar(struct plda_pcie_rp *plda, u64 val)
|
|
+{
|
|
+ void __iomem *addr = plda->bridge_addr + CONFIG_SPACE_ADDR_OFFSET;
|
|
+
|
|
+ writel_relaxed(lower_32_bits(val), addr + PCI_BASE_ADDRESS_0);
|
|
+ writel_relaxed(upper_32_bits(val), addr + PCI_BASE_ADDRESS_1);
|
|
+}
|
|
+#endif /* _PCIE_PLDA_H */
|
|
diff --git a/drivers/pci/controller/plda/pcie-starfive.c b/drivers/pci/controller/plda/pcie-starfive.c
|
|
new file mode 100644
|
|
index 000000000000..c9933ecf6833
|
|
--- /dev/null
|
|
+++ b/drivers/pci/controller/plda/pcie-starfive.c
|
|
@@ -0,0 +1,488 @@
|
|
+// SPDX-License-Identifier: GPL-2.0+
|
|
+/*
|
|
+ * PCIe host controller driver for StarFive JH7110 Soc.
|
|
+ *
|
|
+ * Copyright (C) 2023 StarFive Technology Co., Ltd.
|
|
+ */
|
|
+
|
|
+#include <linux/bitfield.h>
|
|
+#include <linux/clk.h>
|
|
+#include <linux/delay.h>
|
|
+#include <linux/gpio/consumer.h>
|
|
+#include <linux/interrupt.h>
|
|
+#include <linux/kernel.h>
|
|
+#include <linux/mfd/syscon.h>
|
|
+#include <linux/module.h>
|
|
+#include <linux/of_address.h>
|
|
+#include <linux/of_irq.h>
|
|
+#include <linux/of_pci.h>
|
|
+#include <linux/pci.h>
|
|
+#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"
|
|
+
|
|
+#include "pcie-plda.h"
|
|
+
|
|
+#define PCIE_FUNC_NUM 4
|
|
+
|
|
+/* system control */
|
|
+#define STG_SYSCON_PCIE0_BASE 0x48
|
|
+#define STG_SYSCON_PCIE1_BASE 0x1f8
|
|
+
|
|
+#define STG_SYSCON_AR_OFFSET 0x78
|
|
+#define STG_SYSCON_AXI4_SLVL_AR_MASK GENMASK(22, 8)
|
|
+#define STG_SYSCON_AXI4_SLVL_PHY_AR(x) FIELD_PREP(GENMASK(20, 17), x)
|
|
+#define STG_SYSCON_AW_OFFSET 0x7c
|
|
+#define STG_SYSCON_AXI4_SLVL_AW_MASK GENMASK(14, 0)
|
|
+#define STG_SYSCON_AXI4_SLVL_PHY_AW(x) FIELD_PREP(GENMASK(12, 9), x)
|
|
+#define STG_SYSCON_CLKREQ BIT(22)
|
|
+#define STG_SYSCON_CKREF_SRC_MASK GENMASK(19, 18)
|
|
+#define STG_SYSCON_RP_NEP_OFFSET 0xe8
|
|
+#define STG_SYSCON_K_RP_NEP BIT(8)
|
|
+#define STG_SYSCON_LNKSTA_OFFSET 0x170
|
|
+#define DATA_LINK_ACTIVE BIT(5)
|
|
+
|
|
+/* Parameters for the waiting for link up routine */
|
|
+#define LINK_WAIT_MAX_RETRIES 10
|
|
+#define LINK_WAIT_USLEEP_MIN 90000
|
|
+#define LINK_WAIT_USLEEP_MAX 100000
|
|
+
|
|
+struct starfive_jh7110_pcie {
|
|
+ struct plda_pcie_rp plda;
|
|
+ struct reset_control *resets;
|
|
+ struct clk_bulk_data *clks;
|
|
+ struct regmap *reg_syscon;
|
|
+ struct gpio_desc *power_gpio;
|
|
+ struct gpio_desc *reset_gpio;
|
|
+ struct phy *phy;
|
|
+
|
|
+ unsigned int stg_pcie_base;
|
|
+ int num_clks;
|
|
+};
|
|
+
|
|
+/*
|
|
+ * JH7110 PCIe port BAR0/1 can be configured as 64-bit prefetchable memory
|
|
+ * space. PCIe read and write requests targeting BAR0/1 are routed to so called
|
|
+ * 'Bridge Configuration space' in PLDA IP datasheet, which contains the bridge
|
|
+ * internal registers, such as interrupt, DMA and ATU registers...
|
|
+ * JH7110 can access the Bridge Configuration space by local bus, and don`t
|
|
+ * want the bridge internal registers accessed by the DMA from EP devices.
|
|
+ * Thus, they are unimplemented and should be hidden here.
|
|
+ */
|
|
+static bool starfive_pcie_hide_rc_bar(struct pci_bus *bus, unsigned int devfn,
|
|
+ int offset)
|
|
+{
|
|
+ if (pci_is_root_bus(bus) && !devfn &&
|
|
+ (offset == PCI_BASE_ADDRESS_0 || offset == PCI_BASE_ADDRESS_1))
|
|
+ return true;
|
|
+
|
|
+ return false;
|
|
+}
|
|
+
|
|
+static int starfive_pcie_config_write(struct pci_bus *bus, unsigned int devfn,
|
|
+ int where, int size, u32 value)
|
|
+{
|
|
+ if (starfive_pcie_hide_rc_bar(bus, devfn, where))
|
|
+ return PCIBIOS_SUCCESSFUL;
|
|
+
|
|
+ return pci_generic_config_write(bus, devfn, where, size, value);
|
|
+}
|
|
+
|
|
+static int starfive_pcie_config_read(struct pci_bus *bus, unsigned int devfn,
|
|
+ int where, int size, u32 *value)
|
|
+{
|
|
+ if (starfive_pcie_hide_rc_bar(bus, devfn, where)) {
|
|
+ *value = 0;
|
|
+ return PCIBIOS_SUCCESSFUL;
|
|
+ }
|
|
+
|
|
+ return pci_generic_config_read(bus, devfn, where, size, value);
|
|
+}
|
|
+
|
|
+static int starfive_pcie_parse_dt(struct starfive_jh7110_pcie *pcie,
|
|
+ struct device *dev)
|
|
+{
|
|
+ int domain_nr;
|
|
+
|
|
+ pcie->num_clks = devm_clk_bulk_get_all(dev, &pcie->clks);
|
|
+ if (pcie->num_clks < 0)
|
|
+ return dev_err_probe(dev, pcie->num_clks,
|
|
+ "failed to get pcie clocks\n");
|
|
+
|
|
+ pcie->resets = devm_reset_control_array_get_exclusive(dev);
|
|
+ if (IS_ERR(pcie->resets))
|
|
+ return dev_err_probe(dev, PTR_ERR(pcie->resets),
|
|
+ "failed to get pcie resets");
|
|
+
|
|
+ pcie->reg_syscon =
|
|
+ syscon_regmap_lookup_by_phandle(dev->of_node,
|
|
+ "starfive,stg-syscon");
|
|
+
|
|
+ if (IS_ERR(pcie->reg_syscon))
|
|
+ return dev_err_probe(dev, PTR_ERR(pcie->reg_syscon),
|
|
+ "failed to parse starfive,stg-syscon\n");
|
|
+
|
|
+ pcie->phy = devm_phy_optional_get(dev, NULL);
|
|
+ if (IS_ERR(pcie->phy))
|
|
+ return dev_err_probe(dev, PTR_ERR(pcie->phy),
|
|
+ "failed to get pcie phy\n");
|
|
+
|
|
+ /*
|
|
+ * The PCIe domain numbers are set to be static in JH7110 DTS.
|
|
+ * As the STG system controller defines different bases in PCIe RP0 &
|
|
+ * RP1, we use them to identify which controller is doing the hardware
|
|
+ * initialization.
|
|
+ */
|
|
+ domain_nr = of_get_pci_domain_nr(dev->of_node);
|
|
+
|
|
+ if (domain_nr < 0 || domain_nr > 1)
|
|
+ return dev_err_probe(dev, -ENODEV,
|
|
+ "failed to get valid pcie domain\n");
|
|
+
|
|
+ if (domain_nr == 0)
|
|
+ pcie->stg_pcie_base = STG_SYSCON_PCIE0_BASE;
|
|
+ else
|
|
+ pcie->stg_pcie_base = STG_SYSCON_PCIE1_BASE;
|
|
+
|
|
+ pcie->reset_gpio = devm_gpiod_get_optional(dev, "perst",
|
|
+ GPIOD_OUT_HIGH);
|
|
+ if (IS_ERR(pcie->reset_gpio))
|
|
+ return dev_err_probe(dev, PTR_ERR(pcie->reset_gpio),
|
|
+ "failed to get perst-gpio\n");
|
|
+
|
|
+ pcie->power_gpio = devm_gpiod_get_optional(dev, "enable",
|
|
+ GPIOD_OUT_LOW);
|
|
+ if (IS_ERR(pcie->power_gpio))
|
|
+ return dev_err_probe(dev, PTR_ERR(pcie->power_gpio),
|
|
+ "failed to get power-gpio\n");
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+static struct pci_ops starfive_pcie_ops = {
|
|
+ .map_bus = plda_pcie_map_bus,
|
|
+ .read = starfive_pcie_config_read,
|
|
+ .write = starfive_pcie_config_write,
|
|
+};
|
|
+
|
|
+static int starfive_pcie_clk_rst_init(struct starfive_jh7110_pcie *pcie)
|
|
+{
|
|
+ struct device *dev = pcie->plda.dev;
|
|
+ int ret;
|
|
+
|
|
+ ret = clk_bulk_prepare_enable(pcie->num_clks, pcie->clks);
|
|
+ if (ret)
|
|
+ return dev_err_probe(dev, ret, "failed to enable clocks\n");
|
|
+
|
|
+ ret = reset_control_deassert(pcie->resets);
|
|
+ if (ret) {
|
|
+ clk_bulk_disable_unprepare(pcie->num_clks, pcie->clks);
|
|
+ dev_err_probe(dev, ret, "failed to deassert resets\n");
|
|
+ }
|
|
+
|
|
+ return ret;
|
|
+}
|
|
+
|
|
+static void starfive_pcie_clk_rst_deinit(struct starfive_jh7110_pcie *pcie)
|
|
+{
|
|
+ reset_control_assert(pcie->resets);
|
|
+ clk_bulk_disable_unprepare(pcie->num_clks, pcie->clks);
|
|
+}
|
|
+
|
|
+static bool starfive_pcie_link_up(struct plda_pcie_rp *plda)
|
|
+{
|
|
+ struct starfive_jh7110_pcie *pcie =
|
|
+ container_of(plda, struct starfive_jh7110_pcie, plda);
|
|
+ int ret;
|
|
+ u32 stg_reg_val;
|
|
+
|
|
+ ret = regmap_read(pcie->reg_syscon,
|
|
+ pcie->stg_pcie_base + STG_SYSCON_LNKSTA_OFFSET,
|
|
+ &stg_reg_val);
|
|
+ if (ret) {
|
|
+ dev_err(pcie->plda.dev, "failed to read link status\n");
|
|
+ return false;
|
|
+ }
|
|
+
|
|
+ return !!(stg_reg_val & DATA_LINK_ACTIVE);
|
|
+}
|
|
+
|
|
+static int starfive_pcie_host_wait_for_link(struct starfive_jh7110_pcie *pcie)
|
|
+{
|
|
+ int retries;
|
|
+
|
|
+ /* Check if the link is up or not */
|
|
+ for (retries = 0; retries < LINK_WAIT_MAX_RETRIES; retries++) {
|
|
+ if (starfive_pcie_link_up(&pcie->plda)) {
|
|
+ dev_info(pcie->plda.dev, "port link up\n");
|
|
+ return 0;
|
|
+ }
|
|
+ usleep_range(LINK_WAIT_USLEEP_MIN, LINK_WAIT_USLEEP_MAX);
|
|
+ }
|
|
+
|
|
+ return -ETIMEDOUT;
|
|
+}
|
|
+
|
|
+static int starfive_pcie_enable_phy(struct device *dev,
|
|
+ struct starfive_jh7110_pcie *pcie)
|
|
+{
|
|
+ int ret;
|
|
+
|
|
+ if (!pcie->phy)
|
|
+ return 0;
|
|
+
|
|
+ ret = phy_init(pcie->phy);
|
|
+ if (ret)
|
|
+ return dev_err_probe(dev, ret,
|
|
+ "failed to initialize pcie phy\n");
|
|
+
|
|
+ ret = phy_set_mode(pcie->phy, PHY_MODE_PCIE);
|
|
+ if (ret) {
|
|
+ dev_err_probe(dev, ret, "failed to set pcie mode\n");
|
|
+ goto err_phy_on;
|
|
+ }
|
|
+
|
|
+ ret = phy_power_on(pcie->phy);
|
|
+ if (ret) {
|
|
+ dev_err_probe(dev, ret, "failed to power on pcie phy\n");
|
|
+ goto err_phy_on;
|
|
+ }
|
|
+
|
|
+ return 0;
|
|
+
|
|
+err_phy_on:
|
|
+ phy_exit(pcie->phy);
|
|
+ return ret;
|
|
+}
|
|
+
|
|
+static void starfive_pcie_disable_phy(struct starfive_jh7110_pcie *pcie)
|
|
+{
|
|
+ phy_power_off(pcie->phy);
|
|
+ phy_exit(pcie->phy);
|
|
+}
|
|
+
|
|
+static void starfive_pcie_host_deinit(struct plda_pcie_rp *plda)
|
|
+{
|
|
+ struct starfive_jh7110_pcie *pcie =
|
|
+ container_of(plda, struct starfive_jh7110_pcie, plda);
|
|
+
|
|
+ starfive_pcie_clk_rst_deinit(pcie);
|
|
+ if (pcie->power_gpio)
|
|
+ gpiod_set_value_cansleep(pcie->power_gpio, 0);
|
|
+ starfive_pcie_disable_phy(pcie);
|
|
+}
|
|
+
|
|
+static int starfive_pcie_host_init(struct plda_pcie_rp *plda)
|
|
+{
|
|
+ struct starfive_jh7110_pcie *pcie =
|
|
+ container_of(plda, struct starfive_jh7110_pcie, plda);
|
|
+ struct device *dev = plda->dev;
|
|
+ int ret;
|
|
+ int i;
|
|
+
|
|
+ ret = starfive_pcie_enable_phy(dev, pcie);
|
|
+ if (ret)
|
|
+ return ret;
|
|
+
|
|
+ regmap_update_bits(pcie->reg_syscon,
|
|
+ pcie->stg_pcie_base + STG_SYSCON_RP_NEP_OFFSET,
|
|
+ STG_SYSCON_K_RP_NEP, STG_SYSCON_K_RP_NEP);
|
|
+
|
|
+ regmap_update_bits(pcie->reg_syscon,
|
|
+ pcie->stg_pcie_base + STG_SYSCON_AW_OFFSET,
|
|
+ STG_SYSCON_CKREF_SRC_MASK,
|
|
+ FIELD_PREP(STG_SYSCON_CKREF_SRC_MASK, 2));
|
|
+
|
|
+ regmap_update_bits(pcie->reg_syscon,
|
|
+ pcie->stg_pcie_base + STG_SYSCON_AW_OFFSET,
|
|
+ STG_SYSCON_CLKREQ, STG_SYSCON_CLKREQ);
|
|
+
|
|
+ ret = starfive_pcie_clk_rst_init(pcie);
|
|
+ if (ret)
|
|
+ return ret;
|
|
+
|
|
+ if (pcie->power_gpio)
|
|
+ gpiod_set_value_cansleep(pcie->power_gpio, 1);
|
|
+
|
|
+ if (pcie->reset_gpio)
|
|
+ gpiod_set_value_cansleep(pcie->reset_gpio, 1);
|
|
+
|
|
+ /* Disable physical functions except #0 */
|
|
+ for (i = 1; i < PCIE_FUNC_NUM; i++) {
|
|
+ regmap_update_bits(pcie->reg_syscon,
|
|
+ pcie->stg_pcie_base + STG_SYSCON_AR_OFFSET,
|
|
+ STG_SYSCON_AXI4_SLVL_AR_MASK,
|
|
+ STG_SYSCON_AXI4_SLVL_PHY_AR(i));
|
|
+
|
|
+ regmap_update_bits(pcie->reg_syscon,
|
|
+ pcie->stg_pcie_base + STG_SYSCON_AW_OFFSET,
|
|
+ STG_SYSCON_AXI4_SLVL_AW_MASK,
|
|
+ STG_SYSCON_AXI4_SLVL_PHY_AW(i));
|
|
+
|
|
+ plda_pcie_disable_func(plda);
|
|
+ }
|
|
+
|
|
+ regmap_update_bits(pcie->reg_syscon,
|
|
+ pcie->stg_pcie_base + STG_SYSCON_AR_OFFSET,
|
|
+ STG_SYSCON_AXI4_SLVL_AR_MASK, 0);
|
|
+ regmap_update_bits(pcie->reg_syscon,
|
|
+ pcie->stg_pcie_base + STG_SYSCON_AW_OFFSET,
|
|
+ STG_SYSCON_AXI4_SLVL_AW_MASK, 0);
|
|
+
|
|
+ plda_pcie_enable_root_port(plda);
|
|
+ plda_pcie_write_rc_bar(plda, 0);
|
|
+
|
|
+ /* PCIe PCI Standard Configuration Identification Settings. */
|
|
+ plda_pcie_set_standard_class(plda);
|
|
+
|
|
+ /*
|
|
+ * The LTR message receiving is enabled by the register "PCIe Message
|
|
+ * Reception" as default, but the forward id & addr are uninitialized.
|
|
+ * If we do not disable LTR message forwarding here, or set a legal
|
|
+ * forwarding address, the kernel will get stuck.
|
|
+ * To workaround, disable the LTR message forwarding here before using
|
|
+ * this feature.
|
|
+ */
|
|
+ plda_pcie_disable_ltr(plda);
|
|
+
|
|
+ /*
|
|
+ * Enable the prefetchable memory window 64-bit addressing in JH7110.
|
|
+ * The 64-bits prefetchable address translation configurations in ATU
|
|
+ * can be work after enable the register setting below.
|
|
+ */
|
|
+ plda_pcie_set_pref_win_64bit(plda);
|
|
+
|
|
+ /*
|
|
+ * Ensure that PERST has been asserted for at least 100 ms,
|
|
+ * the sleep value is T_PVPERL from PCIe CEM spec r2.0 (Table 2-4)
|
|
+ */
|
|
+ msleep(100);
|
|
+ if (pcie->reset_gpio)
|
|
+ gpiod_set_value_cansleep(pcie->reset_gpio, 0);
|
|
+
|
|
+ /*
|
|
+ * With a Downstream Port (<=5GT/s), software must wait a minimum
|
|
+ * of 100ms following exit from a conventional reset before
|
|
+ * sending a configuration request to the device.
|
|
+ */
|
|
+ msleep(PCIE_RESET_CONFIG_DEVICE_WAIT_MS);
|
|
+
|
|
+ if (starfive_pcie_host_wait_for_link(pcie))
|
|
+ dev_info(dev, "port link down\n");
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+static const struct plda_pcie_host_ops sf_host_ops = {
|
|
+ .host_init = starfive_pcie_host_init,
|
|
+ .host_deinit = starfive_pcie_host_deinit,
|
|
+};
|
|
+
|
|
+static const struct plda_event stf_pcie_event = {
|
|
+ .intx_event = EVENT_PM_MSI_INT_INTX,
|
|
+ .msi_event = EVENT_PM_MSI_INT_MSI
|
|
+};
|
|
+
|
|
+static int starfive_pcie_probe(struct platform_device *pdev)
|
|
+{
|
|
+ struct starfive_jh7110_pcie *pcie;
|
|
+ struct device *dev = &pdev->dev;
|
|
+ struct plda_pcie_rp *plda;
|
|
+ int ret;
|
|
+
|
|
+ pcie = devm_kzalloc(dev, sizeof(*pcie), GFP_KERNEL);
|
|
+ if (!pcie)
|
|
+ return -ENOMEM;
|
|
+
|
|
+ plda = &pcie->plda;
|
|
+ plda->dev = dev;
|
|
+
|
|
+ ret = starfive_pcie_parse_dt(pcie, dev);
|
|
+ if (ret)
|
|
+ return ret;
|
|
+
|
|
+ plda->host_ops = &sf_host_ops;
|
|
+ plda->num_events = PLDA_MAX_EVENT_NUM;
|
|
+ /* mask doorbell event */
|
|
+ plda->events_bitmap = GENMASK(PLDA_INT_EVENT_NUM - 1, 0)
|
|
+ & ~BIT(PLDA_AXI_DOORBELL)
|
|
+ & ~BIT(PLDA_PCIE_DOORBELL);
|
|
+ plda->events_bitmap <<= PLDA_NUM_DMA_EVENTS;
|
|
+ ret = plda_pcie_host_init(&pcie->plda, &starfive_pcie_ops,
|
|
+ &stf_pcie_event);
|
|
+ if (ret)
|
|
+ return ret;
|
|
+
|
|
+ pm_runtime_enable(&pdev->dev);
|
|
+ pm_runtime_get_sync(&pdev->dev);
|
|
+ platform_set_drvdata(pdev, pcie);
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+static void starfive_pcie_remove(struct platform_device *pdev)
|
|
+{
|
|
+ struct starfive_jh7110_pcie *pcie = platform_get_drvdata(pdev);
|
|
+
|
|
+ pm_runtime_put(&pdev->dev);
|
|
+ pm_runtime_disable(&pdev->dev);
|
|
+ plda_pcie_host_deinit(&pcie->plda);
|
|
+ platform_set_drvdata(pdev, NULL);
|
|
+}
|
|
+
|
|
+static int starfive_pcie_suspend_noirq(struct device *dev)
|
|
+{
|
|
+ struct starfive_jh7110_pcie *pcie = dev_get_drvdata(dev);
|
|
+
|
|
+ clk_bulk_disable_unprepare(pcie->num_clks, pcie->clks);
|
|
+ starfive_pcie_disable_phy(pcie);
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+static int starfive_pcie_resume_noirq(struct device *dev)
|
|
+{
|
|
+ struct starfive_jh7110_pcie *pcie = dev_get_drvdata(dev);
|
|
+ int ret;
|
|
+
|
|
+ ret = starfive_pcie_enable_phy(dev, pcie);
|
|
+ if (ret)
|
|
+ return ret;
|
|
+
|
|
+ ret = clk_bulk_prepare_enable(pcie->num_clks, pcie->clks);
|
|
+ if (ret) {
|
|
+ dev_err(dev, "failed to enable clocks\n");
|
|
+ starfive_pcie_disable_phy(pcie);
|
|
+ return ret;
|
|
+ }
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+static const struct dev_pm_ops starfive_pcie_pm_ops = {
|
|
+ NOIRQ_SYSTEM_SLEEP_PM_OPS(starfive_pcie_suspend_noirq,
|
|
+ starfive_pcie_resume_noirq)
|
|
+};
|
|
+
|
|
+static const struct of_device_id starfive_pcie_of_match[] = {
|
|
+ { .compatible = "starfive,jh7110-pcie", },
|
|
+ { /* sentinel */ }
|
|
+};
|
|
+MODULE_DEVICE_TABLE(of, starfive_pcie_of_match);
|
|
+
|
|
+static struct platform_driver starfive_pcie_driver = {
|
|
+ .driver = {
|
|
+ .name = "pcie-starfive",
|
|
+ .of_match_table = of_match_ptr(starfive_pcie_of_match),
|
|
+ .pm = pm_sleep_ptr(&starfive_pcie_pm_ops),
|
|
+ },
|
|
+ .probe = starfive_pcie_probe,
|
|
+ .remove_new = starfive_pcie_remove,
|
|
+};
|
|
+module_platform_driver(starfive_pcie_driver);
|
|
+
|
|
+MODULE_DESCRIPTION("StarFive JH7110 PCIe host driver");
|
|
+MODULE_LICENSE("GPL v2");
|
|
|
|
From 2904244a8c46bdd0fee181df693a495f4628a575 Mon Sep 17 00:00:00 2001
|
|
From: Minda Chen <minda.chen@starfivetech.com>
|
|
Date: Fri, 21 Jun 2024 16:22:31 +0800
|
|
Subject: riscv: dts: starfive: add PCIe dts configuration for JH7110
|
|
|
|
Add PCIe dts configuraion for JH7110 SoC platform. The Star64 only has
|
|
one exposed PCIe port, so only the Mars and VisionFive 2 get two
|
|
enabled.
|
|
|
|
Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
|
|
Reviewed-by: Hal Feng <hal.feng@starfivetech.com>
|
|
[conor: squash in star64's single exposed port]
|
|
Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
|
|
---
|
|
arch/riscv/boot/dts/starfive/jh7110-common.dtsi | 62 ++++++++++++++++
|
|
arch/riscv/boot/dts/starfive/jh7110-milkv-mars.dts | 7 ++
|
|
.../dts/starfive/jh7110-starfive-visionfive-2.dtsi | 8 ++
|
|
arch/riscv/boot/dts/starfive/jh7110.dtsi | 86 ++++++++++++++++++++++
|
|
5 files changed, 167 insertions(+)
|
|
|
|
(limited to 'arch/riscv/boot/dts/starfive')
|
|
|
|
diff --git a/arch/riscv/boot/dts/starfive/jh7110-common.dtsi b/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
|
|
index 37b4c294ffcc53..20bc8c03b8215c 100644
|
|
--- a/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
|
|
+++ b/arch/riscv/boot/dts/starfive/jh7110-common.dtsi
|
|
@@ -294,6 +294,20 @@
|
|
status = "okay";
|
|
};
|
|
|
|
+&pcie0 {
|
|
+ perst-gpios = <&sysgpio 26 GPIO_ACTIVE_LOW>;
|
|
+ phys = <&pciephy0>;
|
|
+ pinctrl-names = "default";
|
|
+ pinctrl-0 = <&pcie0_pins>;
|
|
+};
|
|
+
|
|
+&pcie1 {
|
|
+ perst-gpios = <&sysgpio 28 GPIO_ACTIVE_LOW>;
|
|
+ phys = <&pciephy1>;
|
|
+ pinctrl-names = "default";
|
|
+ pinctrl-0 = <&pcie1_pins>;
|
|
+};
|
|
+
|
|
&pwmdac {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pwmdac_pins>;
|
|
@@ -473,6 +487,54 @@
|
|
};
|
|
};
|
|
|
|
+ pcie0_pins: pcie0-0 {
|
|
+ clkreq-pins {
|
|
+ pinmux = <GPIOMUX(27, GPOUT_LOW,
|
|
+ GPOEN_DISABLE,
|
|
+ GPI_NONE)>;
|
|
+ bias-pull-down;
|
|
+ drive-strength = <2>;
|
|
+ input-enable;
|
|
+ input-schmitt-disable;
|
|
+ slew-rate = <0>;
|
|
+ };
|
|
+
|
|
+ wake-pins {
|
|
+ pinmux = <GPIOMUX(32, GPOUT_LOW,
|
|
+ GPOEN_DISABLE,
|
|
+ GPI_NONE)>;
|
|
+ bias-pull-up;
|
|
+ drive-strength = <2>;
|
|
+ input-enable;
|
|
+ input-schmitt-disable;
|
|
+ slew-rate = <0>;
|
|
+ };
|
|
+ };
|
|
+
|
|
+ pcie1_pins: pcie1-0 {
|
|
+ clkreq-pins {
|
|
+ pinmux = <GPIOMUX(29, GPOUT_LOW,
|
|
+ GPOEN_DISABLE,
|
|
+ GPI_NONE)>;
|
|
+ bias-pull-down;
|
|
+ drive-strength = <2>;
|
|
+ input-enable;
|
|
+ input-schmitt-disable;
|
|
+ slew-rate = <0>;
|
|
+ };
|
|
+
|
|
+ wake-pins {
|
|
+ pinmux = <GPIOMUX(21, GPOUT_LOW,
|
|
+ GPOEN_DISABLE,
|
|
+ GPI_NONE)>;
|
|
+ bias-pull-up;
|
|
+ drive-strength = <2>;
|
|
+ input-enable;
|
|
+ input-schmitt-disable;
|
|
+ slew-rate = <0>;
|
|
+ };
|
|
+ };
|
|
+
|
|
pwmdac_pins: pwmdac-0 {
|
|
pwmdac-pins {
|
|
pinmux = <GPIOMUX(33, GPOUT_SYS_PWMDAC_LEFT,
|
|
diff --git a/arch/riscv/boot/dts/starfive/jh7110-milkv-mars.dts b/arch/riscv/boot/dts/starfive/jh7110-milkv-mars.dts
|
|
index fa0eac78e0ba6e..5cb9e99e1dacd5 100644
|
|
--- a/arch/riscv/boot/dts/starfive/jh7110-milkv-mars.dts
|
|
+++ b/arch/riscv/boot/dts/starfive/jh7110-milkv-mars.dts
|
|
@@ -17,6 +17,13 @@
|
|
assigned-clock-parents = <&aoncrg JH7110_AONCLK_GMAC0_RMII_RTX>;
|
|
};
|
|
|
|
+&pcie0 {
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&pcie1 {
|
|
+ status = "okay";
|
|
+};
|
|
|
|
&phy0 {
|
|
motorcomm,tx-clk-adj-enabled;
|
|
diff --git a/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi b/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi
|
|
index 9d70f21c86fc6e..18f38fc790a4d1 100644
|
|
--- a/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi
|
|
+++ b/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi
|
|
@@ -32,3 +32,11 @@
|
|
&mmc0 {
|
|
non-removable;
|
|
};
|
|
+
|
|
+&pcie0 {
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&pcie1 {
|
|
+ status = "okay";
|
|
+};
|
|
diff --git a/arch/riscv/boot/dts/starfive/jh7110.dtsi b/arch/riscv/boot/dts/starfive/jh7110.dtsi
|
|
index 18047195c600bd..5ac70759e0ab9e 100644
|
|
--- a/arch/riscv/boot/dts/starfive/jh7110.dtsi
|
|
+++ b/arch/riscv/boot/dts/starfive/jh7110.dtsi
|
|
@@ -1214,5 +1214,91 @@
|
|
#reset-cells = <1>;
|
|
power-domains = <&pwrc JH7110_PD_VOUT>;
|
|
};
|
|
+
|
|
+ pcie0: pcie@940000000 {
|
|
+ compatible = "starfive,jh7110-pcie";
|
|
+ reg = <0x9 0x40000000 0x0 0x1000000>,
|
|
+ <0x0 0x2b000000 0x0 0x100000>;
|
|
+ reg-names = "cfg", "apb";
|
|
+ linux,pci-domain = <0>;
|
|
+ #address-cells = <3>;
|
|
+ #size-cells = <2>;
|
|
+ #interrupt-cells = <1>;
|
|
+ ranges = <0x82000000 0x0 0x30000000 0x0 0x30000000 0x0 0x08000000>,
|
|
+ <0xc3000000 0x9 0x00000000 0x9 0x00000000 0x0 0x40000000>;
|
|
+ interrupts = <56>;
|
|
+ interrupt-map-mask = <0x0 0x0 0x0 0x7>;
|
|
+ interrupt-map = <0x0 0x0 0x0 0x1 &pcie_intc0 0x1>,
|
|
+ <0x0 0x0 0x0 0x2 &pcie_intc0 0x2>,
|
|
+ <0x0 0x0 0x0 0x3 &pcie_intc0 0x3>,
|
|
+ <0x0 0x0 0x0 0x4 &pcie_intc0 0x4>;
|
|
+ msi-controller;
|
|
+ device_type = "pci";
|
|
+ starfive,stg-syscon = <&stg_syscon>;
|
|
+ bus-range = <0x0 0xff>;
|
|
+ clocks = <&syscrg JH7110_SYSCLK_NOC_BUS_STG_AXI>,
|
|
+ <&stgcrg JH7110_STGCLK_PCIE0_TL>,
|
|
+ <&stgcrg JH7110_STGCLK_PCIE0_AXI_MST0>,
|
|
+ <&stgcrg JH7110_STGCLK_PCIE0_APB>;
|
|
+ clock-names = "noc", "tl", "axi_mst0", "apb";
|
|
+ resets = <&stgcrg JH7110_STGRST_PCIE0_AXI_MST0>,
|
|
+ <&stgcrg JH7110_STGRST_PCIE0_AXI_SLV0>,
|
|
+ <&stgcrg JH7110_STGRST_PCIE0_AXI_SLV>,
|
|
+ <&stgcrg JH7110_STGRST_PCIE0_BRG>,
|
|
+ <&stgcrg JH7110_STGRST_PCIE0_CORE>,
|
|
+ <&stgcrg JH7110_STGRST_PCIE0_APB>;
|
|
+ reset-names = "mst0", "slv0", "slv", "brg",
|
|
+ "core", "apb";
|
|
+ status = "disabled";
|
|
+
|
|
+ pcie_intc0: interrupt-controller {
|
|
+ #address-cells = <0>;
|
|
+ #interrupt-cells = <1>;
|
|
+ interrupt-controller;
|
|
+ };
|
|
+ };
|
|
+
|
|
+ pcie1: pcie@9c0000000 {
|
|
+ compatible = "starfive,jh7110-pcie";
|
|
+ reg = <0x9 0xc0000000 0x0 0x1000000>,
|
|
+ <0x0 0x2c000000 0x0 0x100000>;
|
|
+ reg-names = "cfg", "apb";
|
|
+ linux,pci-domain = <1>;
|
|
+ #address-cells = <3>;
|
|
+ #size-cells = <2>;
|
|
+ #interrupt-cells = <1>;
|
|
+ ranges = <0x82000000 0x0 0x38000000 0x0 0x38000000 0x0 0x08000000>,
|
|
+ <0xc3000000 0x9 0x80000000 0x9 0x80000000 0x0 0x40000000>;
|
|
+ interrupts = <57>;
|
|
+ interrupt-map-mask = <0x0 0x0 0x0 0x7>;
|
|
+ interrupt-map = <0x0 0x0 0x0 0x1 &pcie_intc1 0x1>,
|
|
+ <0x0 0x0 0x0 0x2 &pcie_intc1 0x2>,
|
|
+ <0x0 0x0 0x0 0x3 &pcie_intc1 0x3>,
|
|
+ <0x0 0x0 0x0 0x4 &pcie_intc1 0x4>;
|
|
+ msi-controller;
|
|
+ device_type = "pci";
|
|
+ starfive,stg-syscon = <&stg_syscon>;
|
|
+ bus-range = <0x0 0xff>;
|
|
+ clocks = <&syscrg JH7110_SYSCLK_NOC_BUS_STG_AXI>,
|
|
+ <&stgcrg JH7110_STGCLK_PCIE1_TL>,
|
|
+ <&stgcrg JH7110_STGCLK_PCIE1_AXI_MST0>,
|
|
+ <&stgcrg JH7110_STGCLK_PCIE1_APB>;
|
|
+ clock-names = "noc", "tl", "axi_mst0", "apb";
|
|
+ resets = <&stgcrg JH7110_STGRST_PCIE1_AXI_MST0>,
|
|
+ <&stgcrg JH7110_STGRST_PCIE1_AXI_SLV0>,
|
|
+ <&stgcrg JH7110_STGRST_PCIE1_AXI_SLV>,
|
|
+ <&stgcrg JH7110_STGRST_PCIE1_BRG>,
|
|
+ <&stgcrg JH7110_STGRST_PCIE1_CORE>,
|
|
+ <&stgcrg JH7110_STGRST_PCIE1_APB>;
|
|
+ reset-names = "mst0", "slv0", "slv", "brg",
|
|
+ "core", "apb";
|
|
+ status = "disabled";
|
|
+
|
|
+ pcie_intc1: interrupt-controller {
|
|
+ #address-cells = <0>;
|
|
+ #interrupt-cells = <1>;
|
|
+ interrupt-controller;
|
|
+ };
|
|
+ };
|
|
};
|
|
};
|
|
--
|
|
cgit 1.2.3-korg
|
|
|
|
From patchwork Tue Feb 27 10:35:21 2024
|
|
Content-Type: text/plain; charset="utf-8"
|
|
MIME-Version: 1.0
|
|
Content-Transfer-Encoding: 7bit
|
|
X-Patchwork-Submitter: Minda Chen <minda.chen@starfivetech.com>
|
|
X-Patchwork-Id: 13573530
|
|
Return-Path:
|
|
<linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org>
|
|
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 13397C54798
|
|
for <linux-riscv@archiver.kernel.org>; Tue, 27 Feb 2024 10:37:42 +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:References:In-Reply-To:
|
|
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:
|
|
List-Owner; bh=7cWkz1q/RYOqITPfajQ3svZRpED3q+dyJaqnepT0N7c=; b=s9nCCdH0xUgLpO
|
|
fEManFTnpSL8GiY7ePdq1osfBXiN9w1vviMnGMIVctAnOMyGmsMZvuUU3YQavRBBLJQQLkUPs1Bvj
|
|
s1n8aAYrTiwjVartPmXPmo4R2Zc6C94SQsI7e30pePqCYCzAEzcsEFRFUUxrp2VhuGvhf9DMjVCac
|
|
QXkDF5Vfiq+QEG5Fv8nBjv/rCOm9HGKnJO+1Ncr9Krt4MWVwTbAaKqWhalRbVJLkkgsph7huZIcy2
|
|
5pY3KjU/bJgEVhFi5AV8/qFimv50rlFFQG14lKv5NWwL1yyCOc30mndGy9kswWZYNsFAGyhXr+c8R
|
|
wKNr6RZ2ysjkjRVZp58A==;
|
|
Received: from localhost ([::1] helo=bombadil.infradead.org)
|
|
by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux))
|
|
id 1reuq9-00000004mmE-2M1k;
|
|
Tue, 27 Feb 2024 10:37:37 +0000
|
|
Received: from mail-sh0chn02on2072e.outbound.protection.partner.outlook.cn
|
|
([2406:e500:4420:2::72e]
|
|
helo=CHN02-SH0-obe.outbound.protection.partner.outlook.cn)
|
|
by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux))
|
|
id 1reuoe-00000004lN4-2DZb
|
|
for linux-riscv@lists.infradead.org;
|
|
Tue, 27 Feb 2024 10:36:06 +0000
|
|
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
|
|
b=WHsuYgLPP+/qmA/+R6jGjAIUjzPw4opqEOV18DzmFF/O1SeUtAO8L9x9rxZY6eF0zCMirOoVsKuGwv+ttVvuj+iX6qrr4G3YxXhnnkEo8onkJh+aPlY1IYVAoExIG5tEfbV2NfN1QQQsy9g4re8CvwTjuUW62BSWV3HMbTAVR3Vxav17GZAwvwlIbyVfK11QLd1Hc2Xlp14dxAMsFT4n7CRG11fccbzUf6CQKJREikDykE64KQ9B/OssgBOwsVgoyVV6VYXrf8hP6YR3r1wwQdV/vmyD3BWGl45tYc/fmmyzawK5x/yep2rfN1EhRYLodMTil07vsC015edac/hqeQ==
|
|
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
|
|
s=arcselector9901;
|
|
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
|
|
bh=yGwEVnjesGyg+IGj8N8t8tCwaLr08GpiDbq+vLxRUQ8=;
|
|
b=FRMMsmSvy9C27Z87It+gwkCZ+p5TaWW20KFaDRAnLyLJwHkegabL07o/b52039QzG/wiqT7YOKZOBMDarQqV5o9a29CpoybdHVYPlAEfusmje+Fr1pOBKsMuwnTXAOy1NzVsF3PhYFuEKpa+LDYMAPgbxfk/wM3Ad6sEdJ46mM8uPxEmOG2mW+1SOJGM/AalKX7IPVrfc7ugXiURNaQa4PgpHLwgX0ul9zMDyx9+byAcsskQDoO/wKfmsrGRKCMT6Dq8QhLoP+NV6j9Y0siK/tDBP4urJg7DcUH8LwWLHqYIld4DQvegD7WWd9VagDhwsbjZLNx2aYljudol8ow0vg==
|
|
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
|
|
smtp.mailfrom=starfivetech.com; dmarc=pass action=none
|
|
header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none
|
|
Authentication-Results: dkim=none (message not signed)
|
|
header.d=none;dmarc=none action=none header.from=starfivetech.com;
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15) by SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15) with Microsoft SMTP Server (version=TLS1_2,
|
|
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7270.47; Tue, 27 Feb
|
|
2024 10:35:52 +0000
|
|
Received: from SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
([fe80::5a5a:fa59:15fd:63dc]) by
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn ([fe80::5a5a:fa59:15fd:63dc%3])
|
|
with mapi id 15.20.7270.047; Tue, 27 Feb 2024 10:35:52 +0000
|
|
From: Minda Chen <minda.chen@starfivetech.com>
|
|
To: Conor Dooley <conor@kernel.org>,
|
|
=?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kw@linux.com>,
|
|
Rob Herring <robh+dt@kernel.org>, Bjorn Helgaas <bhelgaas@google.com>,
|
|
Lorenzo Pieralisi <lpieralisi@kernel.org>,
|
|
Thomas Gleixner <tglx@linutronix.de>,
|
|
Daire McNamara <daire.mcnamara@microchip.com>,
|
|
Emil Renner Berthing <emil.renner.berthing@canonical.com>,
|
|
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
|
|
Cc: devicetree@vger.kernel.org,
|
|
linux-kernel@vger.kernel.org,
|
|
linux-riscv@lists.infradead.org,
|
|
linux-pci@vger.kernel.org,
|
|
Paul Walmsley <paul.walmsley@sifive.com>,
|
|
Palmer Dabbelt <palmer@dabbelt.com>,
|
|
Albert Ou <aou@eecs.berkeley.edu>,
|
|
Philipp Zabel <p.zabel@pengutronix.de>,
|
|
Mason Huo <mason.huo@starfivetech.com>,
|
|
Leyfoon Tan <leyfoon.tan@starfivetech.com>,
|
|
Kevin Xie <kevin.xie@starfivetech.com>,
|
|
Minda Chen <minda.chen@starfivetech.com>
|
|
Subject: [PATCH v15,RESEND 22/23] PCI: starfive: Offload the NVMe timeout
|
|
workaround to host drivers.
|
|
Date: Tue, 27 Feb 2024 18:35:21 +0800
|
|
Message-Id: <20240227103522.80915-23-minda.chen@starfivetech.com>
|
|
X-Mailer: git-send-email 2.17.1
|
|
In-Reply-To: <20240227103522.80915-1-minda.chen@starfivetech.com>
|
|
References: <20240227103522.80915-1-minda.chen@starfivetech.com>
|
|
X-ClientProxiedBy: NT0PR01CA0003.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c510::15) To SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
(2406:e500:c311:25::15)
|
|
MIME-Version: 1.0
|
|
X-MS-PublicTrafficType: Email
|
|
X-MS-TrafficTypeDiagnostic: SHXPR01MB0863:EE_
|
|
X-MS-Office365-Filtering-Correlation-Id: e8c49661-21f3-486e-017e-08dc377fdef2
|
|
X-MS-Exchange-SenderADCheck: 1
|
|
X-Microsoft-Antispam: BCL:0;
|
|
X-Microsoft-Antispam-Message-Info:
|
|
q7fbERTA0VzLvOUyVBYR8WMrAvU5OPQJhex/7IRjoZ/m4LRkrnFVldLkFLcaEhobgmaNNieen7pxHtr7kGg7+YpOrknHTv/iKPW9o+MISBFRJddw+f24fKZXzKH81uTtQ2MtNGuCz8Ca3TUtZa77ykXAp2dmkuRrMg/M7LwL/ZhS+AQZRSgCG1Jh0td3ugenjsScykca3hnfAFGsOP0puVvr34nicphWG3yJOAa67pTm7wG+7vluD1B6ATsvWvp6DQF/3yviJSUTptE5bdrNXRqEAbEtY0EL2+to+WUOLa2beUZCGW0+Gd8aQsfnc79w4nHKqxMN7H2E6WWOH8WbzY8rMY27w4weZu33fo2ezENc1RM1C6p4HXwPAy3FnvXd/E2F9tZg0f6HI+ds2hCbAbnGMVjUk9WR+XknPbnup+pfuLZEgA92X7doVYx0M2UUkbjRdkNUQimTkj5f0+izHfJrCVyuZ3a6wN3DAb0RhT0MEv3Zpm8erjZ6VxtHDddZTXHvs4p+1Q1SYA01SMrtS+SUAhBh8rD9O6n/RN+3umGfuDnUjmZuggtWtxUcyxi3fMyPgd3SAj8LqkYhvmnU77BSISIUYwzbQXJLr1KaXH74ivV+PQVLlCg8iR5mvBdL
|
|
X-Forefront-Antispam-Report:
|
|
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230031)(38350700005);DIR:OUT;SFP:1102;
|
|
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
|
|
X-MS-Exchange-AntiSpam-MessageData-0:
|
|
Pyf7fz9uvlxgVqrAzGu/DOkJUoQlVZ757BfMvr+fC26AtWQ59XNAOlmvHZ5U1V6WkeB0nZYch4GH1dJim0mi1ClvaBhC3g5Y1k1MwpG+xnYcMubZv08GZ9RiQoY1q0WMMzIxL7Vv2g2F+mOzv4kk5UZGhJCjGKb7LBT9MAmNVsgaYR8m/e8/CvQ4LSLy3eIY16ZWzPeUSYe29TD/wGYUSe95q94C1gBeCoUD3EzUbPkRRxU8i1fvzgVnp5nXQUbMdIuPQ2DfZjO0OD42bg8q0w6m0VU31s2FT6P3z7hbLfVkAk2MVSOCsZlphi7FL/vpe4rlUs0IBZxAVyVXH5a6EbINX6jJzmGwDXn/Uv3aGoYR4EabkUUQqyaDDEITt+YNn+ajxMvrKqb92Xmr1/khDrhSXRJ7qo/kUon0KSqWgVDHW5cm/svfJ5/I9jddW0eQoGJDovxbuRncA3EpGTMP298MwYvsEdL2/n1aU/DlZKbQi7ytsl9SyHs8J+Hqc4Ybmg1I40agN8mopZu19Clqrp95nhXThVRQfvV4iWwxnHwGSWNdlU7tJl7ZgJNRKDCxfXRchefsFsleCXhhstKnY5CwbUMr6M1kBMb66EfmIhqLo611R6EFi+jucmQxyt3tIi4fn3l/b6q26c60sRIj9yZmPwPScKOzTi1BvHBSuo4EBDaUgNOD9HmasqJYG8DTiD6wiaUTUbz/IzCvFDNMHIyacPeWt6E8P56Gh2MzSJBYGS6/8bsX4gA7Tp+SLXBmzmHpzQubw1XUjQCSFOrE1lMA5HfrVhQOmIB4hi05MWSlvqKP+2ZxVva4NnqQ3H44RgwQe5/psySmD0QBug3P1qg8qUUgc7XWoCzn8rkH6da0FqgzKfM8Fpm35hHpWQhgmsVgqmxwOFivYSENAs/qfmu3f1rqFQBiBbwKkMCKv0Fu6QkrCJ+eoJcQVlCEkN97/ZrtW7et2mmqF+ze1ujrLagiFBhME+x8T9Ogxz4axoWml8LuP/LRjqO/i/VoxvaCKIBhSdg/mDzQaMeqV24s8yKJsgQ33e9fEVjiwbDz5aBt1L5kxAuBtWYPf4+YlT3GkYI53ds81AdmPuYMvr8X/QJKyzC548+DtAIGcQm2DoGWDevz1yQaDvB7eUsEm63y87oaZ3CN8O6m+y+bTB81xjt3gJMUNuXN0TFBX9geym7wFq6UKIk0FgKmfrR8aVYfP2GFM5K2LrqR4gR6pNYEGNvchd0YyOpdPsAv8BVa5lCtl32PdNuze5tKM9o3WRv9VovBTfs4NTRjzUE+mX4KHmjZqCvMwayu8kTSgAEyo2hvGWRH7xN64G1OIFNGsGMq2fb3oImSANgDw4fCyrKs2NLjHAK+4I4JT1rPGYS8SMErMTrKs+7Qb4gm5NwmrNQbpaUPBGgmcyL8q2znFBSHj7LzgPcv3rPKPMs73QJIkpWgJgfW3o8o+PYTnyP6hb25/zEeht5hVkOBQoyHTQc1GIF3UvLvahzgXb7ffcxB1nQG5KIZKKNUKY9vFFRjblZr/l00uJo722YDSKr43Z20UjARbHS55N78J17reNO1P2E6lvA9/2M5CEwHj0kr9si7zlR+NcyYX3vPHlMp/aGqSw==
|
|
X-OriginatorOrg: starfivetech.com
|
|
X-MS-Exchange-CrossTenant-Network-Message-Id:
|
|
e8c49661-21f3-486e-017e-08dc377fdef2
|
|
X-MS-Exchange-CrossTenant-AuthSource:
|
|
SHXPR01MB0863.CHNPR01.prod.partner.outlook.cn
|
|
X-MS-Exchange-CrossTenant-AuthAs: Internal
|
|
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Feb 2024 10:35:52.1693
|
|
(UTC)
|
|
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
|
|
X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c
|
|
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
|
|
X-MS-Exchange-CrossTenant-UserPrincipalName:
|
|
CsbLUkwtaPPwweU0AhqQRx7T5ln6i76bpcn+jZGsjyKdpcKb3PTeC+cqMTMwueuC8ha9f253SCIiggjdjZGHJY3f8CKLTx5uUTGWqKRMy7g=
|
|
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SHXPR01MB0863
|
|
X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3
|
|
X-CRM114-CacheID: sfid-20240227_023604_804523_AC8F6A56
|
|
X-CRM114-Status: GOOD ( 13.76 )
|
|
X-BeenThere: linux-riscv@lists.infradead.org
|
|
X-Mailman-Version: 2.1.34
|
|
Precedence: list
|
|
List-Id: <linux-riscv.lists.infradead.org>
|
|
List-Unsubscribe: <http://lists.infradead.org/mailman/options/linux-riscv>,
|
|
<mailto:linux-riscv-request@lists.infradead.org?subject=unsubscribe>
|
|
List-Archive: <http://lists.infradead.org/pipermail/linux-riscv/>
|
|
List-Post: <mailto:linux-riscv@lists.infradead.org>
|
|
List-Help: <mailto:linux-riscv-request@lists.infradead.org?subject=help>
|
|
List-Subscribe: <http://lists.infradead.org/mailman/listinfo/linux-riscv>,
|
|
<mailto:linux-riscv-request@lists.infradead.org?subject=subscribe>
|
|
Sender: "linux-riscv" <linux-riscv-bounces@lists.infradead.org>
|
|
Errors-To:
|
|
linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org
|
|
|
|
From: Kevin Xie <kevin.xie@starfivetech.com>
|
|
|
|
As the Starfive JH7110 hardware can't keep two inbound post write in
|
|
order all the time, such as MSI messages and NVMe completions. If the
|
|
NVMe completion update later than the MSI, an NVMe IRQ handle will miss.
|
|
|
|
As a workaround, we will wait a while before going to the generic
|
|
handle here.
|
|
|
|
Verified with NVMe SSD, USB SSD, R8169 NIC.
|
|
The performance are stable and even higher after this patch.
|
|
|
|
Signed-off-by: Kevin Xie <kevin.xie@starfivetech.com>
|
|
Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
|
|
---
|
|
drivers/pci/controller/plda/pcie-plda-host.c | 12 ++++++++++++
|
|
drivers/pci/controller/plda/pcie-plda.h | 1 +
|
|
drivers/pci/controller/plda/pcie-starfive.c | 1 +
|
|
3 files changed, 14 insertions(+)
|
|
|
|
diff --git a/drivers/pci/controller/plda/pcie-plda-host.c b/drivers/pci/controller/plda/pcie-plda-host.c
|
|
index a18923d7cea6..9e077ddf45c0 100644
|
|
--- a/drivers/pci/controller/plda/pcie-plda-host.c
|
|
+++ b/drivers/pci/controller/plda/pcie-plda-host.c
|
|
@@ -13,6 +13,7 @@
|
|
#include <linux/msi.h>
|
|
#include <linux/pci_regs.h>
|
|
#include <linux/pci-ecam.h>
|
|
+#include <linux/delay.h>
|
|
|
|
#include "pcie-plda.h"
|
|
|
|
@@ -44,6 +45,17 @@ static void plda_handle_msi(struct irq_desc *desc)
|
|
bridge_base_addr + ISTATUS_LOCAL);
|
|
status = readl_relaxed(bridge_base_addr + ISTATUS_MSI);
|
|
for_each_set_bit(bit, &status, msi->num_vectors) {
|
|
+ /*
|
|
+ * As the Starfive JH7110 hardware can't keep two
|
|
+ * inbound post write in order all the time, such as
|
|
+ * MSI messages and NVMe completions.
|
|
+ * If the NVMe completion update later than the MSI,
|
|
+ * an NVMe IRQ handle will miss.
|
|
+ * As a workaround, we will wait a while before
|
|
+ * going to the generic handle here.
|
|
+ */
|
|
+ if (port->msi_quirk_delay_us)
|
|
+ udelay(port->msi_quirk_delay_us);
|
|
ret = generic_handle_domain_irq(msi->dev_domain, bit);
|
|
if (ret)
|
|
dev_err_ratelimited(dev, "bad MSI IRQ %d\n",
|
|
diff --git a/drivers/pci/controller/plda/pcie-plda.h b/drivers/pci/controller/plda/pcie-plda.h
|
|
index 04e385758a2f..feccf285dfe8 100644
|
|
--- a/drivers/pci/controller/plda/pcie-plda.h
|
|
+++ b/drivers/pci/controller/plda/pcie-plda.h
|
|
@@ -186,6 +186,7 @@ struct plda_pcie_rp {
|
|
int msi_irq;
|
|
int intx_irq;
|
|
int num_events;
|
|
+ u16 msi_quirk_delay_us;
|
|
};
|
|
|
|
struct plda_event {
|
|
diff --git a/drivers/pci/controller/plda/pcie-starfive.c b/drivers/pci/controller/plda/pcie-starfive.c
|
|
index 9bb9f0e29565..5cfc30572b7f 100644
|
|
--- a/drivers/pci/controller/plda/pcie-starfive.c
|
|
+++ b/drivers/pci/controller/plda/pcie-starfive.c
|
|
@@ -391,6 +391,7 @@ static int starfive_pcie_probe(struct platform_device *pdev)
|
|
|
|
plda->host_ops = &sf_host_ops;
|
|
plda->num_events = PLDA_MAX_EVENT_NUM;
|
|
+ plda->msi_quirk_delay_us = 1;
|
|
/* mask doorbell event */
|
|
plda->events_bitmap = GENMASK(PLDA_INT_EVENT_NUM - 1, 0)
|
|
& ~BIT(PLDA_AXI_DOORBELL)
|