Commit 44b83b32 authored by Bjorn Helgaas's avatar Bjorn Helgaas

Merge branch 'pci/host-rockchip' into next

* pci/host-rockchip:
  PCI: rockchip: Move the deassert of pm/aclk/pclk after phy_init()
  PCI: rockchip: Split out rockchip_cfg_atu()
  PCI: rockchip: Clean up bit definitions for PCIE_RC_CONFIG_LCS
  PCI: rockchip: Correct the use of FTS mask
  PCI: rockchip: Remove the pointer to L1 substate cap
  PCI: rockchip: Specify the link capability
  PCI: rockchip: Fix negotiated lanes calculation
  PCI: rockchip: Add Kconfig COMPILE_TEST
  PCI: rockchip: Mark RC as common clock architecture
  PCI: rockchip: Provide captured slot power limit and scale
  PCI: rockchip: Add three new resets as required properties
  PCI: Don't attempt to claim shadow copies of ROM
  PCI: designware: Check for iATU unroll support after initializing host
  PCI: qcom: Fix pp->dev usage before assignment
  PCI: designware-plat: Update author email address
  PCI: layerscape: Fix drvdata usage before assignment
  PCI: designware-plat: Change maintainer to Jose Abreu
parents a1d9190d 0722bdd2
...@@ -26,13 +26,16 @@ Required properties: ...@@ -26,13 +26,16 @@ Required properties:
- "sys" - "sys"
- "legacy" - "legacy"
- "client" - "client"
- resets: Must contain five entries for each entry in reset-names. - resets: Must contain seven entries for each entry in reset-names.
See ../reset/reset.txt for details. See ../reset/reset.txt for details.
- reset-names: Must include the following names - reset-names: Must include the following names
- "core" - "core"
- "mgmt" - "mgmt"
- "mgmt-sticky" - "mgmt-sticky"
- "pipe" - "pipe"
- "pm"
- "aclk"
- "pclk"
- pinctrl-names : The pin control state names - pinctrl-names : The pin control state names
- pinctrl-0: The "default" pinctrl state - pinctrl-0: The "default" pinctrl state
- #interrupt-cells: specifies the number of cells needed to encode an - #interrupt-cells: specifies the number of cells needed to encode an
...@@ -86,8 +89,10 @@ pcie0: pcie@f8000000 { ...@@ -86,8 +89,10 @@ pcie0: pcie@f8000000 {
reg = <0x0 0xf8000000 0x0 0x2000000>, <0x0 0xfd000000 0x0 0x1000000>; reg = <0x0 0xf8000000 0x0 0x2000000>, <0x0 0xfd000000 0x0 0x1000000>;
reg-names = "axi-base", "apb-base"; reg-names = "axi-base", "apb-base";
resets = <&cru SRST_PCIE_CORE>, <&cru SRST_PCIE_MGMT>, resets = <&cru SRST_PCIE_CORE>, <&cru SRST_PCIE_MGMT>,
<&cru SRST_PCIE_MGMT_STICKY>, <&cru SRST_PCIE_PIPE>; <&cru SRST_PCIE_MGMT_STICKY>, <&cru SRST_PCIE_PIPE> ,
reset-names = "core", "mgmt", "mgmt-sticky", "pipe"; <&cru SRST_PCIE_PM>, <&cru SRST_P_PCIE>, <&cru SRST_A_PCIE>;
reset-names = "core", "mgmt", "mgmt-sticky", "pipe",
"pm", "pclk", "aclk";
phys = <&pcie_phy>; phys = <&pcie_phy>;
phy-names = "pcie-phy"; phy-names = "pcie-phy";
pinctrl-names = "default"; pinctrl-names = "default";
......
...@@ -9300,7 +9300,7 @@ S: Maintained ...@@ -9300,7 +9300,7 @@ S: Maintained
F: drivers/pci/host/*designware* F: drivers/pci/host/*designware*
PCI DRIVER FOR SYNOPSYS PROTOTYPING DEVICE PCI DRIVER FOR SYNOPSYS PROTOTYPING DEVICE
M: Joao Pinto <jpinto@synopsys.com> M: Jose Abreu <Jose.Abreu@synopsys.com>
L: linux-pci@vger.kernel.org L: linux-pci@vger.kernel.org
S: Maintained S: Maintained
F: Documentation/devicetree/bindings/pci/designware-pcie.txt F: Documentation/devicetree/bindings/pci/designware-pcie.txt
......
...@@ -278,7 +278,7 @@ config PCIE_ARTPEC6 ...@@ -278,7 +278,7 @@ config PCIE_ARTPEC6
config PCIE_ROCKCHIP config PCIE_ROCKCHIP
bool "Rockchip PCIe controller" bool "Rockchip PCIe controller"
depends on ARCH_ROCKCHIP depends on ARCH_ROCKCHIP || COMPILE_TEST
depends on OF depends on OF
depends on PCI_MSI_IRQ_DOMAIN depends on PCI_MSI_IRQ_DOMAIN
select MFD_SYSCON select MFD_SYSCON
......
...@@ -255,6 +255,7 @@ static int __init ls_pcie_probe(struct platform_device *pdev) ...@@ -255,6 +255,7 @@ static int __init ls_pcie_probe(struct platform_device *pdev)
pp = &pcie->pp; pp = &pcie->pp;
pp->dev = dev; pp->dev = dev;
pcie->drvdata = match->data;
pp->ops = pcie->drvdata->ops; pp->ops = pcie->drvdata->ops;
dbi_base = platform_get_resource_byname(pdev, IORESOURCE_MEM, "regs"); dbi_base = platform_get_resource_byname(pdev, IORESOURCE_MEM, "regs");
...@@ -262,7 +263,6 @@ static int __init ls_pcie_probe(struct platform_device *pdev) ...@@ -262,7 +263,6 @@ static int __init ls_pcie_probe(struct platform_device *pdev)
if (IS_ERR(pcie->pp.dbi_base)) if (IS_ERR(pcie->pp.dbi_base))
return PTR_ERR(pcie->pp.dbi_base); return PTR_ERR(pcie->pp.dbi_base);
pcie->drvdata = match->data;
pcie->lut = pcie->pp.dbi_base + pcie->drvdata->lut_offset; pcie->lut = pcie->pp.dbi_base + pcie->drvdata->lut_offset;
if (!ls_pcie_is_bridge(pcie)) if (!ls_pcie_is_bridge(pcie))
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* *
* Copyright (C) 2015-2016 Synopsys, Inc. (www.synopsys.com) * Copyright (C) 2015-2016 Synopsys, Inc. (www.synopsys.com)
* *
* Authors: Joao Pinto <jpinto@synopsys.com> * Authors: Joao Pinto <jpmpinto@gmail.com>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as * it under the terms of the GNU General Public License version 2 as
......
...@@ -637,8 +637,6 @@ int dw_pcie_host_init(struct pcie_port *pp) ...@@ -637,8 +637,6 @@ int dw_pcie_host_init(struct pcie_port *pp)
} }
} }
pp->iatu_unroll_enabled = dw_pcie_iatu_unroll_enabled(pp);
if (pp->ops->host_init) if (pp->ops->host_init)
pp->ops->host_init(pp); pp->ops->host_init(pp);
...@@ -809,6 +807,11 @@ void dw_pcie_setup_rc(struct pcie_port *pp) ...@@ -809,6 +807,11 @@ void dw_pcie_setup_rc(struct pcie_port *pp)
{ {
u32 val; u32 val;
/* get iATU unroll support */
pp->iatu_unroll_enabled = dw_pcie_iatu_unroll_enabled(pp);
dev_dbg(pp->dev, "iATU unroll: %s\n",
pp->iatu_unroll_enabled ? "enabled" : "disabled");
/* set the number of lanes */ /* set the number of lanes */
val = dw_pcie_readl_rc(pp, PCIE_PORT_LINK_CONTROL); val = dw_pcie_readl_rc(pp, PCIE_PORT_LINK_CONTROL);
val &= ~PORT_LINK_MODE_MASK; val &= ~PORT_LINK_MODE_MASK;
......
...@@ -699,11 +699,11 @@ static int qcom_pcie_probe(struct platform_device *pdev) ...@@ -699,11 +699,11 @@ static int qcom_pcie_probe(struct platform_device *pdev)
if (IS_ERR(pcie->phy)) if (IS_ERR(pcie->phy))
return PTR_ERR(pcie->phy); return PTR_ERR(pcie->phy);
pp->dev = dev;
ret = pcie->ops->get_resources(pcie); ret = pcie->ops->get_resources(pcie);
if (ret) if (ret)
return ret; return ret;
pp->dev = dev;
pp->root_bus_nr = -1; pp->root_bus_nr = -1;
pp->ops = &qcom_pcie_dw_ops; pp->ops = &qcom_pcie_dw_ops;
......
This diff is collapsed.
...@@ -141,6 +141,14 @@ int pci_claim_resource(struct pci_dev *dev, int resource) ...@@ -141,6 +141,14 @@ int pci_claim_resource(struct pci_dev *dev, int resource)
return -EINVAL; return -EINVAL;
} }
/*
* If we have a shadow copy in RAM, the PCI device doesn't respond
* to the shadow range, so we don't need to claim it, and upstream
* bridges don't need to route the range to the device.
*/
if (res->flags & IORESOURCE_ROM_SHADOW)
return 0;
root = pci_find_parent_resource(dev, res); root = pci_find_parent_resource(dev, res);
if (!root) { if (!root) {
dev_info(&dev->dev, "can't claim BAR %d %pR: no compatible bridge window\n", dev_info(&dev->dev, "can't claim BAR %d %pR: no compatible bridge window\n",
......
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