Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp1150506yba; Thu, 4 Apr 2019 05:22:17 -0700 (PDT) X-Google-Smtp-Source: APXvYqz/OEx3ESR0HgNfMByM3U0pWpMWfJRT5BxnZo6Ara3LwmrWTvaGzVc6KgCKk3Ts44kofqga X-Received: by 2002:a62:1bc7:: with SMTP id b190mr5659804pfb.29.1554380537241; Thu, 04 Apr 2019 05:22:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1554380537; cv=none; d=google.com; s=arc-20160816; b=cMdUpHlp4tLADkyqPWmLEpYx1ULiXzvAvuTfTvAuFw656ST3h8XXLjI6G3SU9me7kb Fp55LHkVXYUaj0Ym1c/94eVLqQbLQhtQbYLbXDKh1/+VULS6qW8hG87IrxpR8BCgmofM 3ZzX5YNUrNAuAjcW++FMw7aWO5cHsVQQdfVjnz+YooUL4iTHUpcyPNCjceVLDhGV8H1S 91O+/lHeCOB8npQ6vlcB8DXVnZZEuSEri5XtcB3Y0WukT32LEbqGtE8L4fRG+eZddPHA emH0w2OqIDLvpCjyDgwYf13u1XW3HKAaddkoO2bgWfD8mtC8XikUM+3by3jXW0PxLBU8 PC1Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:dkim-signature:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from; bh=nrCtE07bZ8Lw5rvbZO6zOxGLTD60K3VS7HCwtL7J/TI=; b=RYoz492JqpsDR6bRl13nTXAY67kDR0w/ymh98lgOYmHcRJuv/ulwG4ZT1N8TtnE8Db RG379HV8z+ao+4O+MnB8b3JohAydM/I4O3vGNz0mF1ciV1LWuttczbu8FIMLyZjKowJO pwA3HNiA6OSF4SGVo8E6upGchmz2D2GemXSTXmLCP2rRuBVFWfhBzgFzeryGU8z8F2Fd vHZTOqUMew54+7XKWH4Q2Bm6dCNv+UQJh8VkXDQL3YFwYDWm4EU5jKfLh2nHza4mLY+P pfEkHOImi1p5eAWM92ESOQp+IHlQrGebKiZLaclhbDnCaBaWSe5GyDJ+qShNVL6MBpCB uoFg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nvidia.com header.s=n1 header.b=U6Qf7rYu; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nvidia.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k66si16583553pgc.247.2019.04.04.05.22.01; Thu, 04 Apr 2019 05:22:17 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@nvidia.com header.s=n1 header.b=U6Qf7rYu; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nvidia.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729639AbfDDMUo (ORCPT + 99 others); Thu, 4 Apr 2019 08:20:44 -0400 Received: from hqemgate14.nvidia.com ([216.228.121.143]:3803 "EHLO hqemgate14.nvidia.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727039AbfDDMUo (ORCPT ); Thu, 4 Apr 2019 08:20:44 -0400 Received: from hqpgpgate101.nvidia.com (Not Verified[216.228.121.13]) by hqemgate14.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA) id ; Thu, 04 Apr 2019 05:20:47 -0700 Received: from hqmail.nvidia.com ([172.20.161.6]) by hqpgpgate101.nvidia.com (PGP Universal service); Thu, 04 Apr 2019 05:20:43 -0700 X-PGP-Universal: processed; by hqpgpgate101.nvidia.com on Thu, 04 Apr 2019 05:20:43 -0700 Received: from HQMAIL111.nvidia.com (172.20.187.18) by HQMAIL105.nvidia.com (172.20.187.12) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Thu, 4 Apr 2019 12:20:43 +0000 Received: from HQMAIL108.nvidia.com (172.18.146.13) by HQMAIL111.nvidia.com (172.20.187.18) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Thu, 4 Apr 2019 12:20:42 +0000 Received: from hqnvemgw02.nvidia.com (172.16.227.111) by HQMAIL108.nvidia.com (172.18.146.13) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via Frontend Transport; Thu, 4 Apr 2019 12:20:42 +0000 Received: from vidyas-desktop.nvidia.com (Not Verified[10.24.37.38]) by hqnvemgw02.nvidia.com with Trustwave SEG (v7,5,8,10121) id ; Thu, 04 Apr 2019 05:20:42 -0700 From: Vidya Sagar To: , , , , , CC: , , , , , Subject: [PATCH 2/2] PCI: dwc: Export APIs to support .remove() implementation Date: Thu, 4 Apr 2019 17:50:24 +0530 Message-ID: <1554380425-29215-3-git-send-email-vidyas@nvidia.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1554380425-29215-1-git-send-email-vidyas@nvidia.com> References: <1554380425-29215-1-git-send-email-vidyas@nvidia.com> X-NVConfidentiality: public MIME-Version: 1.0 Content-Type: text/plain DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; t=1554380447; bh=nrCtE07bZ8Lw5rvbZO6zOxGLTD60K3VS7HCwtL7J/TI=; h=X-PGP-Universal:From:To:CC:Subject:Date:Message-ID:X-Mailer: In-Reply-To:References:X-NVConfidentiality:MIME-Version: Content-Type; b=U6Qf7rYubJ/II2lg47WVfk7+zxD5EDHHjESjBf3kPHm5wwAK+eyPEPiM67hJQYQri j00DcOwvmfZJrhjOFI+qM1PzLFGtp38zsj8sDvOQ6IZuD7uGnqkWsYyTfdHeawPNPF R1ml2MPBX4zCSMYj85ondcLaPjJeFgSLC7U+iTrshXY/bSSYavgQ2Xh3upu1QqCal8 sPBY8XEbXXFurwH7+YcZ5ucjCLPAdDvFLbHNmkCCH1WvGvW/JT2X8JGfhNmvN/NBwn hmAgqDnVeCZyNdGu3RSK52KptpR3s4sIzrARBeYu689xZ4GtalaPx6Bp07uPihIKea fj2HDUXqXfEKg== Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Export all configuration space access APIs and also other APIs to support host controller drivers of Designware core based implementations while adding support for .remove() hook to build their respective drivers as modules Signed-off-by: Vidya Sagar --- drivers/pci/controller/dwc/pcie-designware-host.c | 4 +++ drivers/pci/controller/dwc/pcie-designware.c | 38 +++++++++++++++++++++++ drivers/pci/controller/dwc/pcie-designware.h | 35 ++++----------------- 3 files changed, 48 insertions(+), 29 deletions(-) diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pci/controller/dwc/pcie-designware-host.c index d7881490282d..2a5332e5ccfa 100644 --- a/drivers/pci/controller/dwc/pcie-designware-host.c +++ b/drivers/pci/controller/dwc/pcie-designware-host.c @@ -333,6 +333,7 @@ void dw_pcie_msi_init(struct pcie_port *pp) dw_pcie_wr_own_conf(pp, PCIE_MSI_ADDR_HI, 4, upper_32_bits(msi_target)); } +EXPORT_SYMBOL_GPL(dw_pcie_msi_init); int dw_pcie_host_init(struct pcie_port *pp) { @@ -515,6 +516,7 @@ int dw_pcie_host_init(struct pcie_port *pp) dw_pcie_free_msi(pp); return ret; } +EXPORT_SYMBOL_GPL(dw_pcie_host_init); void dw_pcie_host_deinit(struct pcie_port *pp) { @@ -522,6 +524,7 @@ void dw_pcie_host_deinit(struct pcie_port *pp) pci_remove_root_bus(pp->root_bus); dw_pcie_free_msi(pp); } +EXPORT_SYMBOL_GPL(dw_pcie_host_deinit); static int dw_pcie_access_other_conf(struct pcie_port *pp, struct pci_bus *bus, u32 devfn, int where, int size, u32 *val, @@ -731,3 +734,4 @@ void dw_pcie_setup_rc(struct pcie_port *pp) val |= PORT_LOGIC_SPEED_CHANGE; dw_pcie_wr_own_conf(pp, PCIE_LINK_WIDTH_SPEED_CONTROL, 4, val); } +EXPORT_SYMBOL_GPL(dw_pcie_setup_rc); diff --git a/drivers/pci/controller/dwc/pcie-designware.c b/drivers/pci/controller/dwc/pcie-designware.c index 31f6331ca46f..f98e2f284ae1 100644 --- a/drivers/pci/controller/dwc/pcie-designware.c +++ b/drivers/pci/controller/dwc/pcie-designware.c @@ -40,6 +40,7 @@ int dw_pcie_read(void __iomem *addr, int size, u32 *val) return PCIBIOS_SUCCESSFUL; } +EXPORT_SYMBOL_GPL(dw_pcie_read); int dw_pcie_write(void __iomem *addr, int size, u32 val) { @@ -57,6 +58,7 @@ int dw_pcie_write(void __iomem *addr, int size, u32 val) return PCIBIOS_SUCCESSFUL; } +EXPORT_SYMBOL_GPL(dw_pcie_write); u32 __dw_pcie_read_dbi(struct dw_pcie *pci, void __iomem *base, u32 reg, size_t size) @@ -89,6 +91,42 @@ void __dw_pcie_write_dbi(struct dw_pcie *pci, void __iomem *base, u32 reg, dev_err(pci->dev, "Write DBI address failed\n"); } +void dw_pcie_writel_dbi(struct dw_pcie *pci, u32 reg, u32 val) +{ + __dw_pcie_write_dbi(pci, pci->dbi_base, reg, 0x4, val); +} +EXPORT_SYMBOL_GPL(dw_pcie_writel_dbi); + +u32 dw_pcie_readl_dbi(struct dw_pcie *pci, u32 reg) +{ + return __dw_pcie_read_dbi(pci, pci->dbi_base, reg, 0x4); +} +EXPORT_SYMBOL_GPL(dw_pcie_readl_dbi); + +void dw_pcie_writew_dbi(struct dw_pcie *pci, u32 reg, u16 val) +{ + __dw_pcie_write_dbi(pci, pci->dbi_base, reg, 0x2, val); +} +EXPORT_SYMBOL_GPL(dw_pcie_writew_dbi); + +u16 dw_pcie_readw_dbi(struct dw_pcie *pci, u32 reg) +{ + return __dw_pcie_read_dbi(pci, pci->dbi_base, reg, 0x2); +} +EXPORT_SYMBOL_GPL(dw_pcie_readw_dbi); + +void dw_pcie_writeb_dbi(struct dw_pcie *pci, u32 reg, u8 val) +{ + __dw_pcie_write_dbi(pci, pci->dbi_base, reg, 0x1, val); +} +EXPORT_SYMBOL_GPL(dw_pcie_writeb_dbi); + +u8 dw_pcie_readb_dbi(struct dw_pcie *pci, u32 reg) +{ + return __dw_pcie_read_dbi(pci, pci->dbi_base, reg, 0x1); +} +EXPORT_SYMBOL_GPL(dw_pcie_readb_dbi); + static u32 dw_pcie_readl_ob_unroll(struct dw_pcie *pci, u32 index, u32 reg) { u32 offset = PCIE_GET_ATU_OUTB_UNR_REG_OFFSET(index); diff --git a/drivers/pci/controller/dwc/pcie-designware.h b/drivers/pci/controller/dwc/pcie-designware.h index ea8d1caf11c5..86df36701a37 100644 --- a/drivers/pci/controller/dwc/pcie-designware.h +++ b/drivers/pci/controller/dwc/pcie-designware.h @@ -265,35 +265,12 @@ void dw_pcie_disable_atu(struct dw_pcie *pci, int index, enum dw_pcie_region_type type); void dw_pcie_setup(struct dw_pcie *pci); -static inline void dw_pcie_writel_dbi(struct dw_pcie *pci, u32 reg, u32 val) -{ - __dw_pcie_write_dbi(pci, pci->dbi_base, reg, 0x4, val); -} - -static inline u32 dw_pcie_readl_dbi(struct dw_pcie *pci, u32 reg) -{ - return __dw_pcie_read_dbi(pci, pci->dbi_base, reg, 0x4); -} - -static inline void dw_pcie_writew_dbi(struct dw_pcie *pci, u32 reg, u16 val) -{ - __dw_pcie_write_dbi(pci, pci->dbi_base, reg, 0x2, val); -} - -static inline u16 dw_pcie_readw_dbi(struct dw_pcie *pci, u32 reg) -{ - return __dw_pcie_read_dbi(pci, pci->dbi_base, reg, 0x2); -} - -static inline void dw_pcie_writeb_dbi(struct dw_pcie *pci, u32 reg, u8 val) -{ - __dw_pcie_write_dbi(pci, pci->dbi_base, reg, 0x1, val); -} - -static inline u8 dw_pcie_readb_dbi(struct dw_pcie *pci, u32 reg) -{ - return __dw_pcie_read_dbi(pci, pci->dbi_base, reg, 0x1); -} +void dw_pcie_writel_dbi(struct dw_pcie *pci, u32 reg, u32 val); +u32 dw_pcie_readl_dbi(struct dw_pcie *pci, u32 reg); +void dw_pcie_writew_dbi(struct dw_pcie *pci, u32 reg, u16 val); +u16 dw_pcie_readw_dbi(struct dw_pcie *pci, u32 reg); +void dw_pcie_writeb_dbi(struct dw_pcie *pci, u32 reg, u8 val); +u8 dw_pcie_readb_dbi(struct dw_pcie *pci, u32 reg); static inline void dw_pcie_writel_dbi2(struct dw_pcie *pci, u32 reg, u32 val) { -- 2.7.4