diff options
author | Aaron Sierra <asierra@xes-inc.com> | 2014-08-26 16:46:11 -0500 |
---|---|---|
committer | Scott Wood <scottwood@freescale.com> | 2014-09-03 18:51:23 -0500 |
commit | 00406e8772c61feb57c1baeb97531aa199614e65 (patch) | |
tree | 0f2cba34a08b3704405abf251a037784bafeea1b /arch/powerpc/sysdev/fsl_pci.c | |
parent | 7b0e6d6f6de5916aee2a972a4e3a622009b9743a (diff) | |
download | op-kernel-dev-00406e8772c61feb57c1baeb97531aa199614e65.zip op-kernel-dev-00406e8772c61feb57c1baeb97531aa199614e65.tar.gz |
powerpc: fsl_pci: Add forced PCI Agent enumeration
The following commit prevents the MPC8548E on the XPedite5200 PrPMC
module from enumerating its PCI/PCI-X bus:
powerpc/fsl-pci: use 'Header Type' to identify PCIE mode
The previous patch prevents any Freescale PCI-X bridge from enumerating
the bus, if it is hardware strapped into Agent mode.
In PCI-X, the Host is responsible for driving the PCI-X initialization
pattern to devices on the bus, so that they know whether to operate in
conventional PCI or PCI-X mode as well as what the bus timing will be.
For a PCI-X PrPMC, the pattern is driven by the mezzanine carrier it is
installed onto. Therefore, PrPMCs are PCI-X Agents, but one per system
may still enumerate the bus.
This patch causes the device node of any PCI/PCI-X bridge strapped into
Agent mode to be checked for the fsl,pci-agent-force-enum property. If
the property is present in the node, the bridge will be allowed to
enumerate the bus.
Cc: Minghuan Lian <Minghuan.Lian@freescale.com>
Signed-off-by: Aaron Sierra <asierra@xes-inc.com>
Signed-off-by: Scott Wood <scottwood@freescale.com>
Diffstat (limited to 'arch/powerpc/sysdev/fsl_pci.c')
-rw-r--r-- | arch/powerpc/sysdev/fsl_pci.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c index c507767..65d2ed4 100644 --- a/arch/powerpc/sysdev/fsl_pci.c +++ b/arch/powerpc/sysdev/fsl_pci.c @@ -522,7 +522,8 @@ int fsl_add_bridge(struct platform_device *pdev, int is_primary) } else { /* For PCI read PROG to identify controller mode */ early_read_config_byte(hose, 0, 0, PCI_CLASS_PROG, &progif); - if ((progif & 1) == 1) + if ((progif & 1) && + !of_property_read_bool(dev, "fsl,pci-agent-force-enum")) goto no_bridge; } |