summaryrefslogtreecommitdiffstats
path: root/drivers/pci
diff options
context:
space:
mode:
authorRay Jui2016-11-01 01:38:31 +0100
committerBjorn Helgaas2016-11-14 22:54:57 +0100
commit7cbd50d275fe4f6a31f536e140b6124f68998c61 (patch)
tree34985e81262c0a7f7ffdbf4ddd8bd1ee38db4781 /drivers/pci
parentPCI: iproc: Improve core register population (diff)
downloadkernel-qcow2-linux-7cbd50d275fe4f6a31f536e140b6124f68998c61.tar.gz
kernel-qcow2-linux-7cbd50d275fe4f6a31f536e140b6124f68998c61.tar.xz
kernel-qcow2-linux-7cbd50d275fe4f6a31f536e140b6124f68998c61.zip
PCI: iproc: Do not reset PAXC when initializing the driver
During initialization, the current iProc PCIe host driver resets PAXC and the downstream internal endpoint device that PAXC connects to. If the endpoint device is already loaded with firmware and has started running from the bootloader stage, this downstream reset causes the endpoint device to stop working. Signed-off-by: Ray Jui <raj.jui@broadcom.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Reviewed-by: Scott Branden <scott.branden@broadcom.com>
Diffstat (limited to 'drivers/pci')
-rw-r--r--drivers/pci/host/pcie-iproc.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/drivers/pci/host/pcie-iproc.c b/drivers/pci/host/pcie-iproc.c
index a9b9cd8631f4..93b4d619c0ed 100644
--- a/drivers/pci/host/pcie-iproc.c
+++ b/drivers/pci/host/pcie-iproc.c
@@ -243,16 +243,13 @@ static void iproc_pcie_reset(struct iproc_pcie *pcie)
{
u32 val;
- if (pcie->ep_is_internal) {
- val = iproc_pcie_read_reg(pcie, IPROC_PCIE_CLK_CTRL);
- val &= ~PAXC_RESET_MASK;
- iproc_pcie_write_reg(pcie, IPROC_PCIE_CLK_CTRL, val);
- udelay(100);
- val |= PAXC_RESET_MASK;
- iproc_pcie_write_reg(pcie, IPROC_PCIE_CLK_CTRL, val);
- udelay(100);
+ /*
+ * PAXC and the internal emulated endpoint device downstream should not
+ * be reset. If firmware has been loaded on the endpoint device at an
+ * earlier boot stage, reset here causes issues.
+ */
+ if (pcie->ep_is_internal)
return;
- }
/*
* Select perst_b signal as reset source. Put the device into reset,