Commit a0fd361d authored by Rob Herring's avatar Rob Herring Committed by Lorenzo Pieralisi

PCI: dwc: Move "dbi", "dbi2", and "addr_space" resource setup into common code

Most DWC drivers use the common register resource names "dbi", "dbi2", and
"addr_space", so let's move their setup into the DWC common code.

This means 'dbi_base' in particular is setup later, but it looks like no
drivers touch DBI registers before dw_pcie_host_init or dw_pcie_ep_init.

Link: https://lore.kernel.org/r/20201105211159.1814485-4-robh@kernel.orgTested-by: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: default avatarRob Herring <robh@kernel.org>
Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Acked-by: default avatarJingoo Han <jingoohan1@gmail.com>
Cc: Kishon Vijay Abraham I <kishon@ti.com>
Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: Murali Karicheri <m-karicheri2@ti.com>
Cc: Minghuan Lian <minghuan.Lian@nxp.com>
Cc: Mingkai Hu <mingkai.hu@nxp.com>
Cc: Roy Zang <roy.zang@nxp.com>
Cc: Jonathan Chocron <jonnyc@amazon.com>
Cc: Jesper Nilsson <jesper.nilsson@axis.com>
Cc: Gustavo Pimentel <gustavo.pimentel@synopsys.com>
Cc: Xiaowei Song <songxiaowei@hisilicon.com>
Cc: Binghui Wang <wangbinghui@hisilicon.com>
Cc: Andy Gross <agross@kernel.org>
Cc: Bjorn Andersson <bjorn.andersson@linaro.org>
Cc: Stanimir Varbanov <svarbanov@mm-sol.com>
Cc: Pratyush Anand <pratyush.anand@gmail.com>
Cc: Thierry Reding <thierry.reding@gmail.com>
Cc: Jonathan Hunter <jonathanh@nvidia.com>
Cc: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
Cc: linux-omap@vger.kernel.org
Cc: linuxppc-dev@lists.ozlabs.org
Cc: linux-arm-kernel@axis.com
Cc: linux-arm-msm@vger.kernel.org
Cc: linux-tegra@vger.kernel.org
parent 1d567aac
...@@ -578,7 +578,6 @@ static int __init dra7xx_add_pcie_ep(struct dra7xx_pcie *dra7xx, ...@@ -578,7 +578,6 @@ static int __init dra7xx_add_pcie_ep(struct dra7xx_pcie *dra7xx,
{ {
int ret; int ret;
struct dw_pcie_ep *ep; struct dw_pcie_ep *ep;
struct resource *res;
struct device *dev = &pdev->dev; struct device *dev = &pdev->dev;
struct dw_pcie *pci = dra7xx->pci; struct dw_pcie *pci = dra7xx->pci;
...@@ -594,13 +593,6 @@ static int __init dra7xx_add_pcie_ep(struct dra7xx_pcie *dra7xx, ...@@ -594,13 +593,6 @@ static int __init dra7xx_add_pcie_ep(struct dra7xx_pcie *dra7xx,
if (IS_ERR(pci->dbi_base2)) if (IS_ERR(pci->dbi_base2))
return PTR_ERR(pci->dbi_base2); return PTR_ERR(pci->dbi_base2);
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "addr_space");
if (!res)
return -EINVAL;
ep->phys_base = res->start;
ep->addr_size = resource_size(res);
ret = dw_pcie_ep_init(ep); ret = dw_pcie_ep_init(ep);
if (ret) { if (ret) {
dev_err(dev, "failed to initialize endpoint\n"); dev_err(dev, "failed to initialize endpoint\n");
......
...@@ -977,33 +977,6 @@ static const struct dw_pcie_ep_ops ks_pcie_am654_ep_ops = { ...@@ -977,33 +977,6 @@ static const struct dw_pcie_ep_ops ks_pcie_am654_ep_ops = {
.get_features = &ks_pcie_am654_get_features, .get_features = &ks_pcie_am654_get_features,
}; };
static int __init ks_pcie_add_pcie_ep(struct keystone_pcie *ks_pcie,
struct platform_device *pdev)
{
int ret;
struct dw_pcie_ep *ep;
struct resource *res;
struct device *dev = &pdev->dev;
struct dw_pcie *pci = ks_pcie->pci;
ep = &pci->ep;
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "addr_space");
if (!res)
return -EINVAL;
ep->phys_base = res->start;
ep->addr_size = resource_size(res);
ret = dw_pcie_ep_init(ep);
if (ret) {
dev_err(dev, "failed to initialize endpoint\n");
return ret;
}
return 0;
}
static void ks_pcie_disable_phy(struct keystone_pcie *ks_pcie) static void ks_pcie_disable_phy(struct keystone_pcie *ks_pcie)
{ {
int num_lanes = ks_pcie->num_lanes; int num_lanes = ks_pcie->num_lanes;
...@@ -1313,7 +1286,7 @@ static int __init ks_pcie_probe(struct platform_device *pdev) ...@@ -1313,7 +1286,7 @@ static int __init ks_pcie_probe(struct platform_device *pdev)
} }
pci->ep.ops = ep_ops; pci->ep.ops = ep_ops;
ret = ks_pcie_add_pcie_ep(ks_pcie, pdev); ret = dw_pcie_ep_init(&pci->ep);
if (ret < 0) if (ret < 0)
goto err_get_sync; goto err_get_sync;
break; break;
......
...@@ -18,8 +18,6 @@ ...@@ -18,8 +18,6 @@
#include "pcie-designware.h" #include "pcie-designware.h"
#define PCIE_DBI2_OFFSET 0x1000 /* DBI2 base address*/
#define to_ls_pcie_ep(x) dev_get_drvdata((x)->dev) #define to_ls_pcie_ep(x) dev_get_drvdata((x)->dev)
struct ls_pcie_ep_drvdata { struct ls_pcie_ep_drvdata {
...@@ -124,34 +122,6 @@ static const struct of_device_id ls_pcie_ep_of_match[] = { ...@@ -124,34 +122,6 @@ static const struct of_device_id ls_pcie_ep_of_match[] = {
{ }, { },
}; };
static int __init ls_add_pcie_ep(struct ls_pcie_ep *pcie,
struct platform_device *pdev)
{
struct dw_pcie *pci = pcie->pci;
struct device *dev = pci->dev;
struct dw_pcie_ep *ep;
struct resource *res;
int ret;
ep = &pci->ep;
ep->ops = pcie->drvdata->ops;
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "addr_space");
if (!res)
return -EINVAL;
ep->phys_base = res->start;
ep->addr_size = resource_size(res);
ret = dw_pcie_ep_init(ep);
if (ret) {
dev_err(dev, "failed to initialize endpoint\n");
return ret;
}
return 0;
}
static int __init ls_pcie_ep_probe(struct platform_device *pdev) static int __init ls_pcie_ep_probe(struct platform_device *pdev)
{ {
struct device *dev = &pdev->dev; struct device *dev = &pdev->dev;
...@@ -159,7 +129,6 @@ static int __init ls_pcie_ep_probe(struct platform_device *pdev) ...@@ -159,7 +129,6 @@ static int __init ls_pcie_ep_probe(struct platform_device *pdev)
struct ls_pcie_ep *pcie; struct ls_pcie_ep *pcie;
struct pci_epc_features *ls_epc; struct pci_epc_features *ls_epc;
struct resource *dbi_base; struct resource *dbi_base;
int ret;
pcie = devm_kzalloc(dev, sizeof(*pcie), GFP_KERNEL); pcie = devm_kzalloc(dev, sizeof(*pcie), GFP_KERNEL);
if (!pcie) if (!pcie)
...@@ -188,13 +157,11 @@ static int __init ls_pcie_ep_probe(struct platform_device *pdev) ...@@ -188,13 +157,11 @@ static int __init ls_pcie_ep_probe(struct platform_device *pdev)
if (IS_ERR(pci->dbi_base)) if (IS_ERR(pci->dbi_base))
return PTR_ERR(pci->dbi_base); return PTR_ERR(pci->dbi_base);
pci->dbi_base2 = pci->dbi_base + PCIE_DBI2_OFFSET; pci->ep.ops = &ls_pcie_ep_ops;
platform_set_drvdata(pdev, pcie); platform_set_drvdata(pdev, pcie);
ret = ls_add_pcie_ep(pcie, pdev); return dw_pcie_ep_init(&pci->ep);
return ret;
} }
static struct platform_driver ls_pcie_ep_driver = { static struct platform_driver ls_pcie_ep_driver = {
......
...@@ -347,7 +347,6 @@ static int al_pcie_probe(struct platform_device *pdev) ...@@ -347,7 +347,6 @@ static int al_pcie_probe(struct platform_device *pdev)
struct device *dev = &pdev->dev; struct device *dev = &pdev->dev;
struct resource *controller_res; struct resource *controller_res;
struct resource *ecam_res; struct resource *ecam_res;
struct resource *dbi_res;
struct al_pcie *al_pcie; struct al_pcie *al_pcie;
struct dw_pcie *pci; struct dw_pcie *pci;
...@@ -365,11 +364,6 @@ static int al_pcie_probe(struct platform_device *pdev) ...@@ -365,11 +364,6 @@ static int al_pcie_probe(struct platform_device *pdev)
al_pcie->pci = pci; al_pcie->pci = pci;
al_pcie->dev = dev; al_pcie->dev = dev;
dbi_res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "dbi");
pci->dbi_base = devm_pci_remap_cfg_resource(dev, dbi_res);
if (IS_ERR(pci->dbi_base))
return PTR_ERR(pci->dbi_base);
ecam_res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "config"); ecam_res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "config");
if (!ecam_res) { if (!ecam_res) {
dev_err(dev, "couldn't find 'config' reg in DT\n"); dev_err(dev, "couldn't find 'config' reg in DT\n");
...@@ -386,8 +380,7 @@ static int al_pcie_probe(struct platform_device *pdev) ...@@ -386,8 +380,7 @@ static int al_pcie_probe(struct platform_device *pdev)
return PTR_ERR(al_pcie->controller_base); return PTR_ERR(al_pcie->controller_base);
} }
dev_dbg(dev, "From DT: dbi_base: %pR, controller_base: %pR\n", dev_dbg(dev, "From DT: controller_base: %pR\n", controller_res);
dbi_res, controller_res);
platform_set_drvdata(pdev, al_pcie); platform_set_drvdata(pdev, al_pcie);
......
...@@ -403,38 +403,6 @@ static const struct dw_pcie_ep_ops pcie_ep_ops = { ...@@ -403,38 +403,6 @@ static const struct dw_pcie_ep_ops pcie_ep_ops = {
.raise_irq = artpec6_pcie_raise_irq, .raise_irq = artpec6_pcie_raise_irq,
}; };
static int artpec6_add_pcie_ep(struct artpec6_pcie *artpec6_pcie,
struct platform_device *pdev)
{
int ret;
struct dw_pcie_ep *ep;
struct resource *res;
struct device *dev = &pdev->dev;
struct dw_pcie *pci = artpec6_pcie->pci;
ep = &pci->ep;
ep->ops = &pcie_ep_ops;
pci->dbi_base2 = devm_platform_ioremap_resource_byname(pdev, "dbi2");
if (IS_ERR(pci->dbi_base2))
return PTR_ERR(pci->dbi_base2);
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "addr_space");
if (!res)
return -EINVAL;
ep->phys_base = res->start;
ep->addr_size = resource_size(res);
ret = dw_pcie_ep_init(ep);
if (ret) {
dev_err(dev, "failed to initialize endpoint\n");
return ret;
}
return 0;
}
static int artpec6_pcie_probe(struct platform_device *pdev) static int artpec6_pcie_probe(struct platform_device *pdev)
{ {
struct device *dev = &pdev->dev; struct device *dev = &pdev->dev;
...@@ -469,10 +437,6 @@ static int artpec6_pcie_probe(struct platform_device *pdev) ...@@ -469,10 +437,6 @@ static int artpec6_pcie_probe(struct platform_device *pdev)
artpec6_pcie->variant = variant; artpec6_pcie->variant = variant;
artpec6_pcie->mode = mode; artpec6_pcie->mode = mode;
pci->dbi_base = devm_platform_ioremap_resource_byname(pdev, "dbi");
if (IS_ERR(pci->dbi_base))
return PTR_ERR(pci->dbi_base);
artpec6_pcie->phy_base = artpec6_pcie->phy_base =
devm_platform_ioremap_resource_byname(pdev, "phy"); devm_platform_ioremap_resource_byname(pdev, "phy");
if (IS_ERR(artpec6_pcie->phy_base)) if (IS_ERR(artpec6_pcie->phy_base))
...@@ -504,9 +468,10 @@ static int artpec6_pcie_probe(struct platform_device *pdev) ...@@ -504,9 +468,10 @@ static int artpec6_pcie_probe(struct platform_device *pdev)
val = artpec6_pcie_readl(artpec6_pcie, PCIECFG); val = artpec6_pcie_readl(artpec6_pcie, PCIECFG);
val &= ~PCIECFG_DEVICE_TYPE_MASK; val &= ~PCIECFG_DEVICE_TYPE_MASK;
artpec6_pcie_writel(artpec6_pcie, PCIECFG, val); artpec6_pcie_writel(artpec6_pcie, PCIECFG, val);
ret = artpec6_add_pcie_ep(artpec6_pcie, pdev);
if (ret < 0) pci->ep.ops = &pcie_ep_ops;
return ret;
return dw_pcie_ep_init(&pci->ep);
break; break;
} }
default: default:
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
*/ */
#include <linux/of.h> #include <linux/of.h>
#include <linux/platform_device.h>
#include "pcie-designware.h" #include "pcie-designware.h"
#include <linux/pci-epc.h> #include <linux/pci-epc.h>
...@@ -676,20 +677,42 @@ int dw_pcie_ep_init(struct dw_pcie_ep *ep) ...@@ -676,20 +677,42 @@ int dw_pcie_ep_init(struct dw_pcie_ep *ep)
int ret; int ret;
void *addr; void *addr;
u8 func_no; u8 func_no;
struct resource *res;
struct pci_epc *epc; struct pci_epc *epc;
struct dw_pcie *pci = to_dw_pcie_from_ep(ep); struct dw_pcie *pci = to_dw_pcie_from_ep(ep);
struct device *dev = pci->dev; struct device *dev = pci->dev;
struct platform_device *pdev = to_platform_device(dev);
struct device_node *np = dev->of_node; struct device_node *np = dev->of_node;
const struct pci_epc_features *epc_features; const struct pci_epc_features *epc_features;
struct dw_pcie_ep_func *ep_func; struct dw_pcie_ep_func *ep_func;
INIT_LIST_HEAD(&ep->func_list); INIT_LIST_HEAD(&ep->func_list);
if (!pci->dbi_base || !pci->dbi_base2) { if (!pci->dbi_base) {
dev_err(dev, "dbi_base/dbi_base2 is not populated\n"); res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "dbi");
return -EINVAL; pci->dbi_base = devm_pci_remap_cfg_resource(dev, res);
if (IS_ERR(pci->dbi_base))
return PTR_ERR(pci->dbi_base);
}
if (!pci->dbi_base2) {
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "dbi2");
if (!res)
pci->dbi_base2 = pci->dbi_base + SZ_4K;
else {
pci->dbi_base2 = devm_pci_remap_cfg_resource(dev, res);
if (IS_ERR(pci->dbi_base2))
return PTR_ERR(pci->dbi_base2);
}
} }
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "addr_space");
if (!res)
return -EINVAL;
ep->phys_base = res->start;
ep->addr_size = resource_size(res);
ret = of_property_read_u32(np, "num-ib-windows", &ep->num_ib_windows); ret = of_property_read_u32(np, "num-ib-windows", &ep->num_ib_windows);
if (ret < 0) { if (ret < 0) {
dev_err(dev, "Unable to read *num-ib-windows* property\n"); dev_err(dev, "Unable to read *num-ib-windows* property\n");
......
...@@ -310,6 +310,13 @@ int dw_pcie_host_init(struct pcie_port *pp) ...@@ -310,6 +310,13 @@ int dw_pcie_host_init(struct pcie_port *pp)
dev_err(dev, "Missing *config* reg space\n"); dev_err(dev, "Missing *config* reg space\n");
} }
if (!pci->dbi_base) {
struct resource *dbi_res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "dbi");
pci->dbi_base = devm_pci_remap_cfg_resource(dev, dbi_res);
if (IS_ERR(pci->dbi_base))
return PTR_ERR(pci->dbi_base);
}
bridge = devm_pci_alloc_host_bridge(dev, 0); bridge = devm_pci_alloc_host_bridge(dev, 0);
if (!bridge) if (!bridge)
return -ENOMEM; return -ENOMEM;
......
...@@ -139,43 +139,11 @@ static int dw_plat_add_pcie_port(struct dw_plat_pcie *dw_plat_pcie, ...@@ -139,43 +139,11 @@ static int dw_plat_add_pcie_port(struct dw_plat_pcie *dw_plat_pcie,
return 0; return 0;
} }
static int dw_plat_add_pcie_ep(struct dw_plat_pcie *dw_plat_pcie,
struct platform_device *pdev)
{
int ret;
struct dw_pcie_ep *ep;
struct resource *res;
struct device *dev = &pdev->dev;
struct dw_pcie *pci = dw_plat_pcie->pci;
ep = &pci->ep;
ep->ops = &pcie_ep_ops;
pci->dbi_base2 = devm_platform_ioremap_resource_byname(pdev, "dbi2");
if (IS_ERR(pci->dbi_base2))
return PTR_ERR(pci->dbi_base2);
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "addr_space");
if (!res)
return -EINVAL;
ep->phys_base = res->start;
ep->addr_size = resource_size(res);
ret = dw_pcie_ep_init(ep);
if (ret) {
dev_err(dev, "Failed to initialize endpoint\n");
return ret;
}
return 0;
}
static int dw_plat_pcie_probe(struct platform_device *pdev) static int dw_plat_pcie_probe(struct platform_device *pdev)
{ {
struct device *dev = &pdev->dev; struct device *dev = &pdev->dev;
struct dw_plat_pcie *dw_plat_pcie; struct dw_plat_pcie *dw_plat_pcie;
struct dw_pcie *pci; struct dw_pcie *pci;
struct resource *res; /* Resource from DT */
int ret; int ret;
const struct of_device_id *match; const struct of_device_id *match;
const struct dw_plat_pcie_of_data *data; const struct dw_plat_pcie_of_data *data;
...@@ -202,14 +170,6 @@ static int dw_plat_pcie_probe(struct platform_device *pdev) ...@@ -202,14 +170,6 @@ static int dw_plat_pcie_probe(struct platform_device *pdev)
dw_plat_pcie->pci = pci; dw_plat_pcie->pci = pci;
dw_plat_pcie->mode = mode; dw_plat_pcie->mode = mode;
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "dbi");
if (!res)
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
pci->dbi_base = devm_ioremap_resource(dev, res);
if (IS_ERR(pci->dbi_base))
return PTR_ERR(pci->dbi_base);
platform_set_drvdata(pdev, dw_plat_pcie); platform_set_drvdata(pdev, dw_plat_pcie);
switch (dw_plat_pcie->mode) { switch (dw_plat_pcie->mode) {
...@@ -225,9 +185,8 @@ static int dw_plat_pcie_probe(struct platform_device *pdev) ...@@ -225,9 +185,8 @@ static int dw_plat_pcie_probe(struct platform_device *pdev)
if (!IS_ENABLED(CONFIG_PCIE_DW_PLAT_EP)) if (!IS_ENABLED(CONFIG_PCIE_DW_PLAT_EP))
return -ENODEV; return -ENODEV;
ret = dw_plat_add_pcie_ep(dw_plat_pcie, pdev); pci->ep.ops = &pcie_ep_ops;
if (ret < 0) return dw_pcie_ep_init(&pci->ep);
return ret;
break; break;
default: default:
dev_err(dev, "INVALID device type %d\n", dw_plat_pcie->mode); dev_err(dev, "INVALID device type %d\n", dw_plat_pcie->mode);
......
...@@ -237,10 +237,6 @@ static int intel_pcie_get_resources(struct platform_device *pdev) ...@@ -237,10 +237,6 @@ static int intel_pcie_get_resources(struct platform_device *pdev)
struct device *dev = pci->dev; struct device *dev = pci->dev;
int ret; int ret;
pci->dbi_base = devm_platform_ioremap_resource_byname(pdev, "dbi");
if (IS_ERR(pci->dbi_base))
return PTR_ERR(pci->dbi_base);
lpp->core_clk = devm_clk_get(dev, NULL); lpp->core_clk = devm_clk_get(dev, NULL);
if (IS_ERR(lpp->core_clk)) { if (IS_ERR(lpp->core_clk)) {
ret = PTR_ERR(lpp->core_clk); ret = PTR_ERR(lpp->core_clk);
......
...@@ -157,11 +157,6 @@ static long kirin_pcie_get_resource(struct kirin_pcie *kirin_pcie, ...@@ -157,11 +157,6 @@ static long kirin_pcie_get_resource(struct kirin_pcie *kirin_pcie,
if (IS_ERR(kirin_pcie->phy_base)) if (IS_ERR(kirin_pcie->phy_base))
return PTR_ERR(kirin_pcie->phy_base); return PTR_ERR(kirin_pcie->phy_base);
kirin_pcie->pci->dbi_base =
devm_platform_ioremap_resource_byname(pdev, "dbi");
if (IS_ERR(kirin_pcie->pci->dbi_base))
return PTR_ERR(kirin_pcie->pci->dbi_base);
kirin_pcie->crgctrl = kirin_pcie->crgctrl =
syscon_regmap_lookup_by_compatible("hisilicon,hi3660-crgctrl"); syscon_regmap_lookup_by_compatible("hisilicon,hi3660-crgctrl");
if (IS_ERR(kirin_pcie->crgctrl)) if (IS_ERR(kirin_pcie->crgctrl))
......
...@@ -1368,7 +1368,6 @@ static const struct dw_pcie_ops dw_pcie_ops = { ...@@ -1368,7 +1368,6 @@ static const struct dw_pcie_ops dw_pcie_ops = {
static int qcom_pcie_probe(struct platform_device *pdev) static int qcom_pcie_probe(struct platform_device *pdev)
{ {
struct device *dev = &pdev->dev; struct device *dev = &pdev->dev;
struct resource *res;
struct pcie_port *pp; struct pcie_port *pp;
struct dw_pcie *pci; struct dw_pcie *pci;
struct qcom_pcie *pcie; struct qcom_pcie *pcie;
...@@ -1407,13 +1406,6 @@ static int qcom_pcie_probe(struct platform_device *pdev) ...@@ -1407,13 +1406,6 @@ static int qcom_pcie_probe(struct platform_device *pdev)
goto err_pm_runtime_put; goto err_pm_runtime_put;
} }
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "dbi");
pci->dbi_base = devm_pci_remap_cfg_resource(dev, res);
if (IS_ERR(pci->dbi_base)) {
ret = PTR_ERR(pci->dbi_base);
goto err_pm_runtime_put;
}
pcie->elbi = devm_platform_ioremap_resource_byname(pdev, "elbi"); pcie->elbi = devm_platform_ioremap_resource_byname(pdev, "elbi");
if (IS_ERR(pcie->elbi)) { if (IS_ERR(pcie->elbi)) {
ret = PTR_ERR(pcie->elbi); ret = PTR_ERR(pcie->elbi);
......
...@@ -152,6 +152,8 @@ static int spear13xx_pcie_host_init(struct pcie_port *pp) ...@@ -152,6 +152,8 @@ static int spear13xx_pcie_host_init(struct pcie_port *pp)
struct dw_pcie *pci = to_dw_pcie_from_pp(pp); struct dw_pcie *pci = to_dw_pcie_from_pp(pp);
struct spear13xx_pcie *spear13xx_pcie = to_spear13xx_pcie(pci); struct spear13xx_pcie *spear13xx_pcie = to_spear13xx_pcie(pci);
spear13xx_pcie->app_base = pci->dbi_base + 0x2000;
spear13xx_pcie_establish_link(spear13xx_pcie); spear13xx_pcie_establish_link(spear13xx_pcie);
spear13xx_pcie_enable_interrupts(spear13xx_pcie); spear13xx_pcie_enable_interrupts(spear13xx_pcie);
...@@ -203,7 +205,6 @@ static int spear13xx_pcie_probe(struct platform_device *pdev) ...@@ -203,7 +205,6 @@ static int spear13xx_pcie_probe(struct platform_device *pdev)
struct dw_pcie *pci; struct dw_pcie *pci;
struct spear13xx_pcie *spear13xx_pcie; struct spear13xx_pcie *spear13xx_pcie;
struct device_node *np = dev->of_node; struct device_node *np = dev->of_node;
struct resource *dbi_base;
int ret; int ret;
spear13xx_pcie = devm_kzalloc(dev, sizeof(*spear13xx_pcie), GFP_KERNEL); spear13xx_pcie = devm_kzalloc(dev, sizeof(*spear13xx_pcie), GFP_KERNEL);
...@@ -242,14 +243,6 @@ static int spear13xx_pcie_probe(struct platform_device *pdev) ...@@ -242,14 +243,6 @@ static int spear13xx_pcie_probe(struct platform_device *pdev)
return ret; return ret;
} }
dbi_base = platform_get_resource_byname(pdev, IORESOURCE_MEM, "dbi");
pci->dbi_base = devm_pci_remap_cfg_resource(dev, dbi_base);
if (IS_ERR(pci->dbi_base)) {
ret = PTR_ERR(pci->dbi_base);
goto fail_clk;
}
spear13xx_pcie->app_base = pci->dbi_base + 0x2000;
if (of_property_read_bool(np, "st,pcie-is-gen1")) if (of_property_read_bool(np, "st,pcie-is-gen1"))
pci->link_gen = 1; pci->link_gen = 1;
......
...@@ -1907,19 +1907,12 @@ static int tegra_pcie_config_ep(struct tegra_pcie_dw *pcie, ...@@ -1907,19 +1907,12 @@ static int tegra_pcie_config_ep(struct tegra_pcie_dw *pcie,
struct dw_pcie *pci = &pcie->pci; struct dw_pcie *pci = &pcie->pci;
struct device *dev = pcie->dev; struct device *dev = pcie->dev;
struct dw_pcie_ep *ep; struct dw_pcie_ep *ep;
struct resource *res;
char *name; char *name;
int ret; int ret;
ep = &pci->ep; ep = &pci->ep;
ep->ops = &pcie_ep_ops; ep->ops = &pcie_ep_ops;
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "addr_space");
if (!res)
return -EINVAL;
ep->phys_base = res->start;
ep->addr_size = resource_size(res);
ep->page_size = SZ_64K; ep->page_size = SZ_64K;
ret = gpiod_set_debounce(pcie->pex_rst_gpiod, PERST_DEBOUNCE_TIME); ret = gpiod_set_debounce(pcie->pex_rst_gpiod, PERST_DEBOUNCE_TIME);
...@@ -1982,7 +1975,6 @@ static int tegra_pcie_dw_probe(struct platform_device *pdev) ...@@ -1982,7 +1975,6 @@ static int tegra_pcie_dw_probe(struct platform_device *pdev)
struct device *dev = &pdev->dev; struct device *dev = &pdev->dev;
struct resource *atu_dma_res; struct resource *atu_dma_res;
struct tegra_pcie_dw *pcie; struct tegra_pcie_dw *pcie;
struct resource *dbi_res;
struct pcie_port *pp; struct pcie_port *pp;
struct dw_pcie *pci; struct dw_pcie *pci;
struct phy **phys; struct phy **phys;
...@@ -2091,20 +2083,6 @@ static int tegra_pcie_dw_probe(struct platform_device *pdev) ...@@ -2091,20 +2083,6 @@ static int tegra_pcie_dw_probe(struct platform_device *pdev)
pcie->phys = phys; pcie->phys = phys;
dbi_res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "dbi");
if (!dbi_res) {
dev_err(dev, "Failed to find \"dbi\" region\n");
return -ENODEV;
}
pcie->dbi_res = dbi_res;
pci->dbi_base = devm_ioremap_resource(dev, dbi_res);
if (IS_ERR(pci->dbi_base))
return PTR_ERR(pci->dbi_base);
/* Tegra HW locates DBI2 at a fixed offset from DBI */
pci->dbi_base2 = pci->dbi_base + 0x1000;
atu_dma_res = platform_get_resource_byname(pdev, IORESOURCE_MEM, atu_dma_res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
"atu_dma"); "atu_dma");
if (!atu_dma_res) { if (!atu_dma_res) {
......
...@@ -218,35 +218,6 @@ static const struct dw_pcie_ep_ops uniphier_pcie_ep_ops = { ...@@ -218,35 +218,6 @@ static const struct dw_pcie_ep_ops uniphier_pcie_ep_ops = {
.get_features = uniphier_pcie_get_features, .get_features = uniphier_pcie_get_features,
}; };
static int uniphier_add_pcie_ep(struct uniphier_pcie_ep_priv *priv,
struct platform_device *pdev)
{
struct dw_pcie *pci = &priv->pci;
struct dw_pcie_ep *ep = &pci->ep;
struct device *dev = &pdev->dev;
struct resource *res;
int ret;
ep->ops = &uniphier_pcie_ep_ops;
pci->dbi_base2 = devm_platform_ioremap_resource_byname(pdev, "dbi2");
if (IS_ERR(pci->dbi_base2))
return PTR_ERR(pci->dbi_base2);
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "addr_space");
if (!res)
return -EINVAL;
ep->phys_base = res->start;
ep->addr_size = resource_size(res);
ret = dw_pcie_ep_init(ep);
if (ret)
dev_err(dev, "Failed to initialize endpoint (%d)\n", ret);
return ret;
}
static int uniphier_pcie_ep_enable(struct uniphier_pcie_ep_priv *priv) static int uniphier_pcie_ep_enable(struct uniphier_pcie_ep_priv *priv)
{ {
int ret; int ret;
...@@ -300,7 +271,6 @@ static int uniphier_pcie_ep_probe(struct platform_device *pdev) ...@@ -300,7 +271,6 @@ static int uniphier_pcie_ep_probe(struct platform_device *pdev)
{ {
struct device *dev = &pdev->dev; struct device *dev = &pdev->dev;
struct uniphier_pcie_ep_priv *priv; struct uniphier_pcie_ep_priv *priv;
struct resource *res;
int ret; int ret;
priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
...@@ -314,11 +284,6 @@ static int uniphier_pcie_ep_probe(struct platform_device *pdev) ...@@ -314,11 +284,6 @@ static int uniphier_pcie_ep_probe(struct platform_device *pdev)
priv->pci.dev = dev; priv->pci.dev = dev;
priv->pci.ops = &dw_pcie_ops; priv->pci.ops = &dw_pcie_ops;
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "dbi");
priv->pci.dbi_base = devm_pci_remap_cfg_resource(dev, res);
if (IS_ERR(priv->pci.dbi_base))
return PTR_ERR(priv->pci.dbi_base);
priv->base = devm_platform_ioremap_resource_byname(pdev, "link"); priv->base = devm_platform_ioremap_resource_byname(pdev, "link");
if (IS_ERR(priv->base)) if (IS_ERR(priv->base))
return PTR_ERR(priv->base); return PTR_ERR(priv->base);
...@@ -352,7 +317,8 @@ static int uniphier_pcie_ep_probe(struct platform_device *pdev) ...@@ -352,7 +317,8 @@ static int uniphier_pcie_ep_probe(struct platform_device *pdev)
if (ret) if (ret)
return ret; return ret;
return uniphier_add_pcie_ep(priv, pdev); priv->pci.ep.ops = &uniphier_pcie_ep_ops;
return dw_pcie_ep_init(&priv->pci.ep);
} }
static const struct pci_epc_features uniphier_pro5_data = { static const struct pci_epc_features uniphier_pro5_data = {
......
...@@ -400,7 +400,6 @@ static int uniphier_pcie_probe(struct platform_device *pdev) ...@@ -400,7 +400,6 @@ static int uniphier_pcie_probe(struct platform_device *pdev)
{ {
struct device *dev = &pdev->dev; struct device *dev = &pdev->dev;
struct uniphier_pcie_priv *priv; struct uniphier_pcie_priv *priv;
struct resource *res;
int ret; int ret;
priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
...@@ -410,11 +409,6 @@ static int uniphier_pcie_probe(struct platform_device *pdev) ...@@ -410,11 +409,6 @@ static int uniphier_pcie_probe(struct platform_device *pdev)
priv->pci.dev = dev; priv->pci.dev = dev;
priv->pci.ops = &dw_pcie_ops; priv->pci.ops = &dw_pcie_ops;
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "dbi");
priv->pci.dbi_base = devm_pci_remap_cfg_resource(dev, res);
if (IS_ERR(priv->pci.dbi_base))
return PTR_ERR(priv->pci.dbi_base);
priv->base = devm_platform_ioremap_resource_byname(pdev, "link"); priv->base = devm_platform_ioremap_resource_byname(pdev, "link");
if (IS_ERR(priv->base)) if (IS_ERR(priv->base))
return PTR_ERR(priv->base); return PTR_ERR(priv->base);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment