From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 89332CA0EDC for ; Fri, 30 Aug 2024 16:35:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:In-Reply-To: Content-Transfer-Encoding:Content-Type:MIME-Version:References:Message-ID: Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=Vrz+c6o8yQ/ha62uVOHeZZseeOZBJ48VofCxNIfW5KQ=; b=f7pe0kbAiGL9XlrVL87EKSn4nA o/k50ZM8Y8w9uKART5GV4uxm1FcKksbBu0lvdAVSpbNItEpQPpgO7sHZ+NgmPmZb6CUG+lR5TtM7h VQjZKs0M5JTWtfNBaB1s72saOwkh8+NMZZqANHdZ9UAP4rbZDKn233wW+bBow//isiNknTmZz3H2W pkYsfts2A2L2Wa5zfv6PxMU4Kjbsg4WVXogEDClHrDTRfc1u8g6CXYARmKL86NrVDMHMrjj2Vc+yD SL095HA6XvOuljAPT4Rp3c5dnKZRten5Cn1oSCSqri1wRFaQ+dZLDNSy6ov82pH0c6aUkt2uQzAVw GHNXDjcw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sk4aq-000000073GM-1MLQ; Fri, 30 Aug 2024 16:35:24 +0000 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sk4ZK-000000072R2-2VGE for linux-arm-kernel@lists.infradead.org; Fri, 30 Aug 2024 16:33:52 +0000 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-70cec4aa1e4so1459976b3a.1 for ; Fri, 30 Aug 2024 09:33:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1725035629; x=1725640429; darn=lists.infradead.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=Vrz+c6o8yQ/ha62uVOHeZZseeOZBJ48VofCxNIfW5KQ=; b=X4pmpZoaKJw1WRiLN4F75fw/u4zZPjfkA/T/FK+VDMlRaslk/vRlU540asA7v/Hw3r efjF9wxBWa6rRks5rErKOGK3Qo9DRe+nJizdGGpn+YYWeKUElLwoK+TQagZ8vXDuUZXG y3Ee4FZHfRXXCLictfoDCQhe1XZl+BFvGTJ669mcP3z/X99nwGIvaq6KTbQRJKY020Zm ipd7r8Xf6Cg2D4sHiVr7PJ4ZfN8LRPqqOFzbRPxzmXRzNUiXOo2UUEn92w1C6jyFiAGw 8opvoBmd3+2DURRXkqZCk4wrZZQUbgl+pNthD4Q1Ja/W4EIJFf9OpwviLrEKWV8UV0rv E45g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725035629; x=1725640429; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Vrz+c6o8yQ/ha62uVOHeZZseeOZBJ48VofCxNIfW5KQ=; b=QHYQtcnTajL2g+ZK9Gi4wERdT/EgGMK1p19hSDqUEXVI/p+I7ybT7wXpqB1mYlL0gr 8E4yLqASJiIxCarB4510x3QNpu+LLawwDjdqgn/td9pULRXmK2xpUvP9D0iXpN4BGKmW UOwXaCvxXaJPrm2eKWtLNUQjUpndgRbRT1I/eNgi4Mpr70/YiRDqxt+DuPMsA642xlfB tBnZZPAQhCbkQ1eXCd6harMIdcD30nn1BrGCeypQOzDFnwRLA7LKNFWkNetEgQZ7arUd W/IJSWUxLTJWvwJ5KIAYR67ah8kC3KcQ/MxXIy8KMkfEE47f9ZKp6K7tlrlo19AixRO5 9ufA== X-Forwarded-Encrypted: i=1; AJvYcCW8Kzd13cvBz4TQaLc/FRjtHIoeQaUVofeWo8yWzyJYZ+inHZD2twlH8Dqqmr8Ra8lC3bAARLjPx5NHitjwSoLy@lists.infradead.org X-Gm-Message-State: AOJu0YwaAbsbmuWsACPCceLMeVDNzZNr9r8kKfIyZ8zqKlNbgn+28G+E /Nj+lXGF+XsFR1iuOLOFZACW8gzmFD5PnOFmAdiN452jCorKwacUFYNYTkGFYg== X-Google-Smtp-Source: AGHT+IEFIR4WehLNVjGEUs2gw5mnU3QWqaSdoqihZp/g8nHwvyMPpHyoucyIC0wG1iBpyPhz8/rbSw== X-Received: by 2002:a05:6a00:234a:b0:714:1fc3:79f7 with SMTP id d2e1a72fcca58-715dfc506a0mr8912395b3a.17.1725035629373; Fri, 30 Aug 2024 09:33:49 -0700 (PDT) Received: from thinkpad ([117.193.213.95]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-7d22e9daac4sm2763284a12.92.2024.08.30.09.33.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 30 Aug 2024 09:33:48 -0700 (PDT) Date: Fri, 30 Aug 2024 22:03:41 +0530 From: Manivannan Sadhasivam To: Thippeswamy Havalige Cc: bhelgaas@google.com, lpieralisi@kernel.org, kw@linux.com, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, michal.simek@amd.com, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH v4 2/2] PCI: xilinx-xdma: Add Xilinx QDMA Root Port driver Message-ID: <20240830163341.437jztschfrstrrj@thinkpad> References: <20240811022345.1178203-1-thippesw@amd.com> <20240811022345.1178203-3-thippesw@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20240811022345.1178203-3-thippesw@amd.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240830_093350_668294_5886B1EB X-CRM114-Status: GOOD ( 27.74 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Sun, Aug 11, 2024 at 07:53:45AM +0530, Thippeswamy Havalige wrote: > Add support for Xilinx QDMA Soft IP core as Root Port. > > The Versal Prime devices support QDMA soft IP module in programmable logic. > > The integrated QDMA Soft IP block has integrated bridge function that can > act as PCIe Root Port. > > Signed-off-by: Thippeswamy Havalige One comment below. With that addressed, Reviewed-by: Manivannan Sadhasivam > --- > drivers/pci/controller/pcie-xilinx-dma-pl.c | 54 ++++++++++++++++++++- > 1 file changed, 53 insertions(+), 1 deletion(-) > --- > changes in v4: > - none > > changes in v3: > - Modify macro value to lower case. > - Change return type based QDMA compatible. > > changes in v2: > - Add description for struct pl_dma_pcie > --- > diff --git a/drivers/pci/controller/pcie-xilinx-dma-pl.c b/drivers/pci/controller/pcie-xilinx-dma-pl.c > index 5be5dfd8398f..1ea6a1d265bb 100644 > --- a/drivers/pci/controller/pcie-xilinx-dma-pl.c > +++ b/drivers/pci/controller/pcie-xilinx-dma-pl.c > @@ -13,6 +13,7 @@ > #include > #include > #include > +#include Looks like this header is not used. - Mani > > #include "../pci.h" > #include "pcie-xilinx-common.h" > @@ -71,10 +72,24 @@ > > /* Phy Status/Control Register definitions */ > #define XILINX_PCIE_DMA_REG_PSCR_LNKUP BIT(11) > +#define QDMA_BRIDGE_BASE_OFF 0xcd8 > > /* Number of MSI IRQs */ > #define XILINX_NUM_MSI_IRQS 64 > > +enum xilinx_pl_dma_version { > + XDMA, > + QDMA, > +}; > + > +/** > + * struct xilinx_pl_dma_variant - PL DMA PCIe variant information > + * @version: DMA version > + */ > +struct xilinx_pl_dma_variant { > + enum xilinx_pl_dma_version version; > +}; > + > struct xilinx_msi { > struct irq_domain *msi_domain; > unsigned long *bitmap; > @@ -88,6 +103,7 @@ struct xilinx_msi { > * struct pl_dma_pcie - PCIe port information > * @dev: Device pointer > * @reg_base: IO Mapped Register Base > + * @cfg_base: IO Mapped Configuration Base > * @irq: Interrupt number > * @cfg: Holds mappings of config space window > * @phys_reg_base: Physical address of reg base > @@ -97,10 +113,12 @@ struct xilinx_msi { > * @msi: MSI information > * @intx_irq: INTx error interrupt number > * @lock: Lock protecting shared register access > + * @variant: PL DMA PCIe version check pointer > */ > struct pl_dma_pcie { > struct device *dev; > void __iomem *reg_base; > + void __iomem *cfg_base; > int irq; > struct pci_config_window *cfg; > phys_addr_t phys_reg_base; > @@ -110,16 +128,23 @@ struct pl_dma_pcie { > struct xilinx_msi msi; > int intx_irq; > raw_spinlock_t lock; > + const struct xilinx_pl_dma_variant *variant; > }; > > static inline u32 pcie_read(struct pl_dma_pcie *port, u32 reg) > { > + if (port->variant->version == QDMA) > + return readl(port->reg_base + reg + QDMA_BRIDGE_BASE_OFF); > + > return readl(port->reg_base + reg); > } > > static inline void pcie_write(struct pl_dma_pcie *port, u32 val, u32 reg) > { > - writel(val, port->reg_base + reg); > + if (port->variant->version == QDMA) > + writel(val, port->reg_base + reg + QDMA_BRIDGE_BASE_OFF); > + else > + writel(val, port->reg_base + reg); > } > > static inline bool xilinx_pl_dma_pcie_link_up(struct pl_dma_pcie *port) > @@ -173,6 +198,9 @@ static void __iomem *xilinx_pl_dma_pcie_map_bus(struct pci_bus *bus, > if (!xilinx_pl_dma_pcie_valid_device(bus, devfn)) > return NULL; > > + if (port->variant->version == QDMA) > + return port->cfg_base + PCIE_ECAM_OFFSET(bus->number, devfn, where); > + > return port->reg_base + PCIE_ECAM_OFFSET(bus->number, devfn, where); > } > > @@ -731,6 +759,15 @@ static int xilinx_pl_dma_pcie_parse_dt(struct pl_dma_pcie *port, > > port->reg_base = port->cfg->win; > > + if (port->variant->version == QDMA) { > + port->cfg_base = port->cfg->win; > + res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "breg"); > + port->reg_base = devm_ioremap_resource(dev, res); > + if (IS_ERR(port->reg_base)) > + return PTR_ERR(port->reg_base); > + port->phys_reg_base = res->start; > + } > + > err = xilinx_request_msi_irq(port); > if (err) { > pci_ecam_free(port->cfg); > @@ -760,6 +797,8 @@ static int xilinx_pl_dma_pcie_probe(struct platform_device *pdev) > if (!bus) > return -ENODEV; > > + port->variant = of_device_get_match_data(dev); > + > err = xilinx_pl_dma_pcie_parse_dt(port, bus->res); > if (err) { > dev_err(dev, "Parsing DT failed\n"); > @@ -791,9 +830,22 @@ static int xilinx_pl_dma_pcie_probe(struct platform_device *pdev) > return err; > } > > +static const struct xilinx_pl_dma_variant xdma_host = { > + .version = XDMA, > +}; > + > +static const struct xilinx_pl_dma_variant qdma_host = { > + .version = QDMA, > +}; > + > static const struct of_device_id xilinx_pl_dma_pcie_of_match[] = { > { > .compatible = "xlnx,xdma-host-3.00", > + .data = &xdma_host, > + }, > + { > + .compatible = "xlnx,qdma-host-3.00", > + .data = &qdma_host, > }, > {} > }; > -- > 2.34.1 > > -- மணிவண்ணன் சதாசிவம்