]> git.baikalelectronics.ru Git - kernel.git/commitdiff
PCI: dwc: Move "dbi", "dbi2", and "addr_space" resource setup into common code
authorRob Herring <robh@kernel.org>
Thu, 5 Nov 2020 21:11:46 +0000 (15:11 -0600)
committerLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Thu, 19 Nov 2020 10:51:40 +0000 (10:51 +0000)
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.org
Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Acked-by: Jingoo 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
15 files changed:
drivers/pci/controller/dwc/pci-dra7xx.c
drivers/pci/controller/dwc/pci-keystone.c
drivers/pci/controller/dwc/pci-layerscape-ep.c
drivers/pci/controller/dwc/pcie-al.c
drivers/pci/controller/dwc/pcie-artpec6.c
drivers/pci/controller/dwc/pcie-designware-ep.c
drivers/pci/controller/dwc/pcie-designware-host.c
drivers/pci/controller/dwc/pcie-designware-plat.c
drivers/pci/controller/dwc/pcie-intel-gw.c
drivers/pci/controller/dwc/pcie-kirin.c
drivers/pci/controller/dwc/pcie-qcom.c
drivers/pci/controller/dwc/pcie-spear13xx.c
drivers/pci/controller/dwc/pcie-tegra194.c
drivers/pci/controller/dwc/pcie-uniphier-ep.c
drivers/pci/controller/dwc/pcie-uniphier.c

index 6d012d2b1e90d75ddb321e2e4c4c540685ba582d..a4aabc85dbb1299a3b17f2736a2d9fc499f364fc 100644 (file)
@@ -578,7 +578,6 @@ static int __init dra7xx_add_pcie_ep(struct dra7xx_pcie *dra7xx,
 {
        int ret;
        struct dw_pcie_ep *ep;
-       struct resource *res;
        struct device *dev = &pdev->dev;
        struct dw_pcie *pci = dra7xx->pci;
 
@@ -594,13 +593,6 @@ static int __init dra7xx_add_pcie_ep(struct dra7xx_pcie *dra7xx,
        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");
index a222728238caeb9e9afd71e8dde7258559c50df4..9cf14f13798bdcd55ab0b3f60b1214d424146e1d 100644 (file)
@@ -977,33 +977,6 @@ static const struct dw_pcie_ep_ops ks_pcie_am654_ep_ops = {
        .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)
 {
        int num_lanes = ks_pcie->num_lanes;
@@ -1313,7 +1286,7 @@ static int __init ks_pcie_probe(struct platform_device *pdev)
                }
 
                pci->ep.ops = ep_ops;
-               ret = ks_pcie_add_pcie_ep(ks_pcie, pdev);
+               ret = dw_pcie_ep_init(&pci->ep);
                if (ret < 0)
                        goto err_get_sync;
                break;
index 84206f265e54453b4954ab8fc31ff9fcb7197582..4d12efdacd2f540371a811730bb7b8d443259849 100644 (file)
@@ -18,8 +18,6 @@
 
 #include "pcie-designware.h"
 
-#define PCIE_DBI2_OFFSET               0x1000  /* DBI2 base address*/
-
 #define to_ls_pcie_ep(x)       dev_get_drvdata((x)->dev)
 
 struct ls_pcie_ep_drvdata {
@@ -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)
 {
        struct device *dev = &pdev->dev;
@@ -159,7 +129,6 @@ static int __init ls_pcie_ep_probe(struct platform_device *pdev)
        struct ls_pcie_ep *pcie;
        struct pci_epc_features *ls_epc;
        struct resource *dbi_base;
-       int ret;
 
        pcie = devm_kzalloc(dev, sizeof(*pcie), GFP_KERNEL);
        if (!pcie)
@@ -188,13 +157,11 @@ static int __init ls_pcie_ep_probe(struct platform_device *pdev)
        if (IS_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);
 
-       ret = ls_add_pcie_ep(pcie, pdev);
-
-       return ret;
+       return dw_pcie_ep_init(&pci->ep);
 }
 
 static struct platform_driver ls_pcie_ep_driver = {
index f973fbca90cf7ce4e00d84b02ebd66f3da047dbf..d06866921187b0ff485b2e6cca4a2d684c939e74 100644 (file)
@@ -347,7 +347,6 @@ static int al_pcie_probe(struct platform_device *pdev)
        struct device *dev = &pdev->dev;
        struct resource *controller_res;
        struct resource *ecam_res;
-       struct resource *dbi_res;
        struct al_pcie *al_pcie;
        struct dw_pcie *pci;
 
@@ -365,11 +364,6 @@ static int al_pcie_probe(struct platform_device *pdev)
        al_pcie->pci = pci;
        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");
        if (!ecam_res) {
                dev_err(dev, "couldn't find 'config' reg in DT\n");
@@ -386,8 +380,7 @@ static int al_pcie_probe(struct platform_device *pdev)
                return PTR_ERR(al_pcie->controller_base);
        }
 
-       dev_dbg(dev, "From DT: dbi_base: %pR, controller_base: %pR\n",
-               dbi_res, controller_res);
+       dev_dbg(dev, "From DT: controller_base: %pR\n", controller_res);
 
        platform_set_drvdata(pdev, al_pcie);
 
index 929448e9e0bc62d1c6331cf3657777f84728db73..52ad7909cd0c0d11259f9f30cf1d43a92ddb75c9 100644 (file)
@@ -403,38 +403,6 @@ static const struct dw_pcie_ep_ops pcie_ep_ops = {
        .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)
 {
        struct device *dev = &pdev->dev;
@@ -469,10 +437,6 @@ static int artpec6_pcie_probe(struct platform_device *pdev)
        artpec6_pcie->variant = variant;
        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 =
                devm_platform_ioremap_resource_byname(pdev, "phy");
        if (IS_ERR(artpec6_pcie->phy_base))
@@ -504,9 +468,10 @@ static int artpec6_pcie_probe(struct platform_device *pdev)
                val = artpec6_pcie_readl(artpec6_pcie, PCIECFG);
                val &= ~PCIECFG_DEVICE_TYPE_MASK;
                artpec6_pcie_writel(artpec6_pcie, PCIECFG, val);
-               ret = artpec6_add_pcie_ep(artpec6_pcie, pdev);
-               if (ret < 0)
-                       return ret;
+
+               pci->ep.ops = &pcie_ep_ops;
+
+               return dw_pcie_ep_init(&pci->ep);
                break;
        }
        default:
index ad7da4ea43a5e963dfc384dcfd9584d884c70148..6fe176e1bdd2157cc490ce6ca8cc236b46d541fc 100644 (file)
@@ -7,6 +7,7 @@
  */
 
 #include <linux/of.h>
+#include <linux/platform_device.h>
 
 #include "pcie-designware.h"
 #include <linux/pci-epc.h>
@@ -676,20 +677,42 @@ int dw_pcie_ep_init(struct dw_pcie_ep *ep)
        int ret;
        void *addr;
        u8 func_no;
+       struct resource *res;
        struct pci_epc *epc;
        struct dw_pcie *pci = to_dw_pcie_from_ep(ep);
        struct device *dev = pci->dev;
+       struct platform_device *pdev = to_platform_device(dev);
        struct device_node *np = dev->of_node;
        const struct pci_epc_features *epc_features;
        struct dw_pcie_ep_func *ep_func;
 
        INIT_LIST_HEAD(&ep->func_list);
 
-       if (!pci->dbi_base || !pci->dbi_base2) {
-               dev_err(dev, "dbi_base/dbi_base2 is not populated\n");
-               return -EINVAL;
+       if (!pci->dbi_base) {
+               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))
+                       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);
        if (ret < 0) {
                dev_err(dev, "Unable to read *num-ib-windows* property\n");
index a6ffab9b537e42ef20adb3e79bff44672ff5e0fa..cde45b2076eea1b3edb3b8e75b725a5f0882a113 100644 (file)
@@ -310,6 +310,13 @@ int dw_pcie_host_init(struct pcie_port *pp)
                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);
        if (!bridge)
                return -ENOMEM;
index e3e300669ed56f79db48807c331f75d513ace409..562a05e07b1d5961045394bc903a3905782fbefb 100644 (file)
@@ -139,43 +139,11 @@ static int dw_plat_add_pcie_port(struct dw_plat_pcie *dw_plat_pcie,
        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)
 {
        struct device *dev = &pdev->dev;
        struct dw_plat_pcie *dw_plat_pcie;
        struct dw_pcie *pci;
-       struct resource *res;  /* Resource from DT */
        int ret;
        const struct of_device_id *match;
        const struct dw_plat_pcie_of_data *data;
@@ -202,14 +170,6 @@ static int dw_plat_pcie_probe(struct platform_device *pdev)
        dw_plat_pcie->pci = pci;
        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);
 
        switch (dw_plat_pcie->mode) {
@@ -225,9 +185,8 @@ static int dw_plat_pcie_probe(struct platform_device *pdev)
                if (!IS_ENABLED(CONFIG_PCIE_DW_PLAT_EP))
                        return -ENODEV;
 
-               ret = dw_plat_add_pcie_ep(dw_plat_pcie, pdev);
-               if (ret < 0)
-                       return ret;
+               pci->ep.ops = &pcie_ep_ops;
+               return dw_pcie_ep_init(&pci->ep);
                break;
        default:
                dev_err(dev, "INVALID device type %d\n", dw_plat_pcie->mode);
index 77ef88333115b362361b77b87406ec66668f81f4..88782653ed21bdc8b76212095ad4c68546675a3d 100644 (file)
@@ -237,10 +237,6 @@ static int intel_pcie_get_resources(struct platform_device *pdev)
        struct device *dev = pci->dev;
        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);
        if (IS_ERR(lpp->core_clk)) {
                ret = PTR_ERR(lpp->core_clk);
index d0a6a2dee6f5be7f905bee47900a8cb80d7d0451..3042a23cf09a46d7ab77f22eb6c8051f7251c87b 100644 (file)
@@ -157,11 +157,6 @@ static long kirin_pcie_get_resource(struct kirin_pcie *kirin_pcie,
        if (IS_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 =
                syscon_regmap_lookup_by_compatible("hisilicon,hi3660-crgctrl");
        if (IS_ERR(kirin_pcie->crgctrl))
index b4761640ffd99be522c55f0facd5b4c273ac68dd..3b4f70b9f3f0cb1a2e5101fc09f28effd684f964 100644 (file)
@@ -1368,7 +1368,6 @@ static const struct dw_pcie_ops dw_pcie_ops = {
 static int qcom_pcie_probe(struct platform_device *pdev)
 {
        struct device *dev = &pdev->dev;
-       struct resource *res;
        struct pcie_port *pp;
        struct dw_pcie *pci;
        struct qcom_pcie *pcie;
@@ -1407,13 +1406,6 @@ static int qcom_pcie_probe(struct platform_device *pdev)
                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");
        if (IS_ERR(pcie->elbi)) {
                ret = PTR_ERR(pcie->elbi);
index e348225f651fb01e5ac32001f5bedf3bb02afc51..1ed7e3501ff1cc56bc2eacbd1a987df215e5dcf2 100644 (file)
@@ -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 spear13xx_pcie *spear13xx_pcie = to_spear13xx_pcie(pci);
 
+       spear13xx_pcie->app_base = pci->dbi_base + 0x2000;
+
        spear13xx_pcie_establish_link(spear13xx_pcie);
        spear13xx_pcie_enable_interrupts(spear13xx_pcie);
 
@@ -203,7 +205,6 @@ static int spear13xx_pcie_probe(struct platform_device *pdev)
        struct dw_pcie *pci;
        struct spear13xx_pcie *spear13xx_pcie;
        struct device_node *np = dev->of_node;
-       struct resource *dbi_base;
        int ret;
 
        spear13xx_pcie = devm_kzalloc(dev, sizeof(*spear13xx_pcie), GFP_KERNEL);
@@ -242,14 +243,6 @@ static int spear13xx_pcie_probe(struct platform_device *pdev)
                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"))
                pci->link_gen = 1;
 
index f920e7efe118f40fd4abbc6e2d5eecd0358b881a..f8fca6794282215d852af27ab87203848f3986a0 100644 (file)
@@ -1907,19 +1907,12 @@ static int tegra_pcie_config_ep(struct tegra_pcie_dw *pcie,
        struct dw_pcie *pci = &pcie->pci;
        struct device *dev = pcie->dev;
        struct dw_pcie_ep *ep;
-       struct resource *res;
        char *name;
        int ret;
 
        ep = &pci->ep;
        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;
 
        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)
        struct device *dev = &pdev->dev;
        struct resource *atu_dma_res;
        struct tegra_pcie_dw *pcie;
-       struct resource *dbi_res;
        struct pcie_port *pp;
        struct dw_pcie *pci;
        struct phy **phys;
@@ -2091,20 +2083,6 @@ static int tegra_pcie_dw_probe(struct platform_device *pdev)
 
        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");
        if (!atu_dma_res) {
index 1483559600610a36590418eaedf810b37665b707..69810c6b0d584d0f029bf8fd5ce8989c0f563d5f 100644 (file)
@@ -218,35 +218,6 @@ static const struct dw_pcie_ep_ops uniphier_pcie_ep_ops = {
        .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)
 {
        int ret;
@@ -300,7 +271,6 @@ static int uniphier_pcie_ep_probe(struct platform_device *pdev)
 {
        struct device *dev = &pdev->dev;
        struct uniphier_pcie_ep_priv *priv;
-       struct resource *res;
        int ret;
 
        priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
@@ -314,11 +284,6 @@ static int uniphier_pcie_ep_probe(struct platform_device *pdev)
        priv->pci.dev = dev;
        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");
        if (IS_ERR(priv->base))
                return PTR_ERR(priv->base);
@@ -352,7 +317,8 @@ static int uniphier_pcie_ep_probe(struct platform_device *pdev)
        if (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 = {
index 48176265c867e417e8bb0a3ab8e9d8ca514625ea..33130fb4af90df93e571a798141443cffb8d4106 100644 (file)
@@ -400,7 +400,6 @@ static int uniphier_pcie_probe(struct platform_device *pdev)
 {
        struct device *dev = &pdev->dev;
        struct uniphier_pcie_priv *priv;
-       struct resource *res;
        int ret;
 
        priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
@@ -410,11 +409,6 @@ static int uniphier_pcie_probe(struct platform_device *pdev)
        priv->pci.dev = dev;
        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");
        if (IS_ERR(priv->base))
                return PTR_ERR(priv->base);