Commit e3dc79ad authored by Serge Semin's avatar Serge Semin Committed by Bjorn Helgaas

PCI: dwc: Detect iATU settings after getting "addr_space" resource

Previously, dw_pcie_ep_init() did:

  dw_pcie_iatu_detect(pci);
  res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "addr_space");
  if (!res)
    return -EINVAL;

The platform_get_resource_byname() can fail, and dw_pcie_iatu_detect()
doesn't depend on the "addr_space" resource, so delay it until afterwards,
i.e.,

  platform_get_resource_byname(pdev, IORESOURCE_MEM, "addr_space");
  dw_pcie_iatu_detect(pci);

[bhelgaas: commit log]
Link: https://lore.kernel.org/r/20220624143947.8991-3-Sergey.Semin@baikalelectronics.ruSigned-off-by: default avatarSerge Semin <Sergey.Semin@baikalelectronics.ru>
Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
Reviewed-by: default avatarRob Herring <robh@kernel.org>
Reviewed-by: default avatarManivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
parent 14c4ad12
...@@ -704,8 +704,6 @@ int dw_pcie_ep_init(struct dw_pcie_ep *ep) ...@@ -704,8 +704,6 @@ int dw_pcie_ep_init(struct dw_pcie_ep *ep)
} }
} }
dw_pcie_iatu_detect(pci);
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "addr_space"); res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "addr_space");
if (!res) if (!res)
return -EINVAL; return -EINVAL;
...@@ -713,6 +711,8 @@ int dw_pcie_ep_init(struct dw_pcie_ep *ep) ...@@ -713,6 +711,8 @@ int dw_pcie_ep_init(struct dw_pcie_ep *ep)
ep->phys_base = res->start; ep->phys_base = res->start;
ep->addr_size = resource_size(res); ep->addr_size = resource_size(res);
dw_pcie_iatu_detect(pci);
ep->ib_window_map = devm_kcalloc(dev, ep->ib_window_map = devm_kcalloc(dev,
BITS_TO_LONGS(pci->num_ib_windows), BITS_TO_LONGS(pci->num_ib_windows),
sizeof(long), sizeof(long),
......
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