From nobody Fri Nov 29 18:43:26 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail(p=none dis=none) header.from=arm.com Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1632853388206331.25090962869047; Tue, 28 Sep 2021 11:23:08 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.198278.351685 (Exim 4.92) (envelope-from ) id 1mVHkk-0004j9-Qo; Tue, 28 Sep 2021 18:22:54 +0000 Received: by outflank-mailman (output) from mailman id 198278.351685; Tue, 28 Sep 2021 18:22:54 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mVHkk-0004j2-NC; Tue, 28 Sep 2021 18:22:54 +0000 Received: by outflank-mailman (input) for mailman id 198278; Tue, 28 Sep 2021 18:22:53 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1mVHkj-0004g0-Eq for xen-devel@lists.xenproject.org; Tue, 28 Sep 2021 18:22:53 +0000 Received: from foss.arm.com (unknown [217.140.110.172]) by us1-rack-iad1.inumbo.com (Halon) with ESMTP id 8c62079f-236d-49c5-9a98-bd6b520a552e; Tue, 28 Sep 2021 18:22:52 +0000 (UTC) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 0810B6D; Tue, 28 Sep 2021 11:22:52 -0700 (PDT) Received: from e109506.cambridge.arm.com (e109506.cambridge.arm.com [10.1.199.1]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id E1B873F793; Tue, 28 Sep 2021 11:22:50 -0700 (PDT) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 8c62079f-236d-49c5-9a98-bd6b520a552e From: Rahul Singh To: xen-devel@lists.xenproject.org Cc: bertrand.marquis@arm.com, rahul.singh@arm.com, Andre.Przywara@arm.com, Oleksandr Andrushchenko , Stefano Stabellini , Julien Grall , Volodymyr Babchuk Subject: [PATCH v3 12/17] xen/arm: Add support for Xilinx ZynqMP PCI host controller Date: Tue, 28 Sep 2021 19:18:21 +0100 Message-Id: X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: References: X-ZM-MESSAGEID: 1632853389264100005 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Oleksandr Andrushchenko Add support for Xilinx ZynqMP PCI host controller to map the PCI config space to the XEN memory. Patch helps to understand how the generic infrastructure for PCI host-bridge discovery will be used for future references. Signed-off-by: Oleksandr Andrushchenko Reviewed-by: Bertrand Marquis --- Change in v3: - nwl_cfg_reg_index(..) as static function - Add support for pci_host_generic_probe()=20 Change in v2: - Add more info in commit msg --- xen/arch/arm/pci/Makefile | 1 + xen/arch/arm/pci/pci-host-zynqmp.c | 63 ++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 xen/arch/arm/pci/pci-host-zynqmp.c diff --git a/xen/arch/arm/pci/Makefile b/xen/arch/arm/pci/Makefile index 6f32fbbe67..1d045ade01 100644 --- a/xen/arch/arm/pci/Makefile +++ b/xen/arch/arm/pci/Makefile @@ -3,3 +3,4 @@ obj-y +=3D pci-access.o obj-y +=3D pci-host-generic.o obj-y +=3D pci-host-common.o obj-y +=3D ecam.o +obj-y +=3D pci-host-zynqmp.o diff --git a/xen/arch/arm/pci/pci-host-zynqmp.c b/xen/arch/arm/pci/pci-host= -zynqmp.c new file mode 100644 index 0000000000..6ccbfd15c9 --- /dev/null +++ b/xen/arch/arm/pci/pci-host-zynqmp.c @@ -0,0 +1,63 @@ +/* + * Based on Linux drivers/pci/controller/pci-host-common.c + * Based on Linux drivers/pci/controller/pci-host-generic.c + * Based on xen/arch/arm/pci/pci-host-generic.c + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include +#include + +static int nwl_cfg_reg_index(struct dt_device_node *np) +{ + return dt_property_match_string(np, "reg-names", "cfg"); +} + +/* ECAM ops */ +const struct pci_ecam_ops nwl_pcie_ops =3D { + .bus_shift =3D 20, + .cfg_reg_index =3D nwl_cfg_reg_index, + .pci_ops =3D { + .map_bus =3D pci_ecam_map_bus, + .read =3D pci_generic_config_read, + .write =3D pci_generic_config_write, + } +}; + +static const struct dt_device_match nwl_pcie_dt_match[] =3D { + { .compatible =3D "xlnx,nwl-pcie-2.11" }, + { }, +}; + +static int pci_host_generic_probe(struct dt_device_node *dev, + const void *data) +{ + return pci_host_common_probe(dev, &nwl_pcie_ops); +} + +DT_DEVICE_START(pci_gen, "PCI HOST ZYNQMP", DEVICE_PCI) +.dt_match =3D nwl_pcie_dt_match, +.init =3D pci_host_generic_probe, +DT_DEVICE_END + +/* + * Local variables: + * mode: C + * c-file-style: "BSD" + * c-basic-offset: 4 + * tab-width: 4 + * indent-tabs-mode: nil + * End: + */ --=20 2.17.1